diff --git a/plugins/Embed/actions/OEmbedAction.php b/plugins/Embed/Controller/Embed.php similarity index 96% rename from plugins/Embed/actions/OEmbedAction.php rename to plugins/Embed/Controller/Embed.php index 6deb9bc6ea..4e228245d2 100644 --- a/plugins/Embed/actions/OEmbedAction.php +++ b/plugins/Embed/Controller/Embed.php @@ -1,4 +1,5 @@ . +// }}} /** - * OembedPlugin implementation for GNU social + * Embed plugin implementation for GNU social * * @package GNUsocial * @@ -23,27 +25,28 @@ * @author Mikael Nordfeldth * @author hannes * @author Diogo Cordeiro + * @author Hugo Sales * @copyright 2019 Free Software Foundation, Inc http://www.fsf.org * @license https://www.gnu.org/licenses/agpl.html GNU AGPL v3 or later */ -namespace Plguin\Embed\actions; +namespace Plugin\Embed\Controller; + +use App\Core\Controller; +use Symfony\Component\HttpFoundation\Request; /** - * Oembed provider implementation + * Embed provider implementation * * This class handles all /main/oembed(.xml|.json)/ requests. * - * @copyright 2019 Free Software Foundation, Inc http://www.fsf.org + * @copyright 2019, 2021 Free Software Foundation, Inc http://www.fsf.org * @license https://www.gnu.org/licenses/agpl.html GNU AGPL v3 or later */ -class OEmbedAction extends Action +class Embed extends Controller { - /** Placeholder */ - protected function handle() + protected function handle(Request $request) { - parent::handle(); - $url = $this->trimmed('url'); $tls = parse_url($url, PHP_URL_SCHEME) == 'https'; $root_url = common_root_url($tls); diff --git a/plugins/Embed/Embed.php b/plugins/Embed/Embed.php index e9c0e86f78..d956c1ef91 100644 --- a/plugins/Embed/Embed.php +++ b/plugins/Embed/Embed.php @@ -36,7 +36,19 @@ namespace Plugin\Embed; +use App\Core\Cache; +use App\Core\DB\DB; +use App\Core\Event; +use App\Core\HTTPClient; +use App\Core\Log; use App\Core\Modules\Plugin; +use App\Core\Router\RouteLoader; +use App\Core\Router\Router; +use App\Entity\Attachment; +use App\Util\Exception\DuplicateFoundException; +use App\Util\Exception\NotFoundException; +use Plugin\Embed\Entity\FileEmbed; +use Symfony\Component\HttpFoundation\Request; /** * Base class for the Embed plugin that does most of the heavy lifting to get @@ -47,64 +59,15 @@ use App\Core\Modules\Plugin; */ class Embed extends Plugin { - const PLUGIN_VERSION = '2.1.0'; - - // settings which can be set in config.php with addPlugin('Embed', ['param'=>'value', ...]); - // WARNING, these are _regexps_ (slashes added later). Always escape your dots and end ('$') your strings - - public $domain_whitelist = [ + /** + * Settings which can be set in social.local.yaml + * WARNING, these are _regexps_ (slashes added later). Always escape your dots and end ('$') your strings + */ + public $domain_allowlist = [ // hostname => service provider '^i\d*\.ytimg\.com$' => 'YouTube', '^i\d*\.vimeocdn\.com$' => 'Vimeo', ]; - public $append_whitelist = []; // fill this array as domain_whitelist to add more trusted sources - public $check_whitelist = false; // security/abuse precaution - - public $thumbnail_width = 128; - public $thumbnail_height = 128; - public $crop = true; - public $max_size; - - protected $imgData = []; - - /** - * Initialize the Embed plugin and set up the environment it needs for it. - * Returns true if it initialized properly, the exception object if it - * doesn't. - */ - public function initialize() - { - parent::initialize(); - - $this->domain_whitelist = array_merge($this->domain_whitelist, $this->append_whitelist); - - // Load global configuration if specific not provided - $this->thumbnail_width = $this->thumbnail_width ?? common_config('thumbnail', 'width'); - $this->thumbnail_height = $this->thumbnail_height ?? common_config('thumbnail', 'height'); - $this->max_size = $this->max_size ?? common_config('attachments', 'file_quota'); - $this->crop = $this->crop ?? common_config('thumbnail', 'crop'); - } - - /** - * The code executed on GNU social checking the database schema, which in - * this case is to make sure we have the plugin table we need. - * - * @return bool true if it ran successfully, the exception object if it doesn't. - */ - public function onCheckSchema() - { - $this->onEndUpgrade(); // Ensure rename - - $schema = Schema::get(); - $schema->ensureTable('file_embed', File_embed::schemaDef()); - return true; - } - - public function onEndUpgrade() - { - $schema = Schema::get(); - return $schema->renameTable('file_oembed', 'file_embed'); - } /** * This code executes when GNU social creates the page routing, and we hook @@ -116,9 +79,11 @@ class Embed extends Plugin * * @return void true if successful, the exception object if it isn't. */ - public function onRouterInitialized(URLMapper $m) + public function onAddRoute(RouteLoader $m) { - $m->connect('main/oembed', ['action' => 'oembed']); + $m->connect('oembed', 'main/oembed', Controller\Embed::class); + $m->connect('embed', 'main/embed', Controller\Embed::class); + return Event::next; } /** @@ -182,126 +147,83 @@ class Embed extends Plugin return true; } - /** Placeholder */ - public function onEndShowHeadElements(Action $action) + /** + * Insert oembed and opengraph tags in all HTML head elements + */ + public function onShowHeadElements(Request $request, array $result) { - switch ($action->getActionName()) { - case 'attachment': - $url = common_local_url('attachment', ['attachment' => $action->attachment->getID()]); - break; - case 'shownotice': - if (!$action->notice->isLocal()) { - return true; - } - try { - $url = $action->notice->getUrl(); - } catch (InvalidUrlException $e) { - // The notice is probably a share or similar, which don't - // have a representational URL of their own. - return true; - } - break; + $matches = []; + preg_match(',/?([^/]+)/?.*,', $request->getPathInfo(), $matches); + switch ($matches[1]) { + case 'attachment': + $url = "{$matches[1]}/{$matches[2]}"; + break; } if (isset($url)) { foreach (['xml', 'json'] as $format) { - $action->element( - 'link', - [ + $result[] = [ + 'link' => [ 'rel' => 'alternate', 'type' => "application/{$format}+oembed", - 'href' => common_local_url('oembed', [], ['format' => $format, 'url' => $url]), + 'href' => Router::url('embed', ['format' => $format, 'url' => $url]), 'title' => 'oEmbed', - ] - ); + ], ]; } } - return true; + return Event::next; } - /** Placeholder */ - public function onEndShowStylesheets(Action $action) + /** + * Save embedding information for an Attachment, if applicable. + * + * Normally this event is called through File::saveNew() + * + * @param Attachment $attachment The newly inserted Attachment object. + * + * @return bool success + */ + public function onAttachmentStoreNew(Attachment $attachment) { - $action->cssLink($this->path('css/embed.css')); + try { + DB::findOneBy('attachment_embed', ['attachment_id' => $attachment->getId()]); + } catch (NotFoundException) { + } catch (DuplicateFoundException) { + Log::warning("Strangely, an attachment_embed object exists for new file {$attachment->getID()}"); + return Event::next; + } + + if (!is_null($attachment->getRemoteUrl()) || (!is_null($mimetype = $attachment->getMimetype()) && (('text/html' === substr($mimetype, 0, 9) || 'application/xhtml+xml' === substr($mimetype, 0, 21))))) { + try { + $embed_data = EmbedHelper::getEmbed($attachment->getRemoteUrl()); + dd($embed_data); + if ($embed_data === false) { + throw new Exception("Did not get Embed data from URL {$attachment->url}"); + } + $attachment->setTitle($embed_data['title']); + } catch (Exception $e) { + Log::warning($e); + return true; + } + + FileEmbed::saveNew($embed_data, $attachment->getId()); + } return true; } /** - * Save embedding information for a File, if applicable. + * Replace enclosure representation of an attachment with the data from embed * - * Normally this event is called through File::saveNew() - * - * @param File $file The newly inserted File object. - * - * @return bool success + * @param mixed $enclosure */ - public function onEndFileSaveNew(File $file) - { - $fe = File_embed::getKV('file_id', $file->getID()); - if ($fe instanceof File_embed) { - common_log(LOG_WARNING, "Strangely, a File_embed object exists for new file {$file->getID()}", __FILE__); - return true; - } - - if (isset($file->mimetype) - && (('text/html' === substr($file->mimetype, 0, 9) || 'application/xhtml+xml' === substr($file->mimetype, 0, 21)))) { - try { - $embed_data = File_embed::getEmbed($file->url); - if ($embed_data === false) { - throw new Exception("Did not get Embed data from URL {$file->url}"); - } - $file->setTitle($embed_data->title); - } catch (Exception $e) { - common_log(LOG_WARNING, sprintf( - __METHOD__ . ': %s thrown when getting embed data: %s', - get_class($e), - _ve($e->getMessage()) - )); - return true; - } - - File_embed::saveNew($embed_data, $file->getID()); - } - return true; - } - - /** Placeholder */ - public function onEndShowAttachmentLink(HTMLOutputter $out, File $file) - { - $embed = File_embed::getKV('file_id', $file->getID()); - if (empty($embed->author_name) && empty($embed->provider)) { - return true; - } - $out->elementStart('div', ['id' => 'oembed_info', 'class' => 'e-content']); - foreach (['author_name' => ['class' => ' author', 'url' => 'author_url'], - 'provider' => ['class' => '', 'url' => 'provider_url'], ] - as $field => $options) { - if (!empty($embed->{$field})) { - $out->elementStart('div', 'fn vcard' . $options['class']); - if (empty($embed->{$options['url']})) { - $out->text($embed->{$field}); - } else { - $out->element( - 'a', - ['href' => $embed->{$options['url']}, - 'class' => 'url', ], - $embed->{$field} - ); - } - } - } - $out->elementEnd('div'); - return false; - } - - /** Placeholder */ - public function onFileEnclosureMetadata(File $file, &$enclosure) + public function onFileEnclosureMetadata(Attachment $attachment, &$enclosure) { // Never treat generic HTML links as an enclosure type! // But if we have embed info, we'll consider it golden. - $embed = File_embed::getKV('file_id', $file->getID()); - if (!$embed instanceof File_embed || !in_array($embed->type, ['photo', 'video'])) { - return true; + try { + $embed = DB::findOneBy('attachment_embed', ['attachment_id' => $attachment->getId()]); + } catch (NotFoundException) { + return Event::next; } foreach (['mimetype', 'url', 'title', 'modified', 'width', 'height'] as $key) { @@ -313,187 +235,80 @@ class Embed extends Plugin } /** Placeholder */ - public function onStartShowAttachmentRepresentation(HTMLOutputter $out, File $file) + public function onShowAttachment(Attachment $attachment, array &$res) { try { - $embed = File_embed::getByFile($file); - } catch (NoResultException $e) { - return true; + $embed = Cache::get('attachment-embed-' . $attachment->getId(), + fn () => DB::findOneBy('attachment_embed', ['attachment_id' => $attachment->getId()])); + } catch (DuplicateFoundException $e) { + Log::waring($e); + return Event::next; + } catch (NotFoundException) { + return Event::next; + } + if (is_null($embed) && empty($embed->getAuthorName()) && empty($embed->getProvider())) { + return Event::next; } - // Show thumbnail as usual if it's a photo. - if ($embed->type === 'photo') { - return true; - } + $thumbnail = AttachmentThumbnail::getOrCreate(attachment: $attachment, width: $width, height: $height, crop: $smart_crop); + $attributes = $thumbnail->getHTMLAttributes(['class' => 'u-photo embed']); - $out->elementStart('article', ['class' => 'h-entry embed']); - $out->elementStart('header'); - try { - $thumb = $file->getThumbnail($this->thumbnail_width, $this->thumbnail_height); - $out->element('img', $thumb->getHtmlAttrs(['class' => 'u-photo embed'])); - unset($thumb); - } catch (FileNotFoundException $e) { - // Nothing to show - } catch (Exception $e) { - $out->element('div', ['class' => 'error'], $e->getMessage()); - } - $out->elementStart('h5', ['class' => 'p-name embed']); - $out->element('a', ['class' => 'u-url', 'href' => $file->getUrl()], common_strip_html($embed->title)); - $out->elementEnd('h5'); - $out->elementStart('div', ['class' => 'p-author embed']); - if (!empty($embed->author_name)) { - // TRANS: text before the author name of embed attachment representation - // FIXME: The whole "By x from y" should be i18n because of different language constructions. - $out->text(_('By ')); - $attrs = ['class' => 'h-card p-author']; - if (!empty($embed->author_url)) { - $attrs['href'] = $embed->author_url; - $tag = 'a'; - } else { - $tag = 'span'; - } - $out->element($tag, $attrs, $embed->author_name); - } - if (!empty($embed->provider)) { - // TRANS: text between the embed author name and provider url - // FIXME: The whole "By x from y" should be i18n because of different language constructions. - $out->text(_(' from ')); - $attrs = ['class' => 'h-card']; - if (!empty($embed->provider_url)) { - $attrs['href'] = $embed->provider_url; - $tag = 'a'; - } else { - $tag = 'span'; - } - $out->element($tag, $attrs, $embed->provider); - } - $out->elementEnd('div'); - $out->elementEnd('header'); - $out->elementStart('div', ['class' => 'p-summary embed']); - $out->raw(common_purify($embed->html)); - $out->elementEnd('div'); - $out->elementStart('footer'); - $out->elementEnd('footer'); - $out->elementEnd('article'); + $res[] = Formatting::twigRender(<< +
+ +
+ {{embed.getTitle() | escape}} +
+
+ {% if embed.getAuthorName() is not null %} +
+ {% if embed.getAuthorUrl() is null %} +

{{embed.getAuthorName()}}

+ {% else %} + {{embed.getAuthorName()}} + {% endif %} +
+ {% endif %} + {% if embed.getProvider() is not null %} +
+ {% if embed.getProviderUrl() is null %} +

{{embed.getProvider()}}

+ {% else %} + {{embed.getProvider()}} + {% endif %} +
+ {% endif %} +
+
+
+ {{ embed.getHtml() | escape }} +
+ +END, ['embed' => $embed, 'thumbnail' => $thumbnail, 'attributes' => $attributes]); - return false; - } - - /** Placeholder */ - public function onShowUnsupportedAttachmentRepresentation(HTMLOutputter $out, File $file) - { - try { - $embed = File_embed::getByFile($file); - } catch (NoResultException $e) { - return true; - } - - // the 'photo' type is shown through ordinary means, using StartShowAttachmentRepresentation! - switch ($embed->type) { - case 'video': - case 'link': - if (!empty($embed->html) - && (GNUsocial::isAjax() || common_config('attachments', 'show_html'))) { - $purifier = new HTMLPurifier(); - // FIXME: do we allow and here? we did that when we used htmLawed, - // but I'm not sure anymore... - $out->raw($purifier->purify($embed->html)); - } - return false; - } - - return true; + return Event::stop; } /** - * This event executes when GNU social is creating a file thumbnail entry in - * the database. We glom onto this to create proper information for Embed - * object thumbnails. - * - * @param $file File the file of the created thumbnail - * @param &$imgPath null|string = the path to the created thumbnail (output) - * @param $media string = media type - * - * @throws FileNotFoundException - * @throws NoResultException - * @throws ServerException - * - * @return bool true if it succeeds (including non-action - * states where it isn't oEmbed data, so it doesn't mess up the event handle - * for other things hooked into it), or the exception if it fails. - */ - public function onCreateFileImageThumbnailSource(File $file, ?string &$imgPath, string $media): bool - { - // If we are on a private node, we won't do any remote calls (just as a precaution until - // we can configure this from config.php for the private nodes) - if (common_config('site', 'private')) { - return true; - } - - // All our remote Embed images lack a local filename property in the File object - if ($file->isLocal()) { - common_debug(sprintf('File of id==%d is local (filename: %s), so nothing Embed ' . - 'should handle.', $file->getID(), _ve($file->filename))); - return true; - } - - try { - // If we have proper Embed data, there should be an entry in the File_thumbnail table. - // If not, we're not going to do anything. - $thumbnail = File_thumbnail::byFile($file); - } catch (NoResultException $e) { - // Not Embed data, or at least nothing we either can or want to use. - common_debug('No Embed data found for file id==' . $file->getID()); - return true; - } - - try { - $this->storeRemoteFileThumbnail($thumbnail); - } catch (AlreadyFulfilledException $e) { - // aw yiss! - } catch (Exception $e) { - common_debug(sprintf( - 'Embed encountered an exception (%s) for file id==%d: %s', - get_class($e), - $file->getID(), - _ve($e->getMessage()) - )); - throw $e; - } - - // Out - $imgPath = $thumbnail->getPath(); - - return !file_exists($imgPath); - } - - public function onFileDeleteRelated(File $file, array &$related): bool - { - $related[] = 'File_embed'; - return true; - } - - /** - * @param mixed $url - * * @throws ServerException if check is made but fails * * @return bool false on no check made, provider name on success */ - protected function checkWhitelist($url) + protected function checkAllowlist(string $url) { - if (!$this->check_whitelist) { + if (!$this->check_allowlist) { return false; // indicates "no check made" } $host = parse_url($url, PHP_URL_HOST); - foreach ($this->domain_whitelist as $regex => $provider) { + foreach ($this->domain_allowlist as $regex => $provider) { if (preg_match("/{$regex}/", $host)) { return $provider; // we trust this source, return provider name } } - throw new ServerException(sprintf(_('Domain not in remote thumbnail source whitelist: %s'), $host)); + throw new ServerException(_m('Domain not in remote thumbnail source allowlist: {host}', ['host' => $host])); } /** @@ -501,33 +316,32 @@ class Embed extends Plugin * the content-length variable returned. This isn't 100% foolproof but is * reliable enough for our purposes. * - * @param mixed $url - * @param null|mixed $headers + * @param string $url + * @param array $headers - if we already made a request * * @return bool|string the file size if it succeeds, false otherwise. */ - private function getRemoteFileSize($url, $headers = null) + private function getRemoteFileSize(string $url, ?array $headers = null): ?int { try { if ($headers === null) { - if (!common_valid_http_url($url)) { - common_log(LOG_ERR, 'Invalid URL in Embed::getRemoteFileSize()'); + if (!Common::isValidHttpUrl($url)) { + Log::error('Invalid URL in Embed::getRemoteFileSize()'); return false; } - $head = (new HTTPClient())->head($url); - $headers = $head->getHeader(); + $head = HTTPClient::head($url); + $headers = $head->getHeaders(); $headers = array_change_key_case($headers, CASE_LOWER); } return $headers['content-length'] ?? false; - } catch (Exception $err) { - common_log(LOG_ERR, __CLASS__ . ': getRemoteFileSize on URL : ' . _ve($url) . - ' threw exception: ' . $err->getMessage()); + } catch (Exception $e) { + Loog::error($e); return false; } } /** - * A private helper function that uses a CURL lookup to check the mime type + * A private helper function that uses a HEAD request to check the mime type * of a remote URL to see it it's an image. * * @param mixed $url @@ -535,128 +349,68 @@ class Embed extends Plugin * * @return bool true if the remote URL is an image, or false otherwise. */ - private function isRemoteImage($url, $headers = null) + private function isRemoteImage(string $url, ?array $headers = null): ?int { - if (empty($headers)) { - if (!common_valid_http_url($url)) { - common_log(LOG_ERR, 'Invalid URL in Embed::isRemoteImage()'); - return false; + try { + if ($headers === null) { + if (!Common::isValidHttpUrl($url)) { + Log::error('Invalid URL in Embed::getRemoteFileSize()'); + return false; + } + $head = HTTPClient::head($url); + $headers = $head->getHeaders(); + $headers = array_change_key_case($headers, CASE_LOWER); } - $head = (new HTTPClient())->head($url); - $headers = $head->getHeader(); - $headers = array_change_key_case($headers, CASE_LOWER); + return !empty($headers['content-type']) && GSFile::mimetypeMajor($headers['content-type']) === 'image'; + } catch (Exception $e) { + Loog::error($e); + return false; } - return !empty($headers['content-type']) && common_get_mime_media($headers['content-type']) === 'image'; } /** - * Validate that $imgData is a valid image before writing it to - * disk, as well as resizing it to at most $this->thumbnail_width - * by $this->thumbnail_height + * Validate that $imgData is a valid image, place it in it's folder and resize * - * @param $imgData - The image data to validate. Taken by reference to avoid copying + * @param $imgData - The image data to validate * @param null|string $url - The url where the image came from, to fetch metadata * @param null|array $headers - The headers possible previous request to $url - * @param null|int $file_id - The id of the file this image belongs to, used for logging */ - protected function validateAndWriteImage(&$imgData, ?string $url = null, ?array $headers = null, ?int $file_id = null): array + protected function validateAndWriteImage($imgData, string $url, array $headers): array { - $info = @getimagesizefromstring($imgData); - // array indexes documented on php.net: - // https://php.net/manual/en/function.getimagesize.php - if ($info === false) { - throw new UnsupportedMediaException(_('Remote file format was not identified as an image.'), $url); - } elseif (!$info[0] || !$info[1]) { - throw new UnsupportedMediaException(_('Image file had impossible geometry (0 width or height)')); + $file = new TemporaryFile(); + $file->write($imgData); + + if (array_key_exists('content-disposition', $headers) && preg_match('/^.+; filename="(.+?)"$/', $headers['content-disposition'], $matches) === 1) { + $original_name = $matches[1]; } - $width = min($info[0], $this->thumbnail_width); - $height = min($info[1], $this->thumbnail_height); - $filehash = hash(File::FILEHASH_ALG, $imgData); + $mimetype = $headers['content-type']; + Event::handle('AttachmentValidation', [$file, &$mimetype]); - try { - if (!empty($url)) { - $original_name = HTTPClient::get_filename($url, $headers); - } - $filename = MediaFile::encodeFilename($original_name ?? _m('Untitled attachment'), $filehash); - } catch (Exception $err) { - common_log(LOG_ERR, 'Went to write a thumbnail to disk in StoreRemoteMediaPlugin::storeRemoteThumbnail ' . - "but encountered error: {$err}"); - throw $err; - } + $hash = hash_file(Attachment::FILEHASH_ALGO, $file->getPathname()); + $filename = Common::config('attachments', 'dir') . "embed/{$hash}"; + $file->commit($filename); + unset($file); - try { - $fullpath = File_thumbnail::path($filename); - // Write the file to disk. Throw Exception on failure - if (!file_exists($fullpath)) { - if (strpos($fullpath, INSTALLDIR) !== 0 || file_put_contents($fullpath, $imgData) === false) { - throw new ServerException(_('Could not write downloaded file to disk.')); - } - - if (common_get_mime_media(MediaFile::getUploadedMimeType($fullpath)) !== 'image') { - @unlink($fullpath); - throw new UnsupportedMediaException( - _('Remote file format was not identified as an image.'), - $url - ); - } - - // If the image is not of the desired size, resize it - if ($this->crop && ($info[0] > $this->thumbnail_width || $info[1] > $this->thumbnail_height)) { - try { - // Temporary object, not stored in DB - $img = new ImageFile(-1, $fullpath); - list($width, $height, $x, $y, $w, $h) = $img->scaleToFit($this->thumbnail_width, $this->thumbnail_height, $this->crop); - - // The boundary box for our resizing - $box = [ - 'width' => $width, 'height' => $height, - 'x' => $x, 'y' => $y, - 'w' => $w, 'h' => $h, - ]; - - $width = $box['width']; - $height = $box['height']; - $img->resizeTo($fullpath, $box); - } catch (\Intervention\Image\Exception\NotReadableException $e) { - common_log(LOG_ERR, "StoreRemoteMediaPlugin::storeRemoteThumbnail was unable to decode image with Intervention: {$e}"); - // No need to interrupt processing - } - } - } else { - throw new AlreadyFulfilledException('A thumbnail seems to already exist for remote file' . - ($file_id ? 'with id==' . $file_id : '') . ' at path ' . $fullpath); - } - } catch (AlreadyFulfilledException $e) { - // Carry on - } catch (Exception $err) { - common_log(LOG_ERR, 'Went to write a thumbnail to disk in EmbedPlugin::storeRemoteThumbnail ' . - "but encountered error: {$err}"); - throw $err; - } finally { - unset($imgData); - } - - return [$filename, $width, $height]; + return [$filename, $width, $height, $original_name, $mimetype]; } /** * Function to create and store a thumbnail representation of a remote image * - * @param $thumbnail File_thumbnail object containing the file thumbnail + * @param $thumbnail FileThumbnail object containing the file thumbnail * * @return bool true if it succeeded, the exception if it fails, or false if it * is limited by system limits (ie the file is too large.) */ - protected function storeRemoteFileThumbnail(File_thumbnail $thumbnail) + protected function storeRemoteThumbnail(Attachment $attachment): bool { - if (!empty($thumbnail->filename) && file_exists($thumbnail->getPath())) { - throw new AlreadyFulfilledException( - sprintf('A thumbnail seems to already exist for remote file with id==%u', $thumbnail->file_id) - ); + $path = $attachment->getPath(); + if (file_exists($path)) { + throw new AlreadyFulfilledException(_m('A thumbnail seems to already exist for remote file with id=={id}', ['id' => $attachment->id])); } - $url = $thumbnail->url; // Important not to use the getter here. + $url = $attachment->getRemoteUrl(); if (substr($url, 0, 7) == 'file://') { $filename = substr($url, 7); @@ -665,86 +419,48 @@ class Embed extends Plugin $width = $info[0]; $height = $info[1]; } else { - $this->checkWhitelist($url); - $head = (new HTTPClient())->head($url); - $headers = $head->getHeader(); + $this->checkAllowlist($url); + $head = HTTPClient::head($url); + $headers = $head->getHeaders(); $headers = array_change_key_case($headers, CASE_LOWER); try { $is_image = $this->isRemoteImage($url, $headers); if ($is_image == true) { $file_size = $this->getRemoteFileSize($url, $headers); - if (($file_size != false) && ($file_size > $this->max_size)) { - common_debug('Went to store remote thumbnail of size ' . $file_size . - ' but the upload limit is ' . $this->max_size . ' so we aborted.'); + $max_size = Common::config('attachments', 'file_quota'); + if (($file_size != false) && ($file_size > $max_size)) { + Log::debug("Wanted to store remote thumbnail of size {$file_size} but the upload limit is {$max_size} so we aborted."); return false; } } else { return false; } } catch (Exception $err) { - common_debug('Could not determine size of remote image, aborted local storage.'); + Log::debug('Could not determine size of remote image, aborted local storage.'); throw $err; } // First we download the file to memory and test whether it's actually an image file - // FIXME: To support remote video/whatever files, this needs reworking. - common_debug(sprintf( - 'Downloading remote thumbnail for file id==%u with thumbnail URL: %s', - $thumbnail->file_id, - $url - )); + Log::debug("Downloading remote thumbnail for file id=={$attachment->id} with thumbnail URL: {$url}"); try { - $imgData = HTTPClient::quickGet($url); + $imgData = HTTPClient::get($url); if (isset($imgData)) { - list($filename, $width, $height) = $this->validateAndWriteImage( - $imgData, - $url, - $headers, - $thumbnail->file_id - ); + [$filename, $width, $height, $original_name, $mimetype] = $this->validateAndWriteImage($imgData, $url, $headers); } else { - throw new UnsupportedMediaException('HTTPClient returned an empty result'); + throw new UnsupportedMediaException(_m('HTTPClient returned an empty result')); } } catch (UnsupportedMediaException $e) { // Couldn't find anything that looks like an image, nothing to do - common_debug("Embed was not able to find an image for URL `{$url}`: " . $e->getMessage()); + Log::debug($e); return false; } } - try { - // Update our database for the thumbnail record - $orig = clone $thumbnail; - $thumbnail->filename = $filename; - $thumbnail->width = $width; - $thumbnail->height = $height; - // Throws exception on failure. - $thumbnail->updateWithKeys($orig); - } catch (Exception $err) { - common_log(LOG_ERR, 'Went to write a thumbnail entry to the database in ' . - 'EmbedPlugin::storeRemoteThumbnail but encountered error: ' . $err); - throw $err; - } - return true; - } + DB::persist(AttachmentThumbnail::create(['attachment_id' => $attachment->id, 'width' => $width, 'height' => $height])); + $attachment->setFilename($filename); + DB::flush(); - /** - * Event raised when GNU social polls the plugin for information about it. - * Adds this plugin's version information to $versions array - * - * @param &$versions array inherited from parent - * - * @return bool true hook value - */ - public function onPluginVersion(array &$versions): bool - { - $versions[] = ['name' => 'Embed', - 'version' => self::PLUGIN_VERSION, - 'author' => 'Mikael Nordfeldth', - 'homepage' => GNUSOCIAL_ENGINE_URL, - 'description' => // TRANS: Plugin description. - _m('Plugin for using and representing oEmbed, OpenGraph and other data.'), ]; return true; } } diff --git a/plugins/Embed/EmbedHelper.php b/plugins/Embed/EmbedHelper.php new file mode 100644 index 0000000000..6b576075c4 --- /dev/null +++ b/plugins/Embed/EmbedHelper.php @@ -0,0 +1,191 @@ +. +// }}} + +/** + * OembedPlugin implementation for GNU social + * + * @package GNUsocial + * + * @author Mikael Nordfeldth + * @author hannes + * @author Diogo Cordeiro + * @author Hugo Sales + * @copyright 2019, 2021 Free Software Foundation, Inc http://www.fsf.org + * @license https://www.gnu.org/licenses/agpl.html GNU AGPL v3 or later + */ + +namespace Plugin\Embed; + +use App\Core\Event; +use App\Core\HTTPClient; +use App\Core\Log; + +/** + * Utility class to wrap basic embed lookups. + * + * Denylisted hosts will use an alternate lookup method. + * Allowlisted hosts will use known embed API endpoints. + * + * Sites that provide discovery links will use them directly; a bug + * in use of discovery links with query strings is worked around. + * + * Others will fall back to oohembed (unless disabled). + * The API endpoint can be configured or disabled through config + * as 'oohembed'/'endpoint'. + * + * @copyright 2019, 2021 Free Software Foundation, Inc http://www.fsf.org + * @license https://www.gnu.org/licenses/agpl.html GNU AGPL v3 or later + */ +class EmbedHelper +{ + /** + * Perform or fake an oEmbed lookup for the given $url. + * + * Some known hosts are allowlisted with API endpoints where we + * know they exist but autodiscovery data isn't available. + * + * A few hosts are denylisted due to known problems with oohembed, + * in which case we'll look up the info another way and return + * equivalent data. + * + * Throws exceptions on failure. + * + * @param string $url + * + * @throws EmbedHelper_BadHtmlException + * @throws HTTP_Request2_Exception + * + * @return object + */ + public static function getEmbed(string $url) + { + Log::info('Checking for remote URL metadata for ' . $url); + + $metadata = new \stdClass(); + + if (Event::handle('GetRemoteUrlMetadata', [$url, &$metadata])) { + // If that event didn't return anything, try downloading the body and parse it + + $response = HTTPClient::get($url); + $body = $response->getBody(); + + // DOMDocument::loadHTML may throw warnings on unrecognized elements, + // and notices on unrecognized namespaces. + $old = error_reporting(error_reporting() & ~(E_WARNING | E_NOTICE)); + + // DOMDocument assumes ISO-8859-1 per HTML spec + // use UTF-8 if we find any evidence of that encoding + $utf8_evidence = false; + $unicode_check_dom = new DOMDocument(); + $ok = $unicode_check_dom->loadHTML($body); + if (!$ok) { + throw new EmbedHelper_BadHtmlException(); + } + $metaNodes = $unicode_check_dom->getElementsByTagName('meta'); + foreach ($metaNodes as $metaNode) { + // case in-sensitive since Content-type and utf-8 can be written in many ways + if (stristr($metaNode->getAttribute('http-equiv'), 'content-type') + && stristr($metaNode->getAttribute('content'), 'utf-8')) { + $utf8_evidence = true; + break; + } elseif (stristr($metaNode->getAttribute('charset'), 'utf-8')) { + $utf8_evidence = true; + break; + } + } + unset($unicode_check_dom); + + // The Content-Type HTTP response header overrides encoding metatags in DOM + if (stristr($response->getHeader('Content-Type'), 'utf-8')) { + $utf8_evidence = true; + } + + // add utf-8 encoding prolog if we have reason to believe this is utf-8 content + // DOMDocument('1.0', 'UTF-8') does not work! + $utf8_tag = $utf8_evidence ? '' : ''; + + $dom = new DOMDocument(); + $ok = $dom->loadHTML($utf8_tag . $body); + unset($body); // storing the DOM in memory is enough... + error_reporting($old); + + if (!$ok) { + throw new EmbedHelper_BadHtmlException(); + } + + Event::handle('GetRemoteUrlMetadataFromDom', [$url, $dom, &$metadata]); + } + + return self::normalize($metadata); + } + + /** + * Normalize oEmbed format. + * + * @param stdClass $data + * + * @throws Exception + * + * @return object + */ + public static function normalize(stdClass $data) + { + if (empty($data->type)) { + throw new Exception('Invalid oEmbed data: no type field.'); + } + if ($data->type == 'image') { + // YFrog does this. + $data->type = 'photo'; + } + + if (isset($data->thumbnail_url)) { + if (!isset($data->thumbnail_width)) { + // !?!?! + $data->thumbnail_width = Common::config('thumbnail', 'width'); + $data->thumbnail_height = Common::config('thumbnail', 'height'); + } + } + + return $data; + } +} + +class EmbedHelper_Exception extends \Exception +{ + public function __construct($message = '', $code = 0, $previous = null) + { + parent::__construct($message, $code, $previous); + } +} + +class EmbedHelper_BadHtmlException extends EmbedHelper_Exception +{ + public function __construct($previous = null) + { + return parent::__construct('Bad HTML in discovery data.', 0, $previous); + } +} + +class EmbedHelper_DiscoveryException extends EmbedHelper_Exception +{ + public function __construct($previous = null) + { + return parent::__construct('No oEmbed discovery data.', 0, $previous); + } +} diff --git a/plugins/Embed/Entity/AttachmentEmbed.php b/plugins/Embed/Entity/AttachmentEmbed.php new file mode 100644 index 0000000000..401fdce227 --- /dev/null +++ b/plugins/Embed/Entity/AttachmentEmbed.php @@ -0,0 +1,180 @@ +. + +// }}} + +/** + * OembedPlugin implementation for GNU social + * + * @package GNUsocial + * + * @author Stephen Paul Weber + * @author Mikael Nordfeldth + * @author Diogo Cordeiro + * @copyright 2019 Free Software Foundation, Inc http://www.fsf.org + * @license https://www.gnu.org/licenses/agpl.html GNU AGPL v3 or later + */ + +namespace Plugin\Embed\Entity; + +use App\Core\Entity; + +/** + * Table Definition for file_embed + * + * @copyright 2019 Free Software Foundation, Inc http://www.fsf.org + * @license https://www.gnu.org/licenses/agpl.html GNU AGPL v3 or later + */ +class AttachmentEmbed extends Entity +{ + public $attachment_id; // int(4) primary_key not_null + public $version; // varchar(20) + public $type; // varchar(20) + public $mimetype; // varchar(50) + public $provider; // varchar(50) + public $provider_url; // varchar(191) not 255 because utf8mb4 takes more space + public $width; // int(4) + public $height; // int(4) + public $html; // text() + public $title; // varchar(191) + public $author_name; // varchar(50) + public $author_url; // varchar(191) not 255 because utf8mb4 takes more space + public $url; // varchar(191) not 255 because utf8mb4 takes more space + public $modified; // timestamp() not_null default_CURRENT_TIMESTAMP + + public static function schemaDef() + { + return [ + 'name' => 'attachment_embed', + 'fields' => [ + 'attachment_id' => ['type' => 'int', 'not null' => true, 'description' => 'oEmbed for that URL/file'], + 'version' => ['type' => 'varchar', 'length' => 20, 'description' => 'oEmbed spec. version'], + 'type' => ['type' => 'varchar', 'length' => 20, 'description' => 'oEmbed type: photo, video, link, rich'], + 'mimetype' => ['type' => 'varchar', 'length' => 50, 'description' => 'mime type of resource'], + 'provider' => ['type' => 'text', 'description' => 'name of this oEmbed provider'], + 'provider_url' => ['type' => 'text', 'description' => 'URL of this oEmbed provider'], + 'width' => ['type' => 'int', 'description' => 'width of oEmbed resource when available'], + 'height' => ['type' => 'int', 'description' => 'height of oEmbed resource when available'], + 'html' => ['type' => 'text', 'description' => 'html representation of this oEmbed resource when applicable'], + 'title' => ['type' => 'text', 'description' => 'title of oEmbed resource when available'], + 'author_name' => ['type' => 'text', 'description' => 'author name for this oEmbed resource'], + 'author_url' => ['type' => 'text', 'description' => 'author URL for this oEmbed resource'], + 'url' => ['type' => 'text', 'description' => 'URL for this oEmbed resource when applicable (photo, link)'], + 'modified' => ['type' => 'timestamp', 'not null' => true, 'description' => 'date this record was modified'], + ], + 'primary key' => ['attachment_id'], + 'foreign keys' => [ + 'file_embed_file_id_fkey' => ['file', ['file_id' => 'id']], + ], + ]; + } + + /** + * Fetch an entry by using a File's id + */ + public static function getByFile(File $file) + { + $fo = new File_embed(); + $fo->file_id = $file->id; + if (!$fo->find(true)) { + throw new NoResultException($fo); + } + return $fo; + } + + public function getUrl() + { + return $this->url; + } + + /** + * Save embedding info for a new file. + * + * @param object $data Services_oEmbed_Object_* + * @param int $file_id + */ + public static function saveNew($data, $file_id) + { + $file_embed = new File_embed; + $file_embed->file_id = $file_id; + if (!isset($data->version)) { + common_debug('Embed: data->version undefined in variable $data: ' . var_export($data, true)); + } + $file_embed->version = $data->version; + $file_embed->type = $data->type; + if (!empty($data->provider)) { + $file_embed->provider = $data->provider; + } + if (!empty($data->provider_name)) { + $file_embed->provider = $data->provider_name; + } + if (!empty($data->provider_url)) { + $file_embed->provider_url = $data->provider_url; + } + if (!empty($data->width)) { + $file_embed->width = (int) ($data->width); + } + if (!empty($data->height)) { + $file_embed->height = (int) ($data->height); + } + if (!empty($data->html)) { + $file_embed->html = $data->html; + } + if (!empty($data->title)) { + $file_embed->title = $data->title; + } + if (!empty($data->author_name)) { + $file_embed->author_name = $data->author_name; + } + if (!empty($data->author_url)) { + $file_embed->author_url = $data->author_url; + } + if (!empty($data->url)) { + $file_embed->url = $data->url; + $given_url = File_redirection::_canonUrl($file_embed->url); + if (!empty($given_url)) { + try { + $file = File::getByUrl($given_url); + $file_embed->mimetype = $file->mimetype; + } catch (NoResultException $e) { + // File_redirection::where argument 'discover' is false to avoid loops + $redir = File_redirection::where($given_url, false); + if (!empty($redir->file_id)) { + $file_id = $redir->file_id; + } + } + } + } + $result = $file_embed->insert(); + if ($result === false) { + throw new ServerException('Failed to insert File_embed data into database!'); + } + if (!empty($data->thumbnail_url) || ($data->type == 'photo')) { + $ft = File_thumbnail::getKV('file_id', $file_id); + if ($ft instanceof File_thumbnail) { + common_log( + LOG_WARNING, + "Strangely, a File_thumbnail object exists for new file {$file_id}", + __FILE__ + ); + } else { + File_thumbnail::saveNew($data, $file_id); + } + } + } +} diff --git a/plugins/Embed/Test/EmbedTest.php b/plugins/Embed/Test/EmbedTest.php new file mode 100644 index 0000000000..dbe56ce195 --- /dev/null +++ b/plugins/Embed/Test/EmbedTest.php @@ -0,0 +1,85 @@ +. +// }}} + +/** + * OembedPlugin implementation for GNU social + * + * @package GNUsocial + * + * @author Mikael Nordfeldth + * @author Diogo Cordeiro + * @copyright 2019 Free Software Foundation, Inc http://www.fsf.org + * @license https://www.gnu.org/licenses/agpl.html GNU AGPL v3 or later + */ + +namespace Plugin\Embed\Test; + +use PHPUnit\Framework\TestCase; + +final class EmbedTest extends TestCase +{ + /** + * Run tests + * + * @param string $url + * @param string $expectedType + * @dataProvider sources + */ + public function testEmbed($url, $expectedType) + { + try { + $data = EmbedHelper::getObject($url); + static::assertSame($expectedType, $data->type); + if ($data->type == 'photo') { + static::assertTrue(!empty($data->thumbnail_url), 'Photo must have a URL.'); + static::assertTrue(!empty($data->thumbnail_width), 'Photo must have a width.'); + static::assertTrue(!empty($data->thumbnail_height), 'Photo must have a height.'); + } elseif ($data->type == 'video') { + static::assertTrue(!empty($data->html), 'Video must have embedding HTML.'); + static::assertTrue(!empty($data->thumbnail_url), 'Video should have a thumbnail.'); + } else { + static::assertTrue(!empty($data->title), 'Page must have a title'); + static::assertTrue(!empty($data->url), 'Page must have a URL'); + } + if (!empty($data->thumbnail_url)) { + static::assertTrue(!empty($data->thumbnail_width), 'Thumbnail must list a width.'); + static::assertTrue(!empty($data->thumbnail_height), 'Thumbnail must list a height.'); + } + } catch (Exception $e) { + if ($expectedType == 'none') { + static::assertSame($expectedType, 'none', 'Should not have data for this URL.'); + } else { + throw $e; + } + } + } + + public static function sources() + { + return [ + ['https://notabug.org/', 'link'], + ['http://www.youtube.com/watch?v=eUgLR232Cnw', 'video'], + [GNUSOCIAL_ENGINE_URL, 'link'], + ['https://www.gnu.org/graphics/heckert_gnu.transp.small.png', 'photo'], + ['http://vimeo.com/9283184', 'video'], + ['http://leuksman.com/log/2010/10/29/statusnet-0-9-6-release/', 'none'], + ['https://github.com/git/git/commit/85e9c7e1d42849c5c3084a9da748608468310c0e', 'link'], + ]; + } +} diff --git a/plugins/Embed/locale/Embed.pot b/plugins/Embed/locale/Embed.pot new file mode 100644 index 0000000000..90e09a9c0e --- /dev/null +++ b/plugins/Embed/locale/Embed.pot @@ -0,0 +1,29 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2020-08-04 01:05+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#. TRANS: Exception. %s is the URL we tried to GET. +#: lib/embedhelper.php:87 +#, php-format +msgid "Could not GET URL %s." +msgstr "" + +#. TRANS: Plugin description. +#: EmbedPlugin.php:687 +msgid "Plugin for using and representing oEmbed, OpenGraph and other data." +msgstr "" diff --git a/plugins/Embed/locale/af/LC_MESSAGES/Embed.po b/plugins/Embed/locale/af/LC_MESSAGES/Embed.po new file mode 100644 index 0000000000..b18a8478fa --- /dev/null +++ b/plugins/Embed/locale/af/LC_MESSAGES/Embed.po @@ -0,0 +1,23 @@ +# Translation file for GNU social - the free software social networking platform +# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org +# This file is under https://www.gnu.org/licenses/agpl v3 or later +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: GNU social\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-02-02 17:47+0100\n" +"PO-Revision-Date: 2015-02-07 09:29+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Afrikaans (http://www.transifex.com/gnu-social/gnu-social/language/af/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: af\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. TRANS: Plugin description. +#: OembedPlugin.php:190 +msgid "Plugin for using and representing Oembed data." +msgstr "" diff --git a/plugins/Embed/locale/ar/LC_MESSAGES/Embed.po b/plugins/Embed/locale/ar/LC_MESSAGES/Embed.po new file mode 100644 index 0000000000..a983489f86 --- /dev/null +++ b/plugins/Embed/locale/ar/LC_MESSAGES/Embed.po @@ -0,0 +1,23 @@ +# Translation file for GNU social - the free software social networking platform +# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org +# This file is under https://www.gnu.org/licenses/agpl v3 or later +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: GNU social\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-02-02 17:47+0100\n" +"PO-Revision-Date: 2015-02-07 09:29+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Arabic (http://www.transifex.com/gnu-social/gnu-social/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" + +#. TRANS: Plugin description. +#: OembedPlugin.php:190 +msgid "Plugin for using and representing Oembed data." +msgstr "" diff --git a/plugins/Embed/locale/arz/LC_MESSAGES/Embed.po b/plugins/Embed/locale/arz/LC_MESSAGES/Embed.po new file mode 100644 index 0000000000..fd04495ae8 --- /dev/null +++ b/plugins/Embed/locale/arz/LC_MESSAGES/Embed.po @@ -0,0 +1,23 @@ +# Translation file for GNU social - the free software social networking platform +# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org +# This file is under https://www.gnu.org/licenses/agpl v3 or later +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: GNU social\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-02-02 17:47+0100\n" +"PO-Revision-Date: 2015-02-07 09:29+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Arabic (Egypt) (http://www.transifex.com/gnu-social/gnu-social/language/ar_EG/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ar_EG\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" + +#. TRANS: Plugin description. +#: OembedPlugin.php:190 +msgid "Plugin for using and representing Oembed data." +msgstr "" diff --git a/plugins/Embed/locale/ast/LC_MESSAGES/Embed.po b/plugins/Embed/locale/ast/LC_MESSAGES/Embed.po new file mode 100644 index 0000000000..4089adf0c8 --- /dev/null +++ b/plugins/Embed/locale/ast/LC_MESSAGES/Embed.po @@ -0,0 +1,23 @@ +# Translation file for GNU social - the free software social networking platform +# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org +# This file is under https://www.gnu.org/licenses/agpl v3 or later +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: GNU social\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-02-02 17:47+0100\n" +"PO-Revision-Date: 2015-02-07 09:29+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Asturian (http://www.transifex.com/gnu-social/gnu-social/language/ast/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ast\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. TRANS: Plugin description. +#: OembedPlugin.php:190 +msgid "Plugin for using and representing Oembed data." +msgstr "" diff --git a/plugins/Embed/locale/be-tarask/LC_MESSAGES/Embed.po b/plugins/Embed/locale/be-tarask/LC_MESSAGES/Embed.po new file mode 100644 index 0000000000..ffdfc4e1de --- /dev/null +++ b/plugins/Embed/locale/be-tarask/LC_MESSAGES/Embed.po @@ -0,0 +1,23 @@ +# Translation file for GNU social - the free software social networking platform +# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org +# This file is under https://www.gnu.org/licenses/agpl v3 or later +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: GNU social\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-02-02 17:47+0100\n" +"PO-Revision-Date: 2015-02-07 09:29+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Belarusian (Tarask) (http://www.transifex.com/gnu-social/gnu-social/language/be@tarask/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: be@tarask\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" + +#. TRANS: Plugin description. +#: OembedPlugin.php:190 +msgid "Plugin for using and representing Oembed data." +msgstr "" diff --git a/plugins/Embed/locale/bg/LC_MESSAGES/Embed.po b/plugins/Embed/locale/bg/LC_MESSAGES/Embed.po new file mode 100644 index 0000000000..0a3c8e62f2 --- /dev/null +++ b/plugins/Embed/locale/bg/LC_MESSAGES/Embed.po @@ -0,0 +1,23 @@ +# Translation file for GNU social - the free software social networking platform +# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org +# This file is under https://www.gnu.org/licenses/agpl v3 or later +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: GNU social\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-02-02 17:47+0100\n" +"PO-Revision-Date: 2015-02-07 09:29+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Bulgarian (http://www.transifex.com/gnu-social/gnu-social/language/bg/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: bg\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. TRANS: Plugin description. +#: OembedPlugin.php:190 +msgid "Plugin for using and representing Oembed data." +msgstr "" diff --git a/plugins/Embed/locale/bn_IN/LC_MESSAGES/Embed.po b/plugins/Embed/locale/bn_IN/LC_MESSAGES/Embed.po new file mode 100644 index 0000000000..55b5a660cb --- /dev/null +++ b/plugins/Embed/locale/bn_IN/LC_MESSAGES/Embed.po @@ -0,0 +1,23 @@ +# Translation file for GNU social - the free software social networking platform +# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org +# This file is under https://www.gnu.org/licenses/agpl v3 or later +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: GNU social\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-02-02 17:47+0100\n" +"PO-Revision-Date: 2015-02-07 09:29+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Bengali (India) (http://www.transifex.com/gnu-social/gnu-social/language/bn_IN/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: bn_IN\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. TRANS: Plugin description. +#: OembedPlugin.php:190 +msgid "Plugin for using and representing Oembed data." +msgstr "" diff --git a/plugins/Embed/locale/br/LC_MESSAGES/Embed.po b/plugins/Embed/locale/br/LC_MESSAGES/Embed.po new file mode 100644 index 0000000000..85d0540dc9 --- /dev/null +++ b/plugins/Embed/locale/br/LC_MESSAGES/Embed.po @@ -0,0 +1,23 @@ +# Translation file for GNU social - the free software social networking platform +# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org +# This file is under https://www.gnu.org/licenses/agpl v3 or later +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: GNU social\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-02-02 17:47+0100\n" +"PO-Revision-Date: 2015-02-07 09:29+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Breton (http://www.transifex.com/gnu-social/gnu-social/language/br/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: br\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#. TRANS: Plugin description. +#: OembedPlugin.php:190 +msgid "Plugin for using and representing Oembed data." +msgstr "" diff --git a/plugins/Embed/locale/ca/LC_MESSAGES/Embed.po b/plugins/Embed/locale/ca/LC_MESSAGES/Embed.po new file mode 100644 index 0000000000..ef7823dddd --- /dev/null +++ b/plugins/Embed/locale/ca/LC_MESSAGES/Embed.po @@ -0,0 +1,23 @@ +# Translation file for GNU social - the free software social networking platform +# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org +# This file is under https://www.gnu.org/licenses/agpl v3 or later +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: GNU social\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-02-02 17:47+0100\n" +"PO-Revision-Date: 2015-02-07 09:29+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Catalan (http://www.transifex.com/gnu-social/gnu-social/language/ca/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ca\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. TRANS: Plugin description. +#: OembedPlugin.php:190 +msgid "Plugin for using and representing Oembed data." +msgstr "" diff --git a/plugins/Embed/locale/cs/LC_MESSAGES/Embed.po b/plugins/Embed/locale/cs/LC_MESSAGES/Embed.po new file mode 100644 index 0000000000..d560b3ff4e --- /dev/null +++ b/plugins/Embed/locale/cs/LC_MESSAGES/Embed.po @@ -0,0 +1,23 @@ +# Translation file for GNU social - the free software social networking platform +# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org +# This file is under https://www.gnu.org/licenses/agpl v3 or later +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: GNU social\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-02-02 17:47+0100\n" +"PO-Revision-Date: 2015-02-07 09:29+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Czech (http://www.transifex.com/gnu-social/gnu-social/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=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" + +#. TRANS: Plugin description. +#: OembedPlugin.php:190 +msgid "Plugin for using and representing Oembed data." +msgstr "" diff --git a/plugins/Embed/locale/da/LC_MESSAGES/Embed.po b/plugins/Embed/locale/da/LC_MESSAGES/Embed.po new file mode 100644 index 0000000000..aacd973027 --- /dev/null +++ b/plugins/Embed/locale/da/LC_MESSAGES/Embed.po @@ -0,0 +1,23 @@ +# Translation file for GNU social - the free software social networking platform +# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org +# This file is under https://www.gnu.org/licenses/agpl v3 or later +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: GNU social\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-02-02 17:47+0100\n" +"PO-Revision-Date: 2015-02-07 09:29+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Danish (http://www.transifex.com/gnu-social/gnu-social/language/da/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: da\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. TRANS: Plugin description. +#: OembedPlugin.php:190 +msgid "Plugin for using and representing Oembed data." +msgstr "" diff --git a/plugins/Embed/locale/de/LC_MESSAGES/Embed.po b/plugins/Embed/locale/de/LC_MESSAGES/Embed.po new file mode 100644 index 0000000000..704083d1d2 --- /dev/null +++ b/plugins/Embed/locale/de/LC_MESSAGES/Embed.po @@ -0,0 +1,23 @@ +# Translation file for GNU social - the free software social networking platform +# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org +# This file is under https://www.gnu.org/licenses/agpl v3 or later +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: GNU social\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-02-02 17:47+0100\n" +"PO-Revision-Date: 2015-02-07 09:29+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: German (http://www.transifex.com/gnu-social/gnu-social/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" + +#. TRANS: Plugin description. +#: OembedPlugin.php:190 +msgid "Plugin for using and representing Oembed data." +msgstr "" diff --git a/plugins/Embed/locale/el/LC_MESSAGES/Embed.po b/plugins/Embed/locale/el/LC_MESSAGES/Embed.po new file mode 100644 index 0000000000..74dfaec020 --- /dev/null +++ b/plugins/Embed/locale/el/LC_MESSAGES/Embed.po @@ -0,0 +1,23 @@ +# Translation file for GNU social - the free software social networking platform +# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org +# This file is under https://www.gnu.org/licenses/agpl v3 or later +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: GNU social\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-02-02 17:47+0100\n" +"PO-Revision-Date: 2015-02-07 09:29+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Greek (http://www.transifex.com/gnu-social/gnu-social/language/el/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: el\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. TRANS: Plugin description. +#: OembedPlugin.php:190 +msgid "Plugin for using and representing Oembed data." +msgstr "" diff --git a/plugins/Embed/locale/en_GB/LC_MESSAGES/Embed.po b/plugins/Embed/locale/en_GB/LC_MESSAGES/Embed.po new file mode 100644 index 0000000000..5f6d64b742 --- /dev/null +++ b/plugins/Embed/locale/en_GB/LC_MESSAGES/Embed.po @@ -0,0 +1,24 @@ +# Translation file for GNU social - the free software social networking platform +# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org +# This file is under https://www.gnu.org/licenses/agpl v3 or later +# +# Translators: +# Luke Hollins , 2015 +msgid "" +msgstr "" +"Project-Id-Version: GNU social\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-02-02 17:47+0100\n" +"PO-Revision-Date: 2015-03-07 17:25+0000\n" +"Last-Translator: Luke Hollins \n" +"Language-Team: English (United Kingdom) (http://www.transifex.com/gnu-social/gnu-social/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" + +#. TRANS: Plugin description. +#: OembedPlugin.php:190 +msgid "Plugin for using and representing Oembed data." +msgstr "Plugin for using and representing Oembed data." diff --git a/plugins/Embed/locale/eo/LC_MESSAGES/Embed.po b/plugins/Embed/locale/eo/LC_MESSAGES/Embed.po new file mode 100644 index 0000000000..baa649dc41 --- /dev/null +++ b/plugins/Embed/locale/eo/LC_MESSAGES/Embed.po @@ -0,0 +1,23 @@ +# Translation file for GNU social - the free software social networking platform +# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org +# This file is under https://www.gnu.org/licenses/agpl v3 or later +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: GNU social\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-02-02 17:47+0100\n" +"PO-Revision-Date: 2015-02-07 09:29+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Esperanto (http://www.transifex.com/gnu-social/gnu-social/language/eo/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: eo\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. TRANS: Plugin description. +#: OembedPlugin.php:190 +msgid "Plugin for using and representing Oembed data." +msgstr "" diff --git a/plugins/Embed/locale/es/LC_MESSAGES/Embed.po b/plugins/Embed/locale/es/LC_MESSAGES/Embed.po new file mode 100644 index 0000000000..23178f8615 --- /dev/null +++ b/plugins/Embed/locale/es/LC_MESSAGES/Embed.po @@ -0,0 +1,24 @@ +# Translation file for GNU social - the free software social networking platform +# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org +# This file is under https://www.gnu.org/licenses/agpl v3 or later +# +# Translators: +# Juan Riquelme González , 2015 +msgid "" +msgstr "" +"Project-Id-Version: GNU social\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-02-02 17:47+0100\n" +"PO-Revision-Date: 2015-02-11 23:30+0000\n" +"Last-Translator: Juan Riquelme González \n" +"Language-Team: Spanish (http://www.transifex.com/gnu-social/gnu-social/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" + +#. TRANS: Plugin description. +#: OembedPlugin.php:190 +msgid "Plugin for using and representing Oembed data." +msgstr "Complemento para el uso y representación de datos en formato Oembed." diff --git a/plugins/Embed/locale/eu/LC_MESSAGES/Embed.po b/plugins/Embed/locale/eu/LC_MESSAGES/Embed.po new file mode 100644 index 0000000000..e1f28bd52f --- /dev/null +++ b/plugins/Embed/locale/eu/LC_MESSAGES/Embed.po @@ -0,0 +1,23 @@ +# Translation file for GNU social - the free software social networking platform +# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org +# This file is under https://www.gnu.org/licenses/agpl v3 or later +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: GNU social\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-02-02 17:47+0100\n" +"PO-Revision-Date: 2015-02-07 09:29+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Basque (http://www.transifex.com/gnu-social/gnu-social/language/eu/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: eu\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. TRANS: Plugin description. +#: OembedPlugin.php:190 +msgid "Plugin for using and representing Oembed data." +msgstr "" diff --git a/plugins/Embed/locale/fa/LC_MESSAGES/Embed.po b/plugins/Embed/locale/fa/LC_MESSAGES/Embed.po new file mode 100644 index 0000000000..84ed51913b --- /dev/null +++ b/plugins/Embed/locale/fa/LC_MESSAGES/Embed.po @@ -0,0 +1,23 @@ +# Translation file for GNU social - the free software social networking platform +# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org +# This file is under https://www.gnu.org/licenses/agpl v3 or later +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: GNU social\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-02-02 17:47+0100\n" +"PO-Revision-Date: 2015-02-07 09:29+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Persian (http://www.transifex.com/gnu-social/gnu-social/language/fa/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: fa\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#. TRANS: Plugin description. +#: OembedPlugin.php:190 +msgid "Plugin for using and representing Oembed data." +msgstr "" diff --git a/plugins/Embed/locale/fi/LC_MESSAGES/Embed.po b/plugins/Embed/locale/fi/LC_MESSAGES/Embed.po new file mode 100644 index 0000000000..6a26913581 --- /dev/null +++ b/plugins/Embed/locale/fi/LC_MESSAGES/Embed.po @@ -0,0 +1,23 @@ +# Translation file for GNU social - the free software social networking platform +# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org +# This file is under https://www.gnu.org/licenses/agpl v3 or later +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: GNU social\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-02-02 17:47+0100\n" +"PO-Revision-Date: 2015-02-07 09:29+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Finnish (http://www.transifex.com/gnu-social/gnu-social/language/fi/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: fi\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. TRANS: Plugin description. +#: OembedPlugin.php:190 +msgid "Plugin for using and representing Oembed data." +msgstr "" diff --git a/plugins/Embed/locale/fr/LC_MESSAGES/Embed.po b/plugins/Embed/locale/fr/LC_MESSAGES/Embed.po new file mode 100644 index 0000000000..59c799892b --- /dev/null +++ b/plugins/Embed/locale/fr/LC_MESSAGES/Embed.po @@ -0,0 +1,24 @@ +# Translation file for GNU social - the free software social networking platform +# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org +# This file is under https://www.gnu.org/licenses/agpl v3 or later +# +# Translators: +# iGor milhit , 2015 +msgid "" +msgstr "" +"Project-Id-Version: GNU social\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-02-02 17:47+0100\n" +"PO-Revision-Date: 2015-05-06 06:02+0000\n" +"Last-Translator: iGor milhit \n" +"Language-Team: French (http://www.transifex.com/gnu-social/gnu-social/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=2; plural=(n > 1);\n" + +#. TRANS: Plugin description. +#: OembedPlugin.php:190 +msgid "Plugin for using and representing Oembed data." +msgstr "Extension pour l'utilisation et la représentation des données Oembed" diff --git a/plugins/Embed/locale/fur/LC_MESSAGES/Embed.po b/plugins/Embed/locale/fur/LC_MESSAGES/Embed.po new file mode 100644 index 0000000000..4c2a34a5be --- /dev/null +++ b/plugins/Embed/locale/fur/LC_MESSAGES/Embed.po @@ -0,0 +1,23 @@ +# Translation file for GNU social - the free software social networking platform +# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org +# This file is under https://www.gnu.org/licenses/agpl v3 or later +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: GNU social\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-02-02 17:47+0100\n" +"PO-Revision-Date: 2015-02-07 09:29+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Friulian (http://www.transifex.com/gnu-social/gnu-social/language/fur/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: fur\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. TRANS: Plugin description. +#: OembedPlugin.php:190 +msgid "Plugin for using and representing Oembed data." +msgstr "" diff --git a/plugins/Embed/locale/gl/LC_MESSAGES/Embed.po b/plugins/Embed/locale/gl/LC_MESSAGES/Embed.po new file mode 100644 index 0000000000..a8cb38fbcf --- /dev/null +++ b/plugins/Embed/locale/gl/LC_MESSAGES/Embed.po @@ -0,0 +1,23 @@ +# Translation file for GNU social - the free software social networking platform +# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org +# This file is under https://www.gnu.org/licenses/agpl v3 or later +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: GNU social\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-02-02 17:47+0100\n" +"PO-Revision-Date: 2015-02-07 09:29+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Galician (http://www.transifex.com/gnu-social/gnu-social/language/gl/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: gl\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. TRANS: Plugin description. +#: OembedPlugin.php:190 +msgid "Plugin for using and representing Oembed data." +msgstr "" diff --git a/plugins/Embed/locale/he/LC_MESSAGES/Embed.po b/plugins/Embed/locale/he/LC_MESSAGES/Embed.po new file mode 100644 index 0000000000..66e4644c98 --- /dev/null +++ b/plugins/Embed/locale/he/LC_MESSAGES/Embed.po @@ -0,0 +1,23 @@ +# Translation file for GNU social - the free software social networking platform +# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org +# This file is under https://www.gnu.org/licenses/agpl v3 or later +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: GNU social\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-02-02 17:47+0100\n" +"PO-Revision-Date: 2015-02-07 09:29+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Hebrew (http://www.transifex.com/gnu-social/gnu-social/language/he/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: he\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. TRANS: Plugin description. +#: OembedPlugin.php:190 +msgid "Plugin for using and representing Oembed data." +msgstr "" diff --git a/plugins/Embed/locale/hsb/LC_MESSAGES/Embed.po b/plugins/Embed/locale/hsb/LC_MESSAGES/Embed.po new file mode 100644 index 0000000000..3cd348cf85 --- /dev/null +++ b/plugins/Embed/locale/hsb/LC_MESSAGES/Embed.po @@ -0,0 +1,23 @@ +# Translation file for GNU social - the free software social networking platform +# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org +# This file is under https://www.gnu.org/licenses/agpl v3 or later +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: GNU social\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-02-02 17:47+0100\n" +"PO-Revision-Date: 2015-02-07 09:29+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Upper Sorbian (http://www.transifex.com/gnu-social/gnu-social/language/hsb/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: hsb\n" +"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n" + +#. TRANS: Plugin description. +#: OembedPlugin.php:190 +msgid "Plugin for using and representing Oembed data." +msgstr "" diff --git a/plugins/Embed/locale/hu/LC_MESSAGES/Embed.po b/plugins/Embed/locale/hu/LC_MESSAGES/Embed.po new file mode 100644 index 0000000000..48a5007078 --- /dev/null +++ b/plugins/Embed/locale/hu/LC_MESSAGES/Embed.po @@ -0,0 +1,23 @@ +# Translation file for GNU social - the free software social networking platform +# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org +# This file is under https://www.gnu.org/licenses/agpl v3 or later +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: GNU social\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-02-02 17:47+0100\n" +"PO-Revision-Date: 2015-02-07 09:29+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Hungarian (http://www.transifex.com/gnu-social/gnu-social/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" + +#. TRANS: Plugin description. +#: OembedPlugin.php:190 +msgid "Plugin for using and representing Oembed data." +msgstr "" diff --git a/plugins/Embed/locale/hy_AM/LC_MESSAGES/Embed.po b/plugins/Embed/locale/hy_AM/LC_MESSAGES/Embed.po new file mode 100644 index 0000000000..f8a8b1375b --- /dev/null +++ b/plugins/Embed/locale/hy_AM/LC_MESSAGES/Embed.po @@ -0,0 +1,23 @@ +# Translation file for GNU social - the free software social networking platform +# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org +# This file is under https://www.gnu.org/licenses/agpl v3 or later +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: GNU social\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-02-02 17:47+0100\n" +"PO-Revision-Date: 2015-02-07 09:29+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Armenian (Armenia) (http://www.transifex.com/gnu-social/gnu-social/language/hy_AM/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: hy_AM\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. TRANS: Plugin description. +#: OembedPlugin.php:190 +msgid "Plugin for using and representing Oembed data." +msgstr "" diff --git a/plugins/Embed/locale/ia/LC_MESSAGES/Embed.po b/plugins/Embed/locale/ia/LC_MESSAGES/Embed.po new file mode 100644 index 0000000000..df74f1efa4 --- /dev/null +++ b/plugins/Embed/locale/ia/LC_MESSAGES/Embed.po @@ -0,0 +1,23 @@ +# Translation file for GNU social - the free software social networking platform +# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org +# This file is under https://www.gnu.org/licenses/agpl v3 or later +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: GNU social\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-02-02 17:47+0100\n" +"PO-Revision-Date: 2015-02-07 09:29+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Interlingua (http://www.transifex.com/gnu-social/gnu-social/language/ia/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ia\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. TRANS: Plugin description. +#: OembedPlugin.php:190 +msgid "Plugin for using and representing Oembed data." +msgstr "" diff --git a/plugins/Embed/locale/id/LC_MESSAGES/Embed.po b/plugins/Embed/locale/id/LC_MESSAGES/Embed.po new file mode 100644 index 0000000000..bc26ba6a5d --- /dev/null +++ b/plugins/Embed/locale/id/LC_MESSAGES/Embed.po @@ -0,0 +1,23 @@ +# Translation file for GNU social - the free software social networking platform +# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org +# This file is under https://www.gnu.org/licenses/agpl v3 or later +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: GNU social\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-02-02 17:47+0100\n" +"PO-Revision-Date: 2015-02-07 09:29+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Indonesian (http://www.transifex.com/gnu-social/gnu-social/language/id/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: id\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#. TRANS: Plugin description. +#: OembedPlugin.php:190 +msgid "Plugin for using and representing Oembed data." +msgstr "" diff --git a/plugins/Embed/locale/io/LC_MESSAGES/Embed.po b/plugins/Embed/locale/io/LC_MESSAGES/Embed.po new file mode 100644 index 0000000000..21c4b91429 --- /dev/null +++ b/plugins/Embed/locale/io/LC_MESSAGES/Embed.po @@ -0,0 +1,24 @@ +# Translation file for GNU social - the free software social networking platform +# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org +# This file is under https://www.gnu.org/licenses/agpl v3 or later +# +# Translators: +# Ciencisto Dementa , 2015 +msgid "" +msgstr "" +"Project-Id-Version: GNU social\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-02-02 17:47+0100\n" +"PO-Revision-Date: 2015-06-17 02:25+0000\n" +"Last-Translator: Ciencisto Dementa \n" +"Language-Team: Ido (http://www.transifex.com/gnu-social/gnu-social/language/io/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: io\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. TRANS: Plugin description. +#: OembedPlugin.php:190 +msgid "Plugin for using and representing Oembed data." +msgstr "Extensilo por uzar e reprezentar Oembed-datumi." diff --git a/plugins/Embed/locale/is/LC_MESSAGES/Embed.po b/plugins/Embed/locale/is/LC_MESSAGES/Embed.po new file mode 100644 index 0000000000..753523bc93 --- /dev/null +++ b/plugins/Embed/locale/is/LC_MESSAGES/Embed.po @@ -0,0 +1,23 @@ +# Translation file for GNU social - the free software social networking platform +# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org +# This file is under https://www.gnu.org/licenses/agpl v3 or later +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: GNU social\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-02-02 17:47+0100\n" +"PO-Revision-Date: 2015-02-07 09:29+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Icelandic (http://www.transifex.com/gnu-social/gnu-social/language/is/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: is\n" +"Plural-Forms: nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);\n" + +#. TRANS: Plugin description. +#: OembedPlugin.php:190 +msgid "Plugin for using and representing Oembed data." +msgstr "" diff --git a/plugins/Embed/locale/it/LC_MESSAGES/Embed.po b/plugins/Embed/locale/it/LC_MESSAGES/Embed.po new file mode 100644 index 0000000000..07d2f1040f --- /dev/null +++ b/plugins/Embed/locale/it/LC_MESSAGES/Embed.po @@ -0,0 +1,23 @@ +# Translation file for GNU social - the free software social networking platform +# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org +# This file is under https://www.gnu.org/licenses/agpl v3 or later +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: GNU social\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-02-02 17:47+0100\n" +"PO-Revision-Date: 2015-02-07 09:29+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Italian (http://www.transifex.com/gnu-social/gnu-social/language/it/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: it\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. TRANS: Plugin description. +#: OembedPlugin.php:190 +msgid "Plugin for using and representing Oembed data." +msgstr "" diff --git a/plugins/Embed/locale/ja/LC_MESSAGES/Embed.po b/plugins/Embed/locale/ja/LC_MESSAGES/Embed.po new file mode 100644 index 0000000000..44c2824c59 --- /dev/null +++ b/plugins/Embed/locale/ja/LC_MESSAGES/Embed.po @@ -0,0 +1,23 @@ +# Translation file for GNU social - the free software social networking platform +# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org +# This file is under https://www.gnu.org/licenses/agpl v3 or later +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: GNU social\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-02-02 17:47+0100\n" +"PO-Revision-Date: 2015-02-07 09:29+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Japanese (http://www.transifex.com/gnu-social/gnu-social/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" + +#. TRANS: Plugin description. +#: OembedPlugin.php:190 +msgid "Plugin for using and representing Oembed data." +msgstr "" diff --git a/plugins/Embed/locale/ka/LC_MESSAGES/Embed.po b/plugins/Embed/locale/ka/LC_MESSAGES/Embed.po new file mode 100644 index 0000000000..544e8a567d --- /dev/null +++ b/plugins/Embed/locale/ka/LC_MESSAGES/Embed.po @@ -0,0 +1,23 @@ +# Translation file for GNU social - the free software social networking platform +# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org +# This file is under https://www.gnu.org/licenses/agpl v3 or later +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: GNU social\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-02-02 17:47+0100\n" +"PO-Revision-Date: 2015-02-07 09:29+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Georgian (http://www.transifex.com/gnu-social/gnu-social/language/ka/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ka\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#. TRANS: Plugin description. +#: OembedPlugin.php:190 +msgid "Plugin for using and representing Oembed data." +msgstr "" diff --git a/plugins/Embed/locale/ko/LC_MESSAGES/Embed.po b/plugins/Embed/locale/ko/LC_MESSAGES/Embed.po new file mode 100644 index 0000000000..75e1cdb388 --- /dev/null +++ b/plugins/Embed/locale/ko/LC_MESSAGES/Embed.po @@ -0,0 +1,23 @@ +# Translation file for GNU social - the free software social networking platform +# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org +# This file is under https://www.gnu.org/licenses/agpl v3 or later +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: GNU social\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-02-02 17:47+0100\n" +"PO-Revision-Date: 2015-02-07 09:29+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Korean (http://www.transifex.com/gnu-social/gnu-social/language/ko/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ko\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#. TRANS: Plugin description. +#: OembedPlugin.php:190 +msgid "Plugin for using and representing Oembed data." +msgstr "" diff --git a/plugins/Embed/locale/ksh/LC_MESSAGES/Embed.po b/plugins/Embed/locale/ksh/LC_MESSAGES/Embed.po new file mode 100644 index 0000000000..1327e77684 --- /dev/null +++ b/plugins/Embed/locale/ksh/LC_MESSAGES/Embed.po @@ -0,0 +1,23 @@ +# Translation file for GNU social - the free software social networking platform +# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org +# This file is under https://www.gnu.org/licenses/agpl v3 or later +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: GNU social\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-02-02 17:47+0100\n" +"PO-Revision-Date: 2015-02-07 09:29+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Colognian (http://www.transifex.com/gnu-social/gnu-social/language/ksh/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ksh\n" +"Plural-Forms: nplurals=3; plural=(n==0) ? 0 : (n==1) ? 1 : 2;\n" + +#. TRANS: Plugin description. +#: OembedPlugin.php:190 +msgid "Plugin for using and representing Oembed data." +msgstr "" diff --git a/plugins/Embed/locale/lb/LC_MESSAGES/Embed.po b/plugins/Embed/locale/lb/LC_MESSAGES/Embed.po new file mode 100644 index 0000000000..976454a410 --- /dev/null +++ b/plugins/Embed/locale/lb/LC_MESSAGES/Embed.po @@ -0,0 +1,23 @@ +# Translation file for GNU social - the free software social networking platform +# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org +# This file is under https://www.gnu.org/licenses/agpl v3 or later +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: GNU social\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-02-02 17:47+0100\n" +"PO-Revision-Date: 2015-02-07 09:29+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Luxembourgish (http://www.transifex.com/gnu-social/gnu-social/language/lb/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: lb\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. TRANS: Plugin description. +#: OembedPlugin.php:190 +msgid "Plugin for using and representing Oembed data." +msgstr "" diff --git a/plugins/Embed/locale/lt/LC_MESSAGES/Embed.po b/plugins/Embed/locale/lt/LC_MESSAGES/Embed.po new file mode 100644 index 0000000000..afc5f73615 --- /dev/null +++ b/plugins/Embed/locale/lt/LC_MESSAGES/Embed.po @@ -0,0 +1,23 @@ +# Translation file for GNU social - the free software social networking platform +# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org +# This file is under https://www.gnu.org/licenses/agpl v3 or later +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: GNU social\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-02-02 17:47+0100\n" +"PO-Revision-Date: 2015-02-07 09:29+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Lithuanian (http://www.transifex.com/gnu-social/gnu-social/language/lt/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: lt\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);\n" + +#. TRANS: Plugin description. +#: OembedPlugin.php:190 +msgid "Plugin for using and representing Oembed data." +msgstr "" diff --git a/plugins/Embed/locale/lv/LC_MESSAGES/Embed.po b/plugins/Embed/locale/lv/LC_MESSAGES/Embed.po new file mode 100644 index 0000000000..a3fa4c0bc1 --- /dev/null +++ b/plugins/Embed/locale/lv/LC_MESSAGES/Embed.po @@ -0,0 +1,23 @@ +# Translation file for GNU social - the free software social networking platform +# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org +# This file is under https://www.gnu.org/licenses/agpl v3 or later +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: GNU social\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-02-02 17:47+0100\n" +"PO-Revision-Date: 2015-02-07 09:39+0000\n" +"Last-Translator: digitaldreamer \n" +"Language-Team: Latvian (http://www.transifex.com/gnu-social/gnu-social/language/lv/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: lv\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);\n" + +#. TRANS: Plugin description. +#: OembedPlugin.php:190 +msgid "Plugin for using and representing Oembed data." +msgstr "" diff --git a/plugins/Embed/locale/mg/LC_MESSAGES/Embed.po b/plugins/Embed/locale/mg/LC_MESSAGES/Embed.po new file mode 100644 index 0000000000..655824d91a --- /dev/null +++ b/plugins/Embed/locale/mg/LC_MESSAGES/Embed.po @@ -0,0 +1,23 @@ +# Translation file for GNU social - the free software social networking platform +# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org +# This file is under https://www.gnu.org/licenses/agpl v3 or later +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: GNU social\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-02-02 17:47+0100\n" +"PO-Revision-Date: 2015-02-07 09:29+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Malagasy (http://www.transifex.com/gnu-social/gnu-social/language/mg/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: mg\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#. TRANS: Plugin description. +#: OembedPlugin.php:190 +msgid "Plugin for using and representing Oembed data." +msgstr "" diff --git a/plugins/Embed/locale/mk/LC_MESSAGES/Embed.po b/plugins/Embed/locale/mk/LC_MESSAGES/Embed.po new file mode 100644 index 0000000000..ad9e9922e7 --- /dev/null +++ b/plugins/Embed/locale/mk/LC_MESSAGES/Embed.po @@ -0,0 +1,23 @@ +# Translation file for GNU social - the free software social networking platform +# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org +# This file is under https://www.gnu.org/licenses/agpl v3 or later +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: GNU social\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-02-02 17:47+0100\n" +"PO-Revision-Date: 2015-02-07 09:29+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Macedonian (http://www.transifex.com/gnu-social/gnu-social/language/mk/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: mk\n" +"Plural-Forms: nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;\n" + +#. TRANS: Plugin description. +#: OembedPlugin.php:190 +msgid "Plugin for using and representing Oembed data." +msgstr "" diff --git a/plugins/Embed/locale/ml/LC_MESSAGES/Embed.po b/plugins/Embed/locale/ml/LC_MESSAGES/Embed.po new file mode 100644 index 0000000000..3212600907 --- /dev/null +++ b/plugins/Embed/locale/ml/LC_MESSAGES/Embed.po @@ -0,0 +1,23 @@ +# Translation file for GNU social - the free software social networking platform +# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org +# This file is under https://www.gnu.org/licenses/agpl v3 or later +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: GNU social\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-02-02 17:47+0100\n" +"PO-Revision-Date: 2015-02-07 09:29+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Malayalam (http://www.transifex.com/gnu-social/gnu-social/language/ml/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ml\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. TRANS: Plugin description. +#: OembedPlugin.php:190 +msgid "Plugin for using and representing Oembed data." +msgstr "" diff --git a/plugins/Embed/locale/ms/LC_MESSAGES/Embed.po b/plugins/Embed/locale/ms/LC_MESSAGES/Embed.po new file mode 100644 index 0000000000..677b4f0d4c --- /dev/null +++ b/plugins/Embed/locale/ms/LC_MESSAGES/Embed.po @@ -0,0 +1,23 @@ +# Translation file for GNU social - the free software social networking platform +# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org +# This file is under https://www.gnu.org/licenses/agpl v3 or later +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: GNU social\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-02-02 17:47+0100\n" +"PO-Revision-Date: 2015-02-07 09:29+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Malay (http://www.transifex.com/gnu-social/gnu-social/language/ms/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ms\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#. TRANS: Plugin description. +#: OembedPlugin.php:190 +msgid "Plugin for using and representing Oembed data." +msgstr "" diff --git a/plugins/Embed/locale/my/LC_MESSAGES/Embed.po b/plugins/Embed/locale/my/LC_MESSAGES/Embed.po new file mode 100644 index 0000000000..e10798220a --- /dev/null +++ b/plugins/Embed/locale/my/LC_MESSAGES/Embed.po @@ -0,0 +1,23 @@ +# Translation file for GNU social - the free software social networking platform +# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org +# This file is under https://www.gnu.org/licenses/agpl v3 or later +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: GNU social\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-02-02 17:47+0100\n" +"PO-Revision-Date: 2015-02-07 09:29+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Burmese (http://www.transifex.com/gnu-social/gnu-social/language/my/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: my\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#. TRANS: Plugin description. +#: OembedPlugin.php:190 +msgid "Plugin for using and representing Oembed data." +msgstr "" diff --git a/plugins/Embed/locale/nb/LC_MESSAGES/Embed.po b/plugins/Embed/locale/nb/LC_MESSAGES/Embed.po new file mode 100644 index 0000000000..e8fe4efca3 --- /dev/null +++ b/plugins/Embed/locale/nb/LC_MESSAGES/Embed.po @@ -0,0 +1,23 @@ +# Translation file for GNU social - the free software social networking platform +# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org +# This file is under https://www.gnu.org/licenses/agpl v3 or later +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: GNU social\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-02-02 17:47+0100\n" +"PO-Revision-Date: 2015-02-07 09:29+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Norwegian Bokmål (http://www.transifex.com/gnu-social/gnu-social/language/nb/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: nb\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. TRANS: Plugin description. +#: OembedPlugin.php:190 +msgid "Plugin for using and representing Oembed data." +msgstr "" diff --git a/plugins/Embed/locale/ne/LC_MESSAGES/Embed.po b/plugins/Embed/locale/ne/LC_MESSAGES/Embed.po new file mode 100644 index 0000000000..07d0654a72 --- /dev/null +++ b/plugins/Embed/locale/ne/LC_MESSAGES/Embed.po @@ -0,0 +1,23 @@ +# Translation file for GNU social - the free software social networking platform +# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org +# This file is under https://www.gnu.org/licenses/agpl v3 or later +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: GNU social\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-02-02 17:47+0100\n" +"PO-Revision-Date: 2015-02-07 09:30+0000\n" +"Last-Translator: digitaldreamer \n" +"Language-Team: Nepali (http://www.transifex.com/gnu-social/gnu-social/language/ne/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ne\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. TRANS: Plugin description. +#: OembedPlugin.php:190 +msgid "Plugin for using and representing Oembed data." +msgstr "" diff --git a/plugins/Embed/locale/nl/LC_MESSAGES/Embed.po b/plugins/Embed/locale/nl/LC_MESSAGES/Embed.po new file mode 100644 index 0000000000..3c75fc3d1f --- /dev/null +++ b/plugins/Embed/locale/nl/LC_MESSAGES/Embed.po @@ -0,0 +1,23 @@ +# Translation file for GNU social - the free software social networking platform +# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org +# This file is under https://www.gnu.org/licenses/agpl v3 or later +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: GNU social\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-02-02 17:47+0100\n" +"PO-Revision-Date: 2015-02-07 09:29+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Dutch (http://www.transifex.com/gnu-social/gnu-social/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" + +#. TRANS: Plugin description. +#: OembedPlugin.php:190 +msgid "Plugin for using and representing Oembed data." +msgstr "" diff --git a/plugins/Embed/locale/nn/LC_MESSAGES/Embed.po b/plugins/Embed/locale/nn/LC_MESSAGES/Embed.po new file mode 100644 index 0000000000..1dccc42938 --- /dev/null +++ b/plugins/Embed/locale/nn/LC_MESSAGES/Embed.po @@ -0,0 +1,23 @@ +# Translation file for GNU social - the free software social networking platform +# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org +# This file is under https://www.gnu.org/licenses/agpl v3 or later +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: GNU social\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-02-02 17:47+0100\n" +"PO-Revision-Date: 2015-02-07 09:29+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Norwegian Nynorsk (http://www.transifex.com/gnu-social/gnu-social/language/nn/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: nn\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. TRANS: Plugin description. +#: OembedPlugin.php:190 +msgid "Plugin for using and representing Oembed data." +msgstr "" diff --git a/plugins/Embed/locale/pl/LC_MESSAGES/Embed.po b/plugins/Embed/locale/pl/LC_MESSAGES/Embed.po new file mode 100644 index 0000000000..9ad5f473ba --- /dev/null +++ b/plugins/Embed/locale/pl/LC_MESSAGES/Embed.po @@ -0,0 +1,23 @@ +# Translation file for GNU social - the free software social networking platform +# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org +# This file is under https://www.gnu.org/licenses/agpl v3 or later +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: GNU social\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-02-02 17:47+0100\n" +"PO-Revision-Date: 2015-02-07 09:29+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Polish (http://www.transifex.com/gnu-social/gnu-social/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=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" + +#. TRANS: Plugin description. +#: OembedPlugin.php:190 +msgid "Plugin for using and representing Oembed data." +msgstr "" diff --git a/plugins/Embed/locale/pt/LC_MESSAGES/Embed.po b/plugins/Embed/locale/pt/LC_MESSAGES/Embed.po new file mode 100644 index 0000000000..b10cdc4ebb --- /dev/null +++ b/plugins/Embed/locale/pt/LC_MESSAGES/Embed.po @@ -0,0 +1,23 @@ +# Translation file for GNU social - the free software social networking platform +# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org +# This file is under https://www.gnu.org/licenses/agpl v3 or later +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: GNU social\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-02-02 17:47+0100\n" +"PO-Revision-Date: 2015-02-07 09:29+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Portuguese (http://www.transifex.com/gnu-social/gnu-social/language/pt/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: pt\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. TRANS: Plugin description. +#: OembedPlugin.php:190 +msgid "Plugin for using and representing Oembed data." +msgstr "" diff --git a/plugins/Embed/locale/pt_BR/LC_MESSAGES/Embed.po b/plugins/Embed/locale/pt_BR/LC_MESSAGES/Embed.po new file mode 100644 index 0000000000..d62665f8ed --- /dev/null +++ b/plugins/Embed/locale/pt_BR/LC_MESSAGES/Embed.po @@ -0,0 +1,24 @@ +# Translation file for GNU social - the free software social networking platform +# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org +# This file is under https://www.gnu.org/licenses/agpl v3 or later +# +# Translators: +# no and no , 2015 +msgid "" +msgstr "" +"Project-Id-Version: GNU social\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-02-02 17:47+0100\n" +"PO-Revision-Date: 2015-04-15 14:52+0000\n" +"Last-Translator: no and no \n" +"Language-Team: Portuguese (Brazil) (http://www.transifex.com/gnu-social/gnu-social/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" + +#. TRANS: Plugin description. +#: OembedPlugin.php:190 +msgid "Plugin for using and representing Oembed data." +msgstr "Plugin para usar e representar dados do Oembed." diff --git a/plugins/Embed/locale/ro_RO/LC_MESSAGES/Embed.po b/plugins/Embed/locale/ro_RO/LC_MESSAGES/Embed.po new file mode 100644 index 0000000000..51062146a6 --- /dev/null +++ b/plugins/Embed/locale/ro_RO/LC_MESSAGES/Embed.po @@ -0,0 +1,23 @@ +# Translation file for GNU social - the free software social networking platform +# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org +# This file is under https://www.gnu.org/licenses/agpl v3 or later +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: GNU social\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-02-02 17:47+0100\n" +"PO-Revision-Date: 2015-02-07 09:29+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Romanian (Romania) (http://www.transifex.com/gnu-social/gnu-social/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" + +#. TRANS: Plugin description. +#: OembedPlugin.php:190 +msgid "Plugin for using and representing Oembed data." +msgstr "" diff --git a/plugins/Embed/locale/ru/LC_MESSAGES/Embed.po b/plugins/Embed/locale/ru/LC_MESSAGES/Embed.po new file mode 100644 index 0000000000..9afce3dd85 --- /dev/null +++ b/plugins/Embed/locale/ru/LC_MESSAGES/Embed.po @@ -0,0 +1,23 @@ +# Translation file for GNU social - the free software social networking platform +# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org +# This file is under https://www.gnu.org/licenses/agpl v3 or later +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: GNU social\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-02-02 17:47+0100\n" +"PO-Revision-Date: 2015-02-07 09:29+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Russian (http://www.transifex.com/gnu-social/gnu-social/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" + +#. TRANS: Plugin description. +#: OembedPlugin.php:190 +msgid "Plugin for using and representing Oembed data." +msgstr "" diff --git a/plugins/Embed/locale/sl/LC_MESSAGES/Embed.po b/plugins/Embed/locale/sl/LC_MESSAGES/Embed.po new file mode 100644 index 0000000000..da8e76c12b --- /dev/null +++ b/plugins/Embed/locale/sl/LC_MESSAGES/Embed.po @@ -0,0 +1,23 @@ +# Translation file for GNU social - the free software social networking platform +# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org +# This file is under https://www.gnu.org/licenses/agpl v3 or later +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: GNU social\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-02-02 17:47+0100\n" +"PO-Revision-Date: 2015-02-07 09:29+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Slovenian (http://www.transifex.com/gnu-social/gnu-social/language/sl/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: sl\n" +"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n" + +#. TRANS: Plugin description. +#: OembedPlugin.php:190 +msgid "Plugin for using and representing Oembed data." +msgstr "" diff --git a/plugins/Embed/locale/sr-ec/LC_MESSAGES/Embed.po b/plugins/Embed/locale/sr-ec/LC_MESSAGES/Embed.po new file mode 100644 index 0000000000..de290c112d --- /dev/null +++ b/plugins/Embed/locale/sr-ec/LC_MESSAGES/Embed.po @@ -0,0 +1,23 @@ +# Translation file for GNU social - the free software social networking platform +# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org +# This file is under https://www.gnu.org/licenses/agpl v3 or later +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: GNU social\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-02-02 17:47+0100\n" +"PO-Revision-Date: 2015-02-07 09:29+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Serbian (http://www.transifex.com/gnu-social/gnu-social/language/sr/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: sr\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" + +#. TRANS: Plugin description. +#: OembedPlugin.php:190 +msgid "Plugin for using and representing Oembed data." +msgstr "" diff --git a/plugins/Embed/locale/sv/LC_MESSAGES/Embed.po b/plugins/Embed/locale/sv/LC_MESSAGES/Embed.po new file mode 100644 index 0000000000..ac7d4040fb --- /dev/null +++ b/plugins/Embed/locale/sv/LC_MESSAGES/Embed.po @@ -0,0 +1,24 @@ +# Translation file for GNU social - the free software social networking platform +# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org +# This file is under https://www.gnu.org/licenses/agpl v3 or later +# +# Translators: +# Kristoffer Grundström , 2015 +msgid "" +msgstr "" +"Project-Id-Version: GNU social\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-02-02 17:47+0100\n" +"PO-Revision-Date: 2015-09-17 17:24+0000\n" +"Last-Translator: Kristoffer Grundström \n" +"Language-Team: Swedish (http://www.transifex.com/gnu-social/gnu-social/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" + +#. TRANS: Plugin description. +#: OembedPlugin.php:190 +msgid "Plugin for using and representing Oembed data." +msgstr "Insticksprogram för användning och representering av Oembed-data." diff --git a/plugins/Embed/locale/ta/LC_MESSAGES/Embed.po b/plugins/Embed/locale/ta/LC_MESSAGES/Embed.po new file mode 100644 index 0000000000..1d25fe86a4 --- /dev/null +++ b/plugins/Embed/locale/ta/LC_MESSAGES/Embed.po @@ -0,0 +1,23 @@ +# Translation file for GNU social - the free software social networking platform +# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org +# This file is under https://www.gnu.org/licenses/agpl v3 or later +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: GNU social\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-02-02 17:47+0100\n" +"PO-Revision-Date: 2015-02-07 09:29+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Tamil (http://www.transifex.com/gnu-social/gnu-social/language/ta/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ta\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. TRANS: Plugin description. +#: OembedPlugin.php:190 +msgid "Plugin for using and representing Oembed data." +msgstr "" diff --git a/plugins/Embed/locale/te/LC_MESSAGES/Embed.po b/plugins/Embed/locale/te/LC_MESSAGES/Embed.po new file mode 100644 index 0000000000..df2949614a --- /dev/null +++ b/plugins/Embed/locale/te/LC_MESSAGES/Embed.po @@ -0,0 +1,23 @@ +# Translation file for GNU social - the free software social networking platform +# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org +# This file is under https://www.gnu.org/licenses/agpl v3 or later +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: GNU social\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-02-02 17:47+0100\n" +"PO-Revision-Date: 2015-02-07 09:29+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Telugu (http://www.transifex.com/gnu-social/gnu-social/language/te/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: te\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. TRANS: Plugin description. +#: OembedPlugin.php:190 +msgid "Plugin for using and representing Oembed data." +msgstr "" diff --git a/plugins/Embed/locale/tl/LC_MESSAGES/Embed.po b/plugins/Embed/locale/tl/LC_MESSAGES/Embed.po new file mode 100644 index 0000000000..95835f706d --- /dev/null +++ b/plugins/Embed/locale/tl/LC_MESSAGES/Embed.po @@ -0,0 +1,23 @@ +# Translation file for GNU social - the free software social networking platform +# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org +# This file is under https://www.gnu.org/licenses/agpl v3 or later +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: GNU social\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-02-02 17:47+0100\n" +"PO-Revision-Date: 2015-02-07 09:29+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Tagalog (http://www.transifex.com/gnu-social/gnu-social/language/tl/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: tl\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#. TRANS: Plugin description. +#: OembedPlugin.php:190 +msgid "Plugin for using and representing Oembed data." +msgstr "" diff --git a/plugins/Embed/locale/tr/LC_MESSAGES/Embed.po b/plugins/Embed/locale/tr/LC_MESSAGES/Embed.po new file mode 100644 index 0000000000..9ea93f0424 --- /dev/null +++ b/plugins/Embed/locale/tr/LC_MESSAGES/Embed.po @@ -0,0 +1,23 @@ +# Translation file for GNU social - the free software social networking platform +# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org +# This file is under https://www.gnu.org/licenses/agpl v3 or later +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: GNU social\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-02-02 17:47+0100\n" +"PO-Revision-Date: 2015-02-07 09:29+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Turkish (http://www.transifex.com/gnu-social/gnu-social/language/tr/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: tr\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#. TRANS: Plugin description. +#: OembedPlugin.php:190 +msgid "Plugin for using and representing Oembed data." +msgstr "" diff --git a/plugins/Embed/locale/uk/LC_MESSAGES/Embed.po b/plugins/Embed/locale/uk/LC_MESSAGES/Embed.po new file mode 100644 index 0000000000..ae431ada4f --- /dev/null +++ b/plugins/Embed/locale/uk/LC_MESSAGES/Embed.po @@ -0,0 +1,24 @@ +# Translation file for GNU social - the free software social networking platform +# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org +# This file is under https://www.gnu.org/licenses/agpl v3 or later +# +# Translators: +# Петро Романчук , 2015 +msgid "" +msgstr "" +"Project-Id-Version: GNU social\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-02-02 17:47+0100\n" +"PO-Revision-Date: 2015-03-31 10:04+0000\n" +"Last-Translator: Петро Романчук \n" +"Language-Team: Ukrainian (http://www.transifex.com/gnu-social/gnu-social/language/uk/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: uk\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" + +#. TRANS: Plugin description. +#: OembedPlugin.php:190 +msgid "Plugin for using and representing Oembed data." +msgstr "Плагін для використання та представлення вбудованих (Oembed) даних." diff --git a/plugins/Embed/locale/ur_PK/LC_MESSAGES/Embed.po b/plugins/Embed/locale/ur_PK/LC_MESSAGES/Embed.po new file mode 100644 index 0000000000..1d5797cf0c --- /dev/null +++ b/plugins/Embed/locale/ur_PK/LC_MESSAGES/Embed.po @@ -0,0 +1,23 @@ +# Translation file for GNU social - the free software social networking platform +# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org +# This file is under https://www.gnu.org/licenses/agpl v3 or later +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: GNU social\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-02-02 17:47+0100\n" +"PO-Revision-Date: 2015-02-07 09:29+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Urdu (Pakistan) (http://www.transifex.com/gnu-social/gnu-social/language/ur_PK/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ur_PK\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. TRANS: Plugin description. +#: OembedPlugin.php:190 +msgid "Plugin for using and representing Oembed data." +msgstr "" diff --git a/plugins/Embed/locale/vi/LC_MESSAGES/Embed.po b/plugins/Embed/locale/vi/LC_MESSAGES/Embed.po new file mode 100644 index 0000000000..604d780371 --- /dev/null +++ b/plugins/Embed/locale/vi/LC_MESSAGES/Embed.po @@ -0,0 +1,23 @@ +# Translation file for GNU social - the free software social networking platform +# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org +# This file is under https://www.gnu.org/licenses/agpl v3 or later +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: GNU social\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-02-02 17:47+0100\n" +"PO-Revision-Date: 2015-02-07 09:29+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Vietnamese (http://www.transifex.com/gnu-social/gnu-social/language/vi/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: vi\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#. TRANS: Plugin description. +#: OembedPlugin.php:190 +msgid "Plugin for using and representing Oembed data." +msgstr "" diff --git a/plugins/Embed/locale/zh/LC_MESSAGES/Embed.po b/plugins/Embed/locale/zh/LC_MESSAGES/Embed.po new file mode 100644 index 0000000000..6c45752948 --- /dev/null +++ b/plugins/Embed/locale/zh/LC_MESSAGES/Embed.po @@ -0,0 +1,23 @@ +# Translation file for GNU social - the free software social networking platform +# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org +# This file is under https://www.gnu.org/licenses/agpl v3 or later +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: GNU social\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-02-02 17:47+0100\n" +"PO-Revision-Date: 2015-02-07 09:29+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Chinese (http://www.transifex.com/gnu-social/gnu-social/language/zh/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: zh\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#. TRANS: Plugin description. +#: OembedPlugin.php:190 +msgid "Plugin for using and representing Oembed data." +msgstr "" diff --git a/plugins/Embed/locale/zh_CN/LC_MESSAGES/Embed.po b/plugins/Embed/locale/zh_CN/LC_MESSAGES/Embed.po new file mode 100644 index 0000000000..6bf0999490 --- /dev/null +++ b/plugins/Embed/locale/zh_CN/LC_MESSAGES/Embed.po @@ -0,0 +1,23 @@ +# Translation file for GNU social - the free software social networking platform +# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org +# This file is under https://www.gnu.org/licenses/agpl v3 or later +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: GNU social\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-02-02 17:47+0100\n" +"PO-Revision-Date: 2015-02-07 09:29+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Chinese (China) (http://www.transifex.com/gnu-social/gnu-social/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" + +#. TRANS: Plugin description. +#: OembedPlugin.php:190 +msgid "Plugin for using and representing Oembed data." +msgstr "" diff --git a/plugins/Embed/locale/zh_TW/LC_MESSAGES/Embed.po b/plugins/Embed/locale/zh_TW/LC_MESSAGES/Embed.po new file mode 100644 index 0000000000..d74b193707 --- /dev/null +++ b/plugins/Embed/locale/zh_TW/LC_MESSAGES/Embed.po @@ -0,0 +1,23 @@ +# Translation file for GNU social - the free software social networking platform +# Copyright (C) 2015 - 2019 Free Software Foundation, Inc http://www.fsf.org +# This file is under https://www.gnu.org/licenses/agpl v3 or later +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: GNU social\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2015-02-02 17:47+0100\n" +"PO-Revision-Date: 2015-02-07 09:29+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Chinese (Taiwan) (http://www.transifex.com/gnu-social/gnu-social/language/zh_TW/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: zh_TW\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#. TRANS: Plugin description. +#: OembedPlugin.php:190 +msgid "Plugin for using and representing Oembed data." +msgstr ""