diff --git a/debug_config_save.py b/debug_config_save.py deleted file mode 100644 index 81364888..00000000 --- a/debug_config_save.py +++ /dev/null @@ -1,104 +0,0 @@ - -import sys -import os -import shutil - -# Add src to path -sys.path.insert(0, os.path.join(os.getcwd(), 'src')) - -import config_utils -from configobj import ConfigObj -import logging - -# Setup simple logging -logging.basicConfig(level=logging.DEBUG) - -def test_config_save(): - print("Beginning Config Save Test") - - # 1. Setup paths - config_dir = os.path.join(os.getcwd(), 'test_config_dir') - if os.path.exists(config_dir): - shutil.rmtree(config_dir) - os.mkdir(config_dir) - - session_id = "test_session" - session_dir = os.path.join(config_dir, session_id) - os.mkdir(session_dir) - - config_path = os.path.join(session_dir, "session.conf") - # We use the ACTUAL atproto.defaults from src - spec_path = os.path.join(os.getcwd(), 'src', 'atproto.defaults') - - print(f"Config Path: {config_path}") - print(f"Spec Path: {spec_path}") - - if not os.path.exists(spec_path): - print("ERROR: Spec file not found at", spec_path) - return - - # 2. Simulate Load & Create - print("\n--- Loading Config (create empty) ---") - try: - # Mimic session.get_configuration - config = config_utils.load_config(config_path, spec_path) - except Exception as e: - print("Error loading config:", e) - return - - # 3. Modify Values - print("\n--- Modifying Values ---") - - # Check if section exists, if not, create it - if 'atproto' not in config: - print("Section 'atproto' missing (expected for new file). Using defaults from spec?") - # ConfigObj with spec should automatically have sections if create_empty=True? - # Actually config_utils.load_config sets create_empty=True - - # Let's inspect what we have - print("Current Config Keys:", config.keys()) - - # If section is missing (it might be if file was empty and defaults didn't force creation yet?), force create - if 'atproto' not in config: - print("Creating 'atproto' section manually (simulating what might happen if defaults don't auto-create structure)") - config['atproto'] = {} - - config['atproto']['handle'] = "test_user.bsky.social" - config['atproto']['session_string'] = "fake_session_string_12345" - - print(f"Set handle: {config['atproto']['handle']}") - print(f"Set session_string: {config['atproto']['session_string']}") - - # 4. Write - print("\n--- Writing Config ---") - config.write() - print("Write called.") - - # 5. Read Back from Disk (Raw) - print("\n--- Reading Back (Raw Text) ---") - if os.path.exists(config_path): - with open(config_path, 'r') as f: - content = f.read() - print("File Content:") - print(content) - - if "session_string = fake_session_string_12345" in content: - print("SUCCESS: Session string found in file.") - else: - print("FAILURE: Session string NOT found in file.") - else: - print("FAILURE: File does not exist.") - - # 6. Read Back (using config_utils again) - print("\n--- Reading Back (config_utils) ---") - config2 = config_utils.load_config(config_path, spec_path) - val = config2['atproto']['session_string'] - print(f"Read session_string: {val}") - - if val == "fake_session_string_12345": - print("SUCCESS: Read back correct value.") - else: - print("FAILURE: Read back mismatched value.") - -if __name__ == "__main__": - test_config_save() diff --git a/example_atproto.py b/example_atproto.py deleted file mode 100644 index afcc339e..00000000 --- a/example_atproto.py +++ /dev/null @@ -1,63 +0,0 @@ -# -*- coding: utf-8 -*- -"""Simple example of using Blueski session programmatically. - -This is a minimal example showing how to use the Blueski session. -For full testing with wx dialogs, use test_atproto_session.py instead. -""" - -import sys -import os - -# Add src to path -sys.path.insert(0, os.path.join(os.path.dirname(__file__), 'src')) - -from sessions.blueski import session -import logging - -# Setup basic logging -logging.basicConfig(level=logging.INFO) - -def main(): - print("Blueski Session Simple Example") - print("=" * 50) - - # Create session - print("\n1. Creating session...") - s = session.Session(session_id="example_blueski") - - # Try to get configuration (will create folder if needed) - print("2. Loading configuration...") - s.get_configuration() - - # Try to login (will fail if no stored credentials) - print("3. Attempting login...") - try: - s.login() - print(f" ✓ Logged in as: {s.get_name()}") - print(f" User DID: {s.db.get('user_id', 'unknown')}") - - except Exception as e: - print(f" ✗ Login failed: {e}") - print("\n To authorize a new session:") - print(" - Run test_atproto_session.py for GUI-based auth") - print(" - Or manually call s.authorise() after importing wx") - return - - # Show session info - print("\n4. Session information:") - print(f" Logged: {s.logged}") - print(f" Handle: {s.settings['blueski']['handle']}") - print(f" Service: {s.settings['blueski'].get('service_url', '')}") - print(f" Has session_string: {bool(s.settings['blueski']['session_string'])}") - - # Test logout - print("\n5. Testing logout...") - s.logout() - print(f" Logged: {s.logged}") - print(f" Session string cleared: {not s.settings['blueski']['session_string']}") - - print("\n" + "=" * 50) - print("Example complete!") - -if __name__ == "__main__": - main() diff --git a/requirements.txt b/requirements.txt index d74b802d..a3cad355 100644 --- a/requirements.txt +++ b/requirements.txt @@ -56,4 +56,4 @@ winpaths==0.2 wxPython==4.2.4 youtube-dl==2021.12.17 zipp==3.23.0 -atproto>=0.0.45 +atproto>=0.0.65 diff --git a/src/controller/blueski/handler.py b/src/controller/blueski/handler.py index 86b4e788..df46eec0 100644 --- a/src/controller/blueski/handler.py +++ b/src/controller/blueski/handler.py @@ -1,6 +1,9 @@ from __future__ import annotations import logging +import wx +import output +from wxUI.dialogs.blueski.showUserProfile import ShowUserProfileDialog from typing import Any import languageHandler # Ensure _() injection @@ -19,10 +22,16 @@ class Handler: def create_buffers(self, session, createAccounts=True, controller=None): name = session.get_name() - controller.accounts.append(name) if createAccounts: from pubsub import pub - pub.sendMessage("core.create_account", name=name, session_id=session.session_id, logged=True) + pub.sendMessage("core.create_account", name=name, session_id=session.session_id, logged=session.logged) + + if not session.logged: + logger.debug(f"Session {session.session_id} is not logged in, skipping timeline buffer creation.") + return + if name not in controller.accounts: + controller.accounts.append(name) + root_position = controller.view.search(name, name) # Discover/home timeline from pubsub import pub @@ -45,6 +54,66 @@ class Handler: start=False, kwargs=dict(parent=controller.view.nb, name="following_timeline", session=session) ) + # Notifications + pub.sendMessage( + "createBuffer", + buffer_type="notifications", + session_type="blueski", + buffer_title=_("Notifications"), + parent_tab=root_position, + start=False, + kwargs=dict(parent=controller.view.nb, name="notifications", session=session) + ) + # Likes + pub.sendMessage( + "createBuffer", + buffer_type="likes", + session_type="blueski", + buffer_title=_("Likes"), + parent_tab=root_position, + start=False, + kwargs=dict(parent=controller.view.nb, name="likes", session=session) + ) + # Followers + pub.sendMessage( + "createBuffer", + buffer_type="FollowersBuffer", + session_type="blueski", + buffer_title=_("Followers"), + parent_tab=root_position, + start=False, + kwargs=dict(parent=controller.view.nb, name="followers", session=session) + ) + # Following (Users) + pub.sendMessage( + "createBuffer", + buffer_type="FollowingBuffer", + session_type="blueski", + buffer_title=_("Following (Users)"), + parent_tab=root_position, + start=False, + kwargs=dict(parent=controller.view.nb, name="following", session=session) + ) + # Blocks + pub.sendMessage( + "createBuffer", + buffer_type="BlocksBuffer", + session_type="blueski", + buffer_title=_("Blocked Users"), + parent_tab=root_position, + start=False, + kwargs=dict(parent=controller.view.nb, name="blocked", session=session) + ) + # Chats + pub.sendMessage( + "createBuffer", + buffer_type="ConversationListBuffer", + session_type="blueski", + buffer_title=_("Chats"), + parent_tab=root_position, + start=False, + kwargs=dict(parent=controller.view.nb, name="direct_messages", session=session) + ) def start_buffer(self, controller, buffer): """Start a newly created Bluesky buffer.""" @@ -86,6 +155,45 @@ class Handler: except Exception: logger.exception("Error opening Bluesky account settings dialog") + def user_details(self, buffer): + """Show user profile dialog for the selected user/post.""" + session = getattr(buffer, "session", None) + if not session: + output.speak(_("No active session to view user details."), True) + return + + item = buffer.get_item() if hasattr(buffer, "get_item") else None + if not item: + output.speak(_("No user selected or identified to view details."), True) + return + + def g(obj, key, default=None): + if isinstance(obj, dict): + return obj.get(key, default) + return getattr(obj, key, default) + + user_ident = None + + # If we're in a user list, the item itself is the user profile dict/model. + if g(item, "did") or g(item, "handle"): + user_ident = g(item, "did") or g(item, "handle") + else: + author = g(item, "author") + if not author: + post = g(item, "post") or g(item, "record") + author = g(post, "author") if post else None + if author: + user_ident = g(author, "did") or g(author, "handle") + + if not user_ident: + output.speak(_("No user selected or identified to view details."), True) + return + + parent = getattr(buffer, "buffer", None) or wx.GetApp().GetTopWindow() + dialog = ShowUserProfileDialog(parent, session, user_ident) + dialog.ShowModal() + dialog.Destroy() + async def handle_action(self, action_name: str, user_id: str, payload: dict[str, Any]) -> dict[str, Any] | None: logger.debug("handle_action stub: %s %s %s", action_name, user_id, payload) return None @@ -97,3 +205,156 @@ class Handler: async def handle_user_command(self, command: str, user_id: str, target_user_id: str, payload: dict[str, Any]) -> dict[str, Any] | None: logger.debug("handle_user_command stub: %s %s %s %s", command, user_id, target_user_id, payload) return None + + def add_to_favourites(self, buffer): + """Standard action for Alt+Win+F""" + if hasattr(buffer, "add_to_favorites"): + buffer.add_to_favorites() + elif hasattr(buffer, "on_like"): + # Fallback + buffer.on_like(None) + + def remove_from_favourites(self, buffer): + """Standard action for Alt+Shift+Win+F""" + if hasattr(buffer, "remove_from_favorites"): + buffer.remove_from_favorites() + elif hasattr(buffer, "on_like"): + buffer.on_like(None) + + def follow(self, buffer): + """Standard action for Ctrl+Win+S""" + session = getattr(buffer, "session", None) + if not session: + output.speak(_("No active session."), True) + return + + def g(obj, key, default=None): + if isinstance(obj, dict): + return obj.get(key, default) + return getattr(obj, key, default) + + user_ident = None + item = buffer.get_item() if hasattr(buffer, "get_item") else None + if item: + if g(item, "handle") or g(item, "did"): + user_ident = g(item, "handle") or g(item, "did") + else: + author = g(item, "author") + if not author: + post = g(item, "post") or g(item, "record") + author = g(post, "author") if post else None + if author: + user_ident = g(author, "handle") or g(author, "did") + + users = [user_ident] if user_ident else [] + from controller.blueski import userActions as user_actions_controller + user_actions_controller.userActions(session, users) + + def open_conversation(self, controller, buffer): + """Standard action for Control+Win+C""" + item = buffer.get_item() + if not item: + return + + uri = None + if hasattr(buffer, "get_selected_item_id"): + uri = buffer.get_selected_item_id() + if not uri: + uri = getattr(item, "uri", None) or (item.get("post", {}).get("uri") if isinstance(item, dict) else None) + if not uri: return + + # Buffer Title + author = getattr(item, "author", None) or (item.get("post", {}).get("author") if isinstance(item, dict) else None) + handle = getattr(author, "handle", "unknown") if author else "unknown" + title = _("Conversation with {0}").format(handle) + + from pubsub import pub + pub.sendMessage( + "createBuffer", + buffer_type="conversation", + session_type="blueski", + buffer_title=title, + parent_tab=controller.view.search(buffer.session.get_name(), buffer.session.get_name()) if hasattr(buffer.session, "get_name") else None, + start=True, + kwargs=dict(parent=controller.view.nb, name=title, session=buffer.session, uri=uri) + ) + + def open_followers_timeline(self, main_controller, session, user_payload=None): + actor, handle = self._resolve_actor(session, user_payload) + if not actor: + output.speak(_("No user selected."), True) + return + self._open_user_list(main_controller, session, actor, handle, list_type="followers") + + def open_following_timeline(self, main_controller, session, user_payload=None): + actor, handle = self._resolve_actor(session, user_payload) + if not actor: + output.speak(_("No user selected."), True) + return + self._open_user_list(main_controller, session, actor, handle, list_type="following") + + def _resolve_actor(self, session, user_payload): + def g(obj, key, default=None): + if isinstance(obj, dict): + return obj.get(key, default) + return getattr(obj, key, default) + + actor = None + handle = None + if user_payload: + actor = g(user_payload, "did") or g(user_payload, "handle") + handle = g(user_payload, "handle") or g(user_payload, "did") + if not actor: + actor = session.db.get("user_id") or session.db.get("user_name") + handle = session.db.get("user_name") or actor + return actor, handle + + def _open_user_list(self, main_controller, session, actor, handle, list_type): + account_name = session.get_name() + own_actor = session.db.get("user_id") or session.db.get("user_name") + own_handle = session.db.get("user_name") + if actor == own_actor or (own_handle and actor == own_handle): + name = "followers" if list_type == "followers" else "following" + index = main_controller.view.search(name, account_name) + if index is not None: + main_controller.view.change_buffer(index) + return + + list_name = f"{handle}-{list_type}" + if main_controller.search_buffer(list_name, account_name): + index = main_controller.view.search(list_name, account_name) + if index is not None: + main_controller.view.change_buffer(index) + return + + title = _("Followers for {user}").format(user=handle) if list_type == "followers" else _("Following for {user}").format(user=handle) + from pubsub import pub + pub.sendMessage( + "createBuffer", + buffer_type="FollowersBuffer" if list_type == "followers" else "FollowingBuffer", + session_type="blueski", + buffer_title=title, + parent_tab=main_controller.view.search(account_name, account_name), + start=True, + kwargs=dict(parent=main_controller.view.nb, name=list_name, session=session, actor=actor) + ) + + def delete(self, buffer, controller): + """Standard action for delete key / menu item""" + item = buffer.get_item() + if not item: return + + uri = getattr(item, "uri", None) or (item.get("post", {}).get("uri") if isinstance(item, dict) else None) + if not uri: return + + import wx + if wx.MessageBox(_("Are you sure you want to delete this post?"), _("Delete post"), wx.YES_NO | wx.ICON_QUESTION) == wx.YES: + if buffer.session.delete_post(uri): + import output + output.speak(_("Post deleted.")) + # Refresh buffer + if hasattr(buffer, "start_stream"): + buffer.start_stream(mandatory=True, play_sound=False) + else: + import output + output.speak(_("Failed to delete post.")) diff --git a/src/controller/blueski/userActions.py b/src/controller/blueski/userActions.py index e5c8a745..9b9c7e46 100644 --- a/src/controller/blueski/userActions.py +++ b/src/controller/blueski/userActions.py @@ -1,75 +1,98 @@ -from __future__ import annotations - +# -*- coding: utf-8 -*- import logging -from typing import TYPE_CHECKING, Any +import widgetUtils +import output +from wxUI.dialogs.blueski import userActions as userActionsDialog +import languageHandler -fromapprove.translation import translate as _ -# fromapprove.controller.mastodon import userActions as mastodon_user_actions # If adapting - -if TYPE_CHECKING: - fromapprove.sessions.blueski.session import Session as BlueskiSession # Adjusted - -logger = logging.getLogger(__name__) - -# This file defines user-specific actions that can be performed on Blueski entities, -# typically represented as buttons or links in the UI, often on user profiles or posts. - -# For Blueski, actions might include: -# - Viewing a user's profile on Bluesky/Blueski instance. -# - Following/Unfollowing a user. -# - Muting/Blocking a user. -# - Reporting a user. -# - Fetching a user's latest posts. - -# These actions are often presented in a context menu or as direct buttons. -# The `get_user_actions` method in the BlueskiSession class would define these. -# This file would contain the implementation or further handling logic if needed, -# or if actions are too complex for simple lambda/method calls in the session class. - -# Example structure for defining an action: -# (This might be more detailed if actions require forms or multi-step processes) - -# def view_profile_action(session: BlueskiSession, user_id: str) -> dict[str, Any]: -# """ -# Generates data for a "View Profile on Blueski" action. -# user_id here would be the Blueski DID or handle. -# """ -# # profile_url = f"https://bsky.app/profile/{user_id}" # Example, construct from handle or DID -# # This might involve resolving DID to handle or vice-versa if only one is known. -# # handle = await session.util.get_username_from_user_id(user_id) or user_id -# # profile_url = f"https://bsky.app/profile/{handle}" - -# return { -# "id": "blueski_view_profile", -# "label": _("View Profile on Bluesky"), -# "icon": "external-link-alt", # FontAwesome icon name -# "action_type": "link", # "link", "modal", "api_call" -# "url": profile_url, # For "link" type -# # "api_endpoint": "/api/blueski/user_action", # For "api_call" -# # "payload": {"action": "view_profile", "target_user_id": user_id}, -# "confirmation_required": False, -# } +log = logging.getLogger("controller.blueski.userActions") -# async def follow_user_action_handler(session: BlueskiSession, target_user_id: str) -> dict[str, Any]: -# """ -# Handles the 'follow_user' action for Blueski. -# target_user_id should be the DID of the user to follow. -# """ -# # success = await session.util.follow_user(target_user_id) -# # if success: -# # return {"status": "success", "message": _("User {target_user_id} followed.").format(target_user_id=target_user_id)} -# # else: -# # return {"status": "error", "message": _("Failed to follow user {target_user_id}.").format(target_user_id=target_user_id)} -# return {"status": "pending", "message": "Follow action not implemented yet."} +class BasicUserSelector(object): + def __init__(self, session, users=None): + super(BasicUserSelector, self).__init__() + self.session = session + self.create_dialog(users=users or []) + + def create_dialog(self, users): + pass + + def resolve_profile(self, actor): + try: + return self.session.get_profile(actor) + except Exception: + log.exception("Error resolving Bluesky profile for %s.", actor) + return None -# The list of available actions is typically defined in the Session class, -# e.g., BlueskiSession.get_user_actions(). That method would return a list -# of dictionaries, and this file might provide handlers for more complex actions -# if they aren't simple API calls defined directly in the session's util. +class userActions(BasicUserSelector): + def __init__(self, *args, **kwargs): + super(userActions, self).__init__(*args, **kwargs) + if self.dialog.get_response() == widgetUtils.OK: + self.process_action() -# For now, this file can be a placeholder if most actions are simple enough -# to be handled directly by the session.util methods or basic handler routes. + def create_dialog(self, users): + self.dialog = userActionsDialog.UserActionsDialog(users) -logger.info("Blueski userActions module loaded (placeholders).") + def process_action(self): + action = self.dialog.get_action() + actor = self.dialog.get_user().strip() + if not actor: + output.speak(_("No user specified."), True) + return + + profile = self.resolve_profile(actor) + if not profile: + output.speak(_("User not found."), True) + return + + def g(obj, key, default=None): + if isinstance(obj, dict): + return obj.get(key, default) + return getattr(obj, key, default) + + did = g(profile, "did") + viewer = g(profile, "viewer") or {} + + if not did: + output.speak(_("User identifier not available."), True) + return + + if action == "follow": + if self.session.follow_user(did): + output.speak(_("Followed.")) + else: + output.speak(_("Failed to follow user."), True) + elif action == "unfollow": + follow_uri = g(viewer, "following") + if not follow_uri: + output.speak(_("Follow information not available."), True) + return + if self.session.unfollow_user(follow_uri): + output.speak(_("Unfollowed.")) + else: + output.speak(_("Failed to unfollow user."), True) + elif action == "mute": + if self.session.mute_user(did): + output.speak(_("Muted.")) + else: + output.speak(_("Failed to mute user."), True) + elif action == "unmute": + if self.session.unmute_user(did): + output.speak(_("Unmuted.")) + else: + output.speak(_("Failed to unmute user."), True) + elif action == "block": + if self.session.block_user(did): + output.speak(_("Blocked.")) + else: + output.speak(_("Failed to block user."), True) + elif action == "unblock": + block_uri = g(viewer, "blocking") + if not block_uri: + output.speak(_("Block information not available."), True) + return + if self.session.unblock_user(block_uri): + output.speak(_("Unblocked.")) + else: + output.speak(_("Failed to unblock user."), True) diff --git a/src/controller/buffers/base/account.py b/src/controller/buffers/base/account.py index 46ecbb6d..9cff3332 100644 --- a/src/controller/buffers/base/account.py +++ b/src/controller/buffers/base/account.py @@ -10,7 +10,7 @@ from . import base log = logging.getLogger("controller.buffers.base.account") class AccountBuffer(base.Buffer): - def __init__(self, parent, name, account, account_id): + def __init__(self, parent, name, account, account_id, session=None): super(AccountBuffer, self).__init__(parent, None, name) log.debug("Initializing buffer %s, account %s" % (name, account,)) self.buffer = buffers.accountPanel(parent, name) @@ -53,4 +53,4 @@ class AccountBuffer(base.Buffer): else: self.buffer.change_autostart(False) config.app["sessions"]["ignored_sessions"].append(self.account_id) - config.app.write() \ No newline at end of file + config.app.write() diff --git a/src/controller/buffers/blueski/__init__.py b/src/controller/buffers/blueski/__init__.py new file mode 100644 index 00000000..ea23ad64 --- /dev/null +++ b/src/controller/buffers/blueski/__init__.py @@ -0,0 +1,4 @@ +# -*- coding: utf-8 -*- +from .timeline import HomeTimeline, FollowingTimeline, NotificationBuffer, Conversation +from .user import FollowersBuffer, FollowingBuffer, BlocksBuffer +from .chat import ConversationListBuffer, ChatBuffer as ChatMessageBuffer diff --git a/src/controller/buffers/blueski/base.py b/src/controller/buffers/blueski/base.py new file mode 100644 index 00000000..e52b7f04 --- /dev/null +++ b/src/controller/buffers/blueski/base.py @@ -0,0 +1,579 @@ +# -*- coding: utf-8 -*- +import logging +import wx +import output +import sound +import config +import widgetUtils +from pubsub import pub +from controller.buffers.base import base +from sessions.blueski import compose +from wxUI.buffers.blueski import panels as BlueskiPanels + +log = logging.getLogger("controller.buffers.blueski.base") + +class BaseBuffer(base.Buffer): + def __init__(self, parent=None, name=None, session=None, *args, **kwargs): + # Adapt params to BaseBuffer + # BaseBuffer expects (parent, function, name, sessionObject, account) + function = "timeline" # Dummy + sessionObject = session + account = session.get_name() if session else "Unknown" + + super(BaseBuffer, self).__init__(parent, function, name=name, sessionObject=sessionObject, account=account, *args, **kwargs) + + self.session = sessionObject + self.account = account + self.name = name + self.create_buffer(parent, name) + self.buffer.account = account + self.invisible = True + compose_func = kwargs.get("compose_func", "compose_post") + self.compose_function = getattr(compose, compose_func) + self.sound = sound + + # Initialize DB list if needed + if self.name not in self.session.db: + self.session.db[self.name] = [] + + self.bind_events() + + def create_buffer(self, parent, name): + # Default to HomePanel, can be overridden + self.buffer = BlueskiPanels.HomePanel(parent, name, account=self.account) + self.buffer.session = self.session + + def bind_events(self): + # Bind essential events + widgetUtils.connect_event(self.buffer.list.list, widgetUtils.KEYPRESS, self.get_event) + + # Buttons + if hasattr(self.buffer, "post"): + self.buffer.post.Bind(wx.EVT_BUTTON, self.on_post) + if hasattr(self.buffer, "reply"): + self.buffer.reply.Bind(wx.EVT_BUTTON, self.on_reply) + if hasattr(self.buffer, "repost"): + self.buffer.repost.Bind(wx.EVT_BUTTON, self.on_repost) + if hasattr(self.buffer, "like"): + self.buffer.like.Bind(wx.EVT_BUTTON, self.on_like) + if hasattr(self.buffer, "dm"): + self.buffer.dm.Bind(wx.EVT_BUTTON, self.on_dm) + if hasattr(self.buffer, "actions"): + self.buffer.actions.Bind(wx.EVT_BUTTON, self.user_actions) + + def on_post(self, evt): + from wxUI.dialogs.blueski import postDialogs + dlg = postDialogs.Post(caption=_("New Post")) + if dlg.ShowModal() == wx.ID_OK: + text, files, cw, langs = dlg.get_payload() + self.session.send_message(message=text, files=files, cw_text=cw, langs=langs) + output.speak(_("Sending...")) + dlg.Destroy() + + def on_reply(self, evt): + item = self.get_item() + if not item: return + + # item is a feed object or dict. + # We need its URI. + uri = self.get_selected_item_id() + if not uri: + uri = item.get("uri") if isinstance(item, dict) else getattr(item, "uri", None) + # Attempt to get CID if present for consistency, though send_message handles it + + def g(obj, key, default=None): + if isinstance(obj, dict): + return obj.get(key, default) + return getattr(obj, key, default) + + author = g(item, "author") + if not author: + post = g(item, "post") or g(item, "record") + author = g(post, "author") if post else None + handle = g(author, "handle", "") + initial_text = f"@{handle} " if handle and not handle.startswith("@") else (f"{handle} " if handle else "") + + from wxUI.dialogs.blueski import postDialogs + dlg = postDialogs.Post(caption=_("Reply"), text=initial_text) + if dlg.ShowModal() == wx.ID_OK: + text, files, cw, langs = dlg.get_payload() + self.session.send_message(message=text, files=files, reply_to=uri, cw_text=cw, langs=langs) + output.speak(_("Sending reply...")) + dlg.Destroy() + + def on_repost(self, evt): + self.share_item(confirm=True) + + def share_item(self, confirm=False, *args, **kwargs): + item = self.get_item() + if not item: return + uri = item.get("uri") if isinstance(item, dict) else getattr(item, "uri", None) + + if confirm: + if wx.MessageBox(_("Repost this?"), _("Confirm"), wx.YES_NO | wx.ICON_QUESTION) != wx.YES: + return + + self.session.repost(uri) + output.speak(_("Reposted.")) + + def on_like(self, evt): + self.toggle_favorite(confirm=True) + + def toggle_favorite(self, confirm=False, *args, **kwargs): + item = self.get_item() + if not item: return + uri = item.get("uri") if isinstance(item, dict) else getattr(item, "uri", None) + + if confirm: + if wx.MessageBox(_("Like this post?"), _("Confirm"), wx.YES_NO | wx.ICON_QUESTION) != wx.YES: + return + + self.session.like(uri) + output.speak(_("Liked.")) + + def add_to_favorites(self, *args, **kwargs): + self.toggle_favorite(confirm=False) + + def remove_from_favorites(self, *args, **kwargs): + # We need unlike support in session + pass + + def on_dm(self, evt): + self.send_message() + + def send_message(self, *args, **kwargs): + # Global shortcut for DM + item = self.get_item() + if not item: + output.speak(_("No user selected to message."), True) + return + + author = getattr(item, "author", None) or (item.get("post", {}).get("author") if isinstance(item, dict) else None) + if not author: + # Try item itself if it's a user object (UserBuffer) + author = item + + did = getattr(author, "did", None) or author.get("did") + handle = getattr(author, "handle", "unknown") or (author.get("handle") if isinstance(author, dict) else "unknown") + + if not did: + return + + if self.showing == False: + dlg = wx.TextEntryDialog(None, _("Message to {0}:").format(handle), _("Send Message")) + if dlg.ShowModal() == wx.ID_OK: + text = dlg.GetValue() + if text: + try: + api = self.session._ensure_client() + # Get or create conversation + res = api.chat.bsky.convo.get_convo_for_members({"members": [did]}) + convo_id = res.convo.id + self.session.send_chat_message(convo_id, text) + output.speak(_("Message sent."), True) + except: + log.exception("Error sending Bluesky DM (invisible)") + output.speak(_("Failed to send message."), True) + dlg.Destroy() + return + + # If showing, we'll just open the chat buffer for now as it's more structured + self.view_chat_with_user(did, handle) + + def user_actions(self, *args, **kwargs): + pub.sendMessage("execute-action", action="follow") + + def view_chat_with_user(self, did, handle): + try: + api = self.session._ensure_client() + res = api.chat.bsky.convo.get_convo_for_members({"members": [did]}) + convo_id = res.convo.id + + import application + title = _("Chat: {0}").format(handle) + application.app.controller.create_buffer( + buffer_type="chat_messages", + session_type="blueski", + buffer_title=title, + kwargs={"session": self.session, "convo_id": convo_id, "name": title}, + start=True + ) + except: + output.speak(_("Could not open chat."), True) + + def block_user(self, *args, **kwargs): + item = self.get_item() + if not item: return + author = getattr(item, "author", None) or (item.get("post", {}).get("author") if isinstance(item, dict) else item) + did = getattr(author, "did", None) or (author.get("did") if isinstance(author, dict) else None) + handle = getattr(author, "handle", "unknown") or (author.get("handle") if isinstance(author, dict) else "unknown") + + if wx.MessageBox(_("Are you sure you want to block {0}?").format(handle), _("Block"), wx.YES_NO | wx.ICON_WARNING) == wx.YES: + if self.session.block_user(did): + output.speak(_("User blocked.")) + else: + output.speak(_("Failed to block user.")) + + def unblock_user(self, *args, **kwargs): + # Unblocking usually needs the block record URI. + # In a UserBuffer (Blocks), it might be present. + item = self.get_item() + if not item: return + + # Check if item itself is a block record or user object with viewer.blocking + block_uri = None + if isinstance(item, dict): + block_uri = item.get("viewer", {}).get("blocking") + else: + viewer = getattr(item, "viewer", None) + block_uri = getattr(viewer, "blocking", None) if viewer else None + + if not block_uri: + output.speak(_("Could not find block information for this user."), True) + return + + if self.session.unblock_user(block_uri): + output.speak(_("User unblocked.")) + else: + output.speak(_("Failed to unblock user.")) + + def put_items_on_list(self, number_of_items): + list_to_use = self.session.db[self.name] + count = self.buffer.list.get_count() + reverse = False + try: + reverse = self.session.settings["general"].get("reverse_timelines", False) + except: pass + + if number_of_items == 0: + return + + safe = True + relative_times = self.session.settings["general"].get("relative_times", False) + show_screen_names = self.session.settings["general"].get("show_screen_names", False) + + if count == 0: + for i in list_to_use: + post = self.compose_function(i, self.session.db, self.session.settings, relative_times=relative_times, show_screen_names=show_screen_names, safe=safe) + self.buffer.list.insert_item(False, *post) + # Set selection + total = self.buffer.list.get_count() + if total > 0: + if not reverse: + self.buffer.list.select_item(total - 1) # Bottom + else: + self.buffer.list.select_item(0) # Top + + elif count > 0 and number_of_items > 0: + if not reverse: + items = list_to_use[:number_of_items] # If we prepended items for normal (oldest first) timeline... wait. + # Standard flow: "New items" come from API. + # If standard timeline (oldest at top, newest at bottom): new items appended to DB. + # UI: append to bottom. + items = list_to_use[len(list_to_use)-number_of_items:] + for i in items: + post = self.compose_function(i, self.session.db, self.session.settings, relative_times=relative_times, show_screen_names=show_screen_names, safe=safe) + self.buffer.list.insert_item(False, *post) + else: + # Reverse timeline (Newest at top). + # New items appended to DB? Or inserted at 0? + # Mastodon BaseBuffer: + # if reverse_timelines == False: items_db.insert(0, i) (Wait, insert at 0?) + # Actually let's look at `get_more_items` in Mastodon BaseBuffer again. + # "if self.session.settings["general"]["reverse_timelines"] == False: items_db.insert(0, i)" + # This means for standard timeline, new items (newer time) go to index 0? + # No, standard timeline usually has oldest at top. Retrieve "more items" usually means "newer items" or "older items" depending on context (streaming vs styling). + + # Let's trust that we just need to insert based on how we updated DB in start_stream. + + # For now, simplistic approach: + items = list_to_use[0:number_of_items] # Assuming we inserted at 0 in DB + # items.reverse() if needed? + for i in items: + post = self.compose_function(i, self.session.db, self.session.settings, relative_times=relative_times, show_screen_names=show_screen_names, safe=safe) + self.buffer.list.insert_item(True, *post) # Insert at 0 (True) + + def reply(self, *args, **kwargs): + self.on_reply(None) + + def post_status(self, *args, **kwargs): + self.on_post(None) + + def share_item(self, *args, **kwargs): + self.on_repost(None) + + def destroy_status(self, *args, **kwargs): + # Delete post + item = self.get_item() + if not item: return + uri = self.get_selected_item_id() + if not uri: + if isinstance(item, dict): + uri = item.get("uri") or item.get("post", {}).get("uri") + else: + post = getattr(item, "post", None) + uri = getattr(item, "uri", None) or getattr(post, "uri", None) + if not uri: + output.speak(_("Could not find the post identifier."), True) + return + + # Check if author is self + # Implementation depends on parsing URI or checking active user DID vs author DID + # For now, just try and handle error + if wx.MessageBox(_("Delete this post?"), _("Confirm"), wx.YES_NO | wx.ICON_QUESTION) == wx.YES: + try: + ok = self.session.delete_post(uri) + if not ok: + output.speak(_("Could not delete."), True) + return + index = self.buffer.list.get_selected() + if index > -1 and self.session.db.get(self.name): + try: + self.session.db[self.name].pop(index) + except Exception: + pass + try: + self.buffer.list.remove_item(index) + except Exception: + pass + output.speak(_("Deleted.")) + except Exception: + log.exception("Error deleting Bluesky post") + output.speak(_("Could not delete."), True) + + def url(self, *args, **kwargs): + item = self.get_item() + if not item: return + + uri = item.get("uri") if isinstance(item, dict) else getattr(item, "uri", None) + # Convert at:// uri to https://bsky.app link + if uri and "at://" in uri and "app.bsky.feed.post" in uri: + parts = uri.split("/") + # at://did:plc:xxx/app.bsky.feed.post/rkey + did = parts[2] + rkey = parts[-1] + + # Need handle for prettier url, but did works? bluesky web supports profile/did/post/rkey? + # Let's try to find handle if possible + handle = None + if isinstance(item, dict): + handle = item.get("handle") + else: + handle = getattr(getattr(item, "author", None), "handle", None) + + target = handle if handle else did + link = f"https://bsky.app/profile/{target}/post/{rkey}" + + import webbrowser + webbrowser.open(link) + + def audio(self, *args, **kwargs): + output.speak(_("Audio playback not supported for Bluesky yet.")) + + # Helper to map standard keys if they don't invoke the methods above via get_event + # But usually get_event is enough. + + # Also implement "view_item" if standard keymap uses it + def get_formatted_message(self): + return self.compose_function(self.get_item(), self.session.db, self.session.settings, self.session.settings["general"].get("relative_times", False), self.session.settings["general"].get("show_screen_names", False))[1] + + def get_message(self): + item = self.get_item() + if item is None: + return + # Use the compose function to get the full formatted text + # Bluesky compose returns [user, text, date, source] + composed = self.compose_function(item, self.session.db, self.session.settings, self.session.settings["general"].get("relative_times", False), self.session.settings["general"].get("show_screen_names", False)) + # Join them for a full readout similar to Mastodon's template render + return " ".join(composed) + + def view_item(self, *args, **kwargs): + self.view_conversation() + + def view_conversation(self, *args, **kwargs): + item = self.get_item() + if not item: return + + uri = item.get("uri") if isinstance(item, dict) else getattr(item, "uri", None) + if not uri: return + + import application + controller = application.app.controller + + handle = "Unknown" + if isinstance(item, dict): + handle = item.get("author", {}).get("handle", "Unknown") + else: + handle = getattr(getattr(item, "author", None), "handle", "Unknown") + + title = _("Conversation: {0}").format(handle) + + controller.create_buffer( + buffer_type="conversation", + session_type="blueski", + buffer_title=title, + kwargs={"session": self.session, "uri": uri, "name": title}, + start=True + ) + + def get_item(self): + index = self.buffer.list.get_selected() + if index > -1 and self.session.db.get(self.name) is not None: + # Logic implies DB order matches UI order + return self.session.db[self.name][index] + + def get_selected_item_id(self): + item = self.get_item() + if not item: + return None + + if isinstance(item, dict): + uri = item.get("uri") + if uri: + return uri + post = item.get("post") or item.get("record") + if isinstance(post, dict): + return post.get("uri") + return getattr(post, "uri", None) + + return getattr(item, "uri", None) or getattr(getattr(item, "post", None), "uri", None) + + def get_selected_item_author_details(self): + item = self.get_item() + if not item: + return None + + def g(obj, key, default=None): + if isinstance(obj, dict): + return obj.get(key, default) + return getattr(obj, key, default) + + author = None + if g(item, "did") or g(item, "handle"): + author = item + else: + author = g(item, "author") + if not author: + post = g(item, "post") or g(item, "record") + author = g(post, "author") if post else None + + if not author: + return None + + return { + "did": g(author, "did"), + "handle": g(author, "handle"), + } + + def process_items(self, items, play_sound=True): + """ + Process list of items (FeedViewPost objects), update DB, and update UI. + Returns number of new items. + """ + if not items: + return 0 + + # Identify new items + new_items = [] + current_uris = set() + # Create a set of keys from existing db to check duplicates + def get_key(it): + if isinstance(it, dict): + post = it.get("post") + if isinstance(post, dict) and post.get("uri"): + return post.get("uri") + if it.get("uri"): + return it.get("uri") + if it.get("id"): + return it.get("id") + if it.get("did"): + return it.get("did") + if it.get("handle"): + return it.get("handle") + author = it.get("author") + if isinstance(author, dict): + return author.get("did") or author.get("handle") + return None + post = getattr(it, "post", None) + if post is not None: + return getattr(post, "uri", None) + for attr in ("uri", "id", "did", "handle"): + val = getattr(it, attr, None) + if val: + return val + author = getattr(it, "author", None) + if author is not None: + return getattr(author, "did", None) or getattr(author, "handle", None) + return None + + for item in self.session.db[self.name]: + key = get_key(item) + if key: + current_uris.add(key) + + for item in items: + key = get_key(item) + if key: + if key in current_uris: + continue + current_uris.add(key) + new_items.append(item) + + if not new_items: + return 0 + + # Add to DB + # Reverse timeline setting + reverse = False + try: reverse = self.session.settings["general"].get("reverse_timelines", False) + except: pass + + # If reverse (newest at top), we insert new items at index 0? + # Typically API returns newest first. + # If DB is [Newest ... Oldest] (Reverse order) + # Then we insert new items at 0. + # If DB is [Oldest ... Newest] (Normal order) + # Then we append new items at end. + + # But traditionally APIs return [Newest ... Oldest]. + # So 'items' list is [Newest ... Oldest]. + + if reverse: # Newest at top + # DB: [Newest (Index 0) ... Oldest] + # We want to insert 'new_items' at 0. + # But 'new_items' are also [Newest...Oldest] + # So duplicates check handled. + # We insert the whole block at 0? + for it in reversed(new_items): # Insert oldest of new first, so newest ends up at 0 + self.session.db[self.name].insert(0, it) + else: # Oldest at top + # DB: [Oldest ... Newest] + # APIs return [Newest ... Oldest] + # We want to append them. + # So we append reversed(new_items)? + for it in reversed(new_items): + self.session.db[self.name].append(it) + + # Update UI + self.put_items_on_list(len(new_items)) + + # Play sound + if play_sound and self.sound and not self.session.settings["sound"]["session_mute"]: + self.session.sound.play(self.sound) + + return len(new_items) + + def save_positions(self): + try: + self.session.db[self.name+"_pos"] = self.buffer.list.get_selected() + except: pass + + def remove_buffer(self, force=False): + if self.type in ("conversation", "chat_messages") or self.name.lower().startswith("conversation"): + try: + self.session.db.pop(self.name, None) + except Exception: + pass + return True + return False + diff --git a/src/controller/buffers/blueski/chat.py b/src/controller/buffers/blueski/chat.py new file mode 100644 index 00000000..d4df7a4f --- /dev/null +++ b/src/controller/buffers/blueski/chat.py @@ -0,0 +1,117 @@ +# -*- coding: utf-8 -*- +import logging +import wx +import output +from .base import BaseBuffer +from wxUI.buffers.blueski import panels as BlueskiPanels +from sessions.blueski import compose + +log = logging.getLogger("controller.buffers.blueski.chat") + +class ConversationListBuffer(BaseBuffer): + def __init__(self, *args, **kwargs): + kwargs["compose_func"] = "compose_convo" + super(ConversationListBuffer, self).__init__(*args, **kwargs) + self.type = "chat" + + def create_buffer(self, parent, name): + self.buffer = BlueskiPanels.ChatPanel(parent, name) + self.buffer.session = self.session + + def start_stream(self, mandatory=False, play_sound=True): + count = self.session.settings["general"].get("max_posts_per_call", 50) + try: + res = self.session.list_convos(limit=count) + items = res.get("items", []) + + # Clear to avoid list weirdness on refreshes? + # Chat list usually replaces content on fetch + self.session.db[self.name] = [] + self.buffer.list.clear() + + return self.process_items(items, play_sound) + except Exception: + log.exception("Error fetching conversations") + return 0 + + def url(self, *args, **kwargs): + # In chat list, Enter (URL) should open the chat conversation buffer + self.view_chat() + + def send_message(self, *args, **kwargs): + # Global shortcut for DM + self.view_chat() + + def view_chat(self): + item = self.get_item() + if not item: return + + convo_id = getattr(item, "id", None) or item.get("id") + if not convo_id: return + + # Determine participants names for title + members = getattr(item, "members", []) or item.get("members", []) + others = [m for m in members if (getattr(m, "did", None) or m.get("did")) != self.session.db["user_id"]] + if not others: others = members + names = ", ".join([getattr(m, "handle", "unknown") or m.get("handle") for m in others]) + + title = _("Chat: {0}").format(names) + + import application + application.app.controller.create_buffer( + buffer_type="chat_messages", + session_type="blueski", + buffer_title=title, + kwargs={"session": self.session, "convo_id": convo_id, "name": title}, + start=True + ) + +class ChatBuffer(BaseBuffer): + def __init__(self, *args, **kwargs): + kwargs["compose_func"] = "compose_chat_message" + super(ChatBuffer, self).__init__(*args, **kwargs) + self.type = "chat_messages" + self.convo_id = kwargs.get("convo_id") + + def create_buffer(self, parent, name): + self.buffer = BlueskiPanels.ChatMessagePanel(parent, name) + self.buffer.session = self.session + + def start_stream(self, mandatory=False, play_sound=True): + if not self.convo_id: return 0 + count = self.session.settings["general"].get("max_posts_per_call", 50) + try: + res = self.session.get_convo_messages(self.convo_id, limit=count) + items = res.get("items", []) + # Message order in API is often Oldest...Newest or vice versa. + # We want them in order and only new ones. + # For chat, let's just clear and show last N messages for simplicity now. + self.session.db[self.name] = [] + self.buffer.list.clear() + + # API usually returns newest first. We want newest at bottom. + items = list(reversed(items)) + + return self.process_items(items, play_sound) + except Exception: + log.exception("Error fetching chat messages") + return 0 + + def on_reply(self, evt): + # Open a text entry chat box + dlg = wx.TextEntryDialog(None, _("Message:"), _("Send Message"), style=wx.TE_MULTILINE | wx.OK | wx.CANCEL) + if dlg.ShowModal() == wx.ID_OK: + text = dlg.GetValue() + if text: + try: + self.session.send_chat_message(self.convo_id, text) + output.speak(_("Message sent.")) + # Refresh + self.start_stream(mandatory=True, play_sound=False) + except: + output.speak(_("Failed to send message.")) + dlg.Destroy() + + def send_message(self, *args, **kwargs): + # Global shortcut for DM + self.on_reply(None) diff --git a/src/controller/buffers/blueski/timeline.py b/src/controller/buffers/blueski/timeline.py new file mode 100644 index 00000000..a1d9b310 --- /dev/null +++ b/src/controller/buffers/blueski/timeline.py @@ -0,0 +1,209 @@ +# -*- coding: utf-8 -*- +import logging +from .base import BaseBuffer +from wxUI.buffers.blueski import panels as BlueskiPanels +from pubsub import pub + +log = logging.getLogger("controller.buffers.blueski.timeline") + +class HomeTimeline(BaseBuffer): + def __init__(self, *args, **kwargs): + super(HomeTimeline, self).__init__(*args, **kwargs) + self.type = "home_timeline" + self.feed_uri = None + + def create_buffer(self, parent, name): + # Override to use HomePanel + self.buffer = BlueskiPanels.HomePanel(parent, name) + self.buffer.session = self.session + + def start_stream(self, mandatory=False, play_sound=True): + count = 50 + try: + count = self.session.settings["general"].get("max_posts_per_call", 50) + except: pass + + api = self.session._ensure_client() + + # Discover Logic + if not self.feed_uri: + self.feed_uri = self._resolve_discover_feed(api) + + items = [] + try: + res = None + if self.feed_uri: + # Fetch feed + res = api.app.bsky.feed.get_feed({"feed": self.feed_uri, "limit": count}) + else: + # Fallback to standard timeline + res = api.app.bsky.feed.get_timeline({"limit": count}) + + feed = getattr(res, "feed", []) + items = list(feed) + + except Exception: + log.exception("Failed to fetch home timeline") + return 0 + + return self.process_items(items, play_sound) + + def _resolve_discover_feed(self, api): + # Reuse logic from panels.py + try: + cached = self.session.db.get("discover_feed_uri") + if cached: return cached + + # Simple fallback: Suggested feeds + try: + res = api.app.bsky.feed.get_suggested_feeds({"limit": 50}) + feeds = getattr(res, "feeds", []) + for feed in feeds: + dn = getattr(feed, "displayName", "") or getattr(feed, "display_name", "") + if "discover" in dn.lower(): + uri = getattr(feed, "uri", "") + self.session.db["discover_feed_uri"] = uri + try: self.session.save_persistent_data() + except: pass + return uri + except: pass + + return None + except: + return None + +class FollowingTimeline(BaseBuffer): + def __init__(self, *args, **kwargs): + super(FollowingTimeline, self).__init__(*args, **kwargs) + self.type = "following_timeline" + + def create_buffer(self, parent, name): + self.buffer = BlueskiPanels.HomePanel(parent, name) # Reuse HomePanel layout + self.buffer.session = self.session + + def start_stream(self, mandatory=False, play_sound=True): + count = 50 + try: count = self.session.settings["general"].get("max_posts_per_call", 50) + except: pass + + api = self.session._ensure_client() + try: + # Force reverse-chronological + res = api.app.bsky.feed.get_timeline({"limit": count, "algorithm": "reverse-chronological"}) + feed = getattr(res, "feed", []) + items = list(feed) + except Exception: + log.exception("Error fetching following timeline") + return 0 + + return self.process_items(items, play_sound) + +class NotificationBuffer(BaseBuffer): + def __init__(self, *args, **kwargs): + super(NotificationBuffer, self).__init__(*args, **kwargs) + self.type = "notifications" + + def create_buffer(self, parent, name): + self.buffer = BlueskiPanels.NotificationPanel(parent, name) + self.buffer.session = self.session + + def start_stream(self, mandatory=False, play_sound=True): + count = 50 + api = self.session._ensure_client() + try: + res = api.app.bsky.notification.list_notifications({"limit": count}) + notifs = getattr(res, "notifications", []) + items = [] + # Notifications are not FeedViewPost. They have different structure. + # self.compose_function expects FeedViewPost-like structure (post, author, etc). + # We need to map them or have a different compose function. + # For now, let's skip items to avoid crash + # Or attempt to map. + except: + return 0 + return 0 + +class Conversation(BaseBuffer): + def __init__(self, *args, **kwargs): + super(Conversation, self).__init__(*args, **kwargs) + self.type = "conversation" + # We need the root URI or the URI of the post to show thread for + self.root_uri = kwargs.get("uri") + + def create_buffer(self, parent, name): + self.buffer = BlueskiPanels.HomePanel(parent, name) + self.buffer.session = self.session + + def start_stream(self, mandatory=False, play_sound=True): + if not self.root_uri: return 0 + + api = self.session._ensure_client() + try: + params = {"uri": self.root_uri, "depth": 100, "parentHeight": 100} + try: + res = api.app.bsky.feed.get_post_thread(params) + except Exception: + res = api.app.bsky.feed.get_post_thread({"uri": self.root_uri}) + thread = getattr(res, "thread", None) + if not thread: + return 0 + + def g(obj, key, default=None): + if isinstance(obj, dict): + return obj.get(key, default) + return getattr(obj, key, default) + + # Find the root of the thread tree + curr = thread + while g(curr, "parent"): + curr = g(curr, "parent") + + final_items = [] + + def traverse(node): + if not node: + return + post = g(node, "post") + if post: + final_items.append(post) + replies = g(node, "replies") or [] + for r in replies: + traverse(r) + + traverse(curr) + + # Clear existing items to avoid duplication when refreshing a thread view (which changes structure little) + self.session.db[self.name] = [] + self.buffer.list.clear() # Clear UI too + + return self.process_items(final_items, play_sound) + + except Exception: + log.exception("Error fetching thread") + return 0 + +class LikesBuffer(BaseBuffer): + def __init__(self, *args, **kwargs): + super(LikesBuffer, self).__init__(*args, **kwargs) + self.type = "likes" + + def create_buffer(self, parent, name): + self.buffer = BlueskiPanels.HomePanel(parent, name) + self.buffer.session = self.session + + def start_stream(self, mandatory=False, play_sound=True): + count = 50 + try: + count = self.session.settings["general"].get("max_posts_per_call", 50) + except Exception: + pass + + api = self.session._ensure_client() + try: + res = api.app.bsky.feed.get_actor_likes({"actor": api.me.did, "limit": count}) + items = getattr(res, "feed", None) or getattr(res, "items", None) or [] + except Exception: + log.exception("Error fetching likes") + return 0 + + return self.process_items(list(items), play_sound) diff --git a/src/controller/buffers/blueski/user.py b/src/controller/buffers/blueski/user.py new file mode 100644 index 00000000..6a542e7c --- /dev/null +++ b/src/controller/buffers/blueski/user.py @@ -0,0 +1,63 @@ +# -*- coding: utf-8 -*- +import logging +from .base import BaseBuffer +from wxUI.buffers.blueski import panels as BlueskiPanels +from sessions.blueski import compose + +log = logging.getLogger("controller.buffers.blueski.user") + +class UserBuffer(BaseBuffer): + def __init__(self, *args, **kwargs): + # We need compose_user for this buffer + kwargs["compose_func"] = "compose_user" + super(UserBuffer, self).__init__(*args, **kwargs) + self.type = "user" + + def create_buffer(self, parent, name): + self.buffer = BlueskiPanels.UserPanel(parent, name) + self.buffer.session = self.session + + def start_stream(self, mandatory=False, play_sound=True): + api_method = self.kwargs.get("api_method") + if not api_method: return 0 + + count = self.session.settings["general"].get("max_posts_per_call", 50) + actor = ( + self.kwargs.get("actor") + or self.kwargs.get("did") + or self.kwargs.get("handle") + or self.kwargs.get("id") + ) + + try: + # We call the method in session. API methods return {"items": [...], "cursor": ...} + if api_method in ("get_followers", "get_follows"): + res = getattr(self.session, api_method)(actor=actor, limit=count) + else: + res = getattr(self.session, api_method)(limit=count) + items = res.get("items", []) + + # Clear existing items for these lists to start fresh? + # Or append? Standard lists in TWBlue usually append. + # But followers/blocks are often full-sync or large jumps. + # For now, append like timelines. + + return self.process_items(items, play_sound) + except Exception: + log.exception(f"Error fetching user list for {self.name}") + return 0 + +class FollowersBuffer(UserBuffer): + def __init__(self, *args, **kwargs): + kwargs["api_method"] = "get_followers" + super(FollowersBuffer, self).__init__(*args, **kwargs) + +class FollowingBuffer(UserBuffer): + def __init__(self, *args, **kwargs): + kwargs["api_method"] = "get_follows" + super(FollowingBuffer, self).__init__(*args, **kwargs) + +class BlocksBuffer(UserBuffer): + def __init__(self, *args, **kwargs): + kwargs["api_method"] = "get_blocks" + super(BlocksBuffer, self).__init__(*args, **kwargs) diff --git a/src/controller/mainController.py b/src/controller/mainController.py index 84b43744..c7900b60 100644 --- a/src/controller/mainController.py +++ b/src/controller/mainController.py @@ -5,6 +5,7 @@ import logging import webbrowser import wx import requests +import asyncio import keystrokeEditor import sessions import widgetUtils @@ -293,9 +294,52 @@ class Controller(object): pub.sendMessage("core.create_account", name=session.get_name(), session_id=session.session_id) def login_account(self, session_id): + session = None for i in sessions.sessions: - if sessions.sessions[i].session_id == session_id: session = sessions.sessions[i] - session.login() + if sessions.sessions[i].session_id == session_id: + session = sessions.sessions[i] + break + if not session: + return + + old_name = session.get_name() + try: + session.login() + except Exception as e: + log.exception("Login failed for session %s", session_id) + output.speak(_("Login failed for {0}: {1}").format(old_name, str(e)), True) + return + + if not session.logged: + output.speak(_("Login failed for {0}. Please check your credentials.").format(old_name), True) + return + + new_name = session.get_name() + if old_name != new_name: + log.info(f"Account name changed from {old_name} to {new_name} after login") + if self.current_account == old_name: + self.current_account = new_name + if old_name in self.accounts: + idx = self.accounts.index(old_name) + self.accounts[idx] = new_name + else: + self.accounts.append(new_name) + + # Update root buffer name and account + for b in self.buffers: + if b.account == old_name: + b.account = new_name + if hasattr(b, "buffer"): + b.buffer.account = new_name + # If this is the root node, its name matches old_name (e.g. "Bluesky") + if b.name == old_name: + b.name = new_name + if hasattr(b, "buffer"): + b.buffer.name = new_name + + # Update tree node label + self.change_buffer_title(old_name, old_name, new_name) + handler = self.get_handler(type=session.type) if handler != None and hasattr(handler, "create_buffers"): try: @@ -329,60 +373,35 @@ class Controller(object): try: buffer_panel_class = None if session_type == "blueski": - from wxUI.buffers.blueski import panels as BlueskiPanels # Import new panels - if buffer_type == "home_timeline": - buffer_panel_class = BlueskiPanels.BlueskiHomeTimelinePanel - # kwargs for HomeTimelinePanel: parent, name, session - # 'name' is buffer_title, 'parent' is self.view.nb - # 'session' needs to be fetched based on user_id in kwargs - if "user_id" in kwargs and "session" not in kwargs: # Ensure session is passed - kwargs["session"] = sessions.sessions.get(kwargs["user_id"]) - # Clean unsupported kwarg for panel ctor - if "user_id" in kwargs: - kwargs.pop("user_id", None) - if "name" not in kwargs: kwargs["name"] = buffer_title + from controller.buffers.blueski import timeline as BlueskiTimelines + from controller.buffers.blueski import user as BlueskiUsers + from controller.buffers.blueski import chat as BlueskiChats + + if "user_id" in kwargs and "session" not in kwargs: + kwargs["session"] = sessions.sessions.get(kwargs["user_id"]) + + if "name" not in kwargs: kwargs["name"] = buffer_title - elif buffer_type == "user_timeline": - buffer_panel_class = BlueskiPanels.BlueskiUserTimelinePanel - # kwargs for UserTimelinePanel: parent, name, session, target_user_did, target_user_handle - if "user_id" in kwargs and "session" not in kwargs: - kwargs["session"] = sessions.sessions.get(kwargs["user_id"]) - kwargs.pop("user_id", None) - if "name" not in kwargs: kwargs["name"] = buffer_title - # target_user_did and target_user_handle must be in kwargs from blueski.Handler + buffer_map = { + "home_timeline": BlueskiTimelines.HomeTimeline, + "following_timeline": BlueskiTimelines.FollowingTimeline, + "notifications": BlueskiTimelines.NotificationBuffer, + "conversation": BlueskiTimelines.Conversation, + "likes": BlueskiTimelines.LikesBuffer, + "UserBuffer": BlueskiUsers.UserBuffer, + "FollowersBuffer": BlueskiUsers.FollowersBuffer, + "FollowingBuffer": BlueskiUsers.FollowingBuffer, + "BlocksBuffer": BlueskiUsers.BlocksBuffer, + "ConversationListBuffer": BlueskiChats.ConversationListBuffer, + "ChatMessageBuffer": BlueskiChats.ChatBuffer, + "chat_messages": BlueskiChats.ChatBuffer, + } - elif buffer_type == "notifications": - buffer_panel_class = BlueskiPanels.BlueskiNotificationPanel - if "user_id" in kwargs and "session" not in kwargs: - kwargs["session"] = sessions.sessions.get(kwargs["user_id"]) - kwargs.pop("user_id", None) - if "name" not in kwargs: kwargs["name"] = buffer_title - # target_user_did and target_user_handle must be in kwargs from blueski.Handler - - elif buffer_type == "notifications": - buffer_panel_class = BlueskiPanels.BlueskiNotificationPanel - if "user_id" in kwargs and "session" not in kwargs: - kwargs["session"] = sessions.sessions.get(kwargs["user_id"]) - kwargs.pop("user_id", None) - if "name" not in kwargs: kwargs["name"] = buffer_title - elif buffer_type == "user_list_followers" or buffer_type == "user_list_following": - buffer_panel_class = BlueskiPanels.BlueskiUserListPanel - elif buffer_type == "following_timeline": - buffer_panel_class = BlueskiPanels.BlueskiFollowingTimelinePanel - # Clean stray keys that this panel doesn't accept - kwargs.pop("user_id", None) - kwargs.pop("list_type", None) - if "name" not in kwargs: kwargs["name"] = buffer_title - else: - log.warning(f"Unsupported Blueski buffer type: {buffer_type}. Falling back to generic.") - # Fallback to trying to find it in generic buffers or error - available_buffers = getattr(buffers, "base", None) # Or some generic panel module - if available_buffers and hasattr(available_buffers, buffer_type): - buffer_panel_class = getattr(available_buffers, buffer_type) - elif available_buffers and hasattr(available_buffers, "TimelinePanel"): # Example generic - buffer_panel_class = getattr(available_buffers, "TimelinePanel") - else: - raise AttributeError(f"Blueski buffer type {buffer_type} not found in blueski.panels or base panels.") + buffer_panel_class = buffer_map.get(buffer_type) + if buffer_panel_class is None: + # Fallback for others including user_timeline to HomeTimeline for now + log.warning(f"Unsupported Blueski buffer type: {buffer_type}. Falling back to HomeTimeline.") + buffer_panel_class = BlueskiTimelines.HomeTimeline else: # Existing logic for other session types available_buffers = getattr(buffers, session_type) if not hasattr(available_buffers, buffer_type): @@ -722,6 +741,12 @@ class Controller(object): session = buffer.session if getattr(session, "type", "") == "blueski": + author_handle = "" + if hasattr(buffer, "get_selected_item_author_details"): + details = buffer.get_selected_item_author_details() + if details: + author_handle = details.get("handle", "") or details.get("did", "") + initial_text = f"@{author_handle} " if author_handle and not author_handle.startswith("@") else (f"{author_handle} " if author_handle else "") if self.showing == False: dlg = wx.TextEntryDialog(None, _("Write your reply:"), _("Reply")) if dlg.ShowModal() == wx.ID_OK: @@ -742,7 +767,7 @@ class Controller(object): dlg.Destroy() return from wxUI.dialogs.blueski.postDialogs import Post as ATPostDialog - dlg = ATPostDialog(caption=_("Reply")) + dlg = ATPostDialog(caption=_("Reply"), text=initial_text) if dlg.ShowModal() == wx.ID_OK: text, files, cw_text, langs = dlg.get_payload() dlg.Destroy() @@ -1432,13 +1457,10 @@ class Controller(object): def update_buffers(self): for i in self.buffers[:]: if i.session != None and i.session.is_logged == True: - # For Blueski, initial load is in session.start() or manual. - # Periodic updates would need a separate timer or manual refresh via update_buffer. - if i.session.KIND != "blueski": - try: - i.start_stream(mandatory=True) # This is likely for streaming connections or timed polling within buffer - except Exception as err: - log.exception("Error %s starting buffer %s on account %s, with args %r and kwargs %r." % (str(err), i.name, i.account, i.args, i.kwargs)) + try: + i.start_stream(mandatory=True) + except Exception as err: + log.exception("Error %s starting buffer %s on account %s, with args %r and kwargs %r." % (str(err), i.name, i.account, i.args, i.kwargs)) def update_buffer(self, *args, **kwargs): """Handles the 'Update buffer' menu command to fetch newest items.""" @@ -1454,50 +1476,27 @@ class Controller(object): new_ids = [] try: if session.KIND == "blueski": - if bf.name == f"{session.label} Home": # Assuming buffer name indicates type - # Its panel's load_initial_posts calls session.fetch_home_timeline - if hasattr(bf, "load_initial_posts"): # Generic for timeline panels - await bf.load_initial_posts(limit=config.app["app-settings"].get("items_per_request", 20)) - new_ids = getattr(bf, "item_uris", []) - else: # Should not happen if panel is correctly typed - logger.warning(f"Home timeline panel for {session.KIND} missing load_initial_posts") - elif bf.type == "notifications" and hasattr(bf, "refresh_notifications"): - await bf.refresh_notifications(limit=config.app["app-settings"].get("items_per_request", 20)) - new_ids = [] - elif bf.type == "user_timeline" and hasattr(bf, "load_initial_posts"): - await bf.load_initial_posts(limit=config.app["app-settings"].get("items_per_request", 20)) - new_ids = getattr(bf, "item_uris", []) - elif bf.type in ["user_list_followers", "user_list_following"] and hasattr(bf, "load_initial_users"): - await bf.load_initial_users(limit=config.app["app-settings"].get("items_per_request", 30)) - new_ids = [u.get("did") for u in getattr(bf, "user_list_data", []) if isinstance(u,dict)] + if hasattr(bf, "start_stream"): + count = bf.start_stream(mandatory=True) + if count: new_ids = [str(x) for x in range(count)] else: - if hasattr(bf, "start_stream"): # Fallback for non-Blueski panels or unhandled types - count = bf.start_stream(mandatory=True, avoid_autoreading=True) - if count is not None: new_ids = [str(x) for x in range(count)] # Dummy IDs for count - else: - output.speak(_(u"This buffer type cannot be updated in this way."), True) - return - else: # For other session types (e.g. Mastodon) + output.speak(_(u"This buffer type cannot be updated."), True) + return + else: # Generic fallback for other sessions if hasattr(bf, "start_stream"): count = bf.start_stream(mandatory=True, avoid_autoreading=True) - if count is not None: new_ids = [str(x) for x in range(count)] # Dummy IDs for count + if count: new_ids = [str(x) for x in range(count)] else: output.speak(_(u"Unable to update this buffer."), True) return - # Generic feedback based on new_ids for timelines or user lists + # Generic feedback if bf.type in ["home_timeline", "user_timeline"]: output.speak(_("{0} posts retrieved").format(len(new_ids)), True) - elif bf.type in ["user_list_followers", "user_list_following"]: - output.speak(_("{0} users retrieved").format(len(new_ids)), True) elif bf.type == "notifications": output.speak(_("Notifications updated."), True) - # else, original start_stream might have given feedback - - except NotificationError as e: - output.speak(str(e), True) # Ensure output.speak is on main thread if called from here - except Exception as e_general: - logger.error(f"Error updating buffer {bf.name}: {e_general}", exc_info=True) + except Exception as e: + log.exception("Error updating buffer %s", bf.name) output.speak(_("An error occurred while updating the buffer."), True) wx.CallAfter(asyncio.create_task, do_update()) @@ -1674,10 +1673,9 @@ class Controller(object): # The handler's user_details method is responsible for extracting context # (e.g., selected user) from the buffer and displaying the profile. # For Blueski, handler.user_details calls the ShowUserProfileDialog. - # It's an async method, so needs to be called appropriately. - async def _show_details(): - await handler.user_details(buffer) - wx.CallAfter(asyncio.create_task, _show_details()) + result = handler.user_details(buffer) + if asyncio.iscoroutine(result): + call_threaded(asyncio.run, result) else: output.speak(_("This session type does not support viewing user details in this way."), True) @@ -1737,9 +1735,9 @@ class Controller(object): if author_details: user = author_details if handler and hasattr(handler, 'open_followers_timeline'): - async def _open_followers(): - await handler.open_followers_timeline(main_controller=self, session=session_to_use, user_payload=user) - wx.CallAfter(asyncio.create_task, _open_followers()) + result = handler.open_followers_timeline(main_controller=self, session=session_to_use, user_payload=user) + if asyncio.iscoroutine(result): + call_threaded(asyncio.run, result) elif handler and hasattr(handler, 'openFollowersTimeline'): # Fallback handler.openFollowersTimeline(self, current_buffer, user) else: @@ -1768,9 +1766,9 @@ class Controller(object): if author_details: user = author_details if handler and hasattr(handler, 'open_following_timeline'): - async def _open_following(): - await handler.open_following_timeline(main_controller=self, session=session_to_use, user_payload=user) - wx.CallAfter(asyncio.create_task, _open_following()) + result = handler.open_following_timeline(main_controller=self, session=session_to_use, user_payload=user) + if asyncio.iscoroutine(result): + call_threaded(asyncio.run, result) elif handler and hasattr(handler, 'openFollowingTimeline'): # Fallback handler.openFollowingTimeline(self, current_buffer, user) else: diff --git a/src/sessionmanager/sessionManager.py b/src/sessionmanager/sessionManager.py index 072f6cd1..9d6168ab 100644 --- a/src/sessionmanager/sessionManager.py +++ b/src/sessionmanager/sessionManager.py @@ -205,6 +205,10 @@ class sessionManagerController(object): # But for immediate use if not restarting, it might need to be added to sessions.sessions sessions.sessions[location] = s # Make it globally available immediately self.new_sessions[location] = s + # Sync with global config + if location not in config.app["sessions"]["sessions"]: + config.app["sessions"]["sessions"].append(location) + config.app.write() else: # Authorise returned False or None @@ -232,6 +236,9 @@ class sessionManagerController(object): self.view.remove_session(index) self.removed_sessions.append(selected_account.get("id")) self.sessions.remove(selected_account) + if selected_account.get("id") in config.app["sessions"]["sessions"]: + config.app["sessions"]["sessions"].remove(selected_account.get("id")) + config.app.write() shutil.rmtree(path=os.path.join(paths.config_path(), selected_account.get("id")), ignore_errors=True) def configuration(self): diff --git a/src/sessions/base.py b/src/sessions/base.py index 10e308fd..583456bd 100644 --- a/src/sessions/base.py +++ b/src/sessions/base.py @@ -59,7 +59,9 @@ class baseSession(object): if not os.path.exists(path): log.debug("Creating %s path" % (os.path.join(paths.config_path(), path),)) os.mkdir(path) - config.app["sessions"]["sessions"].append(id) + if self.session_id not in config.app["sessions"]["sessions"]: + config.app["sessions"]["sessions"].append(self.session_id) + config.app.write() def get_configuration(self): """ Get settings for a session.""" diff --git a/src/sessions/blueski/compose.py b/src/sessions/blueski/compose.py index 4b530eae..f1b338ec 100644 --- a/src/sessions/blueski/compose.py +++ b/src/sessions/blueski/compose.py @@ -4,12 +4,11 @@ from __future__ import annotations import logging from typing import TYPE_CHECKING, Any from datetime import datetime - -from approve.translation import translate as _ -from approve.util import parse_iso_datetime # For parsing ISO timestamps +import arrow +import languageHandler if TYPE_CHECKING: - from approve.sessions.blueski.session import Session as BlueskiSession + from sessions.blueski.session import Session as BlueskiSession from atproto.xrpc_client import models # For type hinting ATProto models logger = logging.getLogger(__name__) @@ -94,12 +93,23 @@ class BlueskiCompose: post_text = getattr(record, 'text', '') if not isinstance(record, dict) else record.get('text', '') + reason = post_data.get("reason") + if reason: + rtype = getattr(reason, "$type", "") if not isinstance(reason, dict) else reason.get("$type", "") + if not rtype and not isinstance(reason, dict): + rtype = getattr(reason, "py_type", "") + if rtype and "reasonRepost" in rtype: + by = getattr(reason, "by", None) if not isinstance(reason, dict) else reason.get("by") + by_handle = getattr(by, "handle", "") if by and not isinstance(by, dict) else (by.get("handle", "") if by else "") + reason_line = _("Reposted by @{handle}").format(handle=by_handle) if by_handle else _("Reposted") + post_text = f"{reason_line}\n{post_text}" if post_text else reason_line + created_at_str = getattr(record, 'createdAt', '') if not isinstance(record, dict) else record.get('createdAt', '') timestamp_str = "" if created_at_str: try: - dt_obj = parse_iso_datetime(created_at_str) - timestamp_str = dt_obj.strftime("%I:%M %p - %b %d, %Y") if dt_obj else created_at_str + ts = arrow.get(created_at_str) + timestamp_str = ts.format(_("dddd, MMMM D, YYYY H:m"), locale=languageHandler.curLang[:2]) except Exception as e: logger.debug(f"Could not parse timestamp {created_at_str}: {e}") timestamp_str = created_at_str @@ -143,8 +153,10 @@ class BlueskiCompose: if alt_texts_present: embed_display += _(" (Alt text available)") embed_display += "]" - elif embed_type in ['app.bsky.embed.record#view', 'app.bsky.embed.record']: + elif embed_type in ['app.bsky.embed.record#view', 'app.bsky.embed.record', 'app.bsky.embed.recordWithMedia#view', 'app.bsky.embed.recordWithMedia']: record_embed_data = getattr(embed_data, 'record', None) if hasattr(embed_data, 'record') else embed_data.get('record', None) + if record_embed_data and isinstance(record_embed_data, dict): + record_embed_data = record_embed_data.get("record") or record_embed_data record_embed_type = getattr(record_embed_data, '$type', '') if not record_embed_type and isinstance(record_embed_data, dict): record_embed_type = record_embed_data.get('$type', '') @@ -243,3 +255,275 @@ class BlueskiCompose: display_parts.append(f"\"{body_snippet}\"") return " ".join(display_parts).strip() + + +def compose_post(post, db, settings, relative_times, show_screen_names=False, safe=True): + """ + Compose a Bluesky post into a list of strings [User, Text, Date, Source]. + post: dict or ATProto model object. + """ + # Extract data using getattr for models or .get for dicts + def g(obj, key, default=None): + if isinstance(obj, dict): + return obj.get(key, default) + return getattr(obj, key, default) + + # Resolve Post View or Feed View structure + # Feed items often have .post field. Direct post objects don't. + actual_post = g(post, "post", post) + + record = g(actual_post, "record", {}) + author = g(actual_post, "author", {}) + + # Author + handle = g(author, "handle", "") + display_name = g(author, "displayName") or g(author, "display_name") or handle or "Unknown" + + if show_screen_names: + user_str = f"@{handle}" + else: + # "Display Name (@handle)" + if handle and display_name != handle: + user_str = f"{display_name} (@{handle})" + else: + user_str = f"@{handle}" + + # Text + text = g(record, "text", "") + + # Repost reason (so users know why they see an unfamiliar post) + reason = g(post, "reason", None) + if reason: + rtype = g(reason, "$type") or g(reason, "py_type") + if rtype and "reasonRepost" in rtype: + by = g(reason, "by", {}) + by_handle = g(by, "handle", "") + reason_line = _("Reposted by @{handle}").format(handle=by_handle) if by_handle else _("Reposted") + text = f"{reason_line}\n{text}" if text else reason_line + + # Labels / Content Warning + labels = g(actual_post, "labels", []) + cw_text = "" + is_sensitive = False + + for label in labels: + val = g(label, "val", "") + if val in ["!warn", "porn", "sexual", "nudity", "gore", "graphic-media", "corpse", "self-harm", "hate", "spam", "impersonation"]: + is_sensitive = True + if not cw_text: cw_text = _("Sensitive Content") + elif val.startswith("warn:"): + is_sensitive = True + cw_text = val.split("warn:", 1)[-1].strip() + + if cw_text: + text = f"CW: {cw_text}\n\n{text}" + + # Embeds (Images, Quotes) + embed = g(actual_post, "embed", None) + if embed: + etype = g(embed, "$type") or g(embed, "py_type") + if etype and ("images" in etype): + images = g(embed, "images", []) + if images: + text += f"\n[{len(images)} {_('Images')}]" + + # Handle Record (Quote) or RecordWithMedia (Quote + Media) + quote_rec = None + if etype and ("recordWithMedia" in etype): + # Extract the nested record + rec_embed = g(embed, "record", {}) + if rec_embed: + quote_rec = g(rec_embed, "record", None) or rec_embed + # Also check for media in the wrapper + media = g(embed, "media", {}) + mtype = g(media, "$type") or g(media, "py_type") + if mtype and "images" in mtype: + images = g(media, "images", []) + if images: text += f"\n[{len(images)} {_('Images')}]" + + elif etype and ("record" in etype): + # Direct quote + quote_rec = g(embed, "record", {}) + if isinstance(quote_rec, dict): + quote_rec = quote_rec.get("record") or quote_rec + + if quote_rec: + # It is likely a ViewRecord + # Check type (ViewRecord, ViewNotFound, ViewBlocked, etc) + qtype = g(quote_rec, "$type") or g(quote_rec, "py_type") + + if qtype and "viewNotFound" in qtype: + text += f"\n[{_('Quoted post not found')}]" + elif qtype and "viewBlocked" in qtype: + text += f"\n[{_('Quoted post blocked')}]" + elif qtype and "generatorView" in qtype: + # Feed generator + gen = g(quote_rec, "displayName", "Feed") + text += f"\n[{_('Quoting Feed')}: {gen}]" + else: + # Assume ViewRecord + q_author = g(quote_rec, "author", {}) + q_handle = g(q_author, "handle", "unknown") + + q_val = g(quote_rec, "value", {}) + q_text = g(q_val, "text", "") + + if q_text: + text += f"\n[{_('Quoting')} @{q_handle}: {q_text}]" + else: + text += f"\n[{_('Quoting')} @{q_handle}]" + + elif etype and ("external" in etype): + ext = g(embed, "external", {}) + uri = g(ext, "uri", "") + title = g(ext, "title", "") + text += f"\n[{_('Link')}: {title}]" + + # Date + indexed_at = g(actual_post, "indexed_at", "") + ts_str = "" + if indexed_at: + try: + # Try arrow parsing + import arrow + ts = arrow.get(indexed_at) + if relative_times: + ts_str = ts.humanize(locale=languageHandler.curLang[:2]) + else: + ts_str = ts.format(_("dddd, MMMM D, YYYY H:m"), locale=languageHandler.curLang[:2]) + except Exception: + ts_str = str(indexed_at)[:16].replace("T", " ") + + # Source (not always available in Bsky view, often just client) + # We'll leave it empty or mock it if needed + source = "Bluesky" + + + return [user_str, text, ts_str, source] + +def compose_user(user, db, settings, relative_times, show_screen_names=False, safe=True): + """ + Compose a Bluesky user for list display. + Returns: [User summary string] + """ + # Extract data using getattr for models or .get for dicts + def g(obj, key, default=None): + if isinstance(obj, dict): + return obj.get(key, default) + return getattr(obj, key, default) + + handle = g(user, "handle", "unknown") + display_name = g(user, "displayName") or g(user, "display_name") or handle + followers = g(user, "followersCount", None) + following = g(user, "followsCount", None) + posts = g(user, "postsCount", None) + created_at = g(user, "createdAt", None) + + ts = "" + if created_at: + try: + import arrow + original_date = arrow.get(created_at) + if relative_times: + ts = original_date.humanize(locale=languageHandler.curLang[:2]) + else: + offset = db.get("utc_offset", 0) if isinstance(db, dict) else 0 + ts = original_date.shift(hours=offset).format(_("dddd, MMMM D, YYYY H:m"), locale=languageHandler.curLang[:2]) + except Exception: + ts = str(created_at) + + parts = [f"{display_name} (@{handle})."] + if followers is not None and following is not None and posts is not None: + parts.append(_("{followers} followers, {following} following, {posts} posts.").format( + followers=followers, following=following, posts=posts + )) + if ts: + parts.append(_("Joined {date}").format(date=ts)) + + return [" ".join(parts).strip()] + +def compose_convo(convo, db, settings, relative_times, show_screen_names=False, safe=True): + """ + Compose a Bluesky chat conversation for list display. + Returns: [Participants, Last Message, Date] + """ + def g(obj, key, default=None): + if isinstance(obj, dict): + return obj.get(key, default) + return getattr(obj, key, default) + + members = g(convo, "members", []) + self_did = db.get("user_id") if isinstance(db, dict) else None + others = [] + for m in members: + did = g(m, "did", None) + if self_did and did == self_did: + continue + label = g(m, "displayName") or g(m, "display_name") or g(m, "handle", "unknown") + others.append(label) + if not others: + others = [g(m, "displayName") or g(m, "display_name") or g(m, "handle", "unknown") for m in members] + participants = ", ".join(others) + + last_msg_obj = g(convo, "lastMessage") or g(convo, "last_message") + last_text = "" + last_sender = "" + if last_msg_obj: + last_text = g(last_msg_obj, "text", "") + sender = g(last_msg_obj, "sender", None) + if sender: + last_sender = g(sender, "displayName") or g(sender, "display_name") or g(sender, "handle", "") + + # Date (using lastMessage.sentAt) + date_str = "" + sent_at = None + if last_msg_obj: + sent_at = g(last_msg_obj, "sentAt") or g(last_msg_obj, "sent_at") + + if sent_at: + try: + import arrow + ts = arrow.get(sent_at) + if relative_times: + date_str = ts.humanize(locale=languageHandler.curLang[:2]) + else: + date_str = ts.format(_("dddd, MMMM D, YYYY H:m"), locale=languageHandler.curLang[:2]) + except: + date_str = str(sent_at)[:16] + + if last_sender and last_text: + last_text = _("Last message from {user}: {text}").format(user=last_sender, text=last_text) + elif last_text: + last_text = _("Last message: {text}").format(text=last_text) + + return [participants, last_text, date_str] + +def compose_chat_message(msg, db, settings, relative_times, show_screen_names=False, safe=True): + """ + Compose an individual chat message for display in a thread. + Returns: [Sender, Text, Date] + """ + def g(obj, key, default=None): + if isinstance(obj, dict): + return obj.get(key, default) + return getattr(obj, key, default) + + sender = g(msg, "sender", {}) + handle = g(sender, "displayName") or g(sender, "display_name") or g(sender, "handle", "unknown") + + text = g(msg, "text", "") + + sent_at = g(msg, "sentAt") or g(msg, "sent_at") + date_str = "" + if sent_at: + try: + import arrow + ts = arrow.get(sent_at) + if relative_times: + date_str = ts.humanize(locale=languageHandler.curLang[:2]) + else: + date_str = ts.format(_("dddd, MMMM D, YYYY H:m"), locale=languageHandler.curLang[:2]) + except: + date_str = str(sent_at)[:16] + + return [handle, text, date_str] diff --git a/src/sessions/blueski/session.py b/src/sessions/blueski/session.py index 5475d413..41aa978a 100644 --- a/src/sessions/blueski/session.py +++ b/src/sessions/blueski/session.py @@ -1,6 +1,7 @@ from __future__ import annotations import logging +import re from typing import Any import wx @@ -66,6 +67,7 @@ class Session(base.baseSession): handle = ( self.db.get("user_name") or (self.settings and self.settings.get("blueski", {}).get("handle")) + or (self.settings and self.settings.get("atprotosocial", {}).get("handle")) or (getattr(getattr(self, "api", None), "me", None) and self.api.me.handle) ) if handle: @@ -129,9 +131,10 @@ class Session(base.baseSession): self.settings.write() self.logged = True log.debug("Logged in to Bluesky as %s", api.me.handle) - except Exception: + except Exception as e: log.exception("Bluesky login failed") self.logged = False + raise e def authorise(self): self._ensure_settings_namespace() @@ -175,7 +178,7 @@ class Session(base.baseSession): _("We could not log in to Bluesky. Please verify your handle and app password."), _("Login error"), wx.ICON_ERROR ) - return + return False return True def get_message_url(self, message_id, context=None): @@ -207,6 +210,22 @@ class Session(base.baseSession): "$type": "app.bsky.feed.post", "text": text, } + + # Facets (Links and Mentions) + try: + facets = self._get_facets(text, api) + if facets: + record["facets"] = facets + except: + pass + + # Labels (CW) + if cw_text: + record["labels"] = { + "$type": "com.atproto.label.defs#selfLabels", + "values": [{"val": "warn"}] + } + # createdAt try: record["createdAt"] = api.get_current_time_iso() @@ -360,16 +379,164 @@ class Session(base.baseSession): uri = None if not uri: raise RuntimeError("Post did not return a URI") - # Store last post id if useful - self.db.setdefault("sent", []) - self.db["sent"].append(dict(id=uri, text=message)) - self.save_persistent_data() + return uri except Exception: log.exception("Error sending Bluesky post") output.speak(_("An error occurred while posting to Bluesky."), True) return None + def _get_facets(self, text, api): + facets = [] + # Mentions + for m in re.finditer(r'@([a-zA-Z0-9.-]+)', text): + handle = m.group(1) + try: + # We should probably cache this identity lookup + res = api.com.atproto.identity.resolve_handle({'handle': handle}) + did = res.did + facets.append({ + 'index': { + 'byteStart': len(text[:m.start()].encode('utf-8')), + 'byteEnd': len(text[:m.end()].encode('utf-8')) + }, + 'features': [{'$type': 'app.bsky.richtext.facet#mention', 'did': did}] + }) + except: + continue + # Links + for m in re.finditer(r'(https?://[^\s]+)', text): + url = m.group(1) + facets.append({ + 'index': { + 'byteStart': len(text[:m.start()].encode('utf-8')), + 'byteEnd': len(text[:m.end()].encode('utf-8')) + }, + 'features': [{'$type': 'app.bsky.richtext.facet#link', 'uri': url}] + }) + return facets + + def delete_post(self, uri: str) -> bool: + """Delete a post by its AT URI.""" + api = self._ensure_client() + try: + # at://did:plc:xxx/app.bsky.feed.post/rkey + parts = uri.split("/") + rkey = parts[-1] + api.com.atproto.repo.delete_record({ + "repo": api.me.did, + "collection": "app.bsky.feed.post", + "rkey": rkey + }) + return True + except: + log.exception("Error deleting Bluesky post") + return False + + def block_user(self, did: str) -> bool: + """Block a user by their DID.""" + api = self._ensure_client() + try: + api.com.atproto.repo.create_record({ + "repo": api.me.did, + "collection": "app.bsky.graph.block", + "record": { + "$type": "app.bsky.graph.block", + "subject": did, + "createdAt": api.get_current_time_iso() + } + }) + return True + except: + log.exception("Error blocking Bluesky user") + return False + + def unblock_user(self, block_uri: str) -> bool: + """Unblock a user by the URI of the block record.""" + api = self._ensure_client() + try: + parts = block_uri.split("/") + rkey = parts[-1] + api.com.atproto.repo.delete_record({ + "repo": api.me.did, + "collection": "app.bsky.graph.block", + "rkey": rkey + }) + return True + except: + log.exception("Error unblocking Bluesky user") + return False + + def get_profile(self, actor: str) -> Any: + api = self._ensure_client() + try: + return api.app.bsky.actor.get_profile({"actor": actor}) + except Exception: + log.exception("Error fetching Bluesky profile for %s", actor) + return None + + def follow_user(self, did: str) -> bool: + api = self._ensure_client() + try: + api.com.atproto.repo.create_record({ + "repo": api.me.did, + "collection": "app.bsky.graph.follow", + "record": { + "$type": "app.bsky.graph.follow", + "subject": did, + "createdAt": api.get_current_time_iso() + } + }) + return True + except Exception: + log.exception("Error following Bluesky user") + return False + + def unfollow_user(self, follow_uri: str) -> bool: + api = self._ensure_client() + try: + parts = follow_uri.split("/") + rkey = parts[-1] + api.com.atproto.repo.delete_record({ + "repo": api.me.did, + "collection": "app.bsky.graph.follow", + "rkey": rkey + }) + return True + except Exception: + log.exception("Error unfollowing Bluesky user") + return False + + def mute_user(self, did: str) -> bool: + api = self._ensure_client() + try: + graph = api.app.bsky.graph + if hasattr(graph, "mute_actor"): + graph.mute_actor({"actor": did}) + elif hasattr(graph, "muteActor"): + graph.muteActor({"actor": did}) + else: + return False + return True + except Exception: + log.exception("Error muting Bluesky user") + return False + + def unmute_user(self, did: str) -> bool: + api = self._ensure_client() + try: + graph = api.app.bsky.graph + if hasattr(graph, "unmute_actor"): + graph.unmute_actor({"actor": did}) + elif hasattr(graph, "unmuteActor"): + graph.unmuteActor({"actor": did}) + else: + return False + return True + except Exception: + log.exception("Error unmuting Bluesky user") + return False + def repost(self, post_uri: str, post_cid: str | None = None) -> str | None: """Create a simple repost of a given post. Returns URI of the repost record or None.""" if not self.logged: @@ -415,3 +582,80 @@ class Session(base.baseSession): except Exception: log.exception("Error creating Bluesky repost record") return None + + def like(self, post_uri: str, post_cid: str | None = None) -> str | None: + """Create a like for a given post.""" + if not self.logged: + raise Exceptions.NotLoggedSessionError("You are not logged in yet.") + try: + api = self._ensure_client() + + # Resolve strong ref if needed + def _get_strong_ref(uri: str): + try: + posts_res = api.app.bsky.feed.get_posts({"uris": [uri]}) + posts = getattr(posts_res, "posts", None) or [] + except Exception: + try: posts_res = api.app.bsky.feed.get_posts(uris=[uri]) + except: posts_res = None + posts = getattr(posts_res, "posts", None) or [] + if posts: + p = posts[0] + return {"uri": getattr(p, "uri", uri), "cid": getattr(p, "cid", None)} + return None + + if not post_cid: + strong = _get_strong_ref(post_uri) + if not strong: return None + post_uri = strong["uri"] + post_cid = strong["cid"] + + out = api.com.atproto.repo.create_record({ + "repo": api.me.did, + "collection": "app.bsky.feed.like", + "record": { + "$type": "app.bsky.feed.like", + "subject": {"uri": post_uri, "cid": post_cid}, + "createdAt": getattr(api, "get_current_time_iso", lambda: None)() or None, + }, + }) + return getattr(out, "uri", None) + except Exception: + log.exception("Error creating Bluesky like") + return None + + def get_followers(self, actor: str | None = None, limit: int = 50, cursor: str | None = None) -> dict[str, Any]: + api = self._ensure_client() + actor = actor or api.me.did + res = api.app.bsky.graph.get_followers({"actor": actor, "limit": limit, "cursor": cursor}) + return {"items": res.followers, "cursor": res.cursor} + + def get_follows(self, actor: str | None = None, limit: int = 50, cursor: str | None = None) -> dict[str, Any]: + api = self._ensure_client() + actor = actor or api.me.did + res = api.app.bsky.graph.get_follows({"actor": actor, "limit": limit, "cursor": cursor}) + return {"items": res.follows, "cursor": res.cursor} + + def get_blocks(self, limit: int = 50, cursor: str | None = None) -> dict[str, Any]: + api = self._ensure_client() + res = api.app.bsky.graph.get_blocks({"limit": limit, "cursor": cursor}) + return {"items": res.blocks, "cursor": res.cursor} + + def list_convos(self, limit: int = 50, cursor: str | None = None) -> dict[str, Any]: + api = self._ensure_client() + res = api.chat.bsky.convo.list_convos({"limit": limit, "cursor": cursor}) + return {"items": res.convos, "cursor": res.cursor} + + def get_convo_messages(self, convo_id: str, limit: int = 50, cursor: str | None = None) -> dict[str, Any]: + api = self._ensure_client() + res = api.chat.bsky.convo.get_messages({"convoId": convo_id, "limit": limit, "cursor": cursor}) + return {"items": res.messages, "cursor": res.cursor} + + def send_chat_message(self, convo_id: str, text: str) -> Any: + api = self._ensure_client() + return api.chat.bsky.convo.send_message({ + "convoId": convo_id, + "message": { + "text": text + } + }) diff --git a/src/wxUI/buffers/blueski/panels.py b/src/wxUI/buffers/blueski/panels.py index cf6dcabb..97813ffc 100644 --- a/src/wxUI/buffers/blueski/panels.py +++ b/src/wxUI/buffers/blueski/panels.py @@ -1,393 +1,149 @@ # -*- coding: utf-8 -*- import wx -import languageHandler # Ensure _() is available -import logging -import wx -import config -from mysc.repeating_timer import RepeatingTimer -import arrow -import arrow -from datetime import datetime - +import languageHandler from multiplatform_widgets import widgets -log = logging.getLogger("wxUI.buffers.blueski.panels") - - -class BlueskiHomeTimelinePanel(object): - """Minimal Home timeline buffer for Bluesky. - - Exposes a .buffer wx.Panel with a List control and provides - start_stream()/get_more_items() to fetch items from atproto. - """ - - def __init__(self, parent, name: str, session): - super().__init__() - self.session = session - self.account = session.get_name() - self.name = name - self.type = "home_timeline" - self.timeline_algorithm = None - self.invisible = True - self.needs_init = True - self.buffer = _HomePanel(parent, name) - self.buffer.session = session - self.buffer.name = name - # Ensure controller can resolve current account from the GUI panel - self.buffer.account = self.account - self.items = [] # list of dicts: {uri, author, handle, display_name, text, indexed_at} - self.cursor = None - self._auto_timer = None - - def start_stream(self, mandatory=False, play_sound=True): - """Fetch newest items and render them.""" - try: - count = self.session.settings["general"]["max_posts_per_call"] or 40 - except Exception: - count = 40 - try: - api = self.session._ensure_client() - # The atproto SDK expects params, not raw kwargs - try: - from atproto import models as at_models # type: ignore - params = at_models.AppBskyFeedGetTimeline.Params( - limit=count, - algorithm=self.timeline_algorithm - ) - res = api.app.bsky.feed.get_timeline(params) - except Exception: - payload = {"limit": count} - if self.timeline_algorithm: - payload["algorithm"] = self.timeline_algorithm - res = api.app.bsky.feed.get_timeline(payload) - feed = getattr(res, "feed", []) - self.cursor = getattr(res, "cursor", None) - self.items = [] - for it in feed: - post = getattr(it, "post", None) - if not post: - continue - # No additional client-side filtering; server distinguishes timelines correctly - record = getattr(post, "record", None) - author = getattr(post, "author", None) - text = getattr(record, "text", "") if record else "" - handle = getattr(author, "handle", "") if author else "" - display_name = ( - getattr(author, "display_name", None) - or getattr(author, "displayName", None) - or "" - ) if author else "" - indexed_at = getattr(post, "indexed_at", None) - item = { - "uri": getattr(post, "uri", ""), - "author": display_name or handle, - "handle": handle, - "display_name": display_name, - "text": text, - "indexed_at": indexed_at, - } - self._append_item(item, to_top=self._reverse()) - # Full rerender to ensure column widths and selection - self._render_list(replace=True) - return len(self.items) - except Exception: - log.exception("Failed to load Bluesky home timeline") - self.buffer.list.clear() - self.buffer.list.insert_item(False, _("Error"), _("Could not load timeline."), "") - return 0 - - def get_more_items(self): - if not self.cursor: - return 0 - try: - api = self.session._ensure_client() - try: - from atproto import models as at_models # type: ignore - params = at_models.AppBskyFeedGetTimeline.Params( - limit=40, - cursor=self.cursor, - algorithm=self.timeline_algorithm - ) - res = api.app.bsky.feed.get_timeline(params) - except Exception: - payload = {"limit": 40, "cursor": self.cursor} - if self.timeline_algorithm: - payload["algorithm"] = self.timeline_algorithm - res = api.app.bsky.feed.get_timeline(payload) - feed = getattr(res, "feed", []) - self.cursor = getattr(res, "cursor", None) - new_items = [] - for it in feed: - post = getattr(it, "post", None) - if not post: - continue - # No additional client-side filtering - record = getattr(post, "record", None) - author = getattr(post, "author", None) - text = getattr(record, "text", "") if record else "" - handle = getattr(author, "handle", "") if author else "" - display_name = ( - getattr(author, "display_name", None) - or getattr(author, "displayName", None) - or "" - ) if author else "" - indexed_at = getattr(post, "indexed_at", None) - new_items.append({ - "uri": getattr(post, "uri", ""), - "author": display_name or handle, - "handle": handle, - "display_name": display_name, - "text": text, - "indexed_at": indexed_at, - }) - if not new_items: - return 0 - for it in new_items: - self._append_item(it, to_top=self._reverse()) - # Render only the newly added slice - self._render_list(replace=False, start=len(self.items) - len(new_items)) - return len(new_items) - except Exception: - log.exception("Failed to load more Bluesky timeline items") - return 0 - - # Alias to integrate with mainController expectations for Blueski - def load_more_posts(self, *args, **kwargs): - return self.get_more_items() - - def _reverse(self) -> bool: - try: - return bool(self.session.settings["general"].get("reverse_timelines", False)) - except Exception: - return False - - def _append_item(self, item: dict, to_top: bool = False): - if to_top: - self.items.insert(0, item) - else: - self.items.append(item) - - def _render_list(self, replace: bool, start: int = 0): - if replace: - self.buffer.list.clear() - for i in range(start, len(self.items)): - it = self.items[i] - dt = "" - if it.get("indexed_at"): - try: - # Mastodon-like date formatting: relative or full date - rel = False - try: - rel = bool(self.session.settings["general"].get("relative_times", False)) - except Exception: - rel = False - ts = arrow.get(str(it["indexed_at"])) - if rel: - dt = ts.humanize(locale=languageHandler.curLang[:2]) - else: - dt = ts.format(_("dddd, MMMM D, YYYY H:m:s"), locale=languageHandler.curLang[:2]) - except Exception: - try: - dt = str(it["indexed_at"])[:16].replace("T", " ") - except Exception: - dt = "" - text = it.get("text", "").replace("\n", " ") - if len(text) > 200: - text = text[:197] + "..." - # Display name and handle like Mastodon: "Display (@handle)" - author_col = it.get("author", "") - handle = it.get("handle", "") - if handle and it.get("display_name"): - author_col = f"{it.get('display_name')} (@{handle})" - elif handle and not author_col: - author_col = f"@{handle}" - self.buffer.list.insert_item(False, author_col, text, dt) - - # For compatibility with controller expectations - def save_positions(self): - try: - pos = self.buffer.list.get_selected() - self.session.db[self.name + "_pos"] = pos - except Exception: - pass - - # Support actions that need a selected item identifier (e.g., reply) - def get_selected_item_id(self): - try: - idx = self.buffer.list.get_selected() - if idx is None or idx < 0: - return None - return self.items[idx].get("uri") - except Exception: - return None - - def get_message(self): - try: - idx = self.buffer.list.get_selected() - if idx is None or idx < 0: - return "" - it = self.items[idx] - author = it.get("display_name") or it.get("author") or "" - handle = it.get("handle") - if handle: - author = f"{author} (@{handle})" if author else f"@{handle}" - text = it.get("text", "").replace("\n", " ") - dt = "" - if it.get("indexed_at"): - try: - dt = str(it["indexed_at"])[:16].replace("T", " ") - except Exception: - dt = "" - parts = [p for p in [author, text, dt] if p] - return ", ".join(parts) - except Exception: - return "" - - # Auto-refresh support (polling) to simulate near real-time updates - def _periodic_refresh(self): - try: - # Ensure UI updates happen on the main thread - wx.CallAfter(self.start_stream, False, False) - except Exception: - pass - - def enable_auto_refresh(self, seconds: int | None = None): - try: - if self._auto_timer: - return - if seconds is None: - # Use global update_period (minutes) → seconds; minimum 15s - minutes = config.app["app-settings"].get("update_period", 2) - seconds = max(15, int(minutes * 60)) - self._auto_timer = RepeatingTimer(seconds, self._periodic_refresh) - self._auto_timer.start() - except Exception: - log.exception("Failed to enable auto refresh for Bluesky panel %s", self.name) - - def disable_auto_refresh(self): - try: - if self._auto_timer: - self._auto_timer.stop() - self._auto_timer = None - except Exception: - pass - - -class _HomePanel(wx.Panel): - def __init__(self, parent, name): +class HomePanel(wx.Panel): + def __init__(self, parent, name, account="Unknown"): super().__init__(parent, name=name) self.name = name + self.account = account self.type = "home_timeline" - sizer = wx.BoxSizer(wx.VERTICAL) - self.list = widgets.list(self, _("Author"), _("Post"), _("Date"), style=wx.LC_REPORT | wx.LC_SINGLE_SEL) + + self.sizer = wx.BoxSizer(wx.VERTICAL) + + # List + self.list = widgets.list(self, _("Author"), _("Post"), _("Date"), style=wx.LC_REPORT | wx.LC_SINGLE_SEL | wx.LC_VRULES) self.list.set_windows_size(0, 120) - self.list.set_windows_size(1, 360) - self.list.set_windows_size(2, 150) + self.list.set_windows_size(1, 400) + self.list.set_windows_size(2, 120) self.list.set_size() - sizer.Add(self.list.list, 1, wx.EXPAND | wx.ALL, 0) - self.SetSizer(sizer) + # Buttons + self.post = wx.Button(self, -1, _("Post")) + self.repost = wx.Button(self, -1, _("Repost")) + self.reply = wx.Button(self, -1, _("Reply")) + self.like = wx.Button(self, wx.ID_ANY, _("Like")) + # self.bookmark = wx.Button(self, wx.ID_ANY, _("Bookmark")) # Not yet common in Bsky API usage here + self.dm = wx.Button(self, -1, _("Chat")) + + btnSizer = wx.BoxSizer(wx.HORIZONTAL) + btnSizer.Add(self.post, 0, wx.ALL, 5) + btnSizer.Add(self.repost, 0, wx.ALL, 5) + btnSizer.Add(self.reply, 0, wx.ALL, 5) + btnSizer.Add(self.like, 0, wx.ALL, 5) + # btnSizer.Add(self.bookmark, 0, wx.ALL, 5) + btnSizer.Add(self.dm, 0, wx.ALL, 5) + + self.sizer.Add(btnSizer, 0, wx.ALL, 5) + + self.sizer.Add(self.list.list, 1, wx.EXPAND | wx.ALL, 5) + self.SetSizer(self.sizer) -class BlueskiFollowingTimelinePanel(BlueskiHomeTimelinePanel): - """Following-only timeline (reverse-chronological).""" + # Some helper methods expected by controller might be needed? + # Controller accesses self.buffer.list directly. + # Some older code expected .set_position, .post, .message, .actions attributes or buttons on the panel? + # Mastodon panels usually have bottom buttons (Post, Reply, etc). + # I should add them if I want to "reuse Mastodon". + + # But for now, simple list is what the previous code had. + + def set_focus_function(self, func): + self.list.list.Bind(wx.EVT_SET_FOCUS, func) + + def set_position(self, reverse): + if reverse: + self.list.select_item(0) + else: + self.list.select_item(self.list.get_count() - 1) - def __init__(self, parent, name: str, session): - super().__init__(parent, name, session) - self.type = "following_timeline" - self.timeline_algorithm = "reverse-chronological" - # Make sure the underlying wx panel also reflects this type - try: - self.buffer.type = "following_timeline" - except Exception: - pass + def set_focus_in_list(self): + self.list.list.SetFocus() - def start_stream(self, mandatory=False, play_sound=True): - try: - count = self.session.settings["general"]["max_posts_per_call"] or 40 - except Exception: - count = 40 - try: - api = self.session._ensure_client() - # Following timeline via reverse-chronological algorithm on get_timeline - # Use plain dict to avoid typed-model mismatches across SDK versions - res = api.app.bsky.feed.get_timeline({"limit": count, "algorithm": self.timeline_algorithm}) - feed = getattr(res, "feed", []) - self.cursor = getattr(res, "cursor", None) - self.items = [] - for it in feed: - post = getattr(it, "post", None) - if not post: - continue - record = getattr(post, "record", None) - author = getattr(post, "author", None) - text = getattr(record, "text", "") if record else "" - handle = getattr(author, "handle", "") if author else "" - display_name = ( - getattr(author, "display_name", None) - or getattr(author, "displayName", None) - or "" - ) if author else "" - indexed_at = getattr(post, "indexed_at", None) - item = { - "uri": getattr(post, "uri", ""), - "author": display_name or handle, - "handle": handle, - "display_name": display_name, - "text": text, - "indexed_at": indexed_at, - } - self._append_item(item, to_top=self._reverse()) - self._render_list(replace=True) - return len(self.items) - except Exception: - log.exception("Failed to load Bluesky following timeline") - self.buffer.list.clear() - self.buffer.list.insert_item(False, _("Error"), _("Could not load timeline."), "") - return 0 +class NotificationPanel(HomePanel): + pass - def get_more_items(self): - if not self.cursor: - return 0 - try: - api = self.session._ensure_client() - # Pagination via reverse-chronological algorithm on get_timeline - res = api.app.bsky.feed.get_timeline({ - "limit": 40, - "cursor": self.cursor, - "algorithm": self.timeline_algorithm - }) - feed = getattr(res, "feed", []) - self.cursor = getattr(res, "cursor", None) - new_items = [] - for it in feed: - post = getattr(it, "post", None) - if not post: - continue - record = getattr(post, "record", None) - author = getattr(post, "author", None) - text = getattr(record, "text", "") if record else "" - handle = getattr(author, "handle", "") if author else "" - display_name = ( - getattr(author, "display_name", None) - or getattr(author, "displayName", None) - or "" - ) if author else "" - indexed_at = getattr(post, "indexed_at", None) - new_items.append({ - "uri": getattr(post, "uri", ""), - "author": display_name or handle, - "handle": handle, - "display_name": display_name, - "text": text, - "indexed_at": indexed_at, - }) - if not new_items: - return 0 - for it in new_items: - self._append_item(it, to_top=self._reverse()) - self._render_list(replace=False, start=len(self.items) - len(new_items)) - return len(new_items) - except Exception: - log.exception("Failed to load more items for following timeline") - return 0 +class UserPanel(wx.Panel): + def __init__(self, parent, name, account="Unknown"): + super().__init__(parent, name=name) + self.name = name + self.account = account + self.type = "user" + + self.sizer = wx.BoxSizer(wx.VERTICAL) + + # List: User + self.list = widgets.list(self, _("User"), style=wx.LC_REPORT | wx.LC_SINGLE_SEL | wx.LC_VRULES) + self.list.set_windows_size(0, 600) + self.list.set_size() + # Buttons + self.post = wx.Button(self, -1, _("Post")) + self.actions = wx.Button(self, -1, _("Actions")) + self.message = wx.Button(self, -1, _("Message")) + + btnSizer = wx.BoxSizer(wx.HORIZONTAL) + btnSizer.Add(self.post, 0, wx.ALL, 5) + btnSizer.Add(self.actions, 0, wx.ALL, 5) + btnSizer.Add(self.message, 0, wx.ALL, 5) + + self.sizer.Add(btnSizer, 0, wx.ALL, 5) + + self.sizer.Add(self.list.list, 1, wx.EXPAND | wx.ALL, 5) + self.SetSizer(self.sizer) + + def set_focus_function(self, func): + self.list.list.Bind(wx.EVT_SET_FOCUS, func) + + def set_position(self, reverse): + if reverse: + self.list.select_item(0) + else: + self.list.select_item(self.list.get_count() - 1) + + def set_focus_in_list(self): + self.list.list.SetFocus() + +class ChatPanel(wx.Panel): + def __init__(self, parent, name, account="Unknown"): + super().__init__(parent, name=name) + self.name = name + self.account = account + self.type = "chat" + + self.sizer = wx.BoxSizer(wx.VERTICAL) + + # List: Participants, Last Message, Date + self.list = widgets.list(self, _("Participants"), _("Last Message"), _("Date"), style=wx.LC_REPORT | wx.LC_SINGLE_SEL | wx.LC_VRULES) + self.list.set_windows_size(0, 200) + self.list.set_windows_size(1, 600) + self.list.set_windows_size(2, 200) + self.list.set_size() + + self.sizer.Add(self.list.list, 1, wx.EXPAND | wx.ALL, 5) + self.SetSizer(self.sizer) + + def set_focus_function(self, func): + self.list.list.Bind(wx.EVT_SET_FOCUS, func) + + def set_focus_in_list(self): + self.list.list.SetFocus() + +class ChatMessagePanel(HomePanel): + def __init__(self, parent, name, account="Unknown"): + super().__init__(parent, name, account) + self.type = "chat_messages" + # Adjust buttons for chat + self.repost.Hide() + self.like.Hide() + self.reply.SetLabel(_("Send Message")) + + # Refresh columns + self.list.list.ClearAll() + self.list.list.InsertColumn(0, _("Sender")) + self.list.list.InsertColumn(1, _("Message")) + self.list.list.InsertColumn(2, _("Date")) + self.list.set_windows_size(0, 100) + self.list.set_windows_size(1, 400) + self.list.set_windows_size(2, 100) + self.list.set_size() diff --git a/src/wxUI/buffers/mastodon/base.py b/src/wxUI/buffers/mastodon/base.py index c3aacc70..9352a57a 100644 --- a/src/wxUI/buffers/mastodon/base.py +++ b/src/wxUI/buffers/mastodon/base.py @@ -9,10 +9,10 @@ class basePanel(wx.Panel): def create_list(self): self.list = widgets.list(self, _(u"User"), _(u"Text"), _(u"Date"), _(u"Client"), style=wx.LC_REPORT|wx.LC_SINGLE_SEL|wx.LC_VRULES) - self.list.set_windows_size(0, 60) - self.list.set_windows_size(1, 320) - self.list.set_windows_size(2, 110) - self.list.set_windows_size(3, 84) + self.list.set_windows_size(0, 200) + self.list.set_windows_size(1, 600) + self.list.set_windows_size(2, 200) + self.list.set_windows_size(3, 200) self.list.set_size() def __init__(self, parent, name): @@ -35,7 +35,7 @@ class basePanel(wx.Panel): btnSizer.Add(self.bookmark, 0, wx.ALL, 5) btnSizer.Add(self.dm, 0, wx.ALL, 5) self.sizer.Add(btnSizer, 0, wx.ALL, 5) - self.sizer.Add(self.list.list, 0, wx.ALL|wx.EXPAND, 5) + self.sizer.Add(self.list.list, 1, wx.ALL|wx.EXPAND, 5) self.SetSizer(self.sizer) self.SetClientSize(self.sizer.CalcMin()) diff --git a/src/wxUI/buffers/mastodon/conversationList.py b/src/wxUI/buffers/mastodon/conversationList.py index 75318bfc..2405bf29 100644 --- a/src/wxUI/buffers/mastodon/conversationList.py +++ b/src/wxUI/buffers/mastodon/conversationList.py @@ -9,10 +9,10 @@ class conversationListPanel(wx.Panel): def create_list(self): self.list = widgets.list(self, _(u"User"), _(u"Text"), _(u"Date"), _(u"Client"), style=wx.LC_REPORT|wx.LC_SINGLE_SEL|wx.LC_VRULES) - self.list.set_windows_size(0, 60) - self.list.set_windows_size(1, 320) - self.list.set_windows_size(2, 110) - self.list.set_windows_size(3, 84) + self.list.set_windows_size(0, 200) + self.list.set_windows_size(1, 600) + self.list.set_windows_size(2, 200) + self.list.set_windows_size(3, 200) self.list.set_size() def __init__(self, parent, name): @@ -27,7 +27,7 @@ class conversationListPanel(wx.Panel): btnSizer.Add(self.post, 0, wx.ALL, 5) btnSizer.Add(self.reply, 0, wx.ALL, 5) self.sizer.Add(btnSizer, 0, wx.ALL, 5) - self.sizer.Add(self.list.list, 0, wx.ALL|wx.EXPAND, 5) + self.sizer.Add(self.list.list, 1, wx.ALL|wx.EXPAND, 5) self.SetSizer(self.sizer) self.SetClientSize(self.sizer.CalcMin()) diff --git a/src/wxUI/buffers/mastodon/notifications.py b/src/wxUI/buffers/mastodon/notifications.py index 1e8e2ddb..f19e211a 100644 --- a/src/wxUI/buffers/mastodon/notifications.py +++ b/src/wxUI/buffers/mastodon/notifications.py @@ -9,8 +9,8 @@ class notificationsPanel(wx.Panel): def create_list(self): self.list = widgets.list(self, _("Text"), _("Date"), style=wx.LC_REPORT|wx.LC_SINGLE_SEL|wx.LC_VRULES) - self.list.set_windows_size(0, 320) - self.list.set_windows_size(2, 110) + self.list.set_windows_size(0, 600) + self.list.set_windows_size(1, 200) self.list.set_size() def __init__(self, parent, name): @@ -25,7 +25,7 @@ class notificationsPanel(wx.Panel): btnSizer.Add(self.post, 0, wx.ALL, 5) btnSizer.Add(self.dismiss, 0, wx.ALL, 5) self.sizer.Add(btnSizer, 0, wx.ALL, 5) - self.sizer.Add(self.list.list, 0, wx.ALL|wx.EXPAND, 5) + self.sizer.Add(self.list.list, 1, wx.ALL|wx.EXPAND, 5) self.SetSizer(self.sizer) self.SetClientSize(self.sizer.CalcMin()) diff --git a/src/wxUI/buffers/mastodon/user.py b/src/wxUI/buffers/mastodon/user.py index cb3f5038..86958c65 100644 --- a/src/wxUI/buffers/mastodon/user.py +++ b/src/wxUI/buffers/mastodon/user.py @@ -6,7 +6,7 @@ class userPanel(wx.Panel): def create_list(self): self.list = widgets.list(self, _("User"), style=wx.LC_REPORT|wx.LC_SINGLE_SEL|wx.LC_VRULES) - self.list.set_windows_size(0, 320) + self.list.set_windows_size(0, 600) self.list.set_size() def __init__(self, parent, name): @@ -23,7 +23,7 @@ class userPanel(wx.Panel): btnSizer.Add(self.actions, 0, wx.ALL, 5) btnSizer.Add(self.message, 0, wx.ALL, 5) self.sizer.Add(btnSizer, 0, wx.ALL, 5) - self.sizer.Add(self.list.list, 0, wx.ALL|wx.EXPAND, 5) + self.sizer.Add(self.list.list, 1, wx.ALL|wx.EXPAND, 5) self.SetSizer(self.sizer) self.SetClientSize(self.sizer.CalcMin()) diff --git a/src/wxUI/dialogs/blueski/postDialogs.py b/src/wxUI/dialogs/blueski/postDialogs.py index f8ca1ee3..1e960e68 100644 --- a/src/wxUI/dialogs/blueski/postDialogs.py +++ b/src/wxUI/dialogs/blueski/postDialogs.py @@ -9,7 +9,10 @@ class Post(wx.Dialog): main_sizer = wx.BoxSizer(wx.VERTICAL) # Text + post_label = wx.StaticText(self, wx.ID_ANY, caption) + main_sizer.Add(post_label, 0, wx.ALL, 6) self.text = wx.TextCtrl(self, wx.ID_ANY, text, style=wx.TE_MULTILINE) + self.Bind(wx.EVT_CHAR_HOOK, self.handle_keys, self.text) self.text.SetMinSize((400, 160)) main_sizer.Add(self.text, 1, wx.EXPAND | wx.ALL, 6) @@ -58,6 +61,7 @@ class Post(wx.Dialog): self.SetSizer(main_sizer) main_sizer.Fit(self) + self.SetEscapeId(cancel.GetId()) self.Layout() # Bindings @@ -66,6 +70,13 @@ class Post(wx.Dialog): self.attach_list.Bind(wx.EVT_LIST_ITEM_SELECTED, lambda evt: self.btn_remove.Enable(True)) self.attach_list.Bind(wx.EVT_LIST_ITEM_DESELECTED, lambda evt: self.btn_remove.Enable(False)) + def handle_keys(self, event): + shift = event.ShiftDown() + if event.GetKeyCode() == wx.WXK_RETURN and not shift and hasattr(self, "send"): + self.EndModal(wx.ID_OK) + else: + event.Skip() + def on_add(self, evt): if self.attach_list.GetItemCount() >= 4: wx.MessageBox(_("You can attach up to 4 images."), _("Attachment limit"), wx.ICON_INFORMATION) diff --git a/src/wxUI/dialogs/blueski/showUserProfile.py b/src/wxUI/dialogs/blueski/showUserProfile.py index 3200cf8c..9cc6201e 100644 --- a/src/wxUI/dialogs/blueski/showUserProfile.py +++ b/src/wxUI/dialogs/blueski/showUserProfile.py @@ -1,14 +1,11 @@ # -*- coding: utf-8 -*- import wx -import asyncio import logging -from pubsub import pub +import languageHandler +import builtins +from threading import Thread -from approve.translation import translate as _ -from approve.notifications import NotificationError -# Assuming controller.blueski.userList.get_user_profile_details and session.util._format_profile_data exist -# For direct call to util: -# from sessions.blueski import utils as BlueskiUtils +_ = getattr(builtins, "_", lambda s: s) logger = logging.getLogger(__name__) @@ -25,7 +22,7 @@ class ShowUserProfileDialog(wx.Dialog): self.SetMinSize((400, 300)) self.CentreOnParent() - wx.CallAfter(asyncio.create_task, self.load_profile_data()) + Thread(target=self.load_profile_data, daemon=True).start() def _init_ui(self): panel = wx.Panel(self) @@ -36,17 +33,23 @@ class ShowUserProfileDialog(wx.Dialog): self.info_grid_sizer.AddGrowableCol(1, 1) fields = [ - (_("Display Name:"), "displayName"), (_("Handle:"), "handle"), (_("DID:"), "did"), - (_("Followers:"), "followersCount"), (_("Following:"), "followsCount"), (_("Posts:"), "postsCount"), - (_("Bio:"), "description") + (_("&Name:"), "displayName"), (_("&Handle:"), "handle"), (_("&DID:"), "did"), + (_("&Followers:"), "followersCount"), (_("&Following:"), "followsCount"), (_("&Posts:"), "postsCount"), + (_("&Bio:"), "description") ] self.profile_field_ctrls = {} for label_text, data_key in fields: lbl = wx.StaticText(panel, label=label_text) - val_ctrl = wx.TextCtrl(panel, style=wx.TE_READONLY | wx.TE_MULTILINE if data_key == "description" else wx.TE_READONLY | wx.BORDER_NONE) + style = wx.TE_READONLY | wx.TE_PROCESS_TAB + if data_key == "description": + style |= wx.TE_MULTILINE + else: + style |= wx.BORDER_NONE + val_ctrl = wx.TextCtrl(panel, style=style) if data_key != "description": # Make it look like a label val_ctrl.SetBackgroundColour(panel.GetBackgroundColour()) + val_ctrl.AcceptsFocusFromKeyboard = lambda: True self.info_grid_sizer.Add(lbl, 0, wx.ALIGN_RIGHT | wx.ALIGN_TOP | wx.ALL, 2) self.info_grid_sizer.Add(val_ctrl, 1, wx.EXPAND | wx.ALL, 2) @@ -89,51 +92,62 @@ class ShowUserProfileDialog(wx.Dialog): main_sizer.Add(actions_sizer, 0, wx.ALIGN_CENTER | wx.TOP | wx.BOTTOM, 10) # Close Button - close_btn = wx.Button(panel, wx.ID_CANCEL, _("Close")) + close_btn = wx.Button(panel, wx.ID_CANCEL, _("&Close")) close_btn.SetDefault() # Allow Esc to close main_sizer.Add(close_btn, 0, wx.ALIGN_RIGHT | wx.ALL, 10) + self.SetEscapeId(close_btn.GetId()) panel.SetSizer(main_sizer) self.Fit() # Fit dialog to content - async def load_profile_data(self): - self.SetStatusText(_("Loading profile...")) + def load_profile_data(self): + wx.CallAfter(self.SetStatusText, _("Loading profile...")) for ctrl in self.profile_field_ctrls.values(): - ctrl.SetValue(_("Loading...")) + wx.CallAfter(ctrl.SetValue, _("Loading...")) # Initially hide all action buttons until state is known - self.follow_btn.Hide() - self.unfollow_btn.Hide() - self.mute_btn.Hide() - self.unmute_btn.Hide() - self.block_btn.Hide() - self.unblock_btn.Hide() + wx.CallAfter(self.follow_btn.Hide) + wx.CallAfter(self.unfollow_btn.Hide) + wx.CallAfter(self.mute_btn.Hide) + wx.CallAfter(self.unmute_btn.Hide) + wx.CallAfter(self.block_btn.Hide) + wx.CallAfter(self.unblock_btn.Hide) try: - raw_profile = await self.session.util.get_user_profile(self.user_identifier) - if raw_profile: - self.profile_data = self.session.util._format_profile_data(raw_profile) # This should return a dict - self.target_user_did = self.profile_data.get("did") # Store the canonical DID - self.user_identifier = self.target_user_did # Update identifier to resolved DID for consistency - - self.update_ui_fields() - self.update_action_buttons_state() - self.SetTitle(_("Profile: {handle}").format(handle=self.profile_data.get("handle", ""))) - self.SetStatusText(_("Profile loaded.")) - else: - for ctrl in self.profile_field_ctrls.values(): - ctrl.SetValue(_("Not found.")) - self.SetStatusText(_("Profile not found for '{ident}'.").format(ident=self.user_identifier)) - wx.MessageBox(_("User profile for '{ident}' not found.").format(ident=self.user_identifier), _("Error"), wx.OK | wx.ICON_ERROR, self) + api = self.session._ensure_client() + try: + raw_profile = api.app.bsky.actor.get_profile({"actor": self.user_identifier}) + except Exception: + raw_profile = None + wx.CallAfter(self._apply_profile_data, raw_profile) except Exception as e: logger.error(f"Error loading profile for {self.user_identifier}: {e}", exc_info=True) + wx.CallAfter(self._apply_profile_error, e) + + def _apply_profile_data(self, raw_profile): + if raw_profile: + self.profile_data = self._format_profile_data(raw_profile) + self.target_user_did = self.profile_data.get("did") + self.user_identifier = self.target_user_did or self.user_identifier + + self.update_ui_fields() + self.update_action_buttons_state() + self.SetTitle(_("Profile: {handle}").format(handle=self.profile_data.get("handle", ""))) + self.SetStatusText(_("Profile loaded.")) + else: for ctrl in self.profile_field_ctrls.values(): - ctrl.SetValue(_("Error loading.")) - self.SetStatusText(_("Error loading profile.")) - wx.MessageBox(_("Error loading profile: {error}").format(error=str(e)), _("Error"), wx.OK | wx.ICON_ERROR, self) - finally: - self.Layout() # Refresh layout after hiding/showing buttons + ctrl.SetValue(_("Not found.")) + self.SetStatusText(_("Profile not found for '{ident}'.").format(ident=self.user_identifier)) + wx.MessageBox(_("User profile for '{ident}' not found.").format(ident=self.user_identifier), _("Error"), wx.OK | wx.ICON_ERROR, self) + self.Layout() + + def _apply_profile_error(self, err): + for ctrl in self.profile_field_ctrls.values(): + ctrl.SetValue(_("Error loading.")) + self.SetStatusText(_("Error loading profile.")) + wx.MessageBox(_("Error loading profile: {error}").format(error=str(err)), _("Error"), wx.OK | wx.ICON_ERROR, self) + self.Layout() def update_ui_fields(self): if not self.profile_data: @@ -159,7 +173,7 @@ class ShowUserProfileDialog(wx.Dialog): self.Layout() def update_action_buttons_state(self): - if not self.profile_data or not self.target_user_did or self.target_user_did == self.session.util.get_own_did(): + if not self.profile_data or not self.target_user_did or self.target_user_did == self._get_own_did(): self.follow_btn.Hide() self.unfollow_btn.Hide() self.mute_btn.Hide() @@ -218,80 +232,70 @@ class ShowUserProfileDialog(wx.Dialog): return dlg.Destroy() - async def do_action(): - wx.BeginBusyCursor() - self.SetStatusText(_("Performing action: {action}...").format(action=command)) - action_button = event.GetEventObject() - if action_button: action_button.Disable() # Disable the clicked button + wx.BeginBusyCursor() + self.SetStatusText(_("Performing action: {action}...").format(action=command)) + action_button = event.GetEventObject() + if action_button: + action_button.Disable() - try: - # Ensure controller_handler is available on the session - if not hasattr(self.session, 'controller_handler') or not self.session.controller_handler: - app = wx.GetApp() - if hasattr(app, 'mainController'): - self.session.controller_handler = app.mainController.get_handler(self.session.KIND) - if not self.session.controller_handler: # Still not found - raise RuntimeError("Controller handler not found for session.") + try: + if command == "block_user" and hasattr(self.session, "block_user"): + ok = self.session.block_user(self.target_user_did) + if not ok: + raise RuntimeError(_("Failed to block user.")) + elif command == "unblock_user" and hasattr(self.session, "unblock_user"): + viewer_state = self.profile_data.get("viewer", {}) if self.profile_data else {} + block_uri = viewer_state.get("blocking") + if not block_uri: + raise RuntimeError(_("Block information not available.")) + ok = self.session.unblock_user(block_uri) + if not ok: + raise RuntimeError(_("Failed to unblock user.")) + else: + raise RuntimeError(_("This action is not supported yet.")) - result = await self.session.controller_handler.handle_user_command( - command=command, - user_id=self.session.uid, - target_user_id=self.target_user_did, - payload={} - ) - wx.EndBusyCursor() - # Use CallAfter for UI updates from async task - wx.CallAfter(wx.MessageBox, result.get("message", _("Action completed.")), - _("Success") if result.get("status") == "success" else _("Error"), - wx.OK | (wx.ICON_INFORMATION if result.get("status") == "success" else wx.ICON_ERROR), - self) + wx.EndBusyCursor() + wx.MessageBox(_("Action completed."), _("Success"), wx.OK | wx.ICON_INFORMATION, self) + wx.CallAfter(asyncio.create_task, self.load_profile_data()) + except Exception as e: + wx.EndBusyCursor() + if action_button: + action_button.Enable() + self.SetStatusText(_("Action failed.")) + wx.MessageBox(str(e), _("Error"), wx.OK | wx.ICON_ERROR, self) - if result.get("status") == "success": - # Re-fetch profile data to update UI (especially button states) - wx.CallAfter(asyncio.create_task, self.load_profile_data()) - else: # Re-enable button if action failed - if action_button: wx.CallAfter(action_button.Enable, True) - self.SetStatusText(_("Action failed.")) + def _get_own_did(self): + if isinstance(self.session.db, dict): + did = self.session.db.get("user_id") + if did: + return did + try: + api = self.session._ensure_client() + if getattr(api, "me", None): + return api.me.did + except Exception: + pass + return None + def _format_profile_data(self, profile_model): + def g(obj, key, default=None): + if isinstance(obj, dict): + return obj.get(key, default) + return getattr(obj, key, default) - except NotificationError as e: - wx.EndBusyCursor() - if action_button: wx.CallAfter(action_button.Enable, True) - self.SetStatusText(_("Action failed.")) - wx.CallAfter(wx.MessageBox, str(e), _("Action Error"), wx.OK | wx.ICON_ERROR, self) - except Exception as e: - wx.EndBusyCursor() - if action_button: wx.CallAfter(action_button.Enable, True) - self.SetStatusText(_("Action failed.")) - logger.error(f"Error performing user action '{command}' on {self.target_user_did}: {e}", exc_info=True) - wx.CallAfter(wx.MessageBox, _("An unexpected error occurred: {error}").format(error=str(e)), _("Error"), wx.OK | wx.ICON_ERROR, self) - - asyncio.create_task(do_action()) # No wx.CallAfter needed for starting the task itself + return { + "did": g(profile_model, "did"), + "handle": g(profile_model, "handle"), + "displayName": g(profile_model, "displayName") or g(profile_model, "display_name") or g(profile_model, "handle"), + "description": g(profile_model, "description"), + "avatar": g(profile_model, "avatar"), + "banner": g(profile_model, "banner"), + "followersCount": g(profile_model, "followersCount"), + "followsCount": g(profile_model, "followsCount"), + "postsCount": g(profile_model, "postsCount"), + "viewer": g(profile_model, "viewer") or {}, + } def SetStatusText(self, text): # Simple status text for dialog title self.SetTitle(f"{_('User Profile')} - {text}") -```python -# Example of how this dialog might be called from blueski.Handler.user_details: -# (This is conceptual, actual integration in handler.py will use the dialog) -# -# async def user_details(self, buffer_panel_or_user_ident): -# session = self._get_session(self.current_user_id_from_context) # Get current session -# user_identifier_to_show = None -# if isinstance(buffer_panel_or_user_ident, str): # It's a DID or handle -# user_identifier_to_show = buffer_panel_or_user_ident -# elif hasattr(buffer_panel_or_user_ident, 'get_selected_item_author_details'): # It's a panel -# author_details = buffer_panel_or_user_ident.get_selected_item_author_details() -# if author_details: -# user_identifier_to_show = author_details.get("did") or author_details.get("handle") -# -# if not user_identifier_to_show: -# # Optionally prompt for user_identifier if not found -# output.speak(_("No user selected or identified to view details."), True) -# return -# -# dialog = ShowUserProfileDialog(self.main_controller.view, session, user_identifier_to_show) -# dialog.ShowModal() -# dialog.Destroy() - -``` diff --git a/src/wxUI/dialogs/blueski/userActions.py b/src/wxUI/dialogs/blueski/userActions.py new file mode 100644 index 00000000..e3e3655c --- /dev/null +++ b/src/wxUI/dialogs/blueski/userActions.py @@ -0,0 +1,85 @@ +# -*- coding: utf-8 -*- +import wx + + +class UserActionsDialog(wx.Dialog): + def __init__(self, users=None, default="follow", *args, **kwargs): + super(UserActionsDialog, self).__init__(parent=None, *args, **kwargs) + users = users or [] + panel = wx.Panel(self) + self.SetTitle(_(u"Action")) + + userSizer = wx.BoxSizer() + userLabel = wx.StaticText(panel, -1, _(u"&User")) + default_user = users[0] if users else "" + self.cb = wx.ComboBox(panel, -1, choices=users, value=default_user) + self.cb.SetFocus() + userSizer.Add(userLabel, 0, wx.ALL, 5) + userSizer.Add(self.cb, 0, wx.ALL, 5) + + actionSizer = wx.BoxSizer(wx.VERTICAL) + label2 = wx.StaticText(panel, -1, _(u"Action")) + self.follow = wx.RadioButton(panel, -1, _(u"&Follow"), name=_(u"Action"), style=wx.RB_GROUP) + self.unfollow = wx.RadioButton(panel, -1, _(u"U&nfollow")) + self.mute = wx.RadioButton(panel, -1, _(u"&Mute")) + self.unmute = wx.RadioButton(panel, -1, _(u"Unmu&te")) + self.block = wx.RadioButton(panel, -1, _(u"&Block")) + self.unblock = wx.RadioButton(panel, -1, _(u"Unbl&ock")) + self.setup_default(default) + + hSizer = wx.BoxSizer(wx.HORIZONTAL) + hSizer.Add(label2, 0, wx.ALL, 5) + actionSizer.Add(self.follow, 0, wx.ALL, 5) + actionSizer.Add(self.unfollow, 0, wx.ALL, 5) + actionSizer.Add(self.mute, 0, wx.ALL, 5) + actionSizer.Add(self.unmute, 0, wx.ALL, 5) + actionSizer.Add(self.block, 0, wx.ALL, 5) + actionSizer.Add(self.unblock, 0, wx.ALL, 5) + hSizer.Add(actionSizer, 0, wx.ALL, 5) + + sizer = wx.BoxSizer(wx.VERTICAL) + ok = wx.Button(panel, wx.ID_OK, _(u"&OK")) + ok.SetDefault() + cancel = wx.Button(panel, wx.ID_CANCEL, _(u"&Close")) + btnsizer = wx.BoxSizer() + btnsizer.Add(ok) + btnsizer.Add(cancel) + sizer.Add(userSizer) + sizer.Add(hSizer, 0, wx.ALL, 5) + sizer.Add(btnsizer) + panel.SetSizer(sizer) + + def get_action(self): + if self.follow.GetValue() == True: + return "follow" + elif self.unfollow.GetValue() == True: + return "unfollow" + elif self.mute.GetValue() == True: + return "mute" + elif self.unmute.GetValue() == True: + return "unmute" + elif self.block.GetValue() == True: + return "block" + elif self.unblock.GetValue() == True: + return "unblock" + + def setup_default(self, default): + if default == "follow": + self.follow.SetValue(True) + elif default == "unfollow": + self.unfollow.SetValue(True) + elif default == "mute": + self.mute.SetValue(True) + elif default == "unmute": + self.unmute.SetValue(True) + elif default == "block": + self.block.SetValue(True) + elif default == "unblock": + self.unblock.SetValue(True) + + def get_response(self): + return self.ShowModal() + + def get_user(self): + return self.cb.GetValue() + diff --git a/src/wxUI/view.py b/src/wxUI/view.py index 25daa1a2..693bfe9b 100644 --- a/src/wxUI/view.py +++ b/src/wxUI/view.py @@ -134,9 +134,9 @@ class mainFrame(wx.Frame): self.buffers[name] = buffer.GetId() def prepare(self): - self.sizer.Add(self.nb, 0, wx.ALL, 5) + self.sizer.Add(self.nb, 1, wx.ALL | wx.EXPAND, 5) self.panel.SetSizer(self.sizer) -# self.Maximize() + self.Maximize() self.sizer.Layout() self.SetClientSize(self.sizer.CalcMin()) # print self.GetSize() diff --git a/srcantiguo/app-configuration.defaults b/srcantiguo/app-configuration.defaults new file mode 100644 index 00000000..8b00a71b --- /dev/null +++ b/srcantiguo/app-configuration.defaults @@ -0,0 +1,33 @@ +[sessions] +current_session = string(default="") +sessions = list(default=list()) +ignored_sessions = list(default=list()) + +[app-settings] +language = string(default="system") +update_period = integer(default=2) +hide_gui = boolean(default=False) +voice_enabled = boolean(default=False) +ask_at_exit = boolean(default=True) +read_long_posts_in_gui = boolean(default=True) +use_invisible_keyboard_shorcuts = boolean(default=True) +play_ready_sound = boolean(default=True) +speak_ready_msg = boolean(default=True) +log_level = string(default="error") +load_keymap = string(default="default.keymap") +donation_dialog_displayed = boolean(default=False) +check_for_updates = boolean(default=True) +no_streaming = boolean(default=False) + +[proxy] +type = integer(default=0) +server = string(default="") +port = integer(default=8080) +user = string(default="") +password = string(default="") + +[translator] +engine=string(default="LibreTranslate") +lt_api_url=string(default="https://translate.nvda.es") +lt_api_key=string(default="") +deepl_api_key = string(default="") \ No newline at end of file diff --git a/srcantiguo/application.py b/srcantiguo/application.py new file mode 100644 index 00000000..90aedf07 --- /dev/null +++ b/srcantiguo/application.py @@ -0,0 +1,13 @@ +# -*- coding: utf-8 -*- +name = 'TWBlue' +short_name='twblue' +update_url = 'https://raw.githubusercontent.com/mcv-software/TWBlue/next-gen/updates/updates.json' +authors = ["Manuel Cortéz", "José Manuel Delicado"] +authorEmail = "manuel@manuelcortez.net" +copyright = "Copyright (C) 2013-2024, MCV Software." +description = name+" is an app designed to use Twitter simply and efficiently while using minimal system resources. This app provides access to most Twitter features." +translators = ["Manuel Cortéz (English)", "Mohammed Al Shara, Hatoun Felemban (Arabic)", "Francisco Torres (Catalan)", "Manuel cortéz (Spanish)", "Sukil Etxenike Arizaleta (Basque)", "Jani Kinnunen (finnish)", "Corentin Bacqué-Cazenave (Français)", "Juan Buño (Galician)", "Steffen Schultz (German)", "Zvonimir Stanečić (Croatian)", "Robert Osztolykan (Hungarian)", "Christian Leo Mameli (Italian)", "Riku (Japanese)", "Paweł Masarczyk (Polish)", "Odenilton Júnior Santos (Portuguese)", "Florian Ionașcu, Nicușor Untilă (Romanian)", "Natalia Hedlund, Valeria Kuznetsova (Russian)", "Aleksandar Đurić (Serbian)", "Burak Yüksek (Turkish)"] +url = "https://twblue.mcvsoftware.com" +report_bugs_url = "https://github.com/MCV-Software/TWBlue/issues" +supported_languages = [] +version = "11" diff --git a/srcantiguo/audio_services/__init__.py b/srcantiguo/audio_services/__init__.py new file mode 100644 index 00000000..d33809cb --- /dev/null +++ b/srcantiguo/audio_services/__init__.py @@ -0,0 +1,23 @@ +from __future__ import unicode_literals +from functools import wraps + +def matches_url(url): + def url_setter(func): + @wraps(func) + def internal_url_setter(*args, **kwargs): + return func(*args, **kwargs) + internal_url_setter.url = url + return internal_url_setter + return url_setter + +def find_url_transformer(url): + from audio_services import services + funcs = [] + for i in dir(services): + possible = getattr(services, i) + if callable(possible) and hasattr(possible, 'url'): + funcs.append(possible) + for f in funcs: + if url.lower().startswith(f.url.lower()): + return f + return services.convert_generic_audio diff --git a/srcantiguo/audio_services/services.py b/srcantiguo/audio_services/services.py new file mode 100644 index 00000000..b19ab68d --- /dev/null +++ b/srcantiguo/audio_services/services.py @@ -0,0 +1,41 @@ +from __future__ import unicode_literals +from audio_services import matches_url +import requests +from . import youtube_utils + +@matches_url('https://audioboom.com') +def convert_audioboom(url): + if "audioboom.com" not in url.lower(): + raise TypeError('%r is not a valid URL' % url) + audio_id = url.split('.com/')[-1] + return 'https://audioboom.com/%s.mp3' % audio_id + +@matches_url ('https://soundcloud.com/') +def convert_soundcloud (url): + client_id = "df8113ca95c157b6c9731f54b105b473" + with requests.get('http://api.soundcloud.com/resolve.json', client_id=client_id, url=url) as permalink: + if permalink.status_code==404: + raise TypeError('%r is not a valid URL' % permalink.url) + else: + resolved_url = permalink.url + with requests.get(resolved_url) as track_url: + track_data = track_url.json() + + if track_data ['streamable']: + return track_data ['stream_url'] + "?client_id=%s" %client_id + else: + raise TypeError('%r is not streamable' % url) + +@matches_url ('https://www.youtube.com/watch') +def convert_youtube_long (url): + return youtube_utils.get_video_url(url) + +@matches_url ('http://anyaudio.net/listen') +def convert_anyaudio(url): + values = url.split("audio=") + if len(values) != 2: + raise TypeError('%r is not streamable' % url) + return "http://anyaudio.net/audiodownload?audio=%s" % (values[1],) + +def convert_generic_audio(url): + return url diff --git a/srcantiguo/audio_services/youtube_utils.py b/srcantiguo/audio_services/youtube_utils.py new file mode 100644 index 00000000..7341cfbf --- /dev/null +++ b/srcantiguo/audio_services/youtube_utils.py @@ -0,0 +1,13 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals +import youtube_dl + +def get_video_url(url): + ydl = youtube_dl.YoutubeDL({'quiet': True, 'format': 'bestaudio/best', 'outtmpl': u'%(id)s%(ext)s'}) + with ydl: + result = ydl.extract_info(url, download=False) + if 'entries' in result: + video = result['entries'][0] + else: + video = result + return video["formats"][0]["url"] diff --git a/srcantiguo/commandline.py b/srcantiguo/commandline.py new file mode 100644 index 00000000..8fb20002 --- /dev/null +++ b/srcantiguo/commandline.py @@ -0,0 +1,12 @@ +# -*- coding: utf-8 -*- +import argparse +import paths +import logging +import application +log = logging.getLogger("commandlineLauncher") + +parser = argparse.ArgumentParser(description=application.name+" command line launcher") +parser.add_argument("-d", "--data-directory", action="store", dest="directory", help="Specifies the directory where " + application.name + " saves userdata.") +args = parser.parse_args() +log.debug("Starting " + application.name + " with the following arguments: directory = %s" % (args.directory)) +if args.directory != None: paths.directory = args.directory diff --git a/srcantiguo/config.py b/srcantiguo/config.py new file mode 100644 index 00000000..9ad73f95 --- /dev/null +++ b/srcantiguo/config.py @@ -0,0 +1,32 @@ +# -*- coding: cp1252 -*- +import os +import sys +import config_utils +import paths +import logging +import platform + +log = logging.getLogger("config") + +MAINFILE = "twblue.conf" +MAINSPEC = "app-configuration.defaults" +proxyTypes = ["system", "http", "socks4", "socks4a", "socks5", "socks5h"] +app = None +keymap=None +changed_keymap = False + +def setup (): + global app + log.debug("Loading global app settings...") + app = config_utils.load_config(os.path.join(paths.config_path(), MAINFILE), os.path.join(paths.app_path(), MAINSPEC)) + log.debug("Loading keymap...") + global keymap + if float(platform.version()[:2]) >= 10 and app["app-settings"]["load_keymap"] == "default.keymap": + if sys.getwindowsversion().build > 22000: + app["app-settings"]["load_keymap"] = "Windows11.keymap" + else: + app["app-settings"]["load_keymap"] = "Windows 10.keymap" + app.write() + global changed_keymap + changed_keymap = True + keymap = config_utils.load_config(os.path.join(paths.config_path(), "keymap.keymap"), os.path.join(paths.app_path(), "keymaps/"+app['app-settings']['load_keymap']), copy=False) diff --git a/srcantiguo/config_utils.py b/srcantiguo/config_utils.py new file mode 100644 index 00000000..4861827c --- /dev/null +++ b/srcantiguo/config_utils.py @@ -0,0 +1,79 @@ +# -*- coding: utf-8 -*- +from configobj import ConfigObj, ParseError +from validate import Validator, ValidateError +import os +import string +from logging import getLogger +from wxUI import commonMessageDialogs +log = getLogger("config_utils") + +class ConfigLoadError(Exception): pass + +def load_config(config_path, configspec_path=None, copy=True, *args, **kwargs): + spec = ConfigObj(configspec_path, encoding='UTF8', list_values=False, _inspec=True) + try: + config = ConfigObj(infile=config_path, configspec=spec, create_empty=True, encoding='UTF8', *args, **kwargs) + except ParseError: + raise ConfigLoadError("Unable to load %r" % config_path) + validator = Validator() + validated = config.validate(validator, preserve_errors=False, copy=copy) + if validated == True: + config.write() + return config + else: + log.exception("Error in config file: {0}".format(validated,)) + commonMessageDialogs.invalid_configuration() + +def is_blank(arg): + "Check if a line is blank." + for c in arg: + if c not in string.whitespace: + return False + return True + +def get_keys(path): + "Gets the keys of a configobj config file." + res=[] + fin=open(path) + for line in fin: + if not is_blank(line): + res.append(line[0:line.find('=')].strip()) + fin.close() + return res + +def hist(keys): + "Generates a histogram of an iterable." + res={} + for k in keys: + res[k]=res.setdefault(k,0)+1 + return res + +def find_problems(hist): + "Takes a histogram and returns a list of items occurring more than once." + res=[] + for k,v in hist.items(): + if v>1: + res.append(k) + return res + +def clean_config(path): + "Cleans a config file. If duplicate values are found, delete all of them and just use the default." + orig=[] + cleaned=[] + fin=open(path) + for line in fin: + orig.append(line) + fin.close() + for p in find_problems(hist(get_keys(path))): + for o in orig: + o.strip() + if p not in o: + cleaned.append(o) + if len(cleaned) != 0: + cam=open(path,'w') + for c in cleaned: + cam.write(c) + cam.close() + return True + else: + return False diff --git a/srcantiguo/controller/__init__.py b/srcantiguo/controller/__init__.py new file mode 100644 index 00000000..40a96afc --- /dev/null +++ b/srcantiguo/controller/__init__.py @@ -0,0 +1 @@ +# -*- coding: utf-8 -*- diff --git a/srcantiguo/controller/buffers/__init__.py b/srcantiguo/controller/buffers/__init__.py new file mode 100644 index 00000000..7ef9d7bb --- /dev/null +++ b/srcantiguo/controller/buffers/__init__.py @@ -0,0 +1,3 @@ +# -*- coding: utf-8 -*- +from . import base as base +from . import mastodon as mastodon \ No newline at end of file diff --git a/srcantiguo/controller/buffers/base/__init__.py b/srcantiguo/controller/buffers/base/__init__.py new file mode 100644 index 00000000..293bbdd8 --- /dev/null +++ b/srcantiguo/controller/buffers/base/__init__.py @@ -0,0 +1,4 @@ +# -*- coding: utf-8 -*- +from .account import AccountBuffer +from .base import Buffer +from .empty import EmptyBuffer \ No newline at end of file diff --git a/srcantiguo/controller/buffers/base/account.py b/srcantiguo/controller/buffers/base/account.py new file mode 100644 index 00000000..46ecbb6d --- /dev/null +++ b/srcantiguo/controller/buffers/base/account.py @@ -0,0 +1,56 @@ +# -*- coding: utf-8 -*- +""" Common logic to all buffers in TWBlue.""" +import logging +import config +import widgetUtils +from pubsub import pub +from wxUI import buffers +from . import base + +log = logging.getLogger("controller.buffers.base.account") + +class AccountBuffer(base.Buffer): + def __init__(self, parent, name, account, account_id): + super(AccountBuffer, self).__init__(parent, None, name) + log.debug("Initializing buffer %s, account %s" % (name, account,)) + self.buffer = buffers.accountPanel(parent, name) + self.type = self.buffer.type + self.compose_function = None + self.session = None + self.needs_init = False + self.account = account + self.buffer.account = account + self.name = name + self.account_id = account_id + + def setup_account(self): + widgetUtils.connect_event(self.buffer, widgetUtils.CHECKBOX, self.autostart, menuitem=self.buffer.autostart_account) + if self.account_id in config.app["sessions"]["ignored_sessions"]: + self.buffer.change_autostart(False) + else: + self.buffer.change_autostart(True) + if not hasattr(self, "logged"): + self.buffer.change_login(login=False) + widgetUtils.connect_event(self.buffer.login, widgetUtils.BUTTON_PRESSED, self.logout) + else: + self.buffer.change_login(login=True) + widgetUtils.connect_event(self.buffer.login, widgetUtils.BUTTON_PRESSED, self.login) + + def login(self, *args, **kwargs): + del self.logged + self.setup_account() + pub.sendMessage("login", session_id=self.account_id) + + def logout(self, *args, **kwargs): + self.logged = False + self.setup_account() + pub.sendMessage("logout", session_id=self.account_id) + + def autostart(self, *args, **kwargs): + if self.account_id in config.app["sessions"]["ignored_sessions"]: + self.buffer.change_autostart(True) + config.app["sessions"]["ignored_sessions"].remove(self.account_id) + else: + self.buffer.change_autostart(False) + config.app["sessions"]["ignored_sessions"].append(self.account_id) + config.app.write() \ No newline at end of file diff --git a/srcantiguo/controller/buffers/base/base.py b/srcantiguo/controller/buffers/base/base.py new file mode 100644 index 00000000..62469e39 --- /dev/null +++ b/srcantiguo/controller/buffers/base/base.py @@ -0,0 +1,144 @@ +# -*- coding: utf-8 -*- +""" Common logic to all buffers in TWBlue.""" +import logging +import wx +import output +import sound +import widgetUtils + +log = logging.getLogger("controller.buffers.base.base") + +class Buffer(object): + """ A basic buffer object. This should be the base class for all other derived buffers.""" + + def __init__(self, parent=None, function=None, session=None, *args, **kwargs): + """Inits the main controller for this buffer: + @ parent wx.Treebook object: Container where we will put this buffer. + @ function str or None: function to be called periodically and update items on this buffer. + @ session sessionmanager.session object or None: Session handler for settings, database and data access. + """ + super(Buffer, self).__init__() + self.function = function + # Compose_function will be used to render an object on this buffer. Normally, signature is as follows: + # compose_function(item, db, relative_times, show_screen_names=False, session=None) + # Read more about compose functions in sessions/twitter/compose.py. + self.compose_function = None + self.args = args + self.kwargs = kwargs + # This will be used as a reference to the wx.Panel object wich stores the buffer GUI. + self.buffer = None + # This should countains the account associated to this buffer. + self.account = "" + # This controls whether the start_stream function should be called when starting the program. + self.needs_init = True + # if this is set to False, the buffer will be ignored on the invisible interface. + self.invisible = False + # Control variable, used to track time of execution for calls to start_stream. + self.execution_time = 0 + + def clear_list(self): + pass + + def get_event(self, ev): + """ Catch key presses in the WX interface and generate the corresponding event names.""" + if ev.GetKeyCode() == wx.WXK_RETURN and ev.ControlDown(): event = "audio" + elif ev.GetKeyCode() == wx.WXK_RETURN: event = "url" + elif ev.GetKeyCode() == wx.WXK_F5: event = "volume_down" + elif ev.GetKeyCode() == wx.WXK_F6: event = "volume_up" + elif ev.GetKeyCode() == wx.WXK_DELETE and ev.ShiftDown(): event = "clear_list" + elif ev.GetKeyCode() == wx.WXK_DELETE: event = "destroy_status" + # Raise a Special event when pressed Shift+F10 because Wx==4.1.x does not seems to trigger this by itself. + # See https://github.com/manuelcortez/TWBlue/issues/353 + elif ev.GetKeyCode() == wx.WXK_F10 and ev.ShiftDown(): event = "show_menu" + else: + event = None + ev.Skip() + if event != None: + try: + ### ToDo: Remove after WX fixes issue #353 in the widgets. + if event == "show_menu": + return self.show_menu(widgetUtils.MENU, pos=self.buffer.list.list.GetPosition()) + getattr(self, event)() + except AttributeError: + pass + + def volume_down(self): + """ Decreases volume by 5%""" + if self.session.settings["sound"]["volume"] > 0.0: + if self.session.settings["sound"]["volume"] <= 0.05: + self.session.settings["sound"]["volume"] = 0.0 + else: + self.session.settings["sound"]["volume"] -=0.05 + sound.URLPlayer.player.audio_set_volume(int(self.session.settings["sound"]["volume"]*100.0)) + self.session.sound.play("volume_changed.ogg") + self.session.settings.write() + + def volume_up(self): + """ Increases volume by 5%.""" + if self.session.settings["sound"]["volume"] < 1.0: + if self.session.settings["sound"]["volume"] >= 0.95: + self.session.settings["sound"]["volume"] = 1.0 + else: + self.session.settings["sound"]["volume"] +=0.05 + sound.URLPlayer.player.audio_set_volume(int(self.session.settings["sound"]["volume"]*100)) + self.session.sound.play("volume_changed.ogg") + self.session.settings.write() + + def start_stream(self, mandatory=False, play_sound=True): + pass + + def get_more_items(self): + output.speak(_(u"This action is not supported for this buffer"), True) + + def put_items_on_list(self, items): + pass + + def remove_buffer(self): + return False + + def remove_item(self, item): + f = self.buffer.list.get_selected() + self.buffer.list.remove_item(item) + self.buffer.list.select_item(f) + + def bind_events(self): + pass + + def get_object(self): + return self.buffer + + def get_message(self): + pass + + def set_list_position(self, reversed=False): + if reversed == False: + self.buffer.list.select_item(-1) + else: + self.buffer.list.select_item(0) + + def reply(self): + pass + + def send_message(self): + pass + + def share_item(self): + pass + + def can_share(self): + pass + + def destroy_status(self): + pass + + def post_status(self, *args, **kwargs): + pass + + def save_positions(self): + try: + self.session.db[self.name+"_pos"]=self.buffer.list.get_selected() + except AttributeError: + pass + + def view_item(self): + pass \ No newline at end of file diff --git a/srcantiguo/controller/buffers/base/empty.py b/srcantiguo/controller/buffers/base/empty.py new file mode 100644 index 00000000..66373d7c --- /dev/null +++ b/srcantiguo/controller/buffers/base/empty.py @@ -0,0 +1,19 @@ +# -*- coding: utf-8 -*- +import logging +from wxUI import buffers +from . import base + +log = logging.getLogger("controller.buffers.base.empty") + +class EmptyBuffer(base.Buffer): + def __init__(self, parent, name, account): + super(EmptyBuffer, self).__init__(parent=parent) + log.debug("Initializing buffer %s, account %s" % (name, account,)) + self.buffer = buffers.emptyPanel(parent, name) + self.type = self.buffer.type + self.compose_function = None + self.account = account + self.buffer.account = account + self.name = name + self.session = None + self.needs_init = True diff --git a/srcantiguo/controller/buffers/mastodon/__init__.py b/srcantiguo/controller/buffers/mastodon/__init__.py new file mode 100644 index 00000000..0df3110d --- /dev/null +++ b/srcantiguo/controller/buffers/mastodon/__init__.py @@ -0,0 +1,8 @@ +# -*- coding: utf-8 -*- +from .base import BaseBuffer +from .mentions import MentionsBuffer +from .conversations import ConversationBuffer, ConversationListBuffer +from .users import UserBuffer +from .notifications import NotificationsBuffer +from .search import SearchBuffer +from .community import CommunityBuffer diff --git a/srcantiguo/controller/buffers/mastodon/base.py b/srcantiguo/controller/buffers/mastodon/base.py new file mode 100644 index 00000000..1595f932 --- /dev/null +++ b/srcantiguo/controller/buffers/mastodon/base.py @@ -0,0 +1,742 @@ +# -*- coding: utf-8 -*- +import time +import wx +import widgetUtils +import arrow +import webbrowser +import output +import config +import sound +import languageHandler +import logging +from mastodon import MastodonNotFoundError +from audio_services import youtube_utils +from controller.buffers.base import base +from controller.mastodon import messages +from sessions.mastodon import compose, utils, templates +from mysc.thread_utils import call_threaded +from pubsub import pub +from extra import ocr +from wxUI import buffers, commonMessageDialogs +from wxUI.dialogs.mastodon import menus +from wxUI.dialogs.mastodon import dialogs as mastodon_dialogs +from wxUI.dialogs.mastodon.postDialogs import attachedPoll +from wxUI.dialogs import urlList + +log = logging.getLogger("controller.buffers.mastodon.base") + +class BaseBuffer(base.Buffer): + def __init__(self, parent, function, name, sessionObject, account, sound=None, compose_func="compose_post", *args, **kwargs): + super(BaseBuffer, self).__init__(parent, function, *args, **kwargs) + log.debug("Initializing buffer %s, account %s" % (name, account,)) + self.create_buffer(parent, name) + self.invisible = True + self.name = name + self.type = self.buffer.type + self.session = sessionObject + self.compose_function = getattr(compose, compose_func) + log.debug("Compose_function: %s" % (self.compose_function,)) + self.account = account + self.buffer.account = account + self.bind_events() + self.sound = sound + pub.subscribe(self.on_mute_cleanup, "mastodon.mute_cleanup") + if "-timeline" in self.name or "-followers" in self.name or "-following" in self.name or "searchterm" in self.name: + self.finished_timeline = False + + def on_mute_cleanup(self, conversation_id, session_name): + if self.name != "home_timeline": + return + if session_name != self.session.get_name(): + return + items_to_remove = [] + for index, item in enumerate(self.session.db[self.name]): + c_id = None + if hasattr(item, "conversation_id"): + c_id = item.conversation_id + elif isinstance(item, dict): + c_id = item.get("conversation_id") + + if c_id == conversation_id: + items_to_remove.append(index) + + items_to_remove.sort(reverse=True) + for index in items_to_remove: + self.session.db[self.name].pop(index) + self.buffer.list.remove_item(index) + + def create_buffer(self, parent, name): + self.buffer = buffers.mastodon.basePanel(parent, name) + + def get_buffer_name(self): + """ Get buffer name from a set of different techniques.""" + # firstly let's take the easier buffers. + basic_buffers = dict(home_timeline=_("Home"), local_timeline=_("Local"), federated_timeline=_("Federated"), mentions=_("Mentions"), bookmarks=_("Bookmarks"), direct_messages=_("Direct messages"), sent=_("Sent"), favorites=_("Favorites"), followers=_("Followers"), following=_("Following"), blocked=_("Blocked users"), muted=_("Muted users"), notifications=_("Notifications")) + if self.name in list(basic_buffers.keys()): + return basic_buffers[self.name] + # Check user timelines + elif hasattr(self, "username"): + if "-timeline" in self.name: + return _(u"{username}'s timeline").format(username=self.username,) + elif "-followers" in self.name: + return _(u"{username}'s followers").format(username=self.username,) + elif "-following" in self.name: + return _(u"{username}'s following").format(username=self.username,) + log.error("Error getting name for buffer %s" % (self.name,)) + return _(u"Unknown buffer") + + def post_status(self, *args, **kwargs): + title = _("Post") + caption = _("Write your post here") + post = messages.post(session=self.session, title=title, caption=caption) + response = post.message.ShowModal() + if response == wx.ID_OK: + post_data = post.get_data() + call_threaded(self.session.send_post, posts=post_data, visibility=post.get_visibility(), language=post.get_language(), **kwargs) + if hasattr(post.message, "destroy"): + post.message.destroy() + + def get_formatted_message(self): + safe = True + if self.session.settings["general"]["read_preferences_from_instance"]: + safe = self.session.expand_spoilers == False + return self.compose_function(self.get_item(), self.session.db, self.session.settings, self.session.settings["general"]["relative_times"], self.session.settings["general"]["show_screen_names"], safe=safe)[1] + + def get_message(self): + post = self.get_item() + if post == None: + return + template = self.session.settings["templates"]["post"] + # If template is set to hide sensitive media by default, let's change it according to user preferences. + if self.session.settings["general"]["read_preferences_from_instance"] == True: + if self.session.expand_spoilers == True and "$safe_text" in template: + template = template.replace("$safe_text", "$text") + elif self.session.expand_spoilers == False and "$text" in template: + template = template.replace("$text", "$safe_text") + t = templates.render_post(post, template, self.session.settings, relative_times=self.session.settings["general"]["relative_times"], offset_hours=self.session.db["utc_offset"]) + return t + + def start_stream(self, mandatory=False, play_sound=True, avoid_autoreading=False): + current_time = time.time() + if self.execution_time == 0 or current_time-self.execution_time >= 180 or mandatory==True: + self.execution_time = current_time + log.debug("Starting stream for buffer %s, account %s and type %s" % (self.name, self.account, self.type)) + log.debug("args: %s, kwargs: %s" % (self.args, self.kwargs)) + count = self.session.settings["general"]["max_posts_per_call"] + min_id = None + # toDo: Implement reverse timelines properly here. + if (self.name != "favorites" and self.name != "bookmarks") and self.name in self.session.db and len(self.session.db[self.name]) > 0: + if self.session.settings["general"]["reverse_timelines"]: + min_id = self.session.db[self.name][0].id + else: + min_id = self.session.db[self.name][-1].id + # loads pinned posts from user accounts. + # Load those posts only when there are no items previously loaded. + if "-timeline" in self.name and "account_statuses" in self.function and len(self.session.db.get(self.name, [])) == 0: + pinned_posts = self.session.api.account_statuses(pinned=True, limit=count, *self.args, **self.kwargs) + pinned_posts.reverse() + else: + pinned_posts = None + try: + results = getattr(self.session.api, self.function)(min_id=min_id, limit=count, *self.args, **self.kwargs) + results.reverse() + except Exception as e: + log.exception("Error %s" % (str(e))) + return + if self.session.settings["general"]["reverse_timelines"]: + if pinned_posts != None and len(pinned_posts) > 0: + amount_of_pinned_posts = self.session.order_buffer(self.name, pinned_posts) + number_of_items = self.session.order_buffer(self.name, results) + if self.session.settings["general"]["reverse_timelines"] == False: + if pinned_posts != None and len(pinned_posts) > 0: + amount_of_pinned_posts = self.session.order_buffer(self.name, pinned_posts) + if pinned_posts != None and len(pinned_posts) > 0: + number_of_items = amount_of_pinned_posts+number_of_items + log.debug("Number of items retrieved: %d" % (number_of_items,)) + if hasattr(self, "finished_timeline") and self.finished_timeline == False: + if "-timeline" in self.name: + self.username = self.session.db[self.name][0]["account"].username + pub.sendMessage("core.change_buffer_title", name=self.session.get_name(), buffer=self.name, title=_("Timeline for {}").format(self.username)) + self.finished_timeline = True + self.put_items_on_list(number_of_items) + if number_of_items > 0 and self.name != "sent_posts" and self.name != "sent_direct_messages" and self.sound != None and self.session.settings["sound"]["session_mute"] == False and self.name not in self.session.settings["other_buffers"]["muted_buffers"] and play_sound == True: + self.session.sound.play(self.sound) + # Autoread settings + if avoid_autoreading == False and mandatory == True and number_of_items > 0 and self.name in self.session.settings["other_buffers"]["autoread_buffers"]: + self.auto_read(number_of_items) + return number_of_items + + def auto_read(self, number_of_items): + if number_of_items == 1 and self.name in self.session.settings["other_buffers"]["autoread_buffers"] and self.name not in self.session.settings["other_buffers"]["muted_buffers"] and self.session.settings["sound"]["session_mute"] == False: + if self.session.settings["general"]["reverse_timelines"] == False: + post = self.session.db[self.name][-1] + else: + post = self.session.db[self.name][0] + output.speak(_("New post in {0}").format(self.get_buffer_name())) + safe = True + if self.session.settings["general"]["read_preferences_from_instance"]: + safe = self.session.expand_spoilers == False + output.speak(" ".join(self.compose_function(post, self.session.db, self.session.settings, self.session.settings["general"]["relative_times"], self.session.settings["general"]["show_screen_names"], safe=safe))) + elif number_of_items > 1 and self.name in self.session.settings["other_buffers"]["autoread_buffers"] and self.name not in self.session.settings["other_buffers"]["muted_buffers"] and self.session.settings["sound"]["session_mute"] == False: + output.speak(_("{0} new posts in {1}.").format(number_of_items, self.get_buffer_name())) + + def get_more_items(self): + elements = [] + if self.session.settings["general"]["reverse_timelines"] == False: + max_id = self.session.db[self.name][0].id + else: + max_id = self.session.db[self.name][-1].id + try: + items = getattr(self.session.api, self.function)(max_id=max_id, limit=self.session.settings["general"]["max_posts_per_call"], *self.args, **self.kwargs) + except Exception as e: + log.exception("Error %s" % (str(e))) + return + items_db = self.session.db[self.name] + for i in items: + if utils.find_item(i, self.session.db[self.name]) == None: + filter_status = utils.evaluate_filters(post=i, current_context=utils.get_current_context(self.name)) + if filter_status == "hide": + continue + elements.append(i) + if self.session.settings["general"]["reverse_timelines"] == False: + items_db.insert(0, i) + else: + items_db.append(i) + self.session.db[self.name] = items_db + selection = self.buffer.list.get_selected() + log.debug("Retrieved %d items from cursored search in function %s." % (len(elements), self.function)) + safe = True + if self.session.settings["general"]["read_preferences_from_instance"]: + safe = self.session.expand_spoilers == False + if self.session.settings["general"]["reverse_timelines"] == False: + for i in elements: + post = self.compose_function(i, self.session.db, self.session.settings, self.session.settings["general"]["relative_times"], self.session.settings["general"]["show_screen_names"], safe=safe) + self.buffer.list.insert_item(True, *post) + else: + for i in elements: + post = self.compose_function(i, self.session.db, self.session.settings, self.session.settings["general"]["relative_times"], self.session.settings["general"]["show_screen_names"], safe=safe) + self.buffer.list.insert_item(False, *post) + self.buffer.list.select_item(selection) + output.speak(_(u"%s items retrieved") % (str(len(elements))), True) + + def remove_buffer(self, force=False): + if "-timeline" in self.name: + if force == False: + dlg = commonMessageDialogs.remove_buffer() + else: + dlg = widgetUtils.YES + if dlg == widgetUtils.YES: + if self.kwargs.get("id") in self.session.settings["other_buffers"]["timelines"]: + self.session.settings["other_buffers"]["timelines"].remove(self.kwargs.get("id")) + self.session.settings.write() + if self.name in self.session.db: + self.session.db.pop(self.name) + return True + elif dlg == widgetUtils.NO: + return False + else: + output.speak(_(u"This buffer is not a timeline; it can't be deleted."), True) + return False + + def put_items_on_list(self, number_of_items): + list_to_use = self.session.db[self.name] + if number_of_items == 0 and self.session.settings["general"]["persist_size"] == 0: return + log.debug("The list contains %d items " % (self.buffer.list.get_count(),)) + log.debug("Putting %d items on the list" % (number_of_items,)) + safe = True + if self.session.settings["general"]["read_preferences_from_instance"]: + safe = self.session.expand_spoilers == False + if self.buffer.list.get_count() == 0: + for i in list_to_use: + post = self.compose_function(i, self.session.db, self.session.settings, self.session.settings["general"]["relative_times"], self.session.settings["general"]["show_screen_names"], safe=safe) + self.buffer.list.insert_item(False, *post) + self.buffer.set_position(self.session.settings["general"]["reverse_timelines"]) + elif self.buffer.list.get_count() > 0 and number_of_items > 0: + if self.session.settings["general"]["reverse_timelines"] == False: + items = list_to_use[len(list_to_use)-number_of_items:] + for i in items: + post = self.compose_function(i, self.session.db, self.session.settings, self.session.settings["general"]["relative_times"], self.session.settings["general"]["show_screen_names"], safe=safe) + self.buffer.list.insert_item(False, *post) + else: + items = list_to_use[0:number_of_items] + items.reverse() + for i in items: + post = self.compose_function(i, self.session.db, self.session.settings, self.session.settings["general"]["relative_times"], self.session.settings["general"]["show_screen_names"], safe=safe) + self.buffer.list.insert_item(True, *post) + log.debug("Now the list contains %d items " % (self.buffer.list.get_count(),)) + + def add_new_item(self, item): + safe = True + if self.session.settings["general"]["read_preferences_from_instance"]: + safe = self.session.expand_spoilers == False + post = self.compose_function(item, self.session.db, self.session.settings, self.session.settings["general"]["relative_times"], self.session.settings["general"]["show_screen_names"], safe=safe) + if self.session.settings["general"]["reverse_timelines"] == False: + self.buffer.list.insert_item(False, *post) + else: + self.buffer.list.insert_item(True, *post) + if self.name in self.session.settings["other_buffers"]["autoread_buffers"] and self.name not in self.session.settings["other_buffers"]["muted_buffers"] and self.session.settings["sound"]["session_mute"] == False: + output.speak(" ".join(post[:2]), speech=self.session.settings["reporting"]["speech_reporting"], braille=self.session.settings["reporting"]["braille_reporting"]) + + def update_item(self, item, position): + safe = True + if self.session.settings["general"]["read_preferences_from_instance"]: + safe = self.session.expand_spoilers == False + post = self.compose_function(item, self.session.db, self.session.settings, self.session.settings["general"]["relative_times"], self.session.settings["general"]["show_screen_names"], safe=safe) + self.buffer.list.list.SetItem(position, 1, post[1]) + + def bind_events(self): + log.debug("Binding events...") + self.buffer.set_focus_function(self.onFocus) + widgetUtils.connect_event(self.buffer.list.list, widgetUtils.KEYPRESS, self.get_event) + widgetUtils.connect_event(self.buffer, widgetUtils.BUTTON_PRESSED, self.post_status, self.buffer.post) + widgetUtils.connect_event(self.buffer, widgetUtils.BUTTON_PRESSED, self.share_item, self.buffer.boost) + widgetUtils.connect_event(self.buffer, widgetUtils.BUTTON_PRESSED, self.send_message, self.buffer.dm) + widgetUtils.connect_event(self.buffer, widgetUtils.BUTTON_PRESSED, self.reply, self.buffer.reply) + widgetUtils.connect_event(self.buffer, widgetUtils.BUTTON_PRESSED, self.toggle_favorite, self.buffer.fav) + widgetUtils.connect_event(self.buffer, widgetUtils.BUTTON_PRESSED, self.toggle_bookmark, self.buffer.bookmark) + widgetUtils.connect_event(self.buffer.list.list, wx.EVT_LIST_ITEM_RIGHT_CLICK, self.show_menu) + widgetUtils.connect_event(self.buffer.list.list, wx.EVT_LIST_KEY_DOWN, self.show_menu_by_key) + + def show_menu(self, ev, pos=0, *args, **kwargs): + if self.buffer.list.get_count() == 0: + return + menu = menus.base() + widgetUtils.connect_event(menu, widgetUtils.MENU, self.reply, menuitem=menu.reply) + # Enable/disable edit based on whether the post belongs to the user + item = self.get_item() + if item and item.account.id == self.session.db["user_id"] and item.reblog == None: + widgetUtils.connect_event(menu, widgetUtils.MENU, self.edit_status, menuitem=menu.edit) + else: + menu.edit.Enable(False) + widgetUtils.connect_event(menu, widgetUtils.MENU, self.user_actions, menuitem=menu.userActions) + if self.can_share() == True: + widgetUtils.connect_event(menu, widgetUtils.MENU, self.share_item, menuitem=menu.boost) + else: + menu.boost.Enable(False) + widgetUtils.connect_event(menu, widgetUtils.MENU, self.fav, menuitem=menu.fav) + widgetUtils.connect_event(menu, widgetUtils.MENU, self.unfav, menuitem=menu.unfav) + widgetUtils.connect_event(menu, widgetUtils.MENU, self.mute_conversation, menuitem=menu.mute) + widgetUtils.connect_event(menu, widgetUtils.MENU, self.url_, menuitem=menu.openUrl) + widgetUtils.connect_event(menu, widgetUtils.MENU, self.audio, menuitem=menu.play) + widgetUtils.connect_event(menu, widgetUtils.MENU, self.view, menuitem=menu.view) + widgetUtils.connect_event(menu, widgetUtils.MENU, self.copy, menuitem=menu.copy) + widgetUtils.connect_event(menu, widgetUtils.MENU, self.destroy_status, menuitem=menu.remove) + if hasattr(menu, "openInBrowser"): + widgetUtils.connect_event(menu, widgetUtils.MENU, self.open_in_browser, menuitem=menu.openInBrowser) + if pos != 0: + self.buffer.PopupMenu(menu, pos) + else: + self.buffer.PopupMenu(menu, self.buffer.list.list.GetPosition()) + + def view(self, *args, **kwargs): + pub.sendMessage("execute-action", action="view_item") + + def copy(self, *args, **kwargs): + pub.sendMessage("execute-action", action="copy_to_clipboard") + + def user_actions(self, *args, **kwargs): + pub.sendMessage("execute-action", action="follow") + + def fav(self, *args, **kwargs): + pub.sendMessage("execute-action", action="add_to_favourites") + + def unfav(self, *args, **kwargs): + pub.sendMessage("execute-action", action="remove_from_favourites") + + def delete_item_(self, *args, **kwargs): + pub.sendMessage("execute-action", action="delete_item") + + def url_(self, *args, **kwargs): + self.url() + + def show_menu_by_key(self, ev): + if self.buffer.list.get_count() == 0: + return + if ev.GetKeyCode() == wx.WXK_WINDOWS_MENU: + self.show_menu(widgetUtils.MENU, pos=self.buffer.list.list.GetPosition()) + + def get_item(self): + index = self.buffer.list.get_selected() + if index > -1 and self.session.db.get(self.name) != None: + return self.session.db[self.name][index] + + def can_share(self, item=None): + if item == None: + item = self.get_item() + if item.visibility == "direct": + return False + return True + + def reply(self, event=None, item=None, *args, **kwargs): + if item == None: + item = self.get_item() + visibility = item.visibility + if visibility == "direct": + title = _("Conversation with {}").format(item.account.username) + caption = _("Write your message here") + else: + title = _("Reply to {}").format(item.account.username) + caption = _("Write your reply here") + # Set unlisted by default, so we will not clutter other user's buffers with replies. + # see https://github.com/MCV-Software/TWBlue/issues/504 + visibility = "unlisted" + if item.reblog != None: + users = ["@{} ".format(user.acct) for user in item.reblog.mentions if user.id != self.session.db["user_id"]] + language = item.reblog.language + if item.reblog.account.acct != item.account.acct and "@{} ".format(item.reblog.account.acct) not in users: + users.append("@{} ".format(item.reblog.account.acct)) + else: + users = ["@{} ".format(user.acct) for user in item.mentions if user.id != self.session.db["user_id"]] + language = item.language + if "@{} ".format(item.account.acct) not in users and item.account.id != self.session.db["user_id"]: + users.insert(0, "@{} ".format(item.account.acct)) + users_str = "".join(users) + post = messages.post(session=self.session, title=title, caption=caption, text=users_str) + visibility_settings = dict(public=0, unlisted=1, private=2, direct=3) + post.message.visibility.SetSelection(visibility_settings.get(visibility)) + post.set_language(language) + # Respect content warning settings. + if item.sensitive: + post.message.sensitive.SetValue(item.sensitive) + post.message.spoiler.ChangeValue(item.spoiler_text) + post.message.on_sensitivity_changed() + response = post.message.ShowModal() + if response == wx.ID_OK: + post_data = post.get_data() + call_threaded(self.session.send_post, reply_to=item.id, posts=post_data, visibility=post.get_visibility(), language=post.get_language()) + if hasattr(post.message, "destroy"): + post.message.destroy() + + def send_message(self, event=None, item=None, *args, **kwargs): + if item == None: + item = self.get_item() + title = _("Conversation with {}").format(item.account.username) + caption = _("Write your message here") + if item.reblog != None: + users = ["@{} ".format(user.acct) for user in item.reblog.mentions if user.id != self.session.db["user_id"]] + if item.reblog.account.acct != item.account.acct and "@{} ".format(item.reblog.account.acct) not in users: + users.append("@{} ".format(item.reblog.account.acct)) + else: + users = ["@{} ".format(user.acct) for user in item.mentions if user.id != self.session.db["user_id"]] + if item.account.acct not in users and item.account.id != self.session.db["user_id"]: + users.insert(0, "@{} ".format(item.account.acct)) + users_str = "".join(users) + post = messages.post(session=self.session, title=title, caption=caption, text=users_str) + post.message.visibility.SetSelection(3) + if item.sensitive: + post.message.sensitive.SetValue(item.sensitive) + post.message.spoiler.ChangeValue(item.spoiler_text) + post.message.on_sensitivity_changed() + response = post.message.ShowModal() + if response == wx.ID_OK: + post_data = post.get_data() + call_threaded(self.session.send_post, posts=post_data, visibility="direct", reply_to=item.id, language=post.get_language()) + if hasattr(post.message, "destroy"): + post.message.destroy() + + def share_item(self, event=None, item=None, *args, **kwargs): + if item == None: + item = self.get_item() + if self.can_share(item=item) == False: + return output.speak(_("This action is not supported on conversations.")) + id = item.id + if self.session.settings["general"]["boost_mode"] == "ask": + answer = mastodon_dialogs.boost_question() + if answer == True: + self._direct_boost(id) + else: + self._direct_boost(id) + + def _direct_boost(self, id): + item = self.session.api_call(call_name="status_reblog", _sound="retweet_send.ogg", id=id) + + def onFocus(self, *args, **kwargs): + post = self.get_item() + if self.session.settings["general"]["relative_times"] == True: + original_date = arrow.get(self.session.db[self.name][self.buffer.list.get_selected()].created_at) + ts = original_date.humanize(locale=languageHandler.getLanguage()) + self.buffer.list.list.SetItem(self.buffer.list.get_selected(), 2, ts) + if config.app["app-settings"]["read_long_posts_in_gui"] == True and self.buffer.list.list.HasFocus(): + wx.CallLater(40, output.speak, self.get_message(), interrupt=True) + if self.session.settings['sound']['indicate_audio'] and utils.is_audio_or_video(post): + self.session.sound.play("audio.ogg") + if self.session.settings['sound']['indicate_img'] and utils.is_image(post): + self.session.sound.play("image.ogg") + can_share = self.can_share() + pub.sendMessage("toggleShare", shareable=can_share) + self.buffer.boost.Enable(can_share) + + def audio(self, event=None, item=None, *args, **kwargs): + if sound.URLPlayer.player.is_playing(): + return sound.URLPlayer.stop_audio() + if item == None: + item = self.get_item() + urls = utils.get_media_urls(item) + if len(urls) == 1: + url=urls[0] + elif len(urls) > 1: + urls_list = urlList.urlList() + urls_list.populate_list(urls) + if urls_list.get_response() == widgetUtils.OK: + url=urls_list.get_string() + if hasattr(urls_list, "destroy"): urls_list.destroy() + if url != '': + # try: + sound.URLPlayer.play(url, self.session.settings["sound"]["volume"]) +# except: +# log.error("Exception while executing audio method.") + + def url(self, announce=True, item=None, *args, **kwargs): + if item == None: + item = self.get_item() + if item.reblog != None: + urls = utils.find_urls(item.reblog) + else: + urls = utils.find_urls(item) + if len(urls) == 1: + url=urls[0] + elif len(urls) > 1: + urls_list = urlList.urlList() + urls_list.populate_list(urls) + if urls_list.get_response() == widgetUtils.OK: + url=urls_list.get_string() + if hasattr(urls_list, "destroy"): urls_list.destroy() + if url != '': + if announce: + output.speak(_(u"Opening URL..."), True) + webbrowser.open_new_tab(url) + + def clear_list(self): + dlg = commonMessageDialogs.clear_list() + if dlg == widgetUtils.YES: + self.session.db[self.name] = [] + self.buffer.list.clear() + + def destroy_status(self, *args, **kwargs): + index = self.buffer.list.get_selected() + item = self.session.db[self.name][index] + if item.account.id != self.session.db["user_id"] or item.reblog != None: + output.speak(_("You can delete only your own posts.")) + return + answer = mastodon_dialogs.delete_post_dialog() + if answer == True: + items = self.session.db[self.name] + try: + self.session.api.status_delete(id=item.id) + items.pop(index) + self.buffer.list.remove_item(index) + except Exception as e: + self.session.sound.play("error.ogg") + log.exception("") + self.session.db[self.name] = items + + def edit_status(self, event=None, item=None, *args, **kwargs): + if item == None: + item = self.get_item() + # Check if the post belongs to the current user + if item.account.id != self.session.db["user_id"] or item.reblog != None: + output.speak(_("You can only edit your own posts.")) + return + # Check if post has a poll with votes - warn user before proceeding + if hasattr(item, 'poll') and item.poll is not None: + votes_count = item.poll.votes_count if hasattr(item.poll, 'votes_count') else 0 + if votes_count > 0: + # Show confirmation dialog + warning_title = _("Warning: Poll with votes") + warning_message = _("This post contains a poll with {votes} votes.\n\n" + "According to Mastodon's API, editing this post will reset ALL votes to zero, " + "even if you don't modify the poll itself.\n\n" + "Do you want to continue editing?").format(votes=votes_count) + dialog = wx.MessageDialog(self.buffer, warning_message, warning_title, + wx.YES_NO | wx.NO_DEFAULT | wx.ICON_WARNING) + result = dialog.ShowModal() + dialog.Destroy() + if result != wx.ID_YES: + output.speak(_("Edit cancelled")) + return + # Log item info for debugging + log.debug("Editing status: id={}, has_media_attachments={}, media_count={}".format( + item.id, + hasattr(item, 'media_attachments'), + len(item.media_attachments) if hasattr(item, 'media_attachments') else 0 + )) + # Create edit dialog with existing post data + title = _("Edit post") + caption = _("Edit your post here") + post = messages.editPost(session=self.session, item=item, title=title, caption=caption) + response = post.message.ShowModal() + if response == wx.ID_OK: + post_data = post.get_data() + # Call edit_post method in session + # Note: visibility and language cannot be changed when editing per Mastodon API + call_threaded(self.session.edit_post, post_id=post.post_id, posts=post_data) + if hasattr(post.message, "destroy"): + post.message.destroy() + + def user_details(self): + item = self.get_item() + pass + + def get_item_url(self, item=None): + if item == None: + item = self.get_item() + if item.reblog != None: + return item.reblog.url + return item.url + + def open_in_browser(self, event=None, item=None, *args, **kwargs): + if item == None: + item = self.get_item() + url = self.get_item_url(item=item) + output.speak(_("Opening item in web browser...")) + webbrowser.open(url) + + def add_to_favorites(self, item=None): + if item == None: + item = self.get_item() + if item.reblog != None: + item = item.reblog + call_threaded(self.session.api_call, call_name="status_favourite", preexec_message=_("Adding to favorites..."), _sound="favourite.ogg", id=item.id) + + def remove_from_favorites(self, item=None): + if item == None: + item = self.get_item() + if item.reblog != None: + item = item.reblog + call_threaded(self.session.api_call, call_name="status_unfavourite", preexec_message=_("Removing from favorites..."), _sound="favourite.ogg", id=item.id) + + def toggle_favorite(self, event=None, item=None, *args, **kwargs): + if item == None: + item = self.get_item() + if item.reblog != None: + item = item.reblog + try: + item = self.session.api.status(item.id) + except MastodonNotFoundError: + output.speak(_("No status found with that ID")) + return + if item.favourited == False: + call_threaded(self.session.api_call, call_name="status_favourite", preexec_message=_("Adding to favorites..."), _sound="favourite.ogg", id=item.id) + else: + call_threaded(self.session.api_call, call_name="status_unfavourite", preexec_message=_("Removing from favorites..."), _sound="favourite.ogg", id=item.id) + + def toggle_bookmark(self, event=None, item=None, *args, **kwargs): + if item == None: + item = self.get_item() + if item.reblog != None: + item = item.reblog + try: + item = self.session.api.status(item.id) + except MastodonNotFoundError: + output.speak(_("No status found with that ID")) + return + if item.bookmarked == False: + call_threaded(self.session.api_call, call_name="status_bookmark", preexec_message=_("Adding to bookmarks..."), _sound="favourite.ogg", id=item.id) + else: + call_threaded(self.session.api_call, call_name="status_unbookmark", preexec_message=_("Removing from bookmarks..."), _sound="favourite.ogg", id=item.id) + + def mute_conversation(self, event=None, item=None, *args, **kwargs): + if item == None: + item = self.get_item() + if item.reblog != None: + item = item.reblog + try: + item = self.session.api.status(item.id) + except MastodonNotFoundError: + output.speak(_("No status found with that ID")) + return + if item.muted == False: + call_threaded(self.session.api_call, call_name="status_mute", preexec_message=_("Muting conversation..."), _sound="favourite.ogg", id=item.id) + pub.sendMessage("mastodon.mute_cleanup", conversation_id=item.conversation_id, session_name=self.session.get_name()) + else: + call_threaded(self.session.api_call, call_name="status_unmute", preexec_message=_("Unmuting conversation..."), _sound="favourite.ogg", id=item.id) + + def view_item(self, item=None): + if item == None: + item = self.get_item() + # Update object so we can retrieve newer stats + try: + item = self.session.api.status(id=item.id) + except MastodonNotFoundError: + output.speak(_("No status found with that ID")) + return + msg = messages.viewPost(self.session, item, offset_hours=self.session.db["utc_offset"], item_url=self.get_item_url(item=item)) + + def ocr_image(self): + post = self.get_item() + media_list = [] + if post.reblog != None: + post = post.reblog + for media in post.get("media_attachments"): + if media.get("type", "") == "image": + media_list.append(media) + if len(media_list) > 1: + image_list = [_(u"Picture {0}").format(i+1,) for i in range(0, len(media_list))] + dialog = urlList.urlList(title=_(u"Select the picture")) + dialog.populate_list(image_list) + if dialog.get_response() == widgetUtils.OK: + img = media_list[dialog.get_item()] + else: + return + elif len(media_list) == 1: + img = media_list[0] + else: + return + if self.session.settings["mysc"]["ocr_language"] != "": + ocr_lang = self.session.settings["mysc"]["ocr_language"] + else: + ocr_lang = ocr.OCRSpace.short_langs.index(post.language) + ocr_lang = ocr.OCRSpace.OcrLangs[ocr_lang] + if img["remote_url"] != None: + url = img["remote_url"] + else: + url = img["url"] + api = ocr.OCRSpace.OCRSpaceAPI() + try: + text = api.OCR_URL(url) + except ocr.OCRSpace.APIError as er: + output.speak(_(u"Unable to extract text")) + return + viewer = messages.text(title=_("OCR Result"), text=text["ParsedText"]) + response = viewer.message.ShowModal() + viewer.message.Destroy() + + def vote(self, item=None): + if item == None: + post = self.get_item() + else: + post = item + if not hasattr(post, "poll") or post.poll == None: + return + poll = post.poll + try: + poll = self.session.api.poll(id=poll.id) + except MastodonNotFoundError: + output.speak(_("this poll no longer exists.")) + return + if poll.expired: + output.speak(_("This poll has already expired.")) + return + if poll.voted: + output.speak(_("You have already voted on this poll.")) + return + options = poll.options + dlg = attachedPoll(poll_options=[option.title for option in options], multiple=poll.multiple) + answer = dlg.ShowModal() + options = dlg.get_selected() + dlg.Destroy() + if answer != wx.ID_OK: + return + poll = self.session.api_call(call_name="poll_vote", id=poll.id, choices=options, preexec_message=_("Sending vote...")) + + def post_from_error(self, visibility, reply_to, data, lang): + title = _("Post") + caption = _("Write your post here") + post = messages.post(session=self.session, title=title, caption=caption) + post.set_post_data(visibility=visibility, data=data, language=language) + response = post.message.ShowModal() + if response == wx.ID_OK: + post_data = post.get_data() + call_threaded(self.session.send_post, posts=post_data, reply_to=reply_to, visibility=post.get_visibility(), language=post.get_language()) + if hasattr(post.message, "destroy"): + post.message.destroy() diff --git a/srcantiguo/controller/buffers/mastodon/community.py b/srcantiguo/controller/buffers/mastodon/community.py new file mode 100644 index 00000000..d0223431 --- /dev/null +++ b/srcantiguo/controller/buffers/mastodon/community.py @@ -0,0 +1,160 @@ +# -*- coding: utf-8 -*- +import time +import logging +import mastodon +import widgetUtils +import output +from wxUI import commonMessageDialogs +from sessions.mastodon import utils +from . import base + +log = logging.getLogger("controller.buffers.mastodon.community") + +class CommunityBuffer(base.BaseBuffer): + def __init__(self, community_url, *args, **kwargs): + super(CommunityBuffer, self).__init__(*args, **kwargs) + self.community_url = community_url + self.community_api = mastodon.Mastodon(api_base_url=self.community_url) + self.timeline = kwargs.get("timeline", "local") + self.kwargs.pop("timeline") + + def get_buffer_name(self): + type = _("Local") if self.timeline == "local" else _("Federated") + instance = self.community_url.replace("https://", "") + return _(f"{type} timeline for {instance}") + + def start_stream(self, mandatory=False, play_sound=True, avoid_autoreading=False): + current_time = time.time() + if self.execution_time == 0 or current_time-self.execution_time >= 180 or mandatory==True: + self.execution_time = current_time + log.debug("Starting stream for buffer %s, account %s and type %s" % (self.name, self.account, self.type)) + log.debug("args: %s, kwargs: %s" % (self.args, self.kwargs)) + count = self.session.settings["general"]["max_posts_per_call"] + min_id = None + # toDo: Implement reverse timelines properly here. + if self.name in self.session.db and len(self.session.db[self.name]) > 0: + if self.session.settings["general"]["reverse_timelines"]: + min_id = self.session.db[self.name][0].id + else: + min_id = self.session.db[self.name][-1].id + try: + results = self.community_api.timeline(timeline=self.timeline, min_id=min_id, limit=count, *self.args, **self.kwargs) + results.reverse() + except Exception as e: + log.exception("Error %s" % (str(e))) + return + number_of_items = self.session.order_buffer(self.name, results) + log.debug("Number of items retrieved: %d" % (number_of_items,)) + self.put_items_on_list(number_of_items) + if number_of_items > 0 and self.sound != None and self.session.settings["sound"]["session_mute"] == False and self.name not in self.session.settings["other_buffers"]["muted_buffers"] and play_sound == True: + self.session.sound.play(self.sound) + # Autoread settings + if avoid_autoreading == False and mandatory == True and number_of_items > 0 and self.name in self.session.settings["other_buffers"]["autoread_buffers"]: + self.auto_read(number_of_items) + return number_of_items + + def get_more_items(self): + elements = [] + if self.session.settings["general"]["reverse_timelines"] == False: + max_id = self.session.db[self.name][0].id + else: + max_id = self.session.db[self.name][-1].id + try: + items = self.community_api.timeline(timeline=self.timeline, max_id=max_id, limit=self.session.settings["general"]["max_posts_per_call"], *self.args, **self.kwargs) + except Exception as e: + log.exception("Error %s" % (str(e))) + return + items_db = self.session.db[self.name] + for i in items: + if utils.find_item(i, self.session.db[self.name]) == None: + elements.append(i) + if self.session.settings["general"]["reverse_timelines"] == False: + items_db.insert(0, i) + else: + items_db.append(i) + self.session.db[self.name] = items_db + selection = self.buffer.list.get_selected() + log.debug("Retrieved %d items from cursored search in function %s." % (len(elements), self.function)) + safe = True + if self.session.settings["general"]["read_preferences_from_instance"]: + safe = self.session.expand_spoilers == False + if self.session.settings["general"]["reverse_timelines"] == False: + for i in elements: + post = self.compose_function(i, self.session.db, self.session.settings, self.session.settings["general"]["relative_times"], self.session.settings["general"]["show_screen_names"], safe=safe) + self.buffer.list.insert_item(True, *post) + else: + for i in elements: + post = self.compose_function(i, self.session.db, self.session.settings, self.session.settings["general"]["relative_times"], self.session.settings["general"]["show_screen_names"], safe=safe) + self.buffer.list.insert_item(False, *post) + self.buffer.list.select_item(selection) + output.speak(_(u"%s items retrieved") % (str(len(elements))), True) + + def remove_buffer(self, force=False): + if force == False: + dlg = commonMessageDialogs.remove_buffer() + else: + dlg = widgetUtils.YES + if dlg == widgetUtils.YES: + tl_info = f"{self.timeline}@{self.community_url}" + self.session.settings["other_buffers"]["communities"].remove(tl_info) + self.session.settings.write() + if self.name in self.session.db: + self.session.db.pop(self.name) + return True + elif dlg == widgetUtils.NO: + return False + + def get_item_from_instance(self, *args, **kwargs): + item = self.get_item() + try: + results = self.session.api.search(q=item.url, resolve=True, result_type="statuses") + except Exception as e: + log.exception("Error when searching for remote post.") + return None + item = results["statuses"][0] + return item + + def reply(self, *args, **kwargs): + item = self.get_item_from_instance() + if item != None: + super(CommunityBuffer, self).reply(item=item) + + def send_message(self, *args, **kwargs): + item = self.get_item_from_instance() + if item != None: + super(CommunityBuffer, self).send_message(item=item) + + def share_item(self, *args, **kwargs): + item = self.get_item_from_instance() + if item != None: + super(CommunityBuffer, self).share_item(item=item) + + def add_to_favorites(self, *args, **kwargs): + item = self.get_item_from_instance() + if item != None: + super(CommunityBuffer, self).add_to_favorite(item=item) + + def remove_from_favorites(self, *args, **kwargs): + item = self.get_item_from_instance() + if item != None: + super(CommunityBuffer, self).remove_from_favorites(item=item) + + def toggle_favorite(self, *args, **kwargs): + item = self.get_item_from_instance() + if item != None: + super(CommunityBuffer, self).toggle_favorite(item=item) + + def toggle_bookmark(self, *args, **kwargs): + item = self.get_item_from_instance() + if item != None: + super(CommunityBuffer, self).toggle_bookmark(item=item) + + def vote(self, *args, **kwargs): + item = self.get_item_from_instance() + if item != None: + super(CommunityBuffer, self).vote(item=item) + + def view_item(self, *args, **kwargs): + item = self.get_item_from_instance() + if item != None: + super(CommunityBuffer, self).view_item(item=item) diff --git a/srcantiguo/controller/buffers/mastodon/conversations.py b/srcantiguo/controller/buffers/mastodon/conversations.py new file mode 100644 index 00000000..41c7a636 --- /dev/null +++ b/srcantiguo/controller/buffers/mastodon/conversations.py @@ -0,0 +1,249 @@ +# -*- coding: utf-8 -*- +import time +import logging +import wx +import widgetUtils +import output +import config +from mastodon import MastodonNotFoundError +from controller.mastodon import messages +from controller.buffers.mastodon.base import BaseBuffer +from mysc.thread_utils import call_threaded +from sessions.mastodon import utils, templates +from wxUI import buffers, commonMessageDialogs +log = logging.getLogger("controller.buffers.mastodon.conversations") + +class ConversationListBuffer(BaseBuffer): + + def create_buffer(self, parent, name): + self.buffer = buffers.mastodon.conversationListPanel(parent, name) + + def get_item(self): + index = self.buffer.list.get_selected() + if index > -1 and self.session.db.get(self.name) != None and len(self.session.db[self.name]) > index: + return self.session.db[self.name][index]["last_status"] + + def get_conversation(self): + index = self.buffer.list.get_selected() + if index > -1 and self.session.db.get(self.name) != None: + return self.session.db[self.name][index] + + def get_formatted_message(self): + return self.compose_function(self.get_conversation(), self.session.db, self.session.settings, self.session.settings["general"]["relative_times"], self.session.settings["general"]["show_screen_names"])[1] + + def get_message(self): + conversation = self.get_conversation() + if conversation == None: + return + template = self.session.settings["templates"]["conversation"] + post_template = self.session.settings["templates"]["post"] + t = templates.render_conversation(conversation=conversation, template=template, post_template=post_template, settings=self.session.settings, relative_times=self.session.settings["general"]["relative_times"], offset_hours=self.session.db["utc_offset"]) + return t + + def start_stream(self, mandatory=False, play_sound=True, avoid_autoreading=False): + current_time = time.time() + if self.execution_time == 0 or current_time-self.execution_time >= 180 or mandatory==True: + self.execution_time = current_time + log.debug("Starting stream for buffer %s, account %s and type %s" % (self.name, self.account, self.type)) + log.debug("args: %s, kwargs: %s" % (self.args, self.kwargs)) + count = self.session.settings["general"]["max_posts_per_call"] + min_id = None + try: + results = getattr(self.session.api, self.function)(min_id=min_id, limit=count, *self.args, **self.kwargs) + results.reverse() + except Exception as e: + log.exception("Error %s loading %s with args of %r and kwargs of %r" % (str(e), self.function, self.args, self.kwargs)) + return + new_position, number_of_items = self.order_buffer(results) + log.debug("Number of items retrieved: %d" % (number_of_items,)) + self.put_items_on_list(number_of_items) + if new_position > -1: + self.buffer.list.select_item(new_position) + if number_of_items > 0 and self.name != "sent_posts" and self.name != "sent_direct_messages" and self.sound != None and self.session.settings["sound"]["session_mute"] == False and self.name not in self.session.settings["other_buffers"]["muted_buffers"] and play_sound == True: + self.session.sound.play(self.sound) + # Autoread settings + if avoid_autoreading == False and mandatory == True and number_of_items > 0 and self.name in self.session.settings["other_buffers"]["autoread_buffers"]: + self.auto_read(number_of_items) + return number_of_items + + def get_more_items(self): + elements = [] + if self.session.settings["general"]["reverse_timelines"] == False: + max_id = self.session.db[self.name][0].last_status.id + else: + max_id = self.session.db[self.name][-1].last_status.id + try: + items = getattr(self.session.api, self.function)(max_id=max_id, limit=self.session.settings["general"]["max_posts_per_call"], *self.args, **self.kwargs) + except Exception as e: + log.exception("Error %s" % (str(e))) + return + items_db = self.session.db[self.name] + for i in items: + if utils.find_item(i, self.session.db[self.name]) == None: + elements.append(i) + if self.session.settings["general"]["reverse_timelines"] == False: + items_db.insert(0, i) + else: + items_db.append(i) + self.session.db[self.name] = items_db + selection = self.buffer.list.get_selected() + log.debug("Retrieved %d items from cursored search in function %s." % (len(elements), self.function)) + if self.session.settings["general"]["reverse_timelines"] == False: + for i in elements: + conversation = self.compose_function(i, self.session.db, self.session.settings, self.session.settings["general"]["relative_times"], self.session.settings["general"]["show_screen_names"]) + self.buffer.list.insert_item(True, *conversation) + else: + for i in elements: + conversation = self.compose_function(i, self.session.db, self.session.settings, self.session.settings["general"]["relative_times"], self.session.settings["general"]["show_screen_names"]) + self.buffer.list.insert_item(False, *conversation) + self.buffer.list.select_item(selection) + output.speak(_(u"%s items retrieved") % (str(len(elements))), True) + + def get_item_position(self, conversation): + for i in range(len(self.session.db[self.name])): + if self.session.db[self.name][i].id == conversation.id: + return i + + def order_buffer(self, data): + num = 0 + focus_object = None + if self.session.db.get(self.name) == None: + self.session.db[self.name] = [] + objects = self.session.db[self.name] + for i in data: + # Deleted conversations handling. + if i.last_status == None: + continue + position = self.get_item_position(i) + if position != None: + conversation = self.session.db[self.name][position] + if conversation.last_status.id != i.last_status.id: + focus_object = i + objects.pop(position) + self.buffer.list.remove_item(position) + if self.session.settings["general"]["reverse_timelines"] == False: + objects.append(i) + else: + objects.insert(0, i) + num = num+1 + else: + if self.session.settings["general"]["reverse_timelines"] == False: + objects.append(i) + else: + objects.insert(0, i) + num = num+1 + self.session.db[self.name] = objects + if focus_object == None: + return (-1, num) + new_position = self.get_item_position(focus_object) + if new_position != None: + return (new_position, num) + return (-1, num) + + def bind_events(self): + log.debug("Binding events...") + self.buffer.set_focus_function(self.onFocus) + widgetUtils.connect_event(self.buffer.list.list, widgetUtils.KEYPRESS, self.get_event) + widgetUtils.connect_event(self.buffer, widgetUtils.BUTTON_PRESSED, self.post_status, self.buffer.post) + widgetUtils.connect_event(self.buffer, widgetUtils.BUTTON_PRESSED, self.reply, self.buffer.reply) + widgetUtils.connect_event(self.buffer.list.list, wx.EVT_LIST_ITEM_RIGHT_CLICK, self.show_menu) + widgetUtils.connect_event(self.buffer.list.list, wx.EVT_LIST_KEY_DOWN, self.show_menu_by_key) + + def fav(self): + pass + + def unfav(self): + pass + + def can_share(self): + return False + + def send_message(self): + return self.reply() + + def onFocus(self, *args, **kwargs): + post = self.get_item() + if config.app["app-settings"]["read_long_posts_in_gui"] == True and self.buffer.list.list.HasFocus(): + wx.CallLater(40, output.speak, self.get_message(), interrupt=True) + if self.session.settings['sound']['indicate_audio'] and utils.is_audio_or_video(post): + self.session.sound.play("audio.ogg") + if self.session.settings['sound']['indicate_img'] and utils.is_image(post): + self.session.sound.play("image.ogg") + + def destroy_status(self): + pass + + def reply(self, *args): + item = self.get_item() + conversation = self.get_conversation() + visibility = item.visibility + title = _("Reply to conversation with {}").format(conversation.accounts[0].username) + caption = _("Write your message here") + users = ["@{} ".format(user.acct) for user in conversation.accounts] + users_str = "".join(users) + post = messages.post(session=self.session, title=title, caption=caption, text=users_str) + visibility_settings = dict(public=0, unlisted=1, private=2, direct=3) + post.message.visibility.SetSelection(visibility_settings.get(visibility)) + if item.sensitive: + post.message.sensitive.SetValue(item.sensitive) + post.message.spoiler.ChangeValue(item.spoiler_text) + post.message.on_sensitivity_changed() + response = post.message.ShowModal() + if response == wx.ID_OK: + post_data = post.get_data() + call_threaded(self.session.send_post, reply_to=item.id, posts=post_data, visibility=visibility, language=post.get_language()) + if hasattr(post.message, "destroy"): + post.message.destroy() + +class ConversationBuffer(BaseBuffer): + + def __init__(self, post, *args, **kwargs): + self.post = post + super(ConversationBuffer, self).__init__(*args, **kwargs) + + def start_stream(self, mandatory=False, play_sound=True, avoid_autoreading=False): + current_time = time.time() + if self.execution_time == 0 or current_time-self.execution_time >= 180 or mandatory==True: + self.execution_time = current_time + log.debug("Starting stream for buffer %s, account %s and type %s" % (self.name, self.account, self.type)) + log.debug("args: %s, kwargs: %s" % (self.args, self.kwargs)) + try: + self.post = self.session.api.status(id=self.post.id) + except MastodonNotFoundError: + output.speak(_("No status found with that ID")) + return + # toDo: Implement reverse timelines properly here. + try: + results = [] + items = getattr(self.session.api, self.function)(*self.args, **self.kwargs) + [results.append(item) for item in items.ancestors] + results.append(self.post) + [results.append(item) for item in items.descendants] + except Exception as e: + log.exception("Error %s" % (str(e))) + return + number_of_items = self.session.order_buffer(self.name, results) + log.debug("Number of items retrieved: %d" % (number_of_items,)) + self.put_items_on_list(number_of_items) + if number_of_items > 0 and self.name != "sent_posts" and self.name != "sent_direct_messages" and self.sound != None and self.session.settings["sound"]["session_mute"] == False and self.name not in self.session.settings["other_buffers"]["muted_buffers"] and play_sound == True: + self.session.sound.play(self.sound) + # Autoread settings + if avoid_autoreading == False and mandatory == True and number_of_items > 0 and self.name in self.session.settings["other_buffers"]["autoread_buffers"]: + self.auto_read(number_of_items) + return number_of_items + + + def get_more_items(self): + output.speak(_(u"This action is not supported for this buffer"), True) + + def remove_buffer(self, force=False): + if force == False: + dlg = commonMessageDialogs.remove_buffer() + else: + dlg = widgetUtils.YES + if dlg == widgetUtils.YES: + if self.name in self.session.db: + self.session.db.pop(self.name) + return True + elif dlg == widgetUtils.NO: + return False \ No newline at end of file diff --git a/srcantiguo/controller/buffers/mastodon/mentions.py b/srcantiguo/controller/buffers/mastodon/mentions.py new file mode 100644 index 00000000..8a3d397c --- /dev/null +++ b/srcantiguo/controller/buffers/mastodon/mentions.py @@ -0,0 +1,121 @@ +# -*- coding: utf-8 -*- +import time +import logging +import output +from controller.buffers.mastodon.base import BaseBuffer +from sessions.mastodon import utils + +log = logging.getLogger("controller.buffers.mastodon.mentions") + +class MentionsBuffer(BaseBuffer): + + def get_item(self): + index = self.buffer.list.get_selected() + if index > -1 and self.session.db.get(self.name) != None and len(self.session.db[self.name]) > index: + return self.session.db[self.name][index]["status"] + + def start_stream(self, mandatory=False, play_sound=True, avoid_autoreading=False): + current_time = time.time() + if self.execution_time == 0 or current_time-self.execution_time >= 180 or mandatory==True: + self.execution_time = current_time + log.debug("Starting stream for buffer %s, account %s and type %s" % (self.name, self.account, self.type)) + log.debug("args: %s, kwargs: %s" % (self.args, self.kwargs)) + count = self.session.settings["general"]["max_posts_per_call"] + min_id = None + try: + items = getattr(self.session.api, self.function)(min_id=min_id, limit=count, types=["mention"], *self.args, **self.kwargs) + items.reverse() + except Exception as e: + log.exception("Error %s" % (str(e))) + return + # Attempt to remove items with no statuses attached to them as it might happen when blocked accounts have notifications. + items = [item for item in items if item.status != None] + number_of_items = self.session.order_buffer(self.name, items) + log.debug("Number of items retrieved: %d" % (number_of_items,)) + self.put_items_on_list(number_of_items) + if number_of_items > 0 and self.name != "sent_posts" and self.name != "sent_direct_messages" and self.sound != None and self.session.settings["sound"]["session_mute"] == False and self.name not in self.session.settings["other_buffers"]["muted_buffers"] and play_sound == True: + self.session.sound.play(self.sound) + # Autoread settings + if avoid_autoreading == False and mandatory == True and number_of_items > 0 and self.name in self.session.settings["other_buffers"]["autoread_buffers"]: + self.auto_read(number_of_items) + return number_of_items + + def get_more_items(self): + elements = [] + if self.session.settings["general"]["reverse_timelines"] == False: + max_id = self.session.db[self.name][0].id + else: + max_id = self.session.db[self.name][-1].id + try: + items = getattr(self.session.api, self.function)(max_id=max_id, limit=self.session.settings["general"]["max_posts_per_call"], types=["mention"], *self.args, **self.kwargs) + except Exception as e: + log.exception("Error %s" % (str(e))) + return + # Attempt to remove items with no statuses attached to them as it might happen when blocked accounts have notifications. + items = [item for item in items if item.status != None] + items_db = self.session.db[self.name] + for i in items: + if utils.find_item(i, self.session.db[self.name]) == None: + filter_status = utils.evaluate_filters(post=i, current_context=utils.get_current_context(self.name)) + if filter_status == "hide": + continue + elements.append(i) + if self.session.settings["general"]["reverse_timelines"] == False: + items_db.insert(0, i) + else: + items_db.append(i) + self.session.db[self.name] = items_db + selection = self.buffer.list.get_selected() + log.debug("Retrieved %d items from cursored search in function %s." % (len(elements), self.function)) + safe = True + if self.session.settings["general"]["read_preferences_from_instance"]: + safe = self.session.expand_spoilers == False + if self.session.settings["general"]["reverse_timelines"] == False: + for i in elements: + post = self.compose_function(i.status, self.session.db, self.session.settings, self.session.settings["general"]["relative_times"], self.session.settings["general"]["show_screen_names"], safe=safe) + self.buffer.list.insert_item(True, *post) + else: + for i in elements: + post = self.compose_function(i.status, self.session.db, self.session.settings, self.session.settings["general"]["relative_times"], self.session.settings["general"]["show_screen_names"], safe=safe) + self.buffer.list.insert_item(False, *post) + self.buffer.list.select_item(selection) + output.speak(_(u"%s items retrieved") % (str(len(elements))), True) + + def put_items_on_list(self, number_of_items): + list_to_use = self.session.db[self.name] + if number_of_items == 0 and self.session.settings["general"]["persist_size"] == 0: return + log.debug("The list contains %d items " % (self.buffer.list.get_count(),)) + log.debug("Putting %d items on the list" % (number_of_items,)) + safe = True + if self.session.settings["general"]["read_preferences_from_instance"]: + safe = self.session.expand_spoilers == False + if self.buffer.list.get_count() == 0: + for i in list_to_use: + post = self.compose_function(i.status, self.session.db, self.session.settings, self.session.settings["general"]["relative_times"], self.session.settings["general"]["show_screen_names"], safe=safe) + self.buffer.list.insert_item(False, *post) + self.buffer.set_position(self.session.settings["general"]["reverse_timelines"]) + elif self.buffer.list.get_count() > 0 and number_of_items > 0: + if self.session.settings["general"]["reverse_timelines"] == False: + items = list_to_use[len(list_to_use)-number_of_items:] + for i in items: + post = self.compose_function(i.status, self.session.db, self.session.settings, self.session.settings["general"]["relative_times"], self.session.settings["general"]["show_screen_names"], safe=safe) + self.buffer.list.insert_item(False, *post) + else: + items = list_to_use[0:number_of_items] + items.reverse() + for i in items: + post = self.compose_function(i.status, self.session.db, self.session.settings, self.session.settings["general"]["relative_times"], self.session.settings["general"]["show_screen_names"], safe=safe) + self.buffer.list.insert_item(True, *post) + log.debug("Now the list contains %d items " % (self.buffer.list.get_count(),)) + + def add_new_item(self, item): + safe = True + if self.session.settings["general"]["read_preferences_from_instance"]: + safe = self.session.expand_spoilers == False + post = self.compose_function(item.status, self.session.db, self.session.settings, self.session.settings["general"]["relative_times"], self.session.settings["general"]["show_screen_names"], safe=safe) + if self.session.settings["general"]["reverse_timelines"] == False: + self.buffer.list.insert_item(False, *post) + else: + self.buffer.list.insert_item(True, *post) + if self.name in self.session.settings["other_buffers"]["autoread_buffers"] and self.name not in self.session.settings["other_buffers"]["muted_buffers"] and self.session.settings["sound"]["session_mute"] == False: + output.speak(" ".join(post[:2]), speech=self.session.settings["reporting"]["speech_reporting"], braille=self.session.settings["reporting"]["braille_reporting"]) diff --git a/srcantiguo/controller/buffers/mastodon/notifications.py b/srcantiguo/controller/buffers/mastodon/notifications.py new file mode 100644 index 00000000..cce39f4d --- /dev/null +++ b/srcantiguo/controller/buffers/mastodon/notifications.py @@ -0,0 +1,188 @@ +# -*- coding: utf-8 -*- +import time +import logging +import arrow +import widgetUtils +import wx +import output +import languageHandler +import config +from pubsub import pub +from controller.buffers.mastodon.base import BaseBuffer +from controller.mastodon import messages +from sessions.mastodon import compose, templates +from wxUI import buffers +from wxUI.dialogs.mastodon import dialogs as mastodon_dialogs +from wxUI.dialogs.mastodon import menus +from mysc.thread_utils import call_threaded + +log = logging.getLogger("controller.buffers.mastodon.notifications") + +class NotificationsBuffer(BaseBuffer): + + def __init__(self, *args, **kwargs): + super(NotificationsBuffer, self).__init__(*args, **kwargs) + self.type = "notificationsBuffer" + + def get_message(self): + notification = self.get_item() + if notification == None: + return + template = self.session.settings["templates"]["notification"] + post_template = self.session.settings["templates"]["post"] + t = templates.render_notification(notification, template, post_template, self.session.settings, relative_times=self.session.settings["general"]["relative_times"], offset_hours=self.session.db["utc_offset"]) + return t + + def create_buffer(self, parent, name): + self.buffer = buffers.mastodon.notificationsPanel(parent, name) + + def onFocus(self, *args, **kwargs): + item = self.get_item() + if self.session.settings["general"]["relative_times"] == True: + original_date = arrow.get(self.session.db[self.name][self.buffer.list.get_selected()].created_at) + ts = original_date.humanize(locale=languageHandler.getLanguage()) + self.buffer.list.list.SetItem(self.buffer.list.get_selected(), 1, ts) + if config.app["app-settings"]["read_long_posts_in_gui"] == True and self.buffer.list.list.HasFocus(): + wx.CallLater(40, output.speak, self.get_message(), interrupt=True) + + def bind_events(self): + self.buffer.set_focus_function(self.onFocus) + widgetUtils.connect_event(self.buffer.list.list, widgetUtils.KEYPRESS, self.get_event) + widgetUtils.connect_event(self.buffer, widgetUtils.BUTTON_PRESSED, self.post_status, self.buffer.post) + widgetUtils.connect_event(self.buffer, widgetUtils.BUTTON_PRESSED, self.destroy_status, self.buffer.dismiss) + + def vote(self): + pass + + def can_share(self, *args, **kwargs): + if self.is_post(): + item = self.get_item() + return super(NotificationsBuffer, self).can_share(item=item.status) + return False + + def add_to_favorites(self): + if self.is_post(): + item = self.get_item() + super(NotificationsBuffer, self).add_to_favorites(item=item.status) + + def remove_from_favorites(self): + if self.is_post(): + item = self.get_item() + super(NotificationsBuffer, self).remove_from_favorites(item=item.status) + + def toggle_favorite(self, *args, **kwargs): + if self.is_post(): + item = self.get_item() + super(NotificationsBuffer, self).toggle_favorite(item=item.status) + + def toggle_bookmark(self, *args, **kwargs): + if self.is_post(): + item = self.get_item() + super(NotificationsBuffer, self).toggle_bookmark(item=item.status) + + def reply(self, *args, **kwargs): + if self.is_post(): + item = self.get_item() + super(NotificationsBuffer, self).reply(item=item.status) + + def share_item(self, *args, **kwargs): + if self.is_post(): + item = self.get_item() + super(NotificationsBuffer, self).share_item(item=item.status) + + def url(self, *args, **kwargs): + if self.is_post(): + item = self.get_item() + super(NotificationsBuffer, self).url(item=item.status, *args, **kwargs) + + def audio(self, *args, **kwargs): + if self.is_post(): + item = self.get_item() + super(NotificationsBuffer, self).audio(item=item.status) + + def view_item(self, *args, **kwargs): + if self.is_post(): + item = self.get_item() + super(NotificationsBuffer, self).view_item(item=item.status) + else: + pub.sendMessage("execute-action", action="user_details") + + def open_in_browser(self, *args, **kwargs): + if self.is_post(): + item = self.get_item() + super(NotificationsBuffer, self).open_in_browser(item=item.status) + + def send_message(self, *args, **kwargs): + if self.is_post(): + item = self.get_item() + super(NotificationsBuffer, self).send_message(item=item.status) + else: + item = self.get_item() + title = _("New conversation with {}").format(item.account.username) + caption = _("Write your message here") + users_str = "@{} ".format(item.account.acct) + post = messages.post(session=self.session, title=title, caption=caption, text=users_str) + post.message.visibility.SetSelection(3) + response = post.message.ShowModal() + if response == wx.ID_OK: + post_data = post.get_data() + call_threaded(self.session.send_post, posts=post_data, visibility="direct", language=post.get_language()) + if hasattr(post.message, "destroy"): + post.message.destroy() + + def is_post(self): + post_types = ["status", "mention", "reblog", "favourite", "update", "poll"] + item = self.get_item() + if item.type in post_types: + return True + return False + + def destroy_status(self, *args, **kwargs): + index = self.buffer.list.get_selected() + item = self.session.db[self.name][index] + answer = mastodon_dialogs.delete_notification_dialog() + if answer == False: + return + items = self.session.db[self.name] + try: + self.session.api.notifications_dismiss(id=item.id) + items.pop(index) + self.buffer.list.remove_item(index) + output.speak(_("Notification dismissed.")) + except Exception as e: + self.session.sound.play("error.ogg") + log.exception("") + self.session.db[self.name] = items + + def show_menu(self, ev, pos=0, *args, **kwargs): + if self.buffer.list.get_count() == 0: + return + notification = self.get_item() + menu = menus.notification(notification.type) + if self.is_post(): + widgetUtils.connect_event(menu, widgetUtils.MENU, self.reply, menuitem=menu.reply) + # Enable/disable edit based on whether the post belongs to the user + if hasattr(menu, 'edit'): + status = self.get_post() + if status and status.account.id == self.session.db["user_id"] and status.reblog == None: + widgetUtils.connect_event(menu, widgetUtils.MENU, self.edit_status, menuitem=menu.edit) + else: + menu.edit.Enable(False) + widgetUtils.connect_event(menu, widgetUtils.MENU, self.user_actions, menuitem=menu.userActions) + if self.can_share() == True: + widgetUtils.connect_event(menu, widgetUtils.MENU, self.share_item, menuitem=menu.boost) + else: + menu.boost.Enable(False) + widgetUtils.connect_event(menu, widgetUtils.MENU, self.fav, menuitem=menu.fav) + widgetUtils.connect_event(menu, widgetUtils.MENU, self.unfav, menuitem=menu.unfav) + widgetUtils.connect_event(menu, widgetUtils.MENU, self.url_, menuitem=menu.openUrl) + widgetUtils.connect_event(menu, widgetUtils.MENU, self.audio, menuitem=menu.play) + widgetUtils.connect_event(menu, widgetUtils.MENU, self.view, menuitem=menu.view) + widgetUtils.connect_event(menu, widgetUtils.MENU, self.copy, menuitem=menu.copy) + widgetUtils.connect_event(menu, widgetUtils.MENU, self.destroy_status, menuitem=menu.remove) + if hasattr(menu, "openInBrowser"): + widgetUtils.connect_event(menu, widgetUtils.MENU, self.open_in_browser, menuitem=menu.openInBrowser) + if pos != 0: + self.buffer.PopupMenu(menu, pos) + else: + self.buffer.PopupMenu(menu, self.buffer.list.list.GetPosition()) \ No newline at end of file diff --git a/srcantiguo/controller/buffers/mastodon/search.py b/srcantiguo/controller/buffers/mastodon/search.py new file mode 100644 index 00000000..e583a9ad --- /dev/null +++ b/srcantiguo/controller/buffers/mastodon/search.py @@ -0,0 +1,81 @@ +# -*- coding: utf-8 -*- +""" +Implements searching functionality for mastodon +Used for searching for statuses (posts) or possibly hashtags +""" +import logging +import time +from pubsub import pub +from .base import BaseBuffer +import output +import widgetUtils +from wxUI import commonMessageDialogs + +log = logging.getLogger("controller.buffers.mastodon.search") + +class SearchBuffer(BaseBuffer): + """Search buffer + There are some methods of the Base Buffer that can't be used here + """ + + def start_stream(self, mandatory: bool=False, play_sound: bool=True, avoid_autoreading: bool=False) -> None: + """Start streaming + Parameters: + - mandatory [bool]: Force start stream if True + - play_sound [bool]: Specifies whether to play sound after receiving posts + avoid_autoreading [bool]: Reads the posts if set to True + returns [None | int]: Number of posts received + """ + log.debug(f"Starting streamd for buffer {self.name} account {self.account} and type {self.type}") + log.debug(f"Args: {self.args}, Kwargs: {self.kwargs}") + current_time = time.time() + if self.execution_time == 0 or current_time-self.execution_time >= 180 or mandatory==True: + self.execution_time = current_time + min_id = None + if self.name in self.session.db and len(self.session.db[self.name]) > 0: + if self.session.settings["general"]["reverse_timelines"]: + min_id = self.session.db[self.name][0].id + else: + min_id = self.session.db[self.name][-1].id + try: + results = getattr(self.session.api, self.function)(min_id=min_id, **self.kwargs) + except Exception as mess: + log.exception(f"Error while receiving search posts {mess}") + return + results = results.statuses + results.reverse() + num_of_items = self.session.order_buffer(self.name, results) + log.debug(f"Number of items retrieved: {num_of_items}") + self.put_items_on_list(num_of_items) + # playsound and autoread + if num_of_items > 0: + if self.sound != None and self.session.settings["sound"]["session_mute"] == False and self.name not in self.session.settings["other_buffers"]["muted_buffers"] and play_sound == True: + self.session.sound.play(self.sound) + if avoid_autoreading == False and mandatory == True and self.name in self.session.settings["other_buffers"]["autoread_buffers"]: + self.auto_read(num_of_items) + return num_of_items + + def remove_buffer(self, force: bool=False) -> bool: + """Performs clean-up tasks before removing buffer + Parameters: + - force [bool]: Force removes buffer if true + Returns [bool]: True proceed with removing buffer or False abort + removing buffer + """ + # Ask user + if not force: + response = commonMessageDialogs.remove_buffer() + else: + response = widgetUtils.YES + if response == widgetUtils.NO: + return False + # remove references of this buffer in db and settings + if self.name in self.session.db: + self.session.db.pop(self.name) + if self.kwargs.get('q') in self.session.settings['other_buffers']['post_searches']: + self.session.settings['other_buffers']['post_searches'].remove(self.kwargs['q']) + return True + + def get_more_items(self): + output.speak(_(u"This action is not supported for this buffer"), True) + diff --git a/srcantiguo/controller/buffers/mastodon/users.py b/srcantiguo/controller/buffers/mastodon/users.py new file mode 100644 index 00000000..af2c8d59 --- /dev/null +++ b/srcantiguo/controller/buffers/mastodon/users.py @@ -0,0 +1,207 @@ +# -*- coding: utf-8 -*- +import time +import logging +import wx +import widgetUtils +import output +from pubsub import pub +from mysc.thread_utils import call_threaded +from controller.buffers.mastodon.base import BaseBuffer +from controller.mastodon import messages +from sessions.mastodon import templates, utils +from wxUI import buffers, commonMessageDialogs + +log = logging.getLogger("controller.buffers.mastodon.conversations") + +class UserBuffer(BaseBuffer): + + def create_buffer(self, parent, name): + self.buffer = buffers.mastodon.userPanel(parent, name) + + def get_message(self): + user = self.get_item() + if user == None: + return + template = self.session.settings["templates"]["person"] + t = templates.render_user(user=user, template=template, settings=self.session.settings, relative_times=self.session.settings["general"]["relative_times"], offset_hours=self.session.db["utc_offset"]) + return t + + def bind_events(self): + widgetUtils.connect_event(self.buffer.list.list, widgetUtils.KEYPRESS, self.get_event) + widgetUtils.connect_event(self.buffer, widgetUtils.BUTTON_PRESSED, self.post_status, self.buffer.post) + widgetUtils.connect_event(self.buffer, widgetUtils.BUTTON_PRESSED, self.send_message, self.buffer.message) + widgetUtils.connect_event(self.buffer, widgetUtils.BUTTON_PRESSED, self.user_actions, self.buffer.actions) + widgetUtils.connect_event(self.buffer.list.list, wx.EVT_LIST_ITEM_RIGHT_CLICK, self.show_menu) + widgetUtils.connect_event(self.buffer.list.list, wx.EVT_LIST_KEY_DOWN, self.show_menu_by_key) + + def fav(self): + pass + + def unfav(self): + pass + + def can_share(self): + return False + + def reply(self, *args, **kwargs): + return self.send_message() + + def send_message(self, *args, **kwargs): + item = self.get_item() + title = _("New conversation with {}").format(item.username) + caption = _("Write your message here") + users_str = "@{} ".format(item.acct) + post = messages.post(session=self.session, title=title, caption=caption, text=users_str) + post.message.visibility.SetSelection(3) + response = post.message.ShowModal() + if response == wx.ID_OK: + post_data = post.get_data() + call_threaded(self.session.send_post, posts=post_data, visibility="direct") + if hasattr(post.message, "destroy"): + post.message.destroy() + + def audio(self): + pass + + def url(self): + pass + + def destroy_status(self): + pass + + def start_stream(self, mandatory=False, play_sound=True, avoid_autoreading=False): + current_time = time.time() + if self.execution_time == 0 or current_time-self.execution_time >= 180 or mandatory==True: + self.execution_time = current_time + log.debug("Starting stream for buffer %s, account %s and type %s" % (self.name, self.account, self.type)) + log.debug("args: %s, kwargs: %s" % (self.args, self.kwargs)) + count = self.session.settings["general"]["max_posts_per_call"] + try: + results = getattr(self.session.api, self.function)(limit=count, *self.args, **self.kwargs) + if hasattr(results, "_pagination_next") and self.name not in self.session.db["pagination_info"]: + self.session.db["pagination_info"][self.name] = results._pagination_next + results.reverse() + except Exception as e: + log.exception("Error %s" % (str(e))) + return + number_of_items = self.session.order_buffer(self.name, results) + log.debug("Number of items retrieved: %d" % (number_of_items,)) + if hasattr(self, "finished_timeline") and self.finished_timeline == False: + if "-followers" in self.name or "-following" in self.name: + self.username = self.session.api.account(id=self.kwargs.get("id")).username + if "-followers" in self.name: + title=_("Followers for {}").format(self.username) + else: + title=_("Following for {}").format(self.username) + pub.sendMessage("core.change_buffer_title", name=self.session.get_name(), buffer=self.name, title=title) + self.finished_timeline = True + self.put_items_on_list(number_of_items) + if number_of_items > 0 and self.name != "sent_posts" and self.name != "sent_direct_messages" and self.sound != None and self.session.settings["sound"]["session_mute"] == False and self.name not in self.session.settings["other_buffers"]["muted_buffers"] and play_sound == True: + self.session.sound.play(self.sound) + # Autoread settings + if avoid_autoreading == False and mandatory == True and number_of_items > 0 and self.name in self.session.settings["other_buffers"]["autoread_buffers"]: + self.auto_read(number_of_items) + return number_of_items + + def get_more_items(self): + elements = [] + pagination_info = self.session.db["pagination_info"].get(self.name) + if pagination_info == None: + output.speak(_("There are no more items in this buffer.")) + return + try: + items = self.session.api.fetch_next(pagination_info) + if hasattr(items, "_pagination_next"): + self.session.db["pagination_info"][self.name] = items._pagination_next + except Exception as e: + log.exception("Error %s" % (str(e))) + return + items_db = self.session.db[self.name] + for i in items: + if utils.find_item(i, self.session.db[self.name]) == None: + elements.append(i) + if self.session.settings["general"]["reverse_timelines"] == False: + items_db.insert(0, i) + else: + items_db.append(i) + self.session.db[self.name] = items_db + selection = self.buffer.list.get_selected() + log.debug("Retrieved %d items from cursored search in function %s." % (len(elements), self.function)) + if self.session.settings["general"]["reverse_timelines"] == False: + for i in elements: + post = self.compose_function(i, self.session.db, self.session.settings, self.session.settings["general"]["relative_times"], self.session.settings["general"]["show_screen_names"]) + self.buffer.list.insert_item(True, *post) + else: + for i in elements: + post = self.compose_function(i, self.session.db, self.session.settings, self.session.settings["general"]["relative_times"], self.session.settings["general"]["show_screen_names"]) + self.buffer.list.insert_item(False, *post) + self.buffer.list.select_item(selection) + output.speak(_(u"%s items retrieved") % (str(len(elements))), True) + + def get_item_url(self): + item = self.get_item() + return item.url + + def user_details(self): + item = self.get_item() + pass + + def add_to_favorites(self): + pass + + def remove_from_favorites(self): + pass + + def toggle_favorite(self): + pass + + def view_item(self): + item = self.get_item() + print(item) + + def ocr_image(self): + pass + + def remove_buffer(self, force=False): + if "-followers" in self.name: + if force == False: + dlg = commonMessageDialogs.remove_buffer() + else: + dlg = widgetUtils.YES + if dlg == widgetUtils.YES: + if self.kwargs.get("id") in self.session.settings["other_buffers"]["followers_timelines"]: + self.session.settings["other_buffers"]["followers_timelines"].remove(self.kwargs.get("id")) + self.session.settings.write() + if self.name in self.session.db: + self.session.db.pop(self.name) + return True + elif dlg == widgetUtils.NO: + return False + elif "-following" in self.name: + if force == False: + dlg = commonMessageDialogs.remove_buffer() + else: + dlg = widgetUtils.YES + if dlg == widgetUtils.YES: + if self.kwargs.get("id") in self.session.settings["other_buffers"]["following_timelines"]: + self.session.settings["other_buffers"]["following_timelines"].remove(self.kwargs.get("id")) + self.session.settings.write() + if self.name in self.session.db: + self.session.db.pop(self.name) + return True + elif dlg == widgetUtils.NO: + return False + elif "-searchUser" in self.name: + if force == False: + dlg = commonMessageDialogs.remove_buffer() + else: + dlg = widgetUtils.YES + if dlg == widgetUtils.YES: + if self.name in self.session.db: + self.session.db.pop(self.name) + return True + elif dlg == widgetUtils.NO: + return False + else: + output.speak(_(u"This buffer is not a timeline; it can't be deleted."), True) + return False \ No newline at end of file diff --git a/srcantiguo/controller/mainController.py b/srcantiguo/controller/mainController.py new file mode 100644 index 00000000..fef23b5c --- /dev/null +++ b/srcantiguo/controller/mainController.py @@ -0,0 +1,1180 @@ +# -*- coding: utf-8 -*- +import os +import sys +import logging +import webbrowser +import wx +import requests +import keystrokeEditor +import sessions +import widgetUtils +import config +import languageHandler +import application +import sound +import output +from pubsub import pub +from extra import SoundsTutorial +from update import updater +from wxUI import view, dialogs, commonMessageDialogs, sysTrayIcon +from keyboard_handler.wx_handler import WXKeyboardHandler +from sessionmanager import manager, sessionManager +from controller import buffers +from mysc import restart +from mysc import localization +from mysc.thread_utils import call_threaded +from mysc.repeating_timer import RepeatingTimer +from controller.mastodon import handler as MastodonHandler +from . import settings, userAlias + +log = logging.getLogger("mainController") + +class Controller(object): + + """ Main Controller for TWBlue. It manages the main window and sessions.""" + + def search_buffer(self, name_, user): + + """ Searches a buffer. + name_ str: The name for the buffer + user str: The account for the buffer. + for example you may want to search the home_timeline buffer for the tw_blue2 user. + Return type: buffers.buffer object.""" + for i in self.buffers: + if i.name == name_ and i.account == user: return i + + def get_current_buffer(self): + """ Get the current focused bufferObject. + Return type: buffers.buffer object.""" + buffer = self.view.get_current_buffer() + if hasattr(buffer, "account"): + buffer = self.search_buffer(buffer.name, buffer.account) + return buffer + + def get_best_buffer(self): + """ Get the best buffer for doing something using the session object. + This function is useful when you need to open a timeline or post a tweet, and the user is in a buffer without a session, for example the events buffer. + Return type: twitterBuffers.buffer object.""" + # Gets the parent buffer to know what account is doing an action + view_buffer = self.view.get_current_buffer() + # If the account has no session attached, we will need to search the first available non-empty buffer for that account to use its session. + if view_buffer.type == "account" or view_buffer.type == "empty": + buffer = self.get_first_buffer(view_buffer.account) + else: + buffer = self.search_buffer(view_buffer.name, view_buffer.account) + if buffer != None: return buffer + + def get_first_buffer(self, account): + """ Gets the first valid buffer for an account. + account str: A twitter username. + The first valid buffer is the home timeline.""" + for i in self.buffers: + if i.account == account and i.invisible == True and i.session != None: + return i + + def get_last_buffer(self, account): + """ Gets the last valid buffer for an account. + account str: A twitter username. + The last valid buffer is the last buffer that contains a session object assigned.""" + results = self.get_buffers_for_account(account) + return results[-1] + + def get_first_buffer_index(self, account): + buff = self.get_first_buffer(account) + return self.view.search(buff.name, buff.account) + + def get_last_buffer_index(self, account): + buff = self.get_last_buffer(account) + return self.view.search(buff.name, buff.account) + + def get_buffers_for_account(self, account): + results = [] + buffers = self.view.get_buffers() + [results.append(self.search_buffer(i.name, i.account)) for i in buffers if i.account == account and (i.type != "account")] + return results + + def bind_other_events(self): + """ Binds the local application events with their functions.""" + log.debug("Binding other application events...") + + # Core application pubsub events. + pub.subscribe(self.logout_account, "logout") + pub.subscribe(self.login_account, "login") + pub.subscribe(self.execute_action, "execute-action") + pub.subscribe(self.search_topic, "search") + pub.subscribe(self.create_buffer, "createBuffer") + pub.subscribe(self.toggle_share_settings, "toggleShare") + pub.subscribe(self.invisible_shorcuts_changed, "invisible-shorcuts-changed") + pub.subscribe(self.create_account_buffer, "core.create_account") + pub.subscribe(self.change_buffer_title, "core.change_buffer_title") + + # Mastodon specific events. + pub.subscribe(self.mastodon_new_item, "mastodon.new_item") + pub.subscribe(self.mastodon_updated_item, "mastodon.updated_item") + pub.subscribe(self.mastodon_new_conversation, "mastodon.conversation_received") + pub.subscribe(self.mastodon_error_post, "mastodon.error_post") + + # connect application events to GUI + widgetUtils.connect_event(self.view, widgetUtils.CLOSE_EVENT, self.exit_) + widgetUtils.connect_event(self.view, widgetUtils.MENU, self.show_hide, menuitem=self.view.show_hide) + widgetUtils.connect_event(self.view, widgetUtils.MENU, self.update_profile, menuitem=self.view.updateProfile) + widgetUtils.connect_event(self.view, widgetUtils.MENU, self.search, menuitem=self.view.menuitem_search) +# widgetUtils.connect_event(self.view, widgetUtils.MENU, self.list_manager, menuitem=self.view.lists) + widgetUtils.connect_event(self.view, widgetUtils.MENU, self.find, menuitem=self.view.find) + widgetUtils.connect_event(self.view, widgetUtils.MENU, self.accountConfiguration, menuitem=self.view.account_settings) + widgetUtils.connect_event(self.view, widgetUtils.MENU, self.configuration, menuitem=self.view.prefs) + widgetUtils.connect_event(self.view, widgetUtils.MENU, self.ocr_image, menuitem=self.view.ocr) + widgetUtils.connect_event(self.view, widgetUtils.MENU, self.learn_sounds, menuitem=self.view.sounds_tutorial) + widgetUtils.connect_event(self.view, widgetUtils.MENU, self.exit, menuitem=self.view.close) + widgetUtils.connect_event(self.view, widgetUtils.CLOSE_EVENT, self.exit) + if widgetUtils.toolkit == "wx": + log.debug("Binding the exit function...") + widgetUtils.connectExitFunction(self.exit_) + widgetUtils.connect_event(self.view, widgetUtils.MENU, self.edit_keystrokes, menuitem=self.view.keystroke_editor) + widgetUtils.connect_event(self.view, widgetUtils.MENU, self.post_tweet, self.view.compose) + widgetUtils.connect_event(self.view, widgetUtils.MENU, self.post_reply, self.view.reply) + widgetUtils.connect_event(self.view, widgetUtils.MENU, self.post_retweet, self.view.share) + widgetUtils.connect_event(self.view, widgetUtils.MENU, self.add_to_favourites, self.view.fav) + widgetUtils.connect_event(self.view, widgetUtils.MENU, self.remove_from_favourites, self.view.unfav) + widgetUtils.connect_event(self.view, widgetUtils.MENU, self.view_item, self.view.view) + widgetUtils.connect_event(self.view, widgetUtils.MENU, self.delete, self.view.delete) + widgetUtils.connect_event(self.view, widgetUtils.MENU, self.follow, menuitem=self.view.follow) + widgetUtils.connect_event(self.view, widgetUtils.MENU, self.send_dm, self.view.dm) + widgetUtils.connect_event(self.view, widgetUtils.MENU, self.user_details, self.view.details) + widgetUtils.connect_event(self.view, widgetUtils.MENU, self.get_more_items, menuitem=self.view.load_previous_items) + widgetUtils.connect_event(self.view, widgetUtils.MENU, self.clear_buffer, menuitem=self.view.clear) + widgetUtils.connect_event(self.view, widgetUtils.MENU, self.remove_buffer, self.view.deleteTl) + widgetUtils.connect_event(self.view, widgetUtils.MENU, self.check_for_updates, self.view.check_for_updates) + widgetUtils.connect_event(self.view, widgetUtils.MENU, self.about, menuitem=self.view.about) + widgetUtils.connect_event(self.view, widgetUtils.MENU, self.visit_website, menuitem=self.view.visit_website) + widgetUtils.connect_event(self.view, widgetUtils.MENU, self.get_soundpacks, menuitem=self.view.get_soundpacks) + widgetUtils.connect_event(self.view, widgetUtils.MENU, self.manage_accounts, self.view.manage_accounts) + widgetUtils.connect_event(self.view, widgetUtils.MENU, self.toggle_autoread, menuitem=self.view.autoread) + widgetUtils.connect_event(self.view, widgetUtils.MENU, self.toggle_buffer_mute, self.view.mute_buffer) + widgetUtils.connect_event(self.view, widgetUtils.MENU, self.open_timeline, self.view.timeline) + widgetUtils.connect_event(self.view, widgetUtils.MENU, self.open_favs_timeline, self.view.favs) + widgetUtils.connect_event(self.view, widgetUtils.MENU, self.community_timeline, self.view.community_timeline) + widgetUtils.connect_event(self.view, widgetUtils.MENU, self.open_conversation, menuitem=self.view.view_conversation) + widgetUtils.connect_event(self.view, widgetUtils.MENU, self.seekLeft, menuitem=self.view.seekLeft) + widgetUtils.connect_event(self.view, widgetUtils.MENU, self.seekRight, menuitem=self.view.seekRight) + if widgetUtils.toolkit == "wx": + widgetUtils.connect_event(self.view.nb, widgetUtils.NOTEBOOK_PAGE_CHANGED, self.buffer_changed) + widgetUtils.connect_event(self.view, widgetUtils.MENU, self.view_documentation, self.view.doc) + widgetUtils.connect_event(self.view, widgetUtils.MENU, self.view_changelog, self.view.changelog) + widgetUtils.connect_event(self.view, widgetUtils.MENU, self.add_alias, self.view.addAlias) + widgetUtils.connect_event(self.view, widgetUtils.MENU, self.update_buffer, self.view.update_buffer) + widgetUtils.connect_event(self.view, widgetUtils.MENU, self.manage_aliases, self.view.manageAliases) + widgetUtils.connect_event(self.view, widgetUtils.MENU, self.report_error, self.view.reportError) + widgetUtils.connect_event(self.view, widgetUtils.MENU, self.create_filter, self.view.filter) + widgetUtils.connect_event(self.view, widgetUtils.MENU, self.manage_filters, self.view.manage_filters) + + def set_systray_icon(self): + self.systrayIcon = sysTrayIcon.SysTrayIcon() + widgetUtils.connect_event(self.systrayIcon, widgetUtils.MENU, self.post_tweet, menuitem=self.systrayIcon.post) + widgetUtils.connect_event(self.systrayIcon, widgetUtils.MENU, self.configuration, menuitem=self.systrayIcon.global_settings) + widgetUtils.connect_event(self.systrayIcon, widgetUtils.MENU, self.accountConfiguration, menuitem=self.systrayIcon.account_settings) + widgetUtils.connect_event(self.systrayIcon, widgetUtils.MENU, self.show_hide, menuitem=self.systrayIcon.show_hide) + widgetUtils.connect_event(self.systrayIcon, widgetUtils.MENU, self.check_for_updates, menuitem=self.systrayIcon.check_for_updates) + widgetUtils.connect_event(self.systrayIcon, widgetUtils.MENU, self.view_documentation, menuitem=self.systrayIcon.doc) + widgetUtils.connect_event(self.systrayIcon, widgetUtils.MENU, self.exit, menuitem=self.systrayIcon.exit) + widgetUtils.connect_event(self.systrayIcon, widgetUtils.TASKBAR_LEFT_CLICK, self.taskbar_left_click) + widgetUtils.connect_event(self.systrayIcon, widgetUtils.TASKBAR_RIGHT_CLICK, self.taskbar_right_click) + + def taskbar_left_click(self, *args, **kwargs): + if self.showing == True: + self.view.set_focus() + else: + self.show_hide() + + def taskbar_right_click(self, *args, **kwargs): + self.systrayIcon.show_menu() + + def get_handler(self, type): + handler = self.handlers.get(type) + if handler == None: + if type == "mastodon": + handler = MastodonHandler.Handler() + self.handlers[type]=handler + return handler + + def __init__(self): + super(Controller, self).__init__() + # Visibility state. + self.showing = True + # main window + self.view = view.mainFrame() + # buffers list. + self.buffers = [] + self.started = False + # accounts list. + self.accounts = [] + # This saves the current account (important in invisible mode) + self.current_account = "" + # this saves current menu bar layout. + self.menubar_current_handler = "" + # Handlers are special objects as they manage the mapping of available features and events in different social networks. + self.handlers = dict() + self.view.prepare() + self.bind_other_events() + self.set_systray_icon() + + def check_invisible_at_startup(self): + # Visibility check. + if config.app["app-settings"]["hide_gui"] == True: + self.show_hide() + self.view.Show() + self.view.Hide() + # Invisible keyboard Shorcuts check. + if config.app["app-settings"]["use_invisible_keyboard_shorcuts"] == True: + km = self.create_invisible_keyboard_shorcuts() + self.register_invisible_keyboard_shorcuts(km) + + def do_work(self): + """ Creates the buffer objects for all accounts. This does not starts the buffer streams, only creates the objects.""" + log.debug("Creating buffers for all sessions...") + for i in sessions.sessions: + log.debug("Working on session %s" % (i,)) + if sessions.sessions[i].is_logged == False: + self.create_ignored_session_buffer(sessions.sessions[i]) + continue + # Valid types currently are mastodon (Work in progress) + # More can be added later. + valid_session_types = ["mastodon"] + if sessions.sessions[i].type in valid_session_types: + handler = self.get_handler(type=sessions.sessions[i].type) + handler.create_buffers(sessions.sessions[i], controller=self) + log.debug("Setting updates to buffers every %d seconds..." % (60*config.app["app-settings"]["update_period"],)) + self.update_buffers_function = RepeatingTimer(60*config.app["app-settings"]["update_period"], self.update_buffers) + self.update_buffers_function.start() + + def start(self): + """ Starts all buffer objects. Loads their items.""" + for i in sessions.sessions: + if sessions.sessions[i].is_logged == False: continue + self.start_buffers(sessions.sessions[i]) + self.set_buffer_positions(sessions.sessions[i]) + if hasattr(sessions.sessions[i], "start_streaming"): + sessions.sessions[i].start_streaming() + if config.app["app-settings"]["play_ready_sound"] == True: + sessions.sessions[list(sessions.sessions.keys())[0]].sound.play("ready.ogg") + if config.app["app-settings"]["speak_ready_msg"] == True: + output.speak(_(u"Ready")) + self.started = True + if len(self.accounts) > 0: + b = self.get_first_buffer(self.accounts[0]) + self.update_menus(handler=self.get_handler(b.session.type)) + + def create_ignored_session_buffer(self, session): + pub.sendMessage("core.create_account", name=session.get_name(), session_id=session.session_id) + + def login_account(self, session_id): + for i in sessions.sessions: + if sessions.sessions[i].session_id == session_id: session = sessions.sessions[i] + session.login() + handler = self.get_handler(type=session.type) + if handler != None and hasattr(handler, "create_buffers"): + handler.create_buffers(session=session, controller=self, createAccounts=False) + self.start_buffers(session) + if hasattr(session, "start_streaming"): + session.start_streaming() + + def create_account_buffer(self, name, session_id, logged=False): + account = buffers.base.AccountBuffer(self.view.nb, name, name, session_id) + if logged == False: + account.logged = logged + account.setup_account() + self.buffers.append(account) + self.view.add_buffer(account.buffer , name=name) + + def create_buffer(self, buffer_type="baseBuffer", session_type="twitter", buffer_title="", parent_tab=None, start=False, kwargs={}): + log.debug("Creating buffer of type {0} with parent_tab of {2} arguments {1}".format(buffer_type, kwargs, parent_tab)) + if kwargs.get("parent") == None: + kwargs["parent"] = self.view.nb + if not hasattr(buffers, session_type): + raise AttributeError("Session type %s does not exist yet." % (session_type)) + available_buffers = getattr(buffers, session_type) + if not hasattr(available_buffers, buffer_type): + raise AttributeError("Specified buffer type does not exist: %s" % (buffer_type,)) + buffer = getattr(available_buffers, buffer_type)(**kwargs) + if start: + if kwargs.get("function") == "user_timeline": + try: + buffer.start_stream(play_sound=False) + except ValueError: + commonMessageDialogs.unauthorized() + return + else: + call_threaded(buffer.start_stream) + self.buffers.append(buffer) + if parent_tab == None: + log.debug("Appending buffer {}...".format(buffer,)) + self.view.add_buffer(buffer.buffer, buffer_title) + else: + self.view.insert_buffer(buffer.buffer, buffer_title, parent_tab) + log.debug("Inserting buffer {0} into control {1}".format(buffer, parent_tab)) + + def set_buffer_positions(self, session): + "Sets positions for buffers if values exist in the database." + for i in self.buffers: + if i.account == session.get_name() and i.name+"_pos" in session.db and hasattr(i.buffer,'list'): + i.buffer.list.select_item(session.db[str(i.name+"_pos")]) + + def logout_account(self, session_id): + for i in sessions.sessions: + if sessions.sessions[i].session_id == session_id: session = sessions.sessions[i] + name =session.get_name() + delete_buffers = [] + for i in self.buffers: + if i.account == name and i.name != name: + delete_buffers.append(i.name) + for i in delete_buffers: + self.destroy_buffer(i, name) + session.db = None + session.logged = False + + def destroy_buffer(self, buffer_name, session_name): + buffer = self.search_buffer(buffer_name, session_name) + if buffer == None: + return + buff = self.view.search(buffer.name, session_name) + if buff == None: + return + self.view.delete_buffer(buff) + self.buffers.remove(buffer) + del buffer + + def search_topic(self, term): + self.search(value=term) + + def search(self, event=None, value="", *args, **kwargs): + buffer = self.get_best_buffer() + handler = self.get_handler(type=buffer.session.type) + if handler != None and hasattr(handler, "search"): + return handler.search(controller=self, session=buffer.session, value=value) + + def find(self, *args, **kwargs): + if 'string' in kwargs: + string=kwargs['string'] + else: + string='' + dlg = dialogs.find.findDialog(string) + if dlg.get_response() == widgetUtils.OK and dlg.get("string") != "": + string = dlg.get("string") + #If we still have an empty string for some reason (I.E. user clicked cancel, etc), return here. + if string == '': + log.debug("Find canceled.") + return + page = self.get_current_buffer() + if not hasattr(page.buffer, "list"): + output.speak(_(u"No session is currently in focus. Focus a session with the next or previous session shortcut."), True) + return + count = page.buffer.list.get_count() + if count < 1: + output.speak(_(u"Empty buffer."), True) + return + start = page.buffer.list.get_selected() + for i in range(start, count): + if string.lower() in page.buffer.list.get_text_column(i, 1).lower(): + page.buffer.list.select_item(i) + return output.speak(page.get_message(), True) + output.speak(_(u"{0} not found.").format(string,), True) + + def seekLeft(self, *args, **kwargs): + try: + sound.URLPlayer.seek(-5000) + except: + output.speak("Unable to seek.",True) + + def seekRight(self, *args, **kwargs): + try: + sound.URLPlayer.seek(5000) + except: + output.speak("Unable to seek.",True) + + def edit_keystrokes(self, *args, **kwargs): + buffer = self.get_best_buffer() + editor = keystrokeEditor.KeystrokeEditor(buffer.session.type) + if editor.changed == True: + config.keymap.write() + register = False + # determines if we need to reassign the keymap. + if self.showing == False: + register = True + elif config.app["app-settings"]["use_invisible_keyboard_shorcuts"] == True: + register = True + # If there is a keyboard handler instance we need unregister all old keystrokes before register the new ones. + if hasattr(self, "keyboard_handler"): + keymap = {} + for i in editor.hold_map: + if hasattr(self, i): keymap[editor.hold_map[i]] = getattr(self, i) + self.unregister_invisible_keyboard_shorcuts(keymap) + self.invisible_shorcuts_changed(registered=register) + + def learn_sounds(self, *args, **kwargs): + """ Opens the sounds tutorial for the current account.""" + buffer = self.get_best_buffer() + SoundsTutorial.soundsTutorial(buffer.session) + + def configuration(self, *args, **kwargs): + """ Opens the global settings dialogue.""" + d = settings.globalSettingsController() + if d.response == widgetUtils.OK: + d.save_configuration() + if d.needs_restart == True: + commonMessageDialogs.needs_restart() + restart.restart_program() + + def accountConfiguration(self, *args, **kwargs): + """ Opens the account settings dialogue for the current account.""" + buffer = self.get_best_buffer() + handler = self.get_handler(type=buffer.session.type) + if handler != None and hasattr(handler, "account_settings"): + manager.manager.set_current_session(buffer.session.session_id) + return handler.account_settings(buffer=buffer, controller=self) + + def check_for_updates(self, *args, **kwargs): + if not getattr(sys, 'frozen', False): + log.debug("Running from source, can't update") + commonMessageDialogs.cant_update_source() + return + update = updater.do_update() + if update == False: + view.no_update_available() + + def delete(self, *args, **kwargs): + """ Deletes an item in the current buffer. + Users can only remove their tweets and direct messages, other users' tweets and people (followers, friends, blocked, etc) can not be removed using this method.""" + buffer = self.view.get_current_buffer() + if hasattr(buffer, "account"): + buffer = self.search_buffer(buffer.name, buffer.account) + buffer.destroy_status() + + def edit_post(self, *args, **kwargs): + """ Edits a post in the current buffer. + Users can only edit their own posts.""" + buffer = self.view.get_current_buffer() + if hasattr(buffer, "account"): + buffer = self.search_buffer(buffer.name, buffer.account) + if hasattr(buffer, "edit_status"): + buffer.edit_status() + + def exit(self, *args, **kwargs): + if config.app["app-settings"]["ask_at_exit"] == True: + answer = commonMessageDialogs.exit_dialog(self.view) + if answer == widgetUtils.YES: + self.exit_() + else: + self.exit_() + + def exit_(self, *args, **kwargs): + for i in self.buffers: i.save_positions() + log.debug("Exiting...") + log.debug("Saving global configuration...") + for item in sessions.sessions: + if sessions.sessions[item].logged == False: + continue + sessions.sessions[item].sound.cleaner.cancel() + log.debug("Saving database for " + sessions.sessions[item].session_id) + sessions.sessions[item].save_persistent_data() + self.systrayIcon.RemoveIcon() + pidpath = os.path.join(os.getenv("temp"), "{}.pid".format(application.name)) + if os.path.exists(pidpath): + os.remove(pidpath) + widgetUtils.exit_application() + + def follow(self, *args, **kwargs): + buffer = self.get_current_buffer() + handler = self.get_handler(type=buffer.session.type) + if handler != None and hasattr(handler, "follow"): + return handler.follow(buffer=buffer) + + def add_alias(self, *args, **kwargs): + buffer = self.get_best_buffer() + handler = self.get_handler(type=buffer.session.type) + if handler != None and hasattr(handler, "add_alias"): + return handler.add_alias(buffer=buffer) + + def manage_aliases(self, *args, **kwargs): + buffer = self.get_best_buffer() + alias_controller = userAlias.userAliasController(buffer.session.settings) + + def post_tweet(self, event=None): + buffer = self.get_best_buffer() + if hasattr(buffer, "post_status"): + buffer.post_status() + + def post_reply(self, *args, **kwargs): + buffer = self.get_current_buffer() + if hasattr(buffer, "reply"): + return buffer.reply() + + def send_dm(self, *args, **kwargs): + buffer = self.get_current_buffer() + if hasattr(buffer, "send_message"): + buffer.send_message() + + def post_retweet(self, *args, **kwargs): + buffer = self.get_current_buffer() + if hasattr(buffer, "share_item"): + return buffer.share_item() + + def add_to_favourites(self, *args, **kwargs): + buffer = self.get_current_buffer() + if hasattr(buffer, "add_to_favorites"): + return buffer.add_to_favorites() + + def remove_from_favourites(self, *args, **kwargs): + buffer = self.get_current_buffer() + if hasattr(buffer, "remove_from_favorites"): + return buffer.remove_from_favorites() + + def toggle_like(self, *args, **kwargs): + buffer = self.get_current_buffer() + if hasattr(buffer, "toggle_favorite"): + return buffer.toggle_favorite() + + def vote(self, *args, **kwargs): + buffer = self.get_current_buffer() + if hasattr(buffer, "vote"): + return buffer.vote() + + def view_item(self, *args, **kwargs): + buffer = self.get_current_buffer() + if hasattr(buffer, "view_item"): + return buffer.view_item() + + def open_in_browser(self, *args, **kwargs): + buffer = self.get_current_buffer() + if hasattr(buffer, "open_in_browser"): + buffer.open_in_browser() + + def open_favs_timeline(self, *args, **kwargs): + buffer = self.get_best_buffer() + handler = self.get_handler(type=buffer.session.type) + if handler != None and hasattr(handler, "open_timeline"): + return handler.open_timeline(controller=self, buffer=buffer, default="favorites") + + + def open_timeline(self, *args, **kwargs): + buffer = self.get_best_buffer() + handler = self.get_handler(type=buffer.session.type) + if handler != None and hasattr(handler, "open_timeline"): + return handler.open_timeline(controller=self, buffer=buffer) + + def open_conversation(self, *args, **kwargs): + buffer = self.get_best_buffer() + handler = self.get_handler(type=buffer.session.type) + if handler != None and hasattr(handler, "open_conversation"): + return handler.open_conversation(controller=self, buffer=buffer) + + def show_hide(self, *args, **kwargs): + km = self.create_invisible_keyboard_shorcuts() + if self.showing == True: + if config.app["app-settings"]["use_invisible_keyboard_shorcuts"] == False: + self.register_invisible_keyboard_shorcuts(km) + self.view.Hide() + self.fix_wrong_buffer() + self.showing = False + else: + if config.app["app-settings"]["use_invisible_keyboard_shorcuts"] == False: + self.unregister_invisible_keyboard_shorcuts(km) + self.view.Show() + self.showing = True + + def get_more_items(self, *args, **kwargs): + buffer = self.get_current_buffer() + if hasattr(buffer, "get_more_items"): + return buffer.get_more_items() + + def clear_buffer(self, *args, **kwargs): + buffer = self.get_current_buffer() + if hasattr(buffer, "clear_list"): + return buffer.clear_list() + + def remove_buffer(self, *args, **kwargs): + buffer = self.get_current_buffer() + if not hasattr(buffer, "account"): + return + buff = self.view.search(buffer.name, buffer.account) + answer = buffer.remove_buffer() + if answer == False: + return + log.debug("destroying buffer...") + self.right() + self.view.delete_buffer(buff) + buffer.session.sound.play("delete_timeline.ogg") + self.buffers.remove(buffer) + del buffer + + def skip_buffer(self, forward=True): + buff = self.get_current_buffer() + if buff.invisible == False: + self.view.advance_selection(forward) + + def buffer_changed(self, *args, **kwargs): + buffer = self.get_current_buffer() + old_account = self.current_account + new_account = buffer.account + if new_account != old_account: + self.current_account = buffer.account + new_first_buffer = self.get_first_buffer(new_account) + if new_first_buffer != None and new_first_buffer.session.type != self.menubar_current_handler: + handler = self.get_handler(new_first_buffer.session.type) + self.menubar_current_handler = new_first_buffer.session.type + self.update_menus(handler) + if not hasattr(buffer, "session") or buffer.session == None: + return + muted = autoread = False + if buffer.name in buffer.session.settings["other_buffers"]["muted_buffers"]: + muted = True + elif buffer.name in buffer.session.settings["other_buffers"]["autoread_buffers"]: + autoread = True + self.view.check_menuitem("mute_buffer", muted) + self.view.check_menuitem("autoread", autoread) + + def update_menus(self, handler): + if hasattr(handler, "menus"): + for m in list(handler.menus.keys()): + if hasattr(self.view, m): + menu_item = getattr(self.view, m) + if handler.menus[m] == None: + menu_item.Enable(False) + else: + menu_item.Enable(True) + menu_item.SetItemLabel(handler.menus[m]) + if hasattr(handler, "item_menu"): + self.view.menubar.SetMenuLabel(1, handler.item_menu) + + def fix_wrong_buffer(self): + buf = self.get_best_buffer() + if buf == None: + for i in self.accounts: + buffer = self.view.search("home_timeline", i) + if buffer != None: + break + else: + buffer = self.view.search("home_timeline", buf.session.get_name()) + if buffer!=None: + self.view.change_buffer(buffer) + + def up(self, *args, **kwargs): + page = self.get_current_buffer() + if not hasattr(page.buffer, "list"): + output.speak(_(u"No session is currently in focus. Focus a session with the next or previous session shortcut."), True) + return + position = page.buffer.list.get_selected() + index = position-1 + try: + page.buffer.list.select_item(index) + except: + pass + if position == page.buffer.list.get_selected(): + page.session.sound.play("limit.ogg") + +# try: + output.speak(page.get_message(), True) +# except: +# pass + + def down(self, *args, **kwargs): + page = self.get_current_buffer() + if not hasattr(page.buffer, "list"): + output.speak(_(u"No session is currently in focus. Focus a session with the next or previous session shortcut."), True) + return + position = page.buffer.list.get_selected() + index = position+1 +# try: + page.buffer.list.select_item(index) +# except: +# pass + if position == page.buffer.list.get_selected(): + page.session.sound.play("limit.ogg") +# try: + output.speak(page.get_message(), True) +# except: +# pass + + def left(self, *args, **kwargs): + buff = self.view.get_current_buffer_pos() + buffer = self.get_current_buffer() + if not hasattr(buffer.buffer, "list"): + output.speak(_(u"No session is currently in focus. Focus a session with the next or previous session shortcut."), True) + return + if buff == self.get_first_buffer_index(buffer.account) or buff == 0: + self.view.change_buffer(self.get_last_buffer_index(buffer.account)) + else: + self.view.change_buffer(buff-1) + while self.get_current_buffer().invisible == False: self.skip_buffer(False) + buffer = self.get_current_buffer() + if self.showing == True: buffer.buffer.set_focus_in_list() + try: + msg = _(u"%s, %s of %s") % (self.view.get_buffer_text(), buffer.buffer.list.get_selected()+1, buffer.buffer.list.get_count()) + except: + msg = _(u"%s. Empty") % (self.view.get_buffer_text(),) + output.speak(msg, True) + + def right(self, *args, **kwargs): + buff = self.view.get_current_buffer_pos() + buffer = self.get_current_buffer() + if not hasattr(buffer.buffer, "list"): + output.speak(_(u"No session is currently in focus. Focus a session with the next or previous session shortcut."), True) + return + if buff == self.get_last_buffer_index(buffer.account) or buff+1 == self.view.get_buffer_count(): + self.view.change_buffer(self.get_first_buffer_index(buffer.account)) + else: + self.view.change_buffer(buff+1) + while self.get_current_buffer().invisible == False: self.skip_buffer(True) + buffer = self.get_current_buffer() + if self.showing == True: buffer.buffer.set_focus_in_list() + try: + msg = _(u"%s, %s of %s") % (self.view.get_buffer_text(), buffer.buffer.list.get_selected()+1, buffer.buffer.list.get_count()) + except: + msg = _(u"%s. Empty") % (self.view.get_buffer_text(),) + output.speak(msg, True) + + def next_account(self, *args, **kwargs): + try: + index = self.accounts.index(self.current_account) + except ValueError: + index = -1 + if index+1 == len(self.accounts): + index = 0 + else: + index = index+1 + account = self.accounts[index] + self.current_account = account + buffer_object = self.get_first_buffer(account) + if buffer_object == None: + output.speak(_(u"{0}: This account is not logged into Twitter.").format(account), True) + return + buff = self.view.search(buffer_object.name, account) + if buff == None: + output.speak(_(u"{0}: This account is not logged into Twitter.").format(account), True) + return + self.view.change_buffer(buff) + buffer = self.get_current_buffer() + if self.showing == True: buffer.buffer.set_focus_in_list() + try: + msg = _(u"%s. %s, %s of %s") % (buffer.account, self.view.get_buffer_text(), buffer.buffer.list.get_selected()+1, buffer.buffer.list.get_count()) + except: + msg = _(u"%s. Empty") % (self.view.get_buffer_text(),) + output.speak(msg, True) + + def previous_account(self, *args, **kwargs): + try: + index = self.accounts.index(self.current_account) + except ValueError: + index = 0 + if index-1 < 0: + index = len(self.accounts)-1 + else: + index = index-1 + account = self.accounts[index] + self.current_account = account + buffer_object = self.get_first_buffer(account) + if buffer_object == None: + output.speak(_(u"{0}: This account is not logged into Twitter.").format(account), True) + return + buff = self.view.search(buffer_object.name, account) + if buff == None: + output.speak(_(u"{0}: This account is not logged into twitter.").format(account), True) + return + self.view.change_buffer(buff) + buffer = self.get_current_buffer() + if self.showing == True: buffer.buffer.set_focus_in_list() + try: + msg = _(u"%s. %s, %s of %s") % (buffer.account, self.view.get_buffer_text(), buffer.buffer.list.get_selected()+1, buffer.buffer.list.get_count()) + except: + msg = _(u"%s. Empty") % (self.view.get_buffer_text(),) + output.speak(msg, True) + + def go_home(self): + buffer = self.get_current_buffer() + buffer.buffer.list.select_item(0) +# try: + output.speak(buffer.get_message(), True) +# except: +# pass + + def go_end(self): + buffer = self.get_current_buffer() + buffer.buffer.list.select_item(buffer.buffer.list.get_count()-1) +# try: + output.speak(buffer.get_message(), True) +# except: +# pass + + def go_page_up(self): + buffer = self.get_current_buffer() + if buffer.buffer.list.get_selected() <= 20: + index = 0 + else: + index = buffer.buffer.list.get_selected() - 20 + buffer.buffer.list.select_item(index) +# try: + output.speak(buffer.get_message(), True) +# except: +# pass + + def go_page_down(self): + buffer = self.get_current_buffer() + if buffer.buffer.list.get_selected() >= buffer.buffer.list.get_count() - 20: + index = buffer.buffer.list.get_count()-1 + else: + index = buffer.buffer.list.get_selected() + 20 + buffer.buffer.list.select_item(index) +# try: + output.speak(buffer.get_message(), True) +# except: +# pass + + def url(self, *args, **kwargs): + buffer = self.get_current_buffer() + if hasattr(buffer, "url"): + buffer.url() + + def audio(self, *args, **kwargs): + buffer = self.get_current_buffer() + if hasattr(buffer, "audio"): + return buffer.audio() + + def volume_down(self, *args, **kwargs): + buffer = self.get_current_buffer() + if hasattr(buffer, "volume_down"): + return buffer.volume_down() + + def volume_up(self, *args, **kwargs): + buffer = self.get_current_buffer() + if hasattr(buffer, "volume_up"): + return buffer.volume_up() + + def create_invisible_keyboard_shorcuts(self): + keymap = {} + for i in config.keymap["keymap"]: + if hasattr(self, i): + if config.keymap["keymap"][i] != "": + keymap[config.keymap["keymap"][i]] = getattr(self, i) + return keymap + + def register_invisible_keyboard_shorcuts(self, keymap): + if config.changed_keymap: + build_number = sys.getwindowsversion().build + if build_number > 22000: + system = "Windows 11" + keystroke_editor_shortcut = "Control+Win+Alt+K" + else: + system = "Windows 10" + keystroke_editor_shortcut = "Win+Alt+K" + commonMessageDialogs.changed_keymap(system, keystroke_editor_shortcut) + # Make sure we pass a keymap without undefined keystrokes. + new_keymap = {key: keymap[key] for key in keymap.keys() if keymap[key] != ""} + self.keyboard_handler = WXKeyboardHandler(self.view) + self.keyboard_handler.register_keys(new_keymap) + + def unregister_invisible_keyboard_shorcuts(self, keymap): + try: + self.keyboard_handler.unregister_keys(keymap) + del self.keyboard_handler + except AttributeError: + pass + + def notify(self, session, play_sound=None, message=None, notification=False): + if session.settings["sound"]["session_mute"] == True: + return + if play_sound != None: + session.sound.play(play_sound) + if message != None: + output.speak(message, speech=session.settings["reporting"]["speech_reporting"], braille=session.settings["reporting"]["braille_reporting"]) + + def start_buffers(self, session): + log.debug("starting buffers... Session %s" % (session.session_id,)) + handler = self.get_handler(type=session.type) + for i in self.buffers: + if i.session == session and i.needs_init == True: + handler.start_buffer(controller=self, buffer=i) + + def set_positions(self): + for i in sessions.sessions: + self.set_buffer_positions(i) + + def invisible_shorcuts_changed(self, registered): + if registered == True: + km = self.create_invisible_keyboard_shorcuts() + self.register_invisible_keyboard_shorcuts(km) + elif registered == False: + km = self.create_invisible_keyboard_shorcuts() + self.unregister_invisible_keyboard_shorcuts(km) + + def about(self, *args, **kwargs): + self.view.about_dialog() + + def get_soundpacks(self, *args, **kwargs): + # This should redirect users of other languages to the right version of the TWBlue website. + lang = languageHandler.curLang[:2] + url = application.url + final_url = "{0}/{1}/soundpacks".format(url, lang) + try: + response = requests.get(final_url) + except: + output.speak(_(u"An error happened while trying to connect to the server. Please try later.")) + return + # There is no twblue.mcvsoftware.com/en, so if English is the language used this should be False anyway. + if response.status_code == 200 and lang != "en": + webbrowser.open_new_tab(final_url) + else: + webbrowser.open_new_tab(application.url+"/soundpacks") + + def visit_website(self, *args, **kwargs): + # This should redirect users of other languages to the right version of the TWBlue website. + lang = languageHandler.curLang[:2] + url = application.url + final_url = "{0}/{1}".format(url, lang) + try: + response = requests.get(final_url) + except: + output.speak(_(u"An error happened while trying to connect to the server. Please try later.")) + return + # There is no twblue.mcvsoftware.com/en, so if English is the language used this should be False anyway. + if response.status_code == 200 and lang != "en": + webbrowser.open_new_tab(final_url) + else: + webbrowser.open_new_tab(application.url) + + def manage_accounts(self, *args, **kwargs): + sm = sessionManager.sessionManagerController(started=True) + sm.fill_list() + sm.show() + for i in sm.new_sessions: + handler = self.get_handler(type=sessions.sessions[i].type) + if handler != None and hasattr(handler, "create_buffers"): + handler.create_buffers(controller=self, session=sessions.sessions[i]) + call_threaded(self.start_buffers, sessions.sessions[i]) + for i in sm.removed_sessions: + if sessions.sessions[i].logged == True: + self.logout_account(sessions.sessions[i].session_id) + self.destroy_buffer(sessions.sessions[i].get_name(), sessions.sessions[i].get_name()) + if sessions.sessions[i].get_name() in self.accounts: + self.accounts.remove(sessions.sessions[i].get_name()) + sessions.sessions.pop(i) + + def toggle_autoread(self, *args, **kwargs): + buffer = self.get_current_buffer() + if hasattr(buffer, "session") and buffer.session == None: + return + if buffer.name not in buffer.session.settings["other_buffers"]["autoread_buffers"]: + buffer.session.settings["other_buffers"]["autoread_buffers"].append(buffer.name) + output.speak(_(u"The auto-reading of new tweets is enabled for this buffer"), True) + elif buffer.name in buffer.session.settings["other_buffers"]["autoread_buffers"]: + buffer.session.settings["other_buffers"]["autoread_buffers"].remove(buffer.name) + output.speak(_(u"The auto-reading of new tweets is disabled for this buffer"), True) + buffer.session.settings.write() + + def toggle_session_mute(self, *args, **kwargs): + buffer = self.get_best_buffer() + if buffer.session.settings["sound"]["session_mute"] == False: + buffer.session.settings["sound"]["session_mute"] = True + output.speak(_(u"Session mute on"), True) + elif buffer.session.settings["sound"]["session_mute"] == True: + buffer.session.settings["sound"]["session_mute"] = False + output.speak(_(u"Session mute off"), True) + buffer.session.settings.write() + + def toggle_buffer_mute(self, *args, **kwargs): + buffer = self.get_current_buffer() + if hasattr(buffer, "session") and buffer.session == None: + return + if buffer.name not in buffer.session.settings["other_buffers"]["muted_buffers"]: + buffer.session.settings["other_buffers"]["muted_buffers"].append(buffer.name) + output.speak(_(u"Buffer mute on"), True) + elif buffer.name in buffer.session.settings["other_buffers"]["muted_buffers"]: + buffer.session.settings["other_buffers"]["muted_buffers"].remove(buffer.name) + output.speak(_(u"Buffer mute off"), True) + buffer.session.settings.write() + + def view_documentation(self, *args, **kwargs): + lang = localization.get("documentation") + os.chdir("documentation/%s" % (lang,)) + webbrowser.open("manual.html") + os.chdir("../../") + + def view_changelog(self, *args, **kwargs): + lang = localization.get("documentation") + os.chdir("documentation/%s" % (lang,)) + webbrowser.open("changelog.html") + os.chdir("../../") + + def copy_to_clipboard(self, *args, **kwargs): + output.copy(self.get_current_buffer().get_message()) + output.speak(_(u"Copied")) + + def repeat_item(self, *args, **kwargs): + output.speak(self.get_current_buffer().get_message()) + + def execute_action(self, action, kwargs={}): + if hasattr(self, action): + getattr(self, action)(**kwargs) + + def update_buffers(self): + for i in self.buffers[:]: + if i.session != None and i.session.is_logged == True: + try: + i.start_stream(mandatory=True) + except Exception as err: + log.exception("Error %s starting buffer %s on account %s, with args %r and kwargs %r." % (str(err), i.name, i.account, i.args, i.kwargs)) + + def update_buffer(self, *args, **kwargs): + bf = self.get_current_buffer() + if not hasattr(bf, "start_stream"): + output.speak(_(u"Unable to update this buffer.")) + return + output.speak(_(u"Updating buffer...")) + n = bf.start_stream(mandatory=True, avoid_autoreading=True) + if n != None: + output.speak(_(u"{0} items retrieved").format(n,)) + + def buffer_title_changed(self, buffer): + if buffer.name.endswith("-timeline"): + title = _(u"Timeline for {}").format(buffer.username,) + elif buffer.name.endswith("-followers"): + title = _(u"Followers for {}").format(buffer.username,) + elif buffer.name.endswith("-friends"): + title = _(u"Friends for {}").format(buffer.username,) + elif buffer.name.endswith("-following"): + title = _(u"Following for {}").format(buffer.username,) + buffer_index = self.view.search(buffer.name, buffer.account) + self.view.set_page_title(buffer_index, title) + + def ocr_image(self, *args, **kwargs): + buffer = self.get_current_buffer() + if hasattr(buffer, "ocr_image"): + return buffer.ocr_image() + + def save_data_in_db(self): + for i in sessions.sessions: + sessions.sessions[i].save_persistent_data() + + def toggle_share_settings(self, shareable=True): + self.view.share.Enable(shareable) + + def mastodon_new_item(self, item, session_name, _buffers): + sound_to_play = None + for buff in _buffers: + buffer = self.search_buffer(buff, session_name) + if buffer == None or buffer.session.get_name() != session_name: + return + buffer.add_new_item(item) + if buff == "home_timeline": sound_to_play = "tweet_received.ogg" + elif buff == "mentions": sound_to_play = "mention_received.ogg" + elif buff == "direct_messages": sound_to_play = "dm_received.ogg" + elif buff == "sent": sound_to_play = "tweet_send.ogg" + elif buff == "followers" or buff == "following": sound_to_play = "update_followers.ogg" + elif buff == "notifications": sound_to_play = "new_event.ogg" + elif "timeline" in buff: sound_to_play = "tweet_timeline.ogg" + else: sound_to_play = None + if sound_to_play != None and buff not in buffer.session.settings["other_buffers"]["muted_buffers"]: + self.notify(buffer.session, sound_to_play) + + def mastodon_updated_item(self, item, session_name, _buffers): + sound_to_play = None + for buff in _buffers.keys(): + buffer = self.search_buffer(buff, session_name) + if buffer == None or buffer.session.get_name() != session_name: + return + buffer.update_item(item, _buffers[buff]) + + # Normally, we'd define this function on mastodon's session, but we need to access conversationListBuffer and here is the best place to do so. + def mastodon_new_conversation(self, conversation, session_name): + buffer = self.search_buffer("direct_messages", session_name) + if buffer == None: + log.error("Buffer not found: direct_messages on {}".format(session_name)) + return # Direct messages buffer is hidden + new_position, number_of_items = buffer.order_buffer([conversation]) + buffer.put_items_on_list(number_of_items) + if new_position > -1: + buffer.buffer.list.select_item(new_position) +# if number_of_items > 0: +# sound_to_play = "dm_received.ogg" +# if "direct_messages" not in buffer.session.settings["other_buffers"]["muted_buffers"]: +# self.notify(buffer.session, sound_to_play) + + def mastodon_error_post(self, name, reply_to, visibility, posts, language): + home = self.search_buffer("home_timeline", name) + if home != None: + wx.CallAfter(home.post_from_error, visibility=visibility, reply_to=reply_to, data=posts, lang=language) + + def change_buffer_title(self, name, buffer, title): + buffer_index = self.view.search(buffer, name) + if buffer_index != None and buffer_index > -1: + self.view.set_page_title(buffer_index, title) + + def report_error(self, *args, **kwargs): + """Redirects the user to the issue page on github""" + log.debug("Redirecting the user to report an error...") + webbrowser.open_new_tab(application.report_bugs_url) + + def update_profile(self, *args): + """Updates the users profile""" + log.debug("Update profile") + buffer = self.get_best_buffer() + handler = self.get_handler(buffer.session.type) + if handler: + handler.update_profile(buffer.session) + + def user_details(self, *args): + """Displays a user's profile.""" + log.debug("Showing user profile...") + buffer = self.get_best_buffer() + handler = self.get_handler(type=buffer.session.type) + if handler and hasattr(handler, 'user_details'): + handler.user_details(buffer) + + def openPostTimeline(self, *args, user=None): + """Opens selected user's posts timeline + Parameters: + args: Other argument. Useful when binding to widgets. + user: if specified, open this user timeline. It is currently mandatory, but could be optional when user selection is implemented in handler + """ + buffer = self.get_best_buffer() + handler = self.get_handler(type=buffer.session.type) + if handler and hasattr(handler, 'openPostTimeline'): + handler.openPostTimeline(self, buffer, user) + + def openFollowersTimeline(self, *args, user=None): + """Opens selected user's followers timeline + Parameters: + args: Other argument. Useful when binding to widgets. + user: if specified, open this user timeline. It is currently mandatory, but could be optional when user selection is implemented in handler + """ + buffer = self.get_best_buffer() + handler = self.get_handler(type=buffer.session.type) + if handler and hasattr(handler, 'openFollowersTimeline'): + handler.openFollowersTimeline(self, buffer, user) + + def openFollowingTimeline(self, *args, user=None): + """Opens selected user's following timeline + Parameters: + args: Other argument. Useful when binding to widgets. + user: if specified, open this user timeline. It is currently mandatory, but could be optional when user selection is implemented in handler + """ + buffer = self.get_best_buffer() + handler = self.get_handler(type=buffer.session.type) + if handler and hasattr(handler, 'openFollowingTimeline'): + handler.openFollowingTimeline(self, buffer, user) + + def community_timeline(self, *args, user=None): + buffer = self.get_best_buffer() + handler = self.get_handler(type=buffer.session.type) + if handler and hasattr(handler, 'community_timeline'): + handler.community_timeline(self, buffer) + + def create_filter(self, *args, **kwargs): + buffer = self.get_best_buffer() + handler = self.get_handler(type=buffer.session.type) + if handler and hasattr(handler, 'create_filter'): + handler.create_filter(self, buffer) + + def manage_filters(self, *args, **kwargs): + buffer = self.get_best_buffer() + handler = self.get_handler(type=buffer.session.type) + if handler and hasattr(handler, 'manage_filters'): + handler.manage_filters(self, buffer) \ No newline at end of file diff --git a/srcantiguo/controller/mastodon/__init__.py b/srcantiguo/controller/mastodon/__init__.py new file mode 100644 index 00000000..40a96afc --- /dev/null +++ b/srcantiguo/controller/mastodon/__init__.py @@ -0,0 +1 @@ +# -*- coding: utf-8 -*- diff --git a/srcantiguo/controller/mastodon/filters/__init__.py b/srcantiguo/controller/mastodon/filters/__init__.py new file mode 100644 index 00000000..40a96afc --- /dev/null +++ b/srcantiguo/controller/mastodon/filters/__init__.py @@ -0,0 +1 @@ +# -*- coding: utf-8 -*- diff --git a/srcantiguo/controller/mastodon/filters/create_filter.py b/srcantiguo/controller/mastodon/filters/create_filter.py new file mode 100644 index 00000000..98edbe9a --- /dev/null +++ b/srcantiguo/controller/mastodon/filters/create_filter.py @@ -0,0 +1,112 @@ +# -*- coding: utf-8 -*- +import widgetUtils +from wxUI.dialogs.mastodon.filters import create_filter as dialog +from mastodon import MastodonAPIError + +class CreateFilterController(object): + def __init__(self, session, filter_data=None): + super(CreateFilterController, self).__init__() + self.session = session + self.filter_data = filter_data + self.dialog = dialog.CreateFilterDialog(parent=None) + if self.filter_data is not None: + self.keywords = self.filter_data.get("keywords") + self.load_filter_data() + else: + self.keywords = [] + widgetUtils.connect_event(self.dialog.keyword_panel.add_button, widgetUtils.BUTTON_PRESSED, self.on_add_keyword) + widgetUtils.connect_event(self.dialog.keyword_panel.remove_button, widgetUtils.BUTTON_PRESSED, self.on_remove_keyword) + + def on_add_keyword(self, event): + """ Adds a keyword to the list. """ + keyword = self.dialog.keyword_panel.keyword_text.GetValue().strip() + whole_word = self.dialog.keyword_panel.whole_word_checkbox.GetValue() + if keyword: + for idx, kw in enumerate(self.keywords): + if kw['keyword'] == keyword: + return + keyword_data = { + 'keyword': keyword, + 'whole_word': whole_word + } + self.keywords.append(keyword_data) + self.dialog.keyword_panel.add_keyword(keyword, whole_word) + + def on_remove_keyword(self, event): + removed = self.dialog.keyword_panel.remove_keyword() + if removed is not None: + self.keywords.pop(removed) + + def get_expires_in_seconds(self, selection, value): + if selection == 0: + return None + if selection == 1: + return value * 3600 + elif selection == 2: + return value * 86400 + elif selection == 3: + return value * 604800 + elif selection == 4: + return value * 2592000 + return None + + def set_expires_in(self, seconds): + if seconds is None: + self.dialog.expiration_choice.SetSelection(0) + self.dialog.expiration_value.Enable(False) + return + if seconds % 2592000 == 0 and seconds >= 2592000: + self.dialog.expiration_choice.SetSelection(4) + self.dialog.expiration_value.SetValue(seconds // 2592000) + elif seconds % 604800 == 0 and seconds >= 604800: + self.dialog.expiration_choice.SetSelection(3) + self.dialog.expiration_value.SetValue(seconds // 604800) + elif seconds % 86400 == 0 and seconds >= 86400: + self.dialog.expiration_choice.SetSelection(2) + self.dialog.expiration_value.SetValue(seconds // 86400) + else: + self.dialog.expiration_choice.SetSelection(1) + self.dialog.expiration_value.SetValue(max(1, seconds // 3600)) + self.dialog.expiration_value.Enable(True) + + def load_filter_data(self): + if 'title' in self.filter_data: + self.dialog.name_ctrl.SetValue(self.filter_data['title']) + self.dialog.SetTitle(_("Update Filter: {}").format(self.filter_data['title'])) + if 'context' in self.filter_data: + for context in self.filter_data['context']: + if context in self.dialog.context_checkboxes: + self.dialog.context_checkboxes[context].SetValue(True) + if 'filter_action' in self.filter_data: + action_index = self.dialog.actions.index(self.filter_data['filter_action']) if self.filter_data['filter_action'] in self.dialog.actions else 0 + self.dialog.action_choice.SetSelection(action_index) + if 'expires_in' in self.filter_data: + self.set_expires_in(self.filter_data['expires_in']) + print(self.filter_data) + if 'keywords' in self.filter_data: + self.keywords = self.filter_data['keywords'] + self.dialog.keyword_panel.set_keywords(self.filter_data['keywords']) + + def get_filter_data(self): + filter_data = { + 'title': self.dialog.name_ctrl.GetValue(), + 'context': [], + 'filter_action': self.dialog.actions[self.dialog.action_choice.GetSelection()], + 'expires_in': self.get_expires_in_seconds(selection=self.dialog.expiration_choice.GetSelection(), value=self.dialog.expiration_value.GetValue()), + 'keywords_attributes': self.keywords + } + for context, checkbox in self.dialog.context_checkboxes.items(): + if checkbox.GetValue(): + filter_data['context'].append(context) + return filter_data + + def get_response(self): + response = self.dialog.ShowModal() + if response == widgetUtils.OK: + filter_data = self.get_filter_data() + if self.filter_data == None: + result = self.session.api.create_filter_v2(**filter_data) + else: + result = self.session.api.update_filter_v2(filter_id=self.filter_data['id'], **filter_data) + return result + return None \ No newline at end of file diff --git a/srcantiguo/controller/mastodon/filters/manage_filters.py b/srcantiguo/controller/mastodon/filters/manage_filters.py new file mode 100644 index 00000000..80e35ba6 --- /dev/null +++ b/srcantiguo/controller/mastodon/filters/manage_filters.py @@ -0,0 +1,99 @@ +# -*- coding: utf-8 -*- +import datetime +import wx +import widgetUtils +from wxUI import commonMessageDialogs +from wxUI.dialogs.mastodon.filters import manage_filters as dialog +from . import create_filter +from mastodon import MastodonError + +class ManageFiltersController(object): + def __init__(self, session): + super(ManageFiltersController, self).__init__() + self.session = session + self.selected_filter_idx = -1 + self.error_loading = False + self.dialog = dialog.ManageFiltersDialog(parent=None) + self.dialog.filter_list.Bind(wx.EVT_LIST_ITEM_SELECTED, self.on_filter_selected) + self.dialog.filter_list.Bind(wx.EVT_LIST_ITEM_DESELECTED, self.on_filter_deselected) + widgetUtils.connect_event(self.dialog.add_button, wx.EVT_BUTTON, self.on_add_filter) + widgetUtils.connect_event(self.dialog.edit_button, wx.EVT_BUTTON, self.on_edit_filter) + widgetUtils.connect_event(self.dialog.remove_button, wx.EVT_BUTTON, self.on_remove_filter) + self.load_filter_data() + + def on_filter_selected(self, event): + """Handle filter selection event.""" + self.selected_filter_idx = event.GetIndex() + self.dialog.edit_button.Enable() + self.dialog.remove_button.Enable() + + def on_filter_deselected(self, event): + """Handle filter deselection event.""" + self.selected_filter_idx = -1 + self.dialog.edit_button.Disable() + self.dialog.remove_button.Disable() + + def get_selected_filter_id(self): + """Get the ID of the currently selected filter.""" + if self.selected_filter_idx != -1: + return self.dialog.filter_list.GetItemData(self.selected_filter_idx) + return None + + def load_filter_data(self): + try: + filters = self.session.api.filters_v2() + self.dialog.filter_list.DeleteAllItems() + self.on_filter_deselected(None) + for i, filter_obj in enumerate(filters): + index = self.dialog.filter_list.InsertItem(i, filter_obj.title) + keyword_count = len(filter_obj.keywords) + self.dialog.filter_list.SetItem(index, 1, str(keyword_count)) + contexts = ", ".join(filter_obj.context) + self.dialog.filter_list.SetItem(index, 2, contexts) + self.dialog.filter_list.SetItem(index, 3, filter_obj.filter_action) + if filter_obj.expires_at: + expiry_str = filter_obj.expires_at.strftime("%Y-%m-%d %H:%M") + else: + expiry_str = _("Never") + self.dialog.filter_list.SetItem(index, 4, expiry_str) + self.dialog.filter_list.SetItemData(index, int(filter_obj.id) if isinstance(filter_obj.id, (int, str)) else 0) + except MastodonError as e: + commonMessageDialogs.error_loading_filters() + self.error_loading = True + + def on_add_filter(self, *args, **kwargs): + filterController = create_filter.CreateFilterController(self.session) + try: + filter = filterController.get_response() + self.load_filter_data() + except MastodonError as error: + commonMessageDialogs.error_adding_filter() + return self.on_add_filter() + + def on_edit_filter(self, *args, **kwargs): + filter_id = self.get_selected_filter_id() + if filter_id == None: + return + try: + filter_data = self.session.api.filter_v2(filter_id) + filterController = create_filter.CreateFilterController(self.session, filter_data=filter_data) + filterController.get_response() + self.load_filter_data() + except MastodonError as error: + commonMessageDialogs.error_adding_filter() + + def on_remove_filter(self, *args, **kwargs): + filter_id = self.get_selected_filter_id() + if filter_id == None: + return + dlg = commonMessageDialogs.remove_filter() + if dlg == widgetUtils.NO: + return + try: + self.session.api.delete_filter_v2(filter_id) + self.load_filter_data() + except MastodonError as error: + commonMessageDialogs.error_removing_filter() + + def get_response(self): + return self.dialog.ShowModal() == wx.ID_OK \ No newline at end of file diff --git a/srcantiguo/controller/mastodon/handler.py b/srcantiguo/controller/mastodon/handler.py new file mode 100644 index 00000000..a6e1e301 --- /dev/null +++ b/srcantiguo/controller/mastodon/handler.py @@ -0,0 +1,422 @@ +# -*- coding: utf-8 -*- +import wx +import logging +import mastodon +import output +from mastodon import MastodonError +from pubsub import pub +from mysc import restart +from mysc.thread_utils import call_threaded +from wxUI.dialogs.mastodon import search as search_dialogs +from wxUI.dialogs.mastodon import dialogs +from wxUI.dialogs import userAliasDialogs +from wxUI import commonMessageDialogs +from wxUI.dialogs.mastodon import updateProfile as update_profile_dialogs +from wxUI.dialogs.mastodon import showUserProfile, communityTimeline +from sessions.mastodon.utils import html_filter +from . import userActions, settings +from .filters import create_filter, manage_filters + +log = logging.getLogger("controller.mastodon.handler") + +class Handler(object): + + def __init__(self): + super(Handler, self).__init__() + # Structure to hold names for menu bar items. + # empty names mean the item will be Disabled. + self.menus = dict( + # In application menu. + updateProfile=_("Update Profile"), + menuitem_search=_("&Search"), + lists=None, + manageAliases=_("Manage user aliases"), + # In item menu. + compose=_("&Post"), + reply=_("Re&ply"), + share=_("&Boost"), + fav=_("&Add to favorites"), + unfav=_("Remove from favorites"), + view=_("&Show post"), + view_conversation=_("View conversa&tion"), + ocr=_("Read text in picture"), + delete=_("&Delete"), + # In user menu. + follow=_("&Actions..."), + timeline=_("&View timeline..."), + dm=_("Direct me&ssage"), + addAlias=_("Add a&lias"), + addToList=None, + removeFromList=None, + details=_("S&how user profile"), + favs=None, + # In buffer Menu. + community_timeline =_("Create c&ommunity timeline"), + filter=_("Create a &filter"), + manage_filters=_("&Manage filters") + ) + # Name for the "tweet" menu in the menu bar. + self.item_menu = _("&Post") + + def create_buffers(self, session, createAccounts=True, controller=None): + session.get_user_info() + name = session.get_name() + controller.accounts.append(name) + if createAccounts == True: + pub.sendMessage("core.create_account", name=name, session_id=session.session_id, logged=True) + root_position =controller.view.search(name, name) + for i in session.settings['general']['buffer_order']: + if i == 'home': + pub.sendMessage("createBuffer", buffer_type="BaseBuffer", session_type=session.type, buffer_title=_("Home"), parent_tab=root_position, start=False, kwargs=dict(parent=controller.view.nb, function="timeline_home", name="home_timeline", sessionObject=session, account=name, sound="tweet_received.ogg")) + elif i == 'local': + pub.sendMessage("createBuffer", buffer_type="BaseBuffer", session_type=session.type, buffer_title=_("Local"), parent_tab=root_position, start=False, kwargs=dict(parent=controller.view.nb, function="timeline_local", name="local_timeline", sessionObject=session, account=name, sound="tweet_received.ogg")) + elif i == 'federated': + pub.sendMessage("createBuffer", buffer_type="BaseBuffer", session_type=session.type, buffer_title=_("Federated"), parent_tab=root_position, start=False, kwargs=dict(parent=controller.view.nb, function="timeline_public", name="federated_timeline", sessionObject=session, account=name, sound="tweet_received.ogg")) + elif i == 'mentions': + pub.sendMessage("createBuffer", buffer_type="MentionsBuffer", session_type=session.type, buffer_title=_("Mentions"), parent_tab=root_position, start=False, kwargs=dict(parent=controller.view.nb, function="notifications", name="mentions", sessionObject=session, account=name, sound="mention_received.ogg")) + elif i == 'direct_messages': + pub.sendMessage("createBuffer", buffer_type="ConversationListBuffer", session_type=session.type, buffer_title=_("Direct messages"), parent_tab=root_position, start=False, kwargs=dict(compose_func="compose_conversation", parent=controller.view.nb, function="conversations", name="direct_messages", sessionObject=session, account=name, sound="dm_received.ogg")) + elif i == 'sent': + pub.sendMessage("createBuffer", buffer_type="BaseBuffer", session_type=session.type, buffer_title=_("Sent"), parent_tab=root_position, start=False, kwargs=dict(parent=controller.view.nb, function="account_statuses", name="sent", sessionObject=session, account=name, sound="tweet_received.ogg", id=session.db["user_id"])) + elif i == 'favorites': + pub.sendMessage("createBuffer", buffer_type="BaseBuffer", session_type=session.type, buffer_title=_("Favorites"), parent_tab=root_position, start=False, kwargs=dict(parent=controller.view.nb, function="favourites", name="favorites", sessionObject=session, account=name, sound="favourite.ogg")) + elif i == 'bookmarks': + pub.sendMessage("createBuffer", buffer_type="BaseBuffer", session_type=session.type, buffer_title=_("Bookmarks"), parent_tab=root_position, start=False, kwargs=dict(parent=controller.view.nb, function="bookmarks", name="bookmarks", sessionObject=session, account=name, sound="favourite.ogg")) + elif i == 'followers': + pub.sendMessage("createBuffer", buffer_type="UserBuffer", session_type=session.type, buffer_title=_("Followers"), parent_tab=root_position, start=False, kwargs=dict(parent=controller.view.nb, compose_func="compose_user", function="account_followers", name="followers", sessionObject=session, account=name, sound="update_followers.ogg", id=session.db["user_id"])) + elif i == 'following': + pub.sendMessage("createBuffer", buffer_type="UserBuffer", session_type=session.type, buffer_title=_("Following"), parent_tab=root_position, start=False, kwargs=dict(parent=controller.view.nb, compose_func="compose_user", function="account_following", name="following", sessionObject=session, account=name, sound="update_followers.ogg", id=session.db["user_id"])) + elif i == 'muted': + pub.sendMessage("createBuffer", buffer_type="UserBuffer", session_type=session.type, buffer_title=_("Muted users"), parent_tab=root_position, start=False, kwargs=dict(parent=controller.view.nb, compose_func="compose_user", function="mutes", name="muted", sessionObject=session, account=name)) + elif i == 'blocked': + pub.sendMessage("createBuffer", buffer_type="UserBuffer", session_type=session.type, buffer_title=_("Blocked users"), parent_tab=root_position, start=False, kwargs=dict(parent=controller.view.nb, compose_func="compose_user", function="blocks", name="blocked", sessionObject=session, account=name)) + elif i == 'notifications': + pub.sendMessage("createBuffer", buffer_type="NotificationsBuffer", session_type=session.type, buffer_title=_("Notifications"), parent_tab=root_position, start=False, kwargs=dict(parent=controller.view.nb, compose_func="compose_notification", function="notifications", name="notifications", sessionObject=session, account=name)) + pub.sendMessage("createBuffer", buffer_type="EmptyBuffer", session_type="base", buffer_title=_("Timelines"), parent_tab=root_position, start=False, kwargs=dict(parent=controller.view.nb, name="timelines", account=name)) + timelines_position =controller.view.search("timelines", name) + for i in session.settings["other_buffers"]["timelines"]: + pub.sendMessage("createBuffer", buffer_type="BaseBuffer", session_type=session.type, buffer_title=_("Timeline for {}").format(i), parent_tab=timelines_position, start=False, kwargs=dict(parent=controller.view.nb, function="account_statuses", name="{}-timeline".format(i), sessionObject=session, account=name, sound="tweet_timeline.ogg", id=i)) + for i in session.settings["other_buffers"]["followers_timelines"]: + pub.sendMessage("createBuffer", buffer_type="UserBuffer", session_type=session.type, buffer_title=_("Followers for {}").format(i), parent_tab=timelines_position, start=False, kwargs=dict(parent=controller.view.nb, compose_func="compose_user", function="account_followers", name="{}-followers".format(i,), sessionObject=session, account=name, sound="new_event.ogg", id=i)) + for i in session.settings["other_buffers"]["following_timelines"]: + pub.sendMessage("createBuffer", buffer_type="UserBuffer", session_type=session.type, buffer_title=_("Following for {}").format(i), parent_tab=timelines_position, start=False, kwargs=dict(parent=controller.view.nb, compose_func="compose_user", function="account_following", name="{}-following".format(i,), sessionObject=session, account=name, sound="new_event.ogg", id=i)) +# pub.sendMessage("createBuffer", buffer_type="EmptyBuffer", session_type="base", buffer_title=_("Lists"), parent_tab=root_position, start=False, kwargs=dict(parent=controller.view.nb, name="lists", name)) +# lists_position =controller.view.search("lists", session.db["user_name"]) +# for i in session.settings["other_buffers"]["lists"]: +# pub.sendMessage("createBuffer", buffer_type="ListBuffer", session_type=session.type, buffer_title=_(u"List for {}").format(i), parent_tab=lists_position, start=False, kwargs=dict(parent=controller.view.nb, function="list_timeline", name="%s-list" % (i,), sessionObject=session, name, bufferType=None, sound="list_tweet.ogg", list_id=utils.find_list(i, session.db["lists"]), include_ext_alt_text=True, tweet_mode="extended")) + pub.sendMessage("createBuffer", buffer_type="EmptyBuffer", session_type="base", buffer_title=_("Searches"), parent_tab=root_position, start=False, kwargs=dict(parent=controller.view.nb, name="searches", account=name)) + searches_position =controller.view.search("searches", name) + for term in session.settings["other_buffers"]["post_searches"]: + pub.sendMessage("createBuffer", buffer_type="SearchBuffer", session_type=session.type, buffer_title=_("Search for {}").format(term), parent_tab=searches_position, start=True, kwargs=dict(parent=controller.view.nb, compose_func="compose_post", function="search", name="%s-searchterm" % (term,), sessionObject=session, account=session.get_name(), sound="search_updated.ogg", q=term, result_type="statuses")) + pub.sendMessage("createBuffer", buffer_type="EmptyBuffer", session_type="base", buffer_title=_("Communities"), parent_tab=root_position, start=False, kwargs=dict(parent=controller.view.nb, name="communities", account=name)) + communities_position =controller.view.search("communities", name) + for community in session.settings["other_buffers"]["communities"]: + bufftype = _("Local") if community.split("@")[0] == "local" else _("federated") + community_name = community.split("@")[1].replace("https://", "") + title = _(f"{bufftype} timeline for {community_name}") + pub.sendMessage("createBuffer", buffer_type="CommunityBuffer", session_type=session.type, buffer_title=title, parent_tab=communities_position, start=True, kwargs=dict(parent=controller.view.nb, function="timeline", compose_func="compose_post", name=community, sessionObject=session, community_url=community.split("@")[1], account=session.get_name(), sound="search_updated.ogg", timeline=community.split("@")[0])) +# for i in session.settings["other_buffers"]["trending_topic_buffers"]: +# pub.sendMessage("createBuffer", buffer_type="TrendsBuffer", session_type=session.type, buffer_title=_("Trending topics for %s") % (i), parent_tab=root_position, start=False, kwargs=dict(parent=controller.view.nb, name="%s_tt" % (i,), sessionObject=session, name, trendsFor=i, sound="trends_updated.ogg")) + + def start_buffer(self, controller, buffer): + if hasattr(buffer, "finished_timeline") and buffer.finished_timeline == False: + change_title = True + else: + change_title = False + try: + buffer.start_stream(play_sound=False) + except Exception as err: + log.exception("Error %s starting buffer %s on account %s, with args %r and kwargs %r." % (str(err), buffer.name, buffer.account, buffer.args, buffer.kwargs)) + if change_title: + pub.sendMessage("buffer-title-changed", buffer=buffer) + + def open_conversation(self, controller, buffer): + # detect if we are in a community buffer. + # Community buffers are special because we'll need to retrieve the object locally at first. + if hasattr(buffer, "community_url"): + post = buffer.get_item_from_instance() + else: + post = buffer.get_item() + if post.reblog != None: + post = post.reblog + conversations_position =controller.view.search("direct_messages", buffer.session.get_name()) + pub.sendMessage("createBuffer", buffer_type="ConversationBuffer", session_type=buffer.session.type, buffer_title=_("Conversation with {0}").format(post.account.acct), parent_tab=conversations_position, start=True, kwargs=dict(parent=controller.view.nb, function="status_context", name="%s-conversation" % (post.id,), sessionObject=buffer.session, account=buffer.session.get_name(), sound="search_updated.ogg", post=post, id=post.id)) + + def follow(self, buffer): + if not hasattr(buffer, "get_item"): + return + # Community buffers are special because we'll need to retrieve the object locally at first. + if hasattr(buffer, "community_url"): + item = buffer.get_item_from_instance() + else: + item = buffer.get_item() + if buffer.type == "user": + users = [item.acct] + elif buffer.type == "baseBuffer": + if item.reblog != None: + users = [user.acct for user in item.reblog.mentions if user.id != buffer.session.db["user_id"]] + if item.reblog.account.acct not in users and item.account.id != buffer.session.db["user_id"]: + users.insert(0, item.reblog.account.acct) + else: + users = [user.acct for user in item.mentions if user.id != buffer.session.db["user_id"]] + if item.account.acct not in users: + users.insert(0, item.account.acct) + elif buffer.type == "notificationsBuffer": + if buffer.is_post(): + status = item.status + if status.reblog != None: + users = [user.acct for user in status.reblog.mentions if user.id != buffer.session.db["user_id"]] + if status.reblog.account.acct not in users and status.account.id != buffer.session.db["user_id"]: + users.insert(0, status.reblog.account.acct) + else: + users = [user.acct for user in status.mentions if user.id != buffer.session.db["user_id"]] + if hasattr(item, "account"): + acct = item.account.acct + else: + acct = item.acct + if acct not in users: + users.insert(0, item.account.acct) + u = userActions.userActions(buffer.session, users) + + def search(self, controller, session, value): + log.debug("Creating a new search...") + dlg = search_dialogs.searchDialog(value) + if dlg.ShowModal() == wx.ID_OK and dlg.term.GetValue() != "": + term = dlg.term.GetValue() + searches_position =controller.view.search("searches", session.get_name()) + if dlg.posts.GetValue() == True: + if term not in session.settings["other_buffers"]["post_searches"]: + session.settings["other_buffers"]["post_searches"].append(term) + session.settings.write() + pub.sendMessage("createBuffer", buffer_type="SearchBuffer", session_type=session.type, buffer_title=_("Search for {}").format(term), parent_tab=searches_position, start=True, kwargs=dict(parent=controller.view.nb, compose_func="compose_post", function="search", name="%s-searchterm" % (term,), sessionObject=session, account=session.get_name(), sound="search_updated.ogg", q=term, result_type="statuses")) + else: + log.error("A buffer for the %s search term is already created. You can't create a duplicate buffer." % (term,)) + return + elif dlg.users.GetValue() == True: + pub.sendMessage("createBuffer", buffer_type="UserBuffer", session_type=session.type, buffer_title=_("Search for {}").format(term), parent_tab=searches_position, start=True, kwargs=dict(parent=controller.view.nb, compose_func="compose_user", function="account_search", name="%s-searchUser" % (term,), sessionObject=session, account=session.get_name(), sound="search_updated.ogg", q=term)) + dlg.Destroy() + + # ToDo: explore how to play sound & save config differently. + # currently, TWBlue will play the sound and save the config for the timeline even if the buffer did not load or something else. + def open_timeline(self, controller, buffer): + if not hasattr(buffer, "get_item"): + return + if hasattr(buffer, "community_url"): + item = buffer.get_item_from_instance() + else: + item = buffer.get_item() + if buffer.type == "user": + users = [item.acct] + elif buffer.type == "baseBuffer": + if item.reblog != None: + users = [user.acct for user in item.reblog.mentions if user.id != buffer.session.db["user_id"]] + if item.reblog.account.acct not in users and item.account.id != buffer.session.db["user_id"]: + users.insert(0, item.reblog.account.acct) + else: + users = [user.acct for user in item.mentions if user.id != buffer.session.db["user_id"]] + if item.account.acct not in users and item.account.id != buffer.session.db["user_id"]: + users.insert(0, item.account.acct) + u = userActions.UserTimeline(buffer.session, users) + if u.dialog.ShowModal() == wx.ID_OK: + action = u.process_action() + if action == None: + return + user = u.user + if action == "posts": + self.openPostTimeline(controller, buffer, user) + elif action == "followers": + self.openFollowersTimeline(controller, buffer, user) + elif action == "following": + self.openFollowingTimeline(controller, buffer, user) + + def openPostTimeline(self, controller, buffer, user): + """Opens post timeline for user""" + if user.statuses_count == 0: + dialogs.no_posts() + return + if user.id in buffer.session.settings["other_buffers"]["timelines"]: + commonMessageDialogs.timeline_exist() + return + timelines_position =controller.view.search("timelines", buffer.session.get_name()) + pub.sendMessage("createBuffer", buffer_type="BaseBuffer", session_type=buffer.session.type, buffer_title=_("Timeline for {}").format(user.username,), parent_tab=timelines_position, start=True, kwargs=dict(parent=controller.view.nb, function="account_statuses", name="%s-timeline" % (user.id,), sessionObject=buffer.session, account=buffer.session.get_name(), sound="tweet_timeline.ogg", id=user.id)) + buffer.session.settings["other_buffers"]["timelines"].append(user.id) + buffer.session.sound.play("create_timeline.ogg") + buffer.session.settings.write() + + def openFollowersTimeline(self, controller, buffer, user): + """Open followers timeline for user""" + if user.followers_count == 0: + dialogs.no_followers() + return + if user.id in buffer.session.settings["other_buffers"]["followers_timelines"]: + commonMessageDialogs.timeline_exist() + return + timelines_position =controller.view.search("timelines", buffer.session.get_name()) + pub.sendMessage("createBuffer", buffer_type="UserBuffer", session_type=buffer.session.type, buffer_title=_("Followers for {}").format(user.username,), parent_tab=timelines_position, start=True, kwargs=dict(parent=controller.view.nb, compose_func="compose_user", function="account_followers", name="%s-followers" % (user.id,), sessionObject=buffer.session, account=buffer.session.get_name(), sound="new_event.ogg", id=user.id)) + buffer.session.settings["other_buffers"]["followers_timelines"].append(user.id) + buffer.session.sound.play("create_timeline.ogg") + buffer.session.settings.write() + + def openFollowingTimeline(self, controller, buffer, user): + """Open following timeline for user""" + if user.following_count == 0: + dialogs.no_following() + return + if user.id in buffer.session.settings["other_buffers"]["following_timelines"]: + commonMessageDialogs.timeline_exist() + return + timelines_position =controller.view.search("timelines", buffer.session.get_name()) + pub.sendMessage("createBuffer", buffer_type="UserBuffer", session_type=buffer.session.type, buffer_title=_("Following for {}").format(user.username,), parent_tab=timelines_position, start=True, kwargs=dict(parent=controller.view.nb, compose_func="compose_user", function="account_following", name="%s-followers" % (user.id,), sessionObject=buffer.session, account=buffer.session.get_name(), sound="new_event.ogg", id=user.id)) + buffer.session.settings["other_buffers"]["following_timelines"].append(user.id) + buffer.session.sound.play("create_timeline.ogg") + buffer.session.settings.write() + + def account_settings(self, buffer, controller): + d = settings.accountSettingsController(buffer, controller) + if d.response == wx.ID_OK: + d.save_configuration() + if d.needs_restart == True: + commonMessageDialogs.needs_restart() + buffer.session.settings.write() + buffer.session.save_persistent_data() + restart.restart_program() + + def add_alias(self, buffer): + if not hasattr(buffer, "get_item"): + return + item = buffer.get_item() + if buffer.type == "user": + users = [item.acct] + elif buffer.type == "baseBuffer": + if item.reblog != None: + users = [user.acct for user in item.reblog.mentions if user.id != buffer.session.db["user_id"]] + if item.reblog.account.acct not in users and item.account.id != buffer.session.db["user_id"]: + users.insert(0, item.reblog.account.acct) + else: + users = [user.acct for user in item.mentions if user.id != buffer.session.db["user_id"]] + if item.account.acct not in users: + users.insert(0, item.account.acct) + dlg = userAliasDialogs.addAliasDialog(_("Add an user alias"), users) + if dlg.get_response() == wx.ID_OK: + user, alias = dlg.get_user() + if user == "" or alias == "": + return + try: + full_user = buffer.session.api.account_lookup(user) + except Exception as e: + log.exception("Error adding alias to user {}.".format(user)) + return + buffer.session.settings["user-aliases"][str(full_user.id)] = alias + buffer.session.settings.write() + output.speak(_("Alias has been set correctly for {}.").format(user)) + pub.sendMessage("alias-added") + + def update_profile(self, session): + """Updates the users dialog""" + profile = session.api.me() + data = { + 'display_name': profile.display_name, + 'note': html_filter(profile.note), + 'header': profile.header, + 'avatar': profile.avatar, + 'fields': [(field.name, html_filter(field.value)) for field in profile.fields], + 'locked': profile.locked, + 'bot': profile.bot, + # discoverable could be None, set it to False + 'discoverable': profile.discoverable if profile.discoverable else False, + } + log.debug(f"Received data_ {data['fields']}") + dialog = update_profile_dialogs.UpdateProfileDialog(**data) + if dialog.ShowModal() != wx.ID_OK: + log.debug("User canceled dialog") + return + updated_data = dialog.data + if updated_data == data: + log.debug("No profile info was changed.") + return + # remove data that hasn't been updated + for key in data: + if data[key] == updated_data[key]: + del updated_data[key] + log.debug(f"Updating users profile with: {updated_data}") + call_threaded(session.api_call, "account_update_credentials", _("Update profile"), report_success=True, **updated_data) + + def user_details(self, buffer): + """Displays user profile in a dialog. + This works as long as the focused item hass a 'account' key.""" + if not hasattr(buffer, 'get_item'): + return # Tell user? + item = buffer.get_item() + if not item: + return # empty buffer + + log.debug(f"Opening user profile. dictionary: {item}") + mentionedUsers = list() + holdUser = item.account if item.get('account') else None + if hasattr(item, "type") and item.type in ["status", "mention", "reblog", "favourite", "update", "poll"]: # statuses in Notification buffers + item = item.status + if item.get('username'): # account dict + holdUser = item + elif isinstance(item.get('mentions'), list): + # mentions in statuses + if item.reblog: + item = item.reblog + mentionedUsers = [(user.acct, user.id) for user in item.mentions] + holdUser = item.account + if not holdUser: + dialogs.no_user() + return + + if len(mentionedUsers) == 0: + user = holdUser + else: + mentionedUsers.insert(0, (holdUser.display_name, holdUser.username, holdUser.id)) + mentionedUsers = list(set(mentionedUsers)) + selectedUser = showUserProfile.selectUserDialog(mentionedUsers) + if not selectedUser: + return # Canceled selection + elif selectedUser[-1] == holdUser.id: + user = holdUser + else: # We don't have this user's dictionary, get it! + user = buffer.session.api.account(selectedUser[-1]) + dlg = showUserProfile.ShowUserProfile(user) + dlg.ShowModal() + + def community_timeline(self, controller, buffer): + dlg = communityTimeline.CommunityTimeline() + if dlg.ShowModal() != wx.ID_OK: + return + url = dlg.url.GetValue() + bufftype = dlg.get_action() + local_api = mastodon.Mastodon(api_base_url=url) + try: + instance = local_api.instance() + except MastodonError: + commonMessageDialogs.invalid_instance() + return + if bufftype == "local": + title = _(f"Local timeline for {url.replace('https://', '')}") + else: + title = _(f"Federated timeline for {url}") + bufftype = "public" + dlg.Destroy() + tl_info = f"{bufftype}@{url}" + if tl_info in buffer.session.settings["other_buffers"]["communities"]: + return # buffer already exists. + buffer.session.settings["other_buffers"]["communities"].append(tl_info) + buffer.session.settings.write() + communities_position =controller.view.search("communities", buffer.session.get_name()) + pub.sendMessage("createBuffer", buffer_type="CommunityBuffer", session_type=buffer.session.type, buffer_title=title, parent_tab=communities_position, start=True, kwargs=dict(parent=controller.view.nb, function="timeline", name=tl_info, sessionObject=buffer.session, account=buffer.session.get_name(), sound="tweet_timeline.ogg", community_url=url, timeline=bufftype)) + + def create_filter(self, controller, buffer): + filterController = create_filter.CreateFilterController(buffer.session) + try: + filter = filterController.get_response() + except MastodonError as error: + log.exception("Error adding filter.") + commonMessageDialogs.error_adding_filter() + return self.create_filter(controller=controller, buffer=buffer) + + def manage_filters(self, controller, buffer): + manageFiltersController = manage_filters.ManageFiltersController(buffer.session) + manageFiltersController.get_response() \ No newline at end of file diff --git a/srcantiguo/controller/mastodon/messages.py b/srcantiguo/controller/mastodon/messages.py new file mode 100644 index 00000000..48b2b678 --- /dev/null +++ b/srcantiguo/controller/mastodon/messages.py @@ -0,0 +1,462 @@ +# -*- coding: utf-8 -*- +import os +import re +import wx +import logging +import widgetUtils +import config +import output +import languageHandler +from twitter_text import parse_tweet, config +from mastodon import MastodonError +from controller import messages +from sessions.mastodon import templates +from wxUI.dialogs.mastodon import postDialogs +from extra.autocompletionUsers import completion +from . import userList + +log = logging.getLogger("controller.mastodon.messages") + +def character_count(post_text, post_cw, character_limit=500): + # We will use text for counting character limit only. + full_text = post_text+post_cw + # find remote users as Mastodon doesn't count the domain in char limit. + users = re.findall("@[\w\.-]+@[\w\.-]+", full_text) + for user in users: + domain = user.split("@")[-1] + full_text = full_text.replace("@"+domain, "") + options = config.config.get("defaults") + options.update(max_weighted_tweet_length=character_limit, default_weight=100) + parsed = parse_tweet(full_text, options=options) + return parsed.weightedLength + +class post(messages.basicMessage): + def __init__(self, session, title, caption, text="", *args, **kwargs): + # take max character limit from session as this might be different for some instances. + self.max = session.char_limit + self.title = title + self.session = session + langs = self.session.supported_languages + display_langs = [l.name for l in langs] + self.message = postDialogs.Post(caption=caption, text=text, languages=display_langs, *args, **kwargs) + self.message.SetTitle(title) + self.message.text.SetInsertionPoint(len(self.message.text.GetValue())) + self.set_language(self.session.default_language) + widgetUtils.connect_event(self.message.spellcheck, widgetUtils.BUTTON_PRESSED, self.spellcheck) + widgetUtils.connect_event(self.message.text, widgetUtils.ENTERED_TEXT, self.text_processor) + widgetUtils.connect_event(self.message.spoiler, widgetUtils.ENTERED_TEXT, self.text_processor) + widgetUtils.connect_event(self.message.translate, widgetUtils.BUTTON_PRESSED, self.translate) + widgetUtils.connect_event(self.message.add, widgetUtils.BUTTON_PRESSED, self.on_attach) + widgetUtils.connect_event(self.message.remove_attachment, widgetUtils.BUTTON_PRESSED, self.remove_attachment) + widgetUtils.connect_event(self.message.autocomplete_users, widgetUtils.BUTTON_PRESSED, self.autocomplete_users) + widgetUtils.connect_event(self.message.add_post, widgetUtils.BUTTON_PRESSED, self.add_post) + widgetUtils.connect_event(self.message.remove_post, widgetUtils.BUTTON_PRESSED, self.remove_post) + self.attachments = [] + self.thread = [] + self.text_processor() + + def autocomplete_users(self, *args, **kwargs): + c = completion.autocompletionUsers(self.message, self.session.session_id) + c.show_menu() + + def add_post(self, event, update_gui=True, *args, **kwargs): + text = self.message.text.GetValue() + attachments = self.attachments[::] + postdata = dict(text=text, attachments=attachments, sensitive=self.message.sensitive.GetValue(), spoiler_text=None) + if postdata.get("sensitive") == True: + postdata.update(spoiler_text=self.message.spoiler.GetValue()) + + # Check for scheduled post + if hasattr(self.message, 'get_scheduled_at'): + scheduled_at = self.message.get_scheduled_at() + if scheduled_at: + postdata['scheduled_at'] = scheduled_at + + self.thread.append(postdata) + self.attachments = [] + if update_gui: + self.message.reset_controls() + self.message.add_item(item=[text, len(attachments)], list_type="post") + self.message.text.SetFocus() + self.text_processor() + + def get_post_data(self): + self.add_post(event=None, update_gui=False) + return self.thread + + def set_language(self, language=None): + """ Attempt to set the default language for a post. """ + # language can be provided in a post (replying or recovering from errors). + # Also it can be provided in user preferences (retrieved in the session). + # If no language is provided, let's fallback to TWBlue's user language. + if language != None: + language_code = language + else: + # Let's cut langcode_VARIANT to ISO-639 two letter code only. + language_code = languageHandler.curLang[:2] + for lang in self.session.supported_languages: + if lang.code == language_code: + self.message.language.SetStringSelection(lang.name) + + def set_post_data(self, visibility, data, language): + if len(data) == 0: + return + if len(data) > 1: + self.thread = data[:-1] + for p in self.thread: + self.message.add_item(item=[p.get("text") or "", len(p.get("attachments") or [])], list_type="post") + post = data[-1] + self.attachments = post.get("attachments") or [] + self.message.text.SetValue(post.get("text") or "") + self.message.sensitive.SetValue(post.get("sensitive") or False) + self.message.spoiler.SetValue(post.get("spoiler_text") or "") + visibility_settings = dict(public=0, unlisted=1, private=2, direct=3) + self.message.visibility.SetSelection(visibility_settings.get(visibility)) + self.message.on_sensitivity_changed() + for attachment in self.attachments: + self.message.add_item(item=[attachment["file"], attachment["type"], attachment["description"]]) + self.set_language(language) + self.text_processor() + + def text_processor(self, *args, **kwargs): + text = self.message.text.GetValue() + cw = self.message.spoiler.GetValue() + results = character_count(text, cw, character_limit=self.max) + self.message.SetTitle(_("%s - %s of %d characters") % (self.title, results, self.max)) + if results > self.max: + self.session.sound.play("max_length.ogg") + if len(self.thread) > 0: + if hasattr(self.message, "posts"): + self.message.posts.Enable(True) + self.message.remove_post.Enable(True) + else: + self.message.posts.Enable(False) + self.message.remove_post.Enable(False) + if len(self.attachments) > 0: + self.message.attachments.Enable(True) + self.message.remove_attachment.Enable(True) + else: + self.message.attachments.Enable(False) + self.message.remove_attachment.Enable(False) + if len(self.message.text.GetValue()) > 0 or len(self.attachments) > 0: + self.message.add_post.Enable(True) + else: + self.message.add_post.Enable(False) + + def remove_post(self, *args, **kwargs): + post = self.message.posts.GetFocusedItem() + if post > -1 and len(self.thread) > post: + self.thread.pop(post) + self.message.remove_item(list_type="post") + self.text_processor() + self.message.text.SetFocus() + + def can_attach(self): + if len(self.attachments) == 0: + return True + elif len(self.attachments) == 1 and (self.attachments[0]["type"] == "poll" or self.attachments[0]["type"] == "video" or self.attachments[0]["type"] == "audio"): + return False + elif len(self.attachments) < 4: + return True + return False + + def on_attach(self, *args, **kwargs): + can_attach = self.can_attach() + menu = self.message.attach_menu(can_attach) + self.message.Bind(wx.EVT_MENU, self.on_attach_image, self.message.add_image) + self.message.Bind(wx.EVT_MENU, self.on_attach_video, self.message.add_video) + self.message.Bind(wx.EVT_MENU, self.on_attach_audio, self.message.add_audio) + self.message.Bind(wx.EVT_MENU, self.on_attach_poll, self.message.add_poll) + self.message.PopupMenu(menu, self.message.add.GetPosition()) + + def on_attach_image(self, *args, **kwargs): + can_attach = self.can_attach() + big_media_present = False + for a in self.attachments: + if a["type"] == "video" or a["type"] == "audio" or a["type"] == "poll": + big_media_present = True + break + if can_attach == False or big_media_present == True: + return self.message.unable_to_attach_file() + image, description = self.message.get_image() + if image != None: + if image.endswith("gif"): + image_type = "gif" + else: + image_type = "photo" + imageInfo = {"type": image_type, "file": image, "description": description} + if len(self.attachments) > 0 and image_type == "gif": + return self.message.unable_to_attach_file() + self.attachments.append(imageInfo) + self.message.add_item(item=[os.path.basename(imageInfo["file"]), imageInfo["type"], imageInfo["description"]]) + self.text_processor() + + def on_attach_video(self, *args, **kwargs): + if len(self.attachments) >= 4: + return self.message.unable_to_attach_file() + can_attach = self.can_attach() + big_media_present = False + for a in self.attachments: + if a["type"] == "video" or a["type"] == "audio" or a["type"] == "poll": + big_media_present = True + break + if can_attach == False or big_media_present == True: + return self.message.unable_to_attach_file() + video, description = self.message.get_video() + if video != None: + videoInfo = {"type": "video", "file": video, "description": description} + self.attachments.append(videoInfo) + self.message.add_item(item=[os.path.basename(videoInfo["file"]), videoInfo["type"], videoInfo["description"]]) + self.text_processor() + + def on_attach_audio(self, *args, **kwargs): + if len(self.attachments) >= 4: + return self.message.unable_to_attach_file() + can_attach = self.can_attach() + big_media_present = False + for a in self.attachments: + if a["type"] == "video" or a["type"] == "audio" or a["type"] == "poll": + big_media_present = True + break + if can_attach == False or big_media_present == True: + return self.message.unable_to_attach_file() + audio, description = self.message.get_audio() + if audio != None: + audioInfo = {"type": "audio", "file": audio, "description": description} + self.attachments.append(audioInfo) + self.message.add_item(item=[os.path.basename(audioInfo["file"]), audioInfo["type"], audioInfo["description"]]) + self.text_processor() + + def on_attach_poll(self, *args, **kwargs): + if len(self.attachments) > 0: + return self.message.unable_to_attach_poll() + can_attach = self.can_attach() + big_media_present = False + for a in self.attachments: + if a["type"] == "video" or a["type"] == "audio" or a["type"] == "poll": + big_media_present = True + break + if can_attach == False or big_media_present == True: + return self.message.unable_to_attach_file() + dlg = postDialogs.poll() + if dlg.ShowModal() == wx.ID_OK: + day = 86400 + periods = [300, 1800, 3600, 21600, day, day*2, day*3, day*4, day*5, day*6, day*7] + period = periods[dlg.period.GetSelection()] + poll_options = dlg.get_options() + multiple = dlg.multiple.GetValue() + hide_totals = dlg.hide_votes.GetValue() + data = dict(type="poll", file="", description=_("Poll with {} options").format(len(poll_options)), options=poll_options, expires_in=period, multiple=multiple, hide_totals=hide_totals) + self.attachments.append(data) + self.message.add_item(item=[data["file"], data["type"], data["description"]]) + self.text_processor() + dlg.Destroy() + + def get_data(self): + self.add_post(event=None, update_gui=False) + return self.thread + + def get_visibility(self): + visibility_settings = ["public", "unlisted", "private", "direct"] + return visibility_settings[self.message.visibility.GetSelection()] + + def get_language(self): + langs = self.session.supported_languages + lang = self.message.language.GetSelection() + if lang >= 0: + return langs[lang].code + return None + + def set_visibility(self, setting): + visibility_settings = ["public", "unlisted", "private", "direct"] + visibility_setting = visibility_settings.index(setting) + self.message.visibility.SetSelection(setting) + +class editPost(post): + def __init__(self, session, item, title, caption, *args, **kwargs): + """ Initialize edit dialog with existing post data. + + Note: Per Mastodon API, visibility and language cannot be changed when editing. + These fields will be displayed but disabled in the UI. + """ + # Extract text from post + if item.reblog != None: + item = item.reblog + text = item.content + # Remove HTML tags from content + import re + text = re.sub('<[^<]+?>', '', text) + # Initialize parent class + super(editPost, self).__init__(session, title, caption, text=text, *args, **kwargs) + # Store the post ID for editing + self.post_id = item.id + # Set visibility (read-only, cannot be changed) + visibility_settings = dict(public=0, unlisted=1, private=2, direct=3) + self.message.visibility.SetSelection(visibility_settings.get(item.visibility, 0)) + self.message.visibility.Enable(False) # Disable as it cannot be edited + # Set language (read-only, cannot be changed) + if item.language: + self.set_language(item.language) + self.message.language.Enable(False) # Disable as it cannot be edited + # Set sensitive content and spoiler + if item.sensitive: + self.message.sensitive.SetValue(True) + if item.spoiler_text: + self.message.spoiler.ChangeValue(item.spoiler_text) + self.message.on_sensitivity_changed() + # Load existing poll (if any) + # Note: You cannot have both media and a poll, so check poll first + if hasattr(item, 'poll') and item.poll is not None: + log.debug("Loading existing poll for post {}".format(self.post_id)) + poll = item.poll + # Extract poll options (just the text, not the votes) + poll_options = [option.title for option in poll.options] + # Calculate expires_in based on current time and expires_at + # For editing, we need to provide a new expiration time + # Since we can't get the original expires_in, use a default or let user configure + # For now, use 1 day (86400 seconds) as default + expires_in = 86400 + if hasattr(poll, 'expires_at') and poll.expires_at and not poll.expired: + # Calculate remaining time if poll hasn't expired + from dateutil import parser as date_parser + import datetime + try: + expires_at = poll.expires_at + if isinstance(expires_at, str): + expires_at = date_parser.parse(expires_at) + now = datetime.datetime.now(datetime.timezone.utc) + remaining = (expires_at - now).total_seconds() + if remaining > 0: + expires_in = int(remaining) + except Exception as e: + log.warning("Could not calculate poll expiration: {}".format(e)) + + poll_info = { + "type": "poll", + "file": "", + "description": _("Poll with {} options").format(len(poll_options)), + "options": poll_options, + "expires_in": expires_in, + "multiple": poll.multiple if hasattr(poll, 'multiple') else False, + "hide_totals": poll.voters_count == 0 if hasattr(poll, 'voters_count') else False + } + self.attachments.append(poll_info) + self.message.add_item(item=[poll_info["file"], poll_info["type"], poll_info["description"]]) + log.debug("Loaded poll with {} options. WARNING: Editing will reset all votes!".format(len(poll_options))) + # Load existing media attachments (only if no poll) + elif hasattr(item, 'media_attachments'): + log.debug("Loading existing media attachments for post {}".format(self.post_id)) + log.debug("Item has media_attachments attribute, count: {}".format(len(item.media_attachments))) + if len(item.media_attachments) > 0: + for media in item.media_attachments: + log.debug("Processing media: id={}, type={}, url={}".format(media.id, media.type, media.url)) + media_info = { + "id": media.id, # Keep the existing media ID + "type": media.type, + "file": media.url, # URL of existing media + "description": media.description or "" + } + # Include focus point if available + if hasattr(media, 'meta') and media.meta and 'focus' in media.meta: + focus = media.meta['focus'] + media_info["focus"] = (focus.get('x'), focus.get('y')) + log.debug("Added focus point: {}".format(media_info["focus"])) + self.attachments.append(media_info) + # Display in the attachment list + display_name = media.url.split('/')[-1] + log.debug("Adding item to UI: name={}, type={}, desc={}".format(display_name, media.type, media.description or "")) + self.message.add_item(item=[display_name, media.type, media.description or ""]) + log.debug("Total attachments loaded: {}".format(len(self.attachments))) + else: + log.debug("media_attachments list is empty") + else: + log.debug("Item has no poll or media attachments") + # Update text processor to reflect the loaded content + self.text_processor() + +class viewPost(post): + def __init__(self, session, post, offset_hours=0, date="", item_url=""): + self.session = session + if post.reblog != None: + post = post.reblog + self.post_id = post.id + author = post.account.display_name if post.account.display_name != "" else post.account.username + title = _(u"Post from {}").format(author) + image_description = templates.process_image_descriptions(post.media_attachments) + text = templates.process_text(post, safe=False) + date = templates.process_date(post.created_at, relative_times=False, offset_hours=offset_hours) + privacy_settings = dict(public=_("Public"), unlisted=_("Not listed"), private=_("followers only"), direct=_("Direct")) + privacy = privacy_settings.get(post.visibility) + boost_count = str(post.reblogs_count) + favs_count = str(post.favourites_count) + # Gets the client from where this post was made. + source_obj = post.get("application") + if source_obj == None: + source = _("Remote instance") + else: + source = source_obj.get("name") + self.message = postDialogs.viewPost(text=text, boosts_count=boost_count, favs_count=favs_count, source=source, date=date, privacy=privacy) + participants = [post.account.id] + [account.id for account in post.mentions] + if self.session.db["user_id"] in participants: + self.message.mute.Enable(True) + if post.muted: + self.message.mute.SetLabel(_("Unmute conversation")) + widgetUtils.connect_event(self.message.mute, widgetUtils.BUTTON_PRESSED, self.mute_unmute) + self.message.SetTitle(title) + if image_description != "": + self.message.image_description.Enable(True) + self.message.image_description.ChangeValue(image_description) + widgetUtils.connect_event(self.message.spellcheck, widgetUtils.BUTTON_PRESSED, self.spellcheck) + if item_url != "": + self.message.enable_button("share") + widgetUtils.connect_event(self.message.share, widgetUtils.BUTTON_PRESSED, self.share) + self.item_url = item_url + widgetUtils.connect_event(self.message.translateButton, widgetUtils.BUTTON_PRESSED, self.translate) + widgetUtils.connect_event(self.message.boosts_button, widgetUtils.BUTTON_PRESSED, self.on_boosts) + widgetUtils.connect_event(self.message.favorites_button, widgetUtils.BUTTON_PRESSED, self.on_favorites) + self.message.ShowModal() + + # We won't need text_processor in this dialog, so let's avoid it. + def text_processor(self): + pass + + def mute_unmute(self, *args, **kwargs): + post = self.session.api.status(self.post_id) + if post.muted == True: + action = "status_unmute" + new_label = _("Mute conversation") + msg = _("Conversation unmuted.") + else: + action = "status_mute" + new_label = _("Unmute conversation") + msg = _("Conversation muted.") + try: + getattr(self.session.api, action)(self.post_id) + self.message.mute.SetLabel(new_label) + output.speak(msg) + except MastodonError: + return + + + def on_boosts(self, *args, **kwargs): + users = self.session.api.status_reblogged_by(self.post_id) + title = _("people who boosted this post") + user_list = userList.MastodonUserList(session=self.session, users=users, title=title) + + def on_favorites(self, *args, **kwargs): + users = self.session.api.status_favourited_by(self.post_id) + title = _("people who favorited this post") + user_list = userList.MastodonUserList(session=self.session, users=users, title=title) + + def share(self, *args, **kwargs): + if hasattr(self, "item_url"): + output.copy(self.item_url) + output.speak(_("Link copied to clipboard.")) + +class text(messages.basicMessage): + def __init__(self, title, text="", *args, **kwargs): + self.title = title + self.message = postDialogs.viewText(title=title, text=text, *args, **kwargs) + self.message.text.SetInsertionPoint(len(self.message.text.GetValue())) + widgetUtils.connect_event(self.message.spellcheck, widgetUtils.BUTTON_PRESSED, self.spellcheck) + widgetUtils.connect_event(self.message.translateButton, widgetUtils.BUTTON_PRESSED, self.translate) \ No newline at end of file diff --git a/srcantiguo/controller/mastodon/settings.py b/srcantiguo/controller/mastodon/settings.py new file mode 100644 index 00000000..be615baa --- /dev/null +++ b/srcantiguo/controller/mastodon/settings.py @@ -0,0 +1,224 @@ +# -*- coding: utf-8 -*- +import os +import threading +import logging +import sound_lib +import paths +import widgetUtils +import output +from collections import OrderedDict +from wxUI import commonMessageDialogs +from wxUI.dialogs.mastodon import configuration +from extra.autocompletionUsers import manage +from extra.autocompletionUsers.mastodon import scan +from extra.ocr import OCRSpace +from controller.settings import globalSettingsController +from . templateEditor import EditTemplate + +log = logging.getLogger("Settings") + +class accountSettingsController(globalSettingsController): + def __init__(self, buffer, window): + self.user = buffer.session.db["user_name"] + self.buffer = buffer + self.window = window + self.config = buffer.session.settings + self.dialog = configuration.configurationDialog() + self.create_config() + self.needs_restart = False + self.is_started = True + + def create_config(self): + self.dialog.create_general_account() + widgetUtils.connect_event(self.dialog.general.userAutocompletionScan, widgetUtils.BUTTON_PRESSED, self.on_autocompletion_scan) + widgetUtils.connect_event(self.dialog.general.userAutocompletionManage, widgetUtils.BUTTON_PRESSED, self.on_autocompletion_manage) + self.dialog.set_value("general", "disable_streaming", self.config["general"]["disable_streaming"]) + self.dialog.set_value("general", "relative_time", self.config["general"]["relative_times"]) + self.dialog.set_value("general", "read_preferences_from_instance", self.config["general"]["read_preferences_from_instance"]) + self.dialog.set_value("general", "show_screen_names", self.config["general"]["show_screen_names"]) + self.dialog.set_value("general", "hide_emojis", self.config["general"]["hide_emojis"]) + self.dialog.set_value("general", "itemsPerApiCall", self.config["general"]["max_posts_per_call"]) + self.dialog.set_value("general", "reverse_timelines", self.config["general"]["reverse_timelines"]) + boost_mode = self.config["general"]["boost_mode"] + if boost_mode == "ask": + self.dialog.set_value("general", "ask_before_boost", True) + else: + self.dialog.set_value("general", "ask_before_boost", False) + self.dialog.set_value("general", "persist_size", str(self.config["general"]["persist_size"])) + self.dialog.set_value("general", "load_cache_in_memory", self.config["general"]["load_cache_in_memory"]) + self.dialog.create_reporting() + self.dialog.set_value("reporting", "speech_reporting", self.config["reporting"]["speech_reporting"]) + self.dialog.set_value("reporting", "braille_reporting", self.config["reporting"]["braille_reporting"]) + post_template = self.config["templates"]["post"] + conversation_template = self.config["templates"]["conversation"] + person_template = self.config["templates"]["person"] + self.dialog.create_templates(post_template=post_template, conversation_template=conversation_template, person_template=person_template) + widgetUtils.connect_event(self.dialog.templates.post, widgetUtils.BUTTON_PRESSED, self.edit_post_template) + widgetUtils.connect_event(self.dialog.templates.conversation, widgetUtils.BUTTON_PRESSED, self.edit_conversation_template) + widgetUtils.connect_event(self.dialog.templates.person, widgetUtils.BUTTON_PRESSED, self.edit_person_template) + self.dialog.create_other_buffers() + buffer_values = self.get_buffers_list() + self.dialog.buffers.insert_buffers(buffer_values) + self.dialog.buffers.connect_hook_func(self.toggle_buffer_active) + widgetUtils.connect_event(self.dialog.buffers.toggle_state, widgetUtils.BUTTON_PRESSED, self.toggle_state) + widgetUtils.connect_event(self.dialog.buffers.up, widgetUtils.BUTTON_PRESSED, self.dialog.buffers.move_up) + widgetUtils.connect_event(self.dialog.buffers.down, widgetUtils.BUTTON_PRESSED, self.dialog.buffers.move_down) + self.input_devices = sound_lib.input.Input.get_device_names() + self.output_devices = sound_lib.output.Output.get_device_names() + self.soundpacks = [] + [self.soundpacks.append(i) for i in os.listdir(paths.sound_path()) if os.path.isdir(os.path.join(paths.sound_path(), i)) == True ] + self.dialog.create_sound(self.input_devices, self.output_devices, self.soundpacks) + self.dialog.set_value("sound", "volumeCtrl", int(self.config["sound"]["volume"]*100)) + self.dialog.set_value("sound", "input", self.config["sound"]["input_device"]) + self.dialog.set_value("sound", "output", self.config["sound"]["output_device"]) + self.dialog.set_value("sound", "session_mute", self.config["sound"]["session_mute"]) + self.dialog.set_value("sound", "soundpack", self.config["sound"]["current_soundpack"]) + self.dialog.set_value("sound", "indicate_audio", self.config["sound"]["indicate_audio"]) + self.dialog.set_value("sound", "indicate_img", self.config["sound"]["indicate_img"]) + self.dialog.create_extras(OCRSpace.translatable_langs) + language_index = OCRSpace.OcrLangs.index(self.config["mysc"]["ocr_language"]) + self.dialog.extras.ocr_lang.SetSelection(language_index) + self.dialog.realize() + self.dialog.set_title(_("Account settings for %s") % (self.user,)) + self.response = self.dialog.get_response() + + def edit_post_template(self, *args, **kwargs): + template = self.config["templates"]["post"] + control = EditTemplate(template=template, type="post") + result = control.run_dialog() + if result != "": # Template has been saved. + self.config["templates"]["post"] = result + self.config.write() + self.dialog.templates.post.SetLabel(_("Edit template for posts. Current template: {}").format(result)) + + def edit_conversation_template(self, *args, **kwargs): + template = self.config["templates"]["conversation"] + control = EditTemplate(template=template, type="conversation") + result = control.run_dialog() + if result != "": # Template has been saved. + self.config["templates"]["conversation"] = result + self.config.write() + self.dialog.templates.conversation.SetLabel(_("Edit template for conversations. Current template: {}").format(result)) + + def edit_person_template(self, *args, **kwargs): + template = self.config["templates"]["person"] + control = EditTemplate(template=template, type="person") + result = control.run_dialog() + if result != "": # Template has been saved. + self.config["templates"]["person"] = result + self.config.write() + self.dialog.templates.person.SetLabel(_("Edit template for persons. Current template: {}").format(result)) + + def save_configuration(self): + if self.config["general"]["relative_times"] != self.dialog.get_value("general", "relative_time"): + self.needs_restart = True + log.debug("Triggered app restart due to change in relative times.") + self.config["general"]["relative_times"] = self.dialog.get_value("general", "relative_time") + if self.config["general"]["disable_streaming"] != self.dialog.get_value("general", "disable_streaming"): + self.needs_restart = True + log.debug("Triggered app restart due to change in streaming settings.") + self.config["general"]["disable_streaming"] = self.dialog.get_value("general", "disable_streaming") + self.config["general"]["read_preferences_from_instance"] = self.dialog.get_value("general", "read_preferences_from_instance") + self.config["general"]["show_screen_names"] = self.dialog.get_value("general", "show_screen_names") + self.config["general"]["hide_emojis"] = self.dialog.get_value("general", "hide_emojis") + self.config["general"]["max_posts_per_call"] = self.dialog.get_value("general", "itemsPerApiCall") + if self.config["general"]["load_cache_in_memory"] != self.dialog.get_value("general", "load_cache_in_memory"): + self.config["general"]["load_cache_in_memory"] = self.dialog.get_value("general", "load_cache_in_memory") + self.needs_restart = True + log.debug("Triggered app restart due to change in database strategy management.") + if self.config["general"]["persist_size"] != self.dialog.get_value("general", "persist_size"): + if self.dialog.get_value("general", "persist_size") == '': + self.config["general"]["persist_size"] =-1 + else: + try: + self.config["general"]["persist_size"] = int(self.dialog.get_value("general", "persist_size")) + except ValueError: + output.speak("Invalid cache size, setting to default.",True) + self.config["general"]["persist_size"] =1764 + + if self.config["general"]["reverse_timelines"] != self.dialog.get_value("general", "reverse_timelines"): + self.needs_restart = True + log.debug("Triggered app restart due to change in timeline order.") + self.config["general"]["reverse_timelines"] = self.dialog.get_value("general", "reverse_timelines") + ask_before_boost = self.dialog.get_value("general", "ask_before_boost") + if ask_before_boost == True: + self.config["general"]["boost_mode"] = "ask" + else: + self.config["general"]["boost_mode"] = "direct" + buffers_list = self.dialog.buffers.get_list() + if buffers_list != self.config["general"]["buffer_order"]: + self.needs_restart = True + log.debug("Triggered app restart due to change in buffer ordering.") + self.config["general"]["buffer_order"] = buffers_list + self.config["reporting"]["speech_reporting"] = self.dialog.get_value("reporting", "speech_reporting") + self.config["reporting"]["braille_reporting"] = self.dialog.get_value("reporting", "braille_reporting") + self.config["mysc"]["ocr_language"] = OCRSpace.OcrLangs[self.dialog.extras.ocr_lang.GetSelection()] + if self.config["sound"]["input_device"] != self.dialog.sound.get("input"): + self.config["sound"]["input_device"] = self.dialog.sound.get("input") + try: + self.buffer.session.sound.input.set_device(self.buffer.session.sound.input.find_device_by_name(self.config["sound"]["input_device"])) + except: + self.config["sound"]["input_device"] = "default" + if self.config["sound"]["output_device"] != self.dialog.sound.get("output"): + self.config["sound"]["output_device"] = self.dialog.sound.get("output") + try: + self.buffer.session.sound.output.set_device(self.buffer.session.sound.output.find_device_by_name(self.config["sound"]["output_device"])) + except: + self.config["sound"]["output_device"] = "default" + self.config["sound"]["volume"] = self.dialog.get_value("sound", "volumeCtrl")/100.0 + self.config["sound"]["session_mute"] = self.dialog.get_value("sound", "session_mute") + self.config["sound"]["current_soundpack"] = self.dialog.sound.get("soundpack") + self.config["sound"]["indicate_audio"] = self.dialog.get_value("sound", "indicate_audio") + self.config["sound"]["indicate_img"] = self.dialog.get_value("sound", "indicate_img") + self.buffer.session.sound.config = self.config["sound"] + self.buffer.session.sound.check_soundpack() + self.config.write() + + def toggle_state(self,*args,**kwargs): + return self.dialog.buffers.change_selected_item() + + def on_autocompletion_scan(self, *args, **kwargs): + configuration = scan.autocompletionScan(self.buffer.session.settings, self.buffer, self.window) + to_scan = configuration.show_dialog() + if to_scan == True: + configuration.prepare_progress_dialog() + t = threading.Thread(target=configuration.scan) + t.start() + + def on_autocompletion_manage(self, *args, **kwargs): + configuration = manage.autocompletionManage(self.buffer.session) + configuration.show_settings() + + def get_buffers_list(self): + all_buffers=OrderedDict() + all_buffers['home']=_("Home") + all_buffers['local'] = _("Local") + all_buffers['federated'] = _("Federated") + all_buffers['mentions']=_("Mentions") + all_buffers['direct_messages']=_("Direct Messages") + all_buffers['sent']=_("Sent") + all_buffers['favorites']=_("Favorites") + all_buffers['bookmarks']=_("Bookmarks") + all_buffers['followers']=_("Followers") + all_buffers['following']=_("Following") + all_buffers['blocked']=_("Blocked users") + all_buffers['muted']=_("Muted users") + all_buffers['notifications']=_("Notifications") + list_buffers = [] + hidden_buffers=[] + all_buffers_keys = list(all_buffers.keys()) + # Check buffers shown first. + for i in self.config["general"]["buffer_order"]: + if i in all_buffers_keys: + list_buffers.append((i, all_buffers[i], True)) + # This second pass will retrieve all hidden buffers. + for i in all_buffers_keys: + if i not in self.config["general"]["buffer_order"]: + hidden_buffers.append((i, all_buffers[i], False)) + list_buffers.extend(hidden_buffers) + return list_buffers + + def toggle_buffer_active(self, ev): + change = self.dialog.buffers.get_event(ev) + if change == True: + self.dialog.buffers.change_selected_item() diff --git a/srcantiguo/controller/mastodon/templateEditor.py b/srcantiguo/controller/mastodon/templateEditor.py new file mode 100644 index 00000000..c4620303 --- /dev/null +++ b/srcantiguo/controller/mastodon/templateEditor.py @@ -0,0 +1,40 @@ +# -*- coding: utf-8 -*- +import re +import wx +from typing import List +from sessions.mastodon.templates import post_variables, conversation_variables, person_variables +from wxUI.dialogs import templateDialogs + +class EditTemplate(object): + def __init__(self, template: str, type: str) -> None: + super(EditTemplate, self).__init__() + self.default_template = template + if type == "post": + self.variables = post_variables + elif type == "conversation": + self.variables = conversation_variables + else: + self.variables = person_variables + self.template: str = template + + def validate_template(self, template: str) -> bool: + used_variables: List[str] = re.findall("\$\w+", template) + validated: bool = True + for var in used_variables: + if var[1:] not in self.variables: + validated = False + return validated + + def run_dialog(self) -> str: + dialog = templateDialogs.EditTemplateDialog(template=self.template, variables=self.variables, default_template=self.default_template) + response = dialog.ShowModal() + if response == wx.ID_SAVE: + validated: bool = self.validate_template(dialog.template.GetValue()) + if validated == False: + templateDialogs.invalid_template() + self.template = dialog.template.GetValue() + return self.run_dialog() + else: + return dialog.template.GetValue() + else: + return "" \ No newline at end of file diff --git a/srcantiguo/controller/mastodon/userActions.py b/srcantiguo/controller/mastodon/userActions.py new file mode 100644 index 00000000..1bdc395f --- /dev/null +++ b/srcantiguo/controller/mastodon/userActions.py @@ -0,0 +1,101 @@ +# -*- coding: utf-8 -*- +import logging +import widgetUtils +import output +from wxUI.dialogs.mastodon import userActions as userActionsDialog +from wxUI.dialogs.mastodon import userTimeline as userTimelineDialog +from pubsub import pub +from mastodon import MastodonError, MastodonNotFoundError +#from extra.autocompletionUsers import completion + +log = logging.getLogger("controller.mastodon.userActions") + +class BasicUserSelector(object): + def __init__(self, session, users=[]): + super(BasicUserSelector, self).__init__() + self.session = session + self.create_dialog(users=users) + + def create_dialog(self, users): + pass + + def autocomplete_users(self, *args, **kwargs): + c = completion.autocompletionUsers(self.dialog, self.session.session_id) + c.show_menu("dm") + + def search_user(self, user): + try: + user = self.session.api.account_lookup(user) + return user + except MastodonError: + log.exception("Error searching for user %s.".format(user)) + +class userActions(BasicUserSelector): + + def __init__(self, *args, **kwargs): + super(userActions, self).__init__(*args, **kwargs) + if self.dialog.get_response() == widgetUtils.OK: + self.process_action() + + def create_dialog(self, users): + self.dialog = userActionsDialog.UserActionsDialog(users) + widgetUtils.connect_event(self.dialog.autocompletion, widgetUtils.BUTTON_PRESSED, self.autocomplete_users) + + def process_action(self): + action = self.dialog.get_action() + user = self.dialog.get_user() + user = self.search_user(user) + if user == None: + return + getattr(self, action)(user) + + def follow(self, user): + try: + self.session.api.account_follow(user.id) + except MastodonError as err: + output.speak("Error %s" % (str(err)), True) + + def unfollow(self, user): + try: + result = self.session.api.account_unfollow(user.id) + except MastodonError as err: + output.speak("Error %s" % (str(err)), True) + + def mute(self, user): + try: + id = self.session.api.account_mute(user.id) + except MastodonError as err: + output.speak("Error %s" % (str(err)), True) + + def unmute(self, user): + try: + id = self.session.api.account_unmute(user.id) + except MastodonError as err: + output.speak("Error %s" % (str(err)), True) + + def block(self, user): + try: + id = self.session.api.account_block(user.id) + except MastodonError as err: + output.speak("Error %s" % (str(err)), True) + + def unblock(self, user): + try: + id = self.session.api.account_unblock(user.id) + except MastodonError as err: + output.speak("Error %s" % (str(err)), True) + +class UserTimeline(BasicUserSelector): + + def create_dialog(self, users): + self.dialog = userTimelineDialog.UserTimeline(users) + widgetUtils.connect_event(self.dialog.autocompletion, widgetUtils.BUTTON_PRESSED, self.autocomplete_users) + + def process_action(self): + action = self.dialog.get_action() + user = self.dialog.get_user() + user = self.search_user(user) + if user == None: + return + self.user = user + return action \ No newline at end of file diff --git a/srcantiguo/controller/mastodon/userList.py b/srcantiguo/controller/mastodon/userList.py new file mode 100644 index 00000000..1be5a8f0 --- /dev/null +++ b/srcantiguo/controller/mastodon/userList.py @@ -0,0 +1,25 @@ +# -*- coding: utf-8 -*- +from mastodon import MastodonError +from wxUI.dialogs.mastodon import showUserProfile +from controller.userList import UserListController +from . import userActions + +class MastodonUserList(UserListController): + + def process_users(self, users): + return [dict(id=user.id, display_name=f"{user.display_name} (@{user.acct})", acct=user.acct) for user in users] + + def on_actions(self, *args, **kwargs): + user = self.dialog.user_list.GetSelection() + user_account = self.users[user] + u = userActions.userActions(self.session, [user_account.get("acct")]) + + def on_details(self, *args, **kwargs): + user = self.dialog.user_list.GetSelection() + user_id = self.users[user].get("id") + try: + user_object = self.session.api.account(user_id) + except MastodonError: + return + dlg = showUserProfile.ShowUserProfile(user_object) + dlg.ShowModal() diff --git a/srcantiguo/controller/messages.py b/srcantiguo/controller/messages.py new file mode 100644 index 00000000..c6ae4ae1 --- /dev/null +++ b/srcantiguo/controller/messages.py @@ -0,0 +1,37 @@ +# -*- coding: utf-8 -*- +import widgetUtils +import output +import config +from extra import SpellChecker +from extra.translator import TranslatorController + +class basicMessage(object): + def translate(self, event=None): + t = TranslatorController(self.message.text.GetValue()) + if t.response == False: + return + msg = t.translate() + self.message.text.ChangeValue(msg) + self.message.text.SetInsertionPoint(len(self.message.text.GetValue())) + self.text_processor() + self.message.text.SetFocus() + output.speak(_(u"Translated")) + + def text_processor(self, *args, **kwargs): + pass + + def spellcheck(self, event=None): + text = self.message.text.GetValue() + checker = SpellChecker.spellchecker.spellChecker(text, "") + if hasattr(checker, "fixed_text"): + self.message.text.ChangeValue(checker.fixed_text) + self.text_processor() + self.message.text.SetFocus() + + def remove_attachment(self, *args, **kwargs): + attachment = self.message.attachments.GetFocusedItem() + if attachment > -1 and len(self.attachments) > attachment: + self.attachments.pop(attachment) + self.message.remove_item(list_type="attachment") + self.text_processor() + self.message.text.SetFocus() \ No newline at end of file diff --git a/srcantiguo/controller/settings.py b/srcantiguo/controller/settings.py new file mode 100644 index 00000000..06994c9b --- /dev/null +++ b/srcantiguo/controller/settings.py @@ -0,0 +1,119 @@ +# -*- coding: utf-8 -*- +import os +import logging +import paths +import config +import languageHandler +import application +from pubsub import pub +from wxUI.dialogs import configuration +from wxUI import commonMessageDialogs + +log = logging.getLogger("Settings") + +class globalSettingsController(object): + def __init__(self): + super(globalSettingsController, self).__init__() + self.dialog = configuration.configurationDialog() + self.create_config() + self.needs_restart = False + self.is_started = True + + def make_kmmap(self): + res={} + for i in os.listdir(os.path.join(paths.app_path(), 'keymaps')): + if ".keymap" not in i: + continue + try: + res[i[:-7]] =i + except: + log.exception("Exception while loading keymap " + i) + return res + + def create_config(self): + self.kmmap=self.make_kmmap() + self.langs = languageHandler.getAvailableLanguages() + langs = [] + [langs.append(i[1]) for i in self.langs] + self.codes = [] + [self.codes.append(i[0]) for i in self.langs] + id = self.codes.index(config.app["app-settings"]["language"]) + self.kmfriendlies=[] + self.kmnames=[] + for k,v in list(self.kmmap.items()): + self.kmfriendlies.append(k) + self.kmnames.append(v) + self.kmid=self.kmnames.index(config.app['app-settings']['load_keymap']) + self.dialog.create_general(langs,self.kmfriendlies) + self.dialog.general.language.SetSelection(id) + self.dialog.general.km.SetSelection(self.kmid) + self.dialog.set_value("general", "ask_at_exit", config.app["app-settings"]["ask_at_exit"]) + self.dialog.set_value("general", "no_streaming", config.app["app-settings"]["no_streaming"]) + self.dialog.set_value("general", "play_ready_sound", config.app["app-settings"]["play_ready_sound"]) + self.dialog.set_value("general", "speak_ready_msg", config.app["app-settings"]["speak_ready_msg"]) + self.dialog.set_value("general", "read_long_posts_in_gui", config.app["app-settings"]["read_long_posts_in_gui"]) + self.dialog.set_value("general", "use_invisible_shorcuts", config.app["app-settings"]["use_invisible_keyboard_shorcuts"]) + self.dialog.set_value("general", "disable_sapi5", config.app["app-settings"]["voice_enabled"]) + self.dialog.set_value("general", "hide_gui", config.app["app-settings"]["hide_gui"]) + self.dialog.set_value("general", "update_period", config.app["app-settings"]["update_period"]) + self.dialog.set_value("general", "check_for_updates", config.app["app-settings"]["check_for_updates"]) + proxyTypes = [_("System default"), _("HTTP"), _("SOCKS v4"), _("SOCKS v4 with DNS support"), _("SOCKS v5"), _("SOCKS v5 with DNS support")] + self.dialog.create_proxy(proxyTypes) + try: + self.dialog.proxy.type.SetSelection(config.app["proxy"]["type"]) + except: + self.dialog.proxy.type.SetSelection(0) + self.dialog.set_value("proxy", "server", config.app["proxy"]["server"]) + self.dialog.set_value("proxy", "port", config.app["proxy"]["port"]) + self.dialog.set_value("proxy", "user", config.app["proxy"]["user"]) + self.dialog.set_value("proxy", "password", config.app["proxy"]["password"]) + self.dialog.create_translator_panel() + self.dialog.set_value("translator_panel", "libre_api_url", config.app["translator"]["lt_api_url"]) + self.dialog.set_value("translator_panel", "libre_api_key", config.app["translator"]["lt_api_key"]) + self.dialog.set_value("translator_panel", "deepL_api_key", config.app["translator"]["deepl_api_key"]) + self.dialog.realize() + self.response = self.dialog.get_response() + + def save_configuration(self): + if self.codes[self.dialog.general.language.GetSelection()] != config.app["app-settings"]["language"]: + config.app["app-settings"]["language"] = self.codes[self.dialog.general.language.GetSelection()] + languageHandler.setLanguage(config.app["app-settings"]["language"]) + self.needs_restart = True + log.debug("Triggered app restart due to interface language changes.") + if self.kmnames[self.dialog.general.km.GetSelection()] != config.app["app-settings"]["load_keymap"]: + config.app["app-settings"]["load_keymap"] =self.kmnames[self.dialog.general.km.GetSelection()] + kmFile = open(os.path.join(paths.config_path(), "keymap.keymap"), "w") + kmFile.close() + log.debug("Triggered app restart due to a keymap change.") + self.needs_restart = True + if config.app["app-settings"]["use_invisible_keyboard_shorcuts"] != self.dialog.get_value("general", "use_invisible_shorcuts"): + config.app["app-settings"]["use_invisible_keyboard_shorcuts"] = self.dialog.get_value("general", "use_invisible_shorcuts") + pub.sendMessage("invisible-shorcuts-changed", registered=self.dialog.get_value("general", "use_invisible_shorcuts")) + if config.app["app-settings"]["no_streaming"] != self.dialog.get_value("general", "no_streaming"): + config.app["app-settings"]["no_streaming"] = self.dialog.get_value("general", "no_streaming") + self.needs_restart = True + log.debug("Triggered app restart due to change in streaming availability.") + if config.app["app-settings"]["update_period"] != self.dialog.get_value("general", "update_period"): + config.app["app-settings"]["update_period"] = self.dialog.get_value("general", "update_period") + self.needs_restart = True + log.debug("Triggered app restart due to changes in update period.") + config.app["app-settings"]["voice_enabled"] = self.dialog.get_value("general", "disable_sapi5") + config.app["app-settings"]["hide_gui"] = self.dialog.get_value("general", "hide_gui") + config.app["app-settings"]["ask_at_exit"] = self.dialog.get_value("general", "ask_at_exit") + config.app["app-settings"]["read_long_posts_in_gui"] = self.dialog.get_value("general", "read_long_posts_in_gui") + config.app["app-settings"]["play_ready_sound"] = self.dialog.get_value("general", "play_ready_sound") + config.app["app-settings"]["speak_ready_msg"] = self.dialog.get_value("general", "speak_ready_msg") + config.app["app-settings"]["check_for_updates"] = self.dialog.get_value("general", "check_for_updates") + if config.app["proxy"]["type"]!=self.dialog.get_value("proxy", "type") or config.app["proxy"]["server"] != self.dialog.get_value("proxy", "server") or config.app["proxy"]["port"] != self.dialog.get_value("proxy", "port") or config.app["proxy"]["user"] != self.dialog.get_value("proxy", "user") or config.app["proxy"]["password"] != self.dialog.get_value("proxy", "password"): + if self.is_started == True: + self.needs_restart = True + log.debug("Triggered app restart due to change in proxy settings.") + config.app["proxy"]["type"] = self.dialog.proxy.type.Selection + config.app["proxy"]["server"] = self.dialog.get_value("proxy", "server") + config.app["proxy"]["port"] = self.dialog.get_value("proxy", "port") + config.app["proxy"]["user"] = self.dialog.get_value("proxy", "user") + config.app["proxy"]["password"] = self.dialog.get_value("proxy", "password") + config.app["translator"]["lt_api_url"] = self.dialog.get_value("translator_panel", "libre_api_url") + config.app["translator"]["lt_api_key"] = self.dialog.get_value("translator_panel", "libre_api_key") + config.app["translator"]["deepl_api_key"] = self.dialog.get_value("translator_panel", "deepL_api_key") + config.app.write() diff --git a/srcantiguo/controller/userAlias.py b/srcantiguo/controller/userAlias.py new file mode 100644 index 00000000..f40396d5 --- /dev/null +++ b/srcantiguo/controller/userAlias.py @@ -0,0 +1,52 @@ +# -*- coding: utf-8 -*- +import widgetUtils +from pubsub import pub +from wxUI.dialogs import userAliasDialogs + +class userAliasController(object): + def __init__(self, settings): + super(userAliasController, self).__init__() + self.settings = settings + self.dialog = userAliasDialogs.userAliasEditorDialog() + self.update_aliases_manager() + widgetUtils.connect_event(self.dialog.add, widgetUtils.BUTTON_PRESSED, self.on_add) + widgetUtils.connect_event(self.dialog.edit, widgetUtils.BUTTON_PRESSED, self.on_edit) + widgetUtils.connect_event(self.dialog.remove, widgetUtils.BUTTON_PRESSED, self.on_remove) + pub.subscribe(self.update_aliases_manager, "alias-added") + self.dialog.ShowModal() + + def update_aliases_manager(self): + self.dialog.users.Clear() + aliases = [self.settings["user-aliases"].get(k) for k in self.settings["user-aliases"].keys()] + if len(aliases) > 0: + self.dialog.users.InsertItems(aliases, 0) + self.dialog.on_selection_changes() + + def on_add(self, *args, **kwargs): + pub.sendMessage("execute-action", action="add_alias") + + def on_edit(self, *args, **kwargs): + selection = self.dialog.get_selected_user() + if selection != "": + edited = self.dialog.edit_alias_dialog(_("Edit alias for {}").format(selection)) + if edited == None or edited == "": + return + for user_key in self.settings["user-aliases"].keys(): + if self.settings["user-aliases"][user_key] == selection: + self.settings["user-aliases"][user_key] = edited + self.settings.write() + self.update_aliases_manager() + break + + def on_remove(self, *args, **kwargs): + selection = self.dialog.get_selected_user() + if selection == None or selection == "": + return + should_remove = self.dialog.remove_alias_dialog() + if should_remove: + for user_key in self.settings["user-aliases"].keys(): + if self.settings["user-aliases"][user_key] == selection: + self.settings["user-aliases"].pop(user_key) + self.settings.write() + self.update_aliases_manager() + break diff --git a/srcantiguo/controller/userList.py b/srcantiguo/controller/userList.py new file mode 100644 index 00000000..340a9823 --- /dev/null +++ b/srcantiguo/controller/userList.py @@ -0,0 +1,23 @@ +# -*- coding: utf-8 -*- +import widgetUtils +from pubsub import pub +from wxUI.dialogs import userList + +class UserListController(object): + def __init__(self, users, session, title): + super(UserListController, self).__init__() + self.session = session + self.users = self.process_users(users) + self.dialog = userList.UserListDialog(title=title, users=[user.get("display_name", user.get("acct")) for user in self.users]) + widgetUtils.connect_event(self.dialog.actions_button, widgetUtils.BUTTON_PRESSED, self.on_actions) + widgetUtils.connect_event(self.dialog.details_button, widgetUtils.BUTTON_PRESSED, self.on_details) + self.dialog.ShowModal() + + def process_users(self, users): + return {} + + def on_actions(self): + pass + + def on_details(self, *args, **kwargs): + pass \ No newline at end of file diff --git a/srcantiguo/extra/SoundsTutorial/__init__.py b/srcantiguo/extra/SoundsTutorial/__init__.py new file mode 100644 index 00000000..233a583a --- /dev/null +++ b/srcantiguo/extra/SoundsTutorial/__init__.py @@ -0,0 +1 @@ +from .soundsTutorial import soundsTutorial diff --git a/srcantiguo/extra/SoundsTutorial/reverse_sort.py b/srcantiguo/extra/SoundsTutorial/reverse_sort.py new file mode 100644 index 00000000..35fa0efb --- /dev/null +++ b/srcantiguo/extra/SoundsTutorial/reverse_sort.py @@ -0,0 +1,11 @@ +#Reverse sort, by Bill Dengler for use in TWBlue http://twblue.es +def invert_tuples(t): + "Invert a list of tuples, so that the 0th element becomes the -1th, and the -1th becomes the 0th." + res=[] + for i in t: + res.append(i[::-1]) + return res + +def reverse_sort(t): + "Sorts a list of tuples/lists by their last elements, not their first." + return invert_tuples(sorted(invert_tuples(t))) diff --git a/srcantiguo/extra/SoundsTutorial/soundsTutorial.py b/srcantiguo/extra/SoundsTutorial/soundsTutorial.py new file mode 100644 index 00000000..097655c0 --- /dev/null +++ b/srcantiguo/extra/SoundsTutorial/soundsTutorial.py @@ -0,0 +1,31 @@ +# -*- coding: utf-8 -*- +import platform +import widgetUtils +import os +import paths +import logging +log = logging.getLogger("extra.SoundsTutorial.soundsTutorial") +from . import soundsTutorial_constants +from . import wx_ui as UI + +class soundsTutorial(object): + def __init__(self, sessionObject): + log.debug("Creating sounds tutorial object...") + super(soundsTutorial, self).__init__() + self.session = sessionObject + self.actions = [] + log.debug("Loading actions for sounds tutorial...") + [self.actions.append(i[1]) for i in soundsTutorial_constants.actions] + self.files = [] + log.debug("Searching sound files...") + [self.files.append(i[0]) for i in soundsTutorial_constants.actions] + log.debug("Creating dialog...") + self.dialog = UI.soundsTutorialDialog(self.actions) + widgetUtils.connect_event(self.dialog.play, widgetUtils.BUTTON_PRESSED, self.on_play) + self.dialog.get_response() + + def on_play(self, *args, **kwargs): + try: + self.session.sound.play(self.files[self.dialog.get_selection()]+".ogg") + except: + log.exception("Error playing the %s sound" % (self.files[self.dialog.items.GetSelection()],)) diff --git a/srcantiguo/extra/SoundsTutorial/soundsTutorial_constants.py b/srcantiguo/extra/SoundsTutorial/soundsTutorial_constants.py new file mode 100644 index 00000000..ca01b3e5 --- /dev/null +++ b/srcantiguo/extra/SoundsTutorial/soundsTutorial_constants.py @@ -0,0 +1,28 @@ +#-*- coding: utf-8 -*- +from . import reverse_sort +import application +actions = reverse_sort.reverse_sort([ ("audio", _(u"Audio tweet.")), + ("create_timeline", _(u"User timeline buffer created.")), + ("delete_timeline", _(u"Buffer destroied.")), + ("dm_received", _(u"Direct message received.")), + ("dm_sent", _(u"Direct message sent.")), + ("error", _(u"Error.")), + ("favourite", _(u"Tweet liked.")), + ("favourites_timeline_updated", _(u"Likes buffer updated.")), + ("geo", _(u"Geotweet.")), + ("image", _("Tweet contains one or more images")), + ("limit", _(u"Boundary reached.")), + ("list_tweet", _(u"List updated.")), + ("max_length", _(u"Too many characters.")), + ("mention_received", _(u"Mention received.")), + ("new_event", _(u"New event.")), + ("ready", _(u"{0} is ready.").format(application.name,)), + ("reply_send", _(u"Mention sent.")), + ("retweet_send", _(u"Tweet retweeted.")), + ("search_updated", _(u"Search buffer updated.")), + ("tweet_received", _(u"Tweet received.")), + ("tweet_send", _(u"Tweet sent.")), + ("trends_updated", _(u"Trending topics buffer updated.")), + ("tweet_timeline", _(u"New tweet in user timeline buffer.")), + ("update_followers", _(u"New follower.")), + ("volume_changed", _(u"Volume changed."))]) diff --git a/srcantiguo/extra/SoundsTutorial/wx_ui.py b/srcantiguo/extra/SoundsTutorial/wx_ui.py new file mode 100644 index 00000000..cb11a025 --- /dev/null +++ b/srcantiguo/extra/SoundsTutorial/wx_ui.py @@ -0,0 +1,29 @@ +# -*- coding: utf-8 -*- +import wx +import widgetUtils + +class soundsTutorialDialog(widgetUtils.BaseDialog): + def __init__(self, actions): + super(soundsTutorialDialog, self).__init__(None, -1) + self.SetTitle(_(u"Sounds tutorial")) + panel = wx.Panel(self) + sizer = wx.BoxSizer(wx.VERTICAL) + label = wx.StaticText(panel, -1, _(u"Press enter to listen to the sound for the selected event")) + self.items = wx.ListBox(panel, 1, choices=actions, style=wx.LB_SINGLE) + self.items.SetSelection(0) + listBox = wx.BoxSizer(wx.HORIZONTAL) + listBox.Add(label) + listBox.Add(self.items) + self.play = wx.Button(panel, 1, (u"Play")) + self.play.SetDefault() + close = wx.Button(panel, wx.ID_CANCEL) + btnBox = wx.BoxSizer(wx.HORIZONTAL) + btnBox.Add(self.play) + btnBox.Add(close) + sizer.Add(listBox) + sizer.Add(btnBox) + panel.SetSizer(sizer) + self.SetClientSize(sizer.CalcMin()) + + def get_selection(self): + return self.items.GetSelection() diff --git a/srcantiguo/extra/SpellChecker/__init__.py b/srcantiguo/extra/SpellChecker/__init__.py new file mode 100644 index 00000000..cf120537 --- /dev/null +++ b/srcantiguo/extra/SpellChecker/__init__.py @@ -0,0 +1,6 @@ +from __future__ import absolute_import +from __future__ import unicode_literals +from . import spellchecker +import platform +if platform.system() == "Windows": + from .wx_ui import * diff --git a/srcantiguo/extra/SpellChecker/spellchecker.py b/srcantiguo/extra/SpellChecker/spellchecker.py new file mode 100644 index 00000000..791730cf --- /dev/null +++ b/srcantiguo/extra/SpellChecker/spellchecker.py @@ -0,0 +1,83 @@ +# -*- coding: utf-8 -*- +import os +import logging +from . import wx_ui +import widgetUtils +import output +import config +import languageHandler +import enchant +import paths +from . import twitterFilter +from enchant.checker import SpellChecker +from enchant.errors import DictNotFoundError +from enchant import tokenize +log = logging.getLogger("extra.SpellChecker.spellChecker") + +class spellChecker(object): + def __init__(self, text, dictionary): + super(spellChecker, self).__init__() + # Set Dictionary path if not set in a previous call to this method. + # Dictionary path will be located in user config, see https://github.com/manuelcortez/twblue/issues/208 +# dict_path = enchant.get_param("enchant.myspell.dictionary.path") +# if dict_path == None: +# enchant.set_param("enchant.myspell.dictionary.path", os.path.join(paths.config_path(), "dicts")) +# log.debug("Dictionary path set to %s" % (os.path.join(paths.config_path(), "dicts"),)) + log.debug("Creating the SpellChecker object. Dictionary: %s" % (dictionary,)) + self.active = True + try: + if config.app["app-settings"]["language"] == "system": + log.debug("Using the system language") + self.dict = enchant.DictWithPWL(languageHandler.curLang[:2], os.path.join(paths.config_path(), "wordlist.dict")) + else: + log.debug("Using language: %s" % (languageHandler.getLanguage(),)) + self.dict = enchant.DictWithPWL(languageHandler.getLanguage()[:2], os.path.join(paths.config_path(), "wordlist.dict")) + except DictNotFoundError: + log.exception("Dictionary for language %s not found." % (dictionary,)) + wx_ui.dict_not_found_error() + self.active = False + self.checker = SpellChecker(self.dict, filters=[twitterFilter.TwitterFilter, tokenize.EmailFilter, tokenize.URLFilter]) + self.checker.set_text(text) + if self.active == True: + log.debug("Creating dialog...") + self.dialog = wx_ui.spellCheckerDialog() + widgetUtils.connect_event(self.dialog.ignore, widgetUtils.BUTTON_PRESSED, self.ignore) + widgetUtils.connect_event(self.dialog.ignoreAll, widgetUtils.BUTTON_PRESSED, self.ignoreAll) + widgetUtils.connect_event(self.dialog.replace, widgetUtils.BUTTON_PRESSED, self.replace) + widgetUtils.connect_event(self.dialog.replaceAll, widgetUtils.BUTTON_PRESSED, self.replaceAll) + widgetUtils.connect_event(self.dialog.add, widgetUtils.BUTTON_PRESSED, self.add) + self.check() + self.dialog.get_response() + self.fixed_text = self.checker.get_text() + + def check(self): + try: + next(self.checker) + textToSay = _(u"Misspelled word: %s") % (self.checker.word,) + context = u"... %s %s %s" % (self.checker.leading_context(10), self.checker.word, self.checker.trailing_context(10)) + self.dialog.set_title(textToSay) + output.speak(textToSay) + self.dialog.set_word_and_suggestions(word=self.checker.word, context=context, suggestions=self.checker.suggest()) + except StopIteration: + log.debug("Process finished.") + wx_ui.finished() + self.dialog.Destroy() + + def ignore(self, ev): + self.check() + + def ignoreAll(self, ev): + self.checker.ignore_always(word=self.checker.word) + self.check() + + def replace(self, ev): + self.checker.replace(self.dialog.get_selected_suggestion()) + self.check() + + def replaceAll(self, ev): + self.checker.replace_always(self.dialog.get_selected_suggestion()) + self.check() + + def add(self, ev): + self.checker.add() + self.check() diff --git a/srcantiguo/extra/SpellChecker/twitterFilter.py b/srcantiguo/extra/SpellChecker/twitterFilter.py new file mode 100644 index 00000000..f5e308c3 --- /dev/null +++ b/srcantiguo/extra/SpellChecker/twitterFilter.py @@ -0,0 +1,15 @@ +# -*- coding: utf-8 -*- +import re +from enchant.tokenize import Filter + +class TwitterFilter(Filter): + """Filter skipping over twitter usernames and hashtags. + This filter skips any words matching the following regular expression: + ^[#@](\S){1, }$ + That is, any words that resemble users and hashtags. + """ + _pattern = re.compile(r"^[#@](\S){1,}$") + def _skip(self,word): + if self._pattern.match(word): + return True + return False diff --git a/srcantiguo/extra/SpellChecker/wx_ui.py b/srcantiguo/extra/SpellChecker/wx_ui.py new file mode 100644 index 00000000..a401e3af --- /dev/null +++ b/srcantiguo/extra/SpellChecker/wx_ui.py @@ -0,0 +1,82 @@ +# -*- coding: utf-8 -*- +############################################################ +# Copyright (c) 2013, 2014 Manuel Eduardo Cortéz Vallejo +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# +############################################################ +import wx +import application + +class spellCheckerDialog(wx.Dialog): + def __init__(self): + super(spellCheckerDialog, self).__init__(None, 1) + panel = wx.Panel(self) + sizer = wx.BoxSizer(wx.VERTICAL) + word = wx.StaticText(panel, -1, _(u"Misspelled word")) + self.word = wx.TextCtrl(panel, -1) + wordBox = wx.BoxSizer(wx.HORIZONTAL) + wordBox.Add(word, 0, wx.ALL, 5) + wordBox.Add(self.word, 0, wx.ALL, 5) + context = wx.StaticText(panel, -1, _(u"Context")) + self.context = wx.TextCtrl(panel, -1) + contextBox = wx.BoxSizer(wx.HORIZONTAL) + contextBox.Add(context, 0, wx.ALL, 5) + contextBox.Add(self.context, 0, wx.ALL, 5) + suggest = wx.StaticText(panel, -1, _(u"Suggestions")) + self.suggestions = wx.ListBox(panel, -1, choices=[], style=wx.LB_SINGLE) + suggestionsBox = wx.BoxSizer(wx.HORIZONTAL) + suggestionsBox.Add(suggest, 0, wx.ALL, 5) + suggestionsBox.Add(self.suggestions, 0, wx.ALL, 5) + self.ignore = wx.Button(panel, -1, _(u"&Ignore")) + self.ignoreAll = wx.Button(panel, -1, _(u"I&gnore all")) + self.replace = wx.Button(panel, -1, _(u"&Replace")) + self.replaceAll = wx.Button(panel, -1, _(u"R&eplace all")) + self.add = wx.Button(panel, -1, _(u"&Add to personal dictionary")) + close = wx.Button(panel, wx.ID_CANCEL) + btnBox = wx.BoxSizer(wx.HORIZONTAL) + btnBox.Add(self.ignore, 0, wx.ALL, 5) + btnBox.Add(self.ignoreAll, 0, wx.ALL, 5) + btnBox.Add(self.replace, 0, wx.ALL, 5) + btnBox.Add(self.replaceAll, 0, wx.ALL, 5) + btnBox.Add(self.add, 0, wx.ALL, 5) + btnBox.Add(close, 0, wx.ALL, 5) + sizer.Add(wordBox, 0, wx.ALL, 5) + sizer.Add(contextBox, 0, wx.ALL, 5) + sizer.Add(suggestionsBox, 0, wx.ALL, 5) + sizer.Add(btnBox, 0, wx.ALL, 5) + panel.SetSizer(sizer) + self.SetClientSize(sizer.CalcMin()) + + + def get_response(self): + return self.ShowModal() + + def set_title(self, title): + return self.SetTitle(title) + + def set_word_and_suggestions(self, word, context, suggestions): + self.word.SetValue(word) + self.context.ChangeValue(context) + self.suggestions.Set(suggestions) + self.suggestions.SetFocus() + + def get_selected_suggestion(self): + return self.suggestions.GetStringSelection() + +def dict_not_found_error(): + wx.MessageDialog(None, _(u"An error has occurred. There are no dictionaries available for the selected language in {0}").format(application.name,), _(u"Error"), wx.ICON_ERROR).ShowModal() + +def finished(): + wx.MessageDialog(None, _(u"Spell check complete."), application.name, style=wx.OK).ShowModal() diff --git a/srcantiguo/extra/__init__.py b/srcantiguo/extra/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/srcantiguo/extra/autocompletionUsers/__init__.py b/srcantiguo/extra/autocompletionUsers/__init__.py new file mode 100644 index 00000000..6d58f51c --- /dev/null +++ b/srcantiguo/extra/autocompletionUsers/__init__.py @@ -0,0 +1,2 @@ +# -*- coding: utf-8 -*- +""" Autocompletion users for TWBlue. This package contains all needed code to support this feature, including automatic addition of users, management and code to show the autocompletion menu when an user is composing a post. """ diff --git a/srcantiguo/extra/autocompletionUsers/completion.py b/srcantiguo/extra/autocompletionUsers/completion.py new file mode 100644 index 00000000..3fb9e5c2 --- /dev/null +++ b/srcantiguo/extra/autocompletionUsers/completion.py @@ -0,0 +1,66 @@ +# -*- coding: utf-8 -*- +""" Module to display the user autocompletion menu in post dialogs. """ +import output +from . import storage +from . import wx_menu + +class autocompletionUsers(object): + def __init__(self, window, session_id): + """ Class constructor. Displays a menu with users matching the specified pattern for autocompletion. + + :param window: A wx control where the menu should be displayed. Normally this is going to be the wx.TextCtrl indicating the tweet's text or direct message recipient. + :type window: wx.Dialog + :param session_id: Session ID which calls this class. We will load the users database from this session. + :type session_id: str. + """ + super(autocompletionUsers, self).__init__() + self.window = window + self.db = storage.storage(session_id) + + def show_menu(self, mode="mastodon"): + """ displays a menu with possible users matching the specified pattern. + + this menu can be displayed in dialogs where an username is expected. For Mastodon's post dialogs, the string should start with an at symbol (@), otherwise it won't match the pattern. + + Of course, users must be already loaded in database before attempting this. + + If no users are found, an error message will be spoken. + + :param mode: this controls how the dialog will behave. Possible values are 'mastodon' and 'free'. In mastodon mode, the matching pattern will be @user (@ is required), while in 'free' mode the matching pattern will be anything written in the text control. + :type mode: str + """ + if mode == "mastodon": + position = self.window.text.GetInsertionPoint() + text = self.window.text.GetValue() + text = text[:position] + try: + pattern = text.split()[-1] + except IndexError: + output.speak(_(u"You have to start writing")) + return + if pattern.startswith("@") == True: + menu = wx_menu.menu(self.window.text, pattern[1:], mode=mode) + users = self.db.get_users(pattern[1:]) + if len(users) > 0: + menu.append_options(users) + self.window.PopupMenu(menu, self.window.text.GetPosition()) + menu.destroy() + else: + output.speak(_(u"There are no results in your users database")) + else: + output.speak(_(u"Autocompletion only works for users.")) + elif mode == "free": + text = self.window.cb.GetValue() + try: + pattern = text.split()[-1] + except IndexError: + output.speak(_(u"You have to start writing")) + return + menu = wx_menu.menu(self.window.cb, pattern, mode=mode) + users = self.db.get_users(pattern) + if len(users) > 0: + menu.append_options(users) + self.window.PopupMenu(menu, self.window.cb.GetPosition()) + menu.destroy() + else: + output.speak(_(u"There are no results in your users database")) diff --git a/srcantiguo/extra/autocompletionUsers/manage.py b/srcantiguo/extra/autocompletionUsers/manage.py new file mode 100644 index 00000000..66fb476e --- /dev/null +++ b/srcantiguo/extra/autocompletionUsers/manage.py @@ -0,0 +1,57 @@ +# -*- coding: utf-8 -*- +""" Management of users in the local database for autocompletion. """ +import time +import widgetUtils +from wxUI import commonMessageDialogs +from . import storage, wx_manage +from .mastodon import scan as mastodon + +class autocompletionManage(object): + def __init__(self, session): + """ class constructor. Manages everything related to user autocompletion. + + :param session: Sessiom where the autocompletion management has been requested. + :type session: sessions.base.Session. + """ + super(autocompletionManage, self).__init__() + self.session = session + # Instantiate database so we can perform modifications on it. + self.database = storage.storage(self.session.session_id) + + def show_settings(self): + """ display user management dialog and connect events associated to it. """ + self.dialog = wx_manage.autocompletionManageDialog() + self.users = self.database.get_all_users() + self.dialog.put_users(self.users) + widgetUtils.connect_event(self.dialog.add, widgetUtils.BUTTON_PRESSED, self.add_user) + widgetUtils.connect_event(self.dialog.remove, widgetUtils.BUTTON_PRESSED, self.remove_user) + self.dialog.get_response() + + def update_list(self): + """ update users list in management dialog. This function is normallhy used after we modify the database in any way, so we can reload all users in the autocompletion user management list. """ + item = self.dialog.users.get_selected() + self.dialog.users.clear() + self.users = self.database.get_all_users() + self.dialog.put_users(self.users) + self.dialog.users.select_item(item) + + def add_user(self, *args, **kwargs): + """ Add a new username to the autocompletion database. """ + usr = self.dialog.get_user() + if usr == False: + return + user_added = False + if self.session.type == "mastodon": + user_added = mastodon.add_user(session=self.session, database=self.database, user=usr) + if user_added == False: + self.dialog.show_invalid_user_error() + return + self.update_list() + + def remove_user(self, *args, **kwargs): + """ Remove focused user from the autocompletion database. """ + if commonMessageDialogs.delete_user_from_db() == widgetUtils.YES: + item = self.dialog.users.get_selected() + user = self.users[item] + self.database.remove_user(user[0]) + self.update_list() diff --git a/srcantiguo/extra/autocompletionUsers/mastodon/__init__.py b/srcantiguo/extra/autocompletionUsers/mastodon/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/srcantiguo/extra/autocompletionUsers/mastodon/scan.py b/srcantiguo/extra/autocompletionUsers/mastodon/scan.py new file mode 100644 index 00000000..f0c7c5dd --- /dev/null +++ b/srcantiguo/extra/autocompletionUsers/mastodon/scan.py @@ -0,0 +1,103 @@ +# -*- coding: utf-8 -*- +""" Scanning code for autocompletion feature on TWBlue. This module can retrieve user objects from the selected Mastodon account automatically. """ +import time +import wx +import widgetUtils +import output +from pubsub import pub +from . import wx_scan +from extra.autocompletionUsers import manage, storage + +class autocompletionScan(object): + def __init__(self, config, buffer, window): + """ Class constructor. This class will take care of scanning the selected Mastodon account to populate the database with users automatically upon request. + + :param config: Config for the session that will be scanned in search for users. + :type config: dict + :param buffer: home buffer for the focused session. + :type buffer: controller.buffers.mastodon.base.baseBuffer + :param window: Main Window of TWBlue. + :type window:wx.Frame + """ + super(autocompletionScan, self).__init__() + self.config = config + self.buffer = buffer + self.window = window + + def show_dialog(self): + """ displays a dialog to confirm which buffers should be scanned (followers or following users). """ + self.dialog = wx_scan.autocompletionScanDialog() + self.dialog.set("friends", self.config["mysc"]["save_friends_in_autocompletion_db"]) + self.dialog.set("followers", self.config["mysc"]["save_followers_in_autocompletion_db"]) + if self.dialog.get_response() == widgetUtils.OK: + confirmation = wx_scan.confirm() + return confirmation + + def prepare_progress_dialog(self): + self.progress_dialog = wx_scan.autocompletionScanProgressDialog() + # connect method to update progress dialog + pub.subscribe(self.on_update_progress, "on-update-progress") + self.progress_dialog.Show() + + def on_update_progress(self): + wx.CallAfter(self.progress_dialog.progress_bar.Pulse) + + def scan(self): + """ Attempts to add all users selected by current user to the autocomplete database. """ + self.config["mysc"]["save_friends_in_autocompletion_db"] = self.dialog.get("friends") + self.config["mysc"]["save_followers_in_autocompletion_db"] = self.dialog.get("followers") + output.speak(_("Updating database... You can close this window now. A message will tell you when the process finishes.")) + database = storage.storage(self.buffer.session.session_id) + percent = 0 + users = [] + if self.dialog.get("friends") == True: + first_page = self.buffer.session.api.account_following(id=self.buffer.session.db["user_id"], limit=80) + pub.sendMessage("on-update-progress") + if first_page != None: + for user in first_page: + users.append(user) + next_page = first_page + while next_page != None: + next_page = self.buffer.session.api.fetch_next(next_page) + pub.sendMessage("on-update-progress") + if next_page == None: + break + for user in next_page: + users.append(user) + # same step, but for followers. + if self.dialog.get("followers") == True: + first_page = self.buffer.session.api.account_followers(id=self.buffer.session.db["user_id"], limit=80) + pub.sendMessage("on-update-progress") + if first_page != None: + for user in first_page: + if user not in users: + users.append(user) + next_page = first_page + while next_page != None: + next_page = self.buffer.session.api.fetch_next(next_page) + pub.sendMessage("on-update-progress") + if next_page == None: + break + for user in next_page: + if user not in users: + users.append(user) +# except TweepyException: +# wx.CallAfter(wx_scan.show_error) +# return self.done() + for user in users: + name = user.display_name if user.display_name != None and user.display_name != "" else user.username + database.set_user(user.acct, name, 1) + wx.CallAfter(wx_scan .show_success, len(users)) + self.done() + + def done(self): + wx.CallAfter(self.progress_dialog.Destroy) + wx.CallAfter(self.dialog.Destroy) + pub.unsubscribe(self.on_update_progress, "on-update-progress") + +def add_user(session, database, user): + """ Adds an user to the database. """ + user = session.api.account_lookup(user) + if user != None: + name = user.display_name if user.display_name != None and user.display_name != "" else user.username + database.set_user(user.acct, name, 1) diff --git a/srcantiguo/extra/autocompletionUsers/mastodon/wx_scan.py b/srcantiguo/extra/autocompletionUsers/mastodon/wx_scan.py new file mode 100644 index 00000000..8011f062 --- /dev/null +++ b/srcantiguo/extra/autocompletionUsers/mastodon/wx_scan.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +import wx +import widgetUtils +import application + +class autocompletionScanDialog(widgetUtils.BaseDialog): + def __init__(self): + super(autocompletionScanDialog, self).__init__(parent=None, id=-1, title=_(u"Autocomplete users' settings")) + panel = wx.Panel(self) + sizer = wx.BoxSizer(wx.VERTICAL) + self.followers = wx.CheckBox(panel, -1, _("Add &followers to database")) + self.friends = wx.CheckBox(panel, -1, _("Add f&ollowing to database")) + sizer.Add(self.followers, 0, wx.ALL, 5) + sizer.Add(self.friends, 0, wx.ALL, 5) + ok = wx.Button(panel, wx.ID_OK) + cancel = wx.Button(panel, wx.ID_CANCEL) + sizerBtn = wx.BoxSizer(wx.HORIZONTAL) + sizerBtn.Add(ok, 0, wx.ALL, 5) + sizer.Add(cancel, 0, wx.ALL, 5) + sizer.Add(sizerBtn, 0, wx.ALL, 5) + panel.SetSizer(sizer) + self.SetClientSize(sizer.CalcMin()) + +class autocompletionScanProgressDialog(widgetUtils.BaseDialog): + def __init__(self, *args, **kwargs): + super(autocompletionScanProgressDialog, self).__init__(parent=None, id=wx.ID_ANY, title=_("Updating autocompletion database"), *args, **kwargs) + panel = wx.Panel(self) + sizer = wx.BoxSizer(wx.VERTICAL) + self.progress_bar = wx.Gauge(parent=panel) + sizer.Add(self.progress_bar) + panel.SetSizerAndFit(sizer) + +def confirm(): + with wx.MessageDialog(None, _("This process will retrieve the users you selected from your Mastodon account, and add them to the user autocomplete database. Please note that if there are many users or you have tried to perform this action less than 15 minutes ago, TWBlue may reach a limit in API calls when trying to load the users into the database. If this happens, we will show you an error, in which case you will have to try this process again in a few minutes. If this process ends with no error, you will be redirected back to the account settings dialog. Do you want to continue?"), _("Attention"), style=wx.ICON_QUESTION|wx.YES_NO) as result: + if result.ShowModal() == wx.ID_YES: + return True + return False + +def show_success(users): + with wx.MessageDialog(None, _("TWBlue has imported {} users successfully.").format(users), _("Done")) as dlg: + dlg.ShowModal() + +def show_error(): + with wx.MessageDialog(None, _("Error adding users from Mastodon. Please try again in about 15 minutes."), _("Error"), style=wx.ICON_ERROR) as dlg: + dlg.ShowModal() \ No newline at end of file diff --git a/srcantiguo/extra/autocompletionUsers/storage.py b/srcantiguo/extra/autocompletionUsers/storage.py new file mode 100644 index 00000000..4ac80ebf --- /dev/null +++ b/srcantiguo/extra/autocompletionUsers/storage.py @@ -0,0 +1,52 @@ +# -*- coding: utf-8 -*- +import os, sqlite3, paths + +class storage(object): + def __init__(self, session_id): + self.connection = sqlite3.connect(os.path.join(paths.config_path(), "%s/autocompletionUsers.dat" % (session_id))) + self.cursor = self.connection.cursor() + if self.table_exist("users") == False: + self.create_table() + + def table_exist(self, table): + ask = self.cursor.execute("SELECT name FROM sqlite_master WHERE type='table' AND name='%s'" % (table)) + answer = ask.fetchone() + if answer == None: + return False + else: + return True + + def get_all_users(self): + self.cursor.execute("""select * from users""") + return self.cursor.fetchall() + + def get_users(self, term): + self.cursor.execute("""SELECT * FROM users WHERE UPPER(user) LIKE :term OR UPPER(name) LIKE :term""", {"term": "%{}%".format(term.upper())}) + return self.cursor.fetchall() + + def set_user(self, screen_name, user_name, from_a_buffer): + self.cursor.execute("""insert or ignore into users values(?, ?, ?)""", (screen_name, user_name, from_a_buffer)) + self.connection.commit() + + def remove_user(self, user): + self.cursor.execute("""DELETE FROM users WHERE user = ?""", (user,)) + self.connection.commit() + return self.cursor.fetchone() + + def remove_by_buffer(self, bufferType): + """ Removes all users saved on a buffer. BufferType is 0 for no buffer, 1 for friends and 2 for followers""" + self.cursor.execute("""DELETE FROM users WHERE from_a_buffer = ?""", (bufferType,)) + self.connection.commit() + return self.cursor.fetchone() + + def create_table(self): + self.cursor.execute(""" + create table users( +user TEXT UNIQUE, +name TEXT, +from_a_buffer INTEGER +)""") + + def __del__(self): + self.cursor.close() + self.connection.close() diff --git a/srcantiguo/extra/autocompletionUsers/wx_manage.py b/srcantiguo/extra/autocompletionUsers/wx_manage.py new file mode 100644 index 00000000..85455ab4 --- /dev/null +++ b/srcantiguo/extra/autocompletionUsers/wx_manage.py @@ -0,0 +1,44 @@ +# -*- coding: utf-8 -*- +import wx +import widgetUtils +from multiplatform_widgets import widgets +import application + +class autocompletionManageDialog(widgetUtils.BaseDialog): + def __init__(self): + super(autocompletionManageDialog, self).__init__(parent=None, id=-1, title=_(u"Manage Autocompletion database")) + panel = wx.Panel(self) + sizer = wx.BoxSizer(wx.VERTICAL) + label = wx.StaticText(panel, -1, _(u"Editing {0} users database").format(application.name,)) + self.users = widgets.list(panel, _(u"Username"), _(u"Name"), style=wx.LC_REPORT) + sizer.Add(label, 0, wx.ALL, 5) + sizer.Add(self.users.list, 0, wx.ALL, 5) + self.add = wx.Button(panel, -1, _(u"&Add user")) + self.remove = wx.Button(panel, -1, _(u"&Remove user")) + optionsBox = wx.BoxSizer(wx.HORIZONTAL) + optionsBox.Add(self.add, 0, wx.ALL, 5) + optionsBox.Add(self.remove, 0, wx.ALL, 5) + sizer.Add(optionsBox, 0, wx.ALL, 5) + ok = wx.Button(panel, wx.ID_OK) + cancel = wx.Button(panel, wx.ID_CANCEL) + sizerBtn = wx.BoxSizer(wx.HORIZONTAL) + sizerBtn.Add(ok, 0, wx.ALL, 5) + sizer.Add(cancel, 0, wx.ALL, 5) + sizer.Add(sizerBtn, 0, wx.ALL, 5) + panel.SetSizer(sizer) + self.SetClientSize(sizer.CalcMin()) + + def put_users(self, users): + for i in users: + j = [i[0], i[1]] + self.users.insert_item(False, *j) + + def get_user(self): + usr = False + userDlg = wx.TextEntryDialog(None, _(u"Twitter username"), _(u"Add user to database")) + if userDlg.ShowModal() == wx.ID_OK: + usr = userDlg.GetValue() + return usr + + def show_invalid_user_error(self): + wx.MessageDialog(None, _(u"The user does not exist"), _(u"Error!"), wx.ICON_ERROR).ShowModal() diff --git a/srcantiguo/extra/autocompletionUsers/wx_menu.py b/srcantiguo/extra/autocompletionUsers/wx_menu.py new file mode 100644 index 00000000..fb4aae1a --- /dev/null +++ b/srcantiguo/extra/autocompletionUsers/wx_menu.py @@ -0,0 +1,25 @@ +# -*- coding: utf-8 -*- +import wx + +class menu(wx.Menu): + def __init__(self, window, pattern, mode): + super(menu, self).__init__() + self.window = window + self.pattern = pattern + self.mode = mode + + def append_options(self, options): + for i in options: + item = wx.MenuItem(self, wx.ID_ANY, "%s (@%s)" % (i[1], i[0])) + self.Append(item) + self.Bind(wx.EVT_MENU, lambda evt, temp=i[0]: self.select_text(evt, temp), item) + + def select_text(self, ev, text): + if self.mode == "mastodon": + self.window.ChangeValue(self.window.GetValue().replace("@"+self.pattern, "@"+text+" ")) + elif self.mode == "free": + self.window.SetValue(self.window.GetValue().replace(self.pattern, text)) + self.window.SetInsertionPointEnd() + + def destroy(self): + self.Destroy() diff --git a/srcantiguo/extra/ocr/OCRSpace.py b/srcantiguo/extra/ocr/OCRSpace.py new file mode 100644 index 00000000..cee5e7c3 --- /dev/null +++ b/srcantiguo/extra/ocr/OCRSpace.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +""" original module taken and modified from https://github.com/ctoth/cloudOCR""" +from __future__ import unicode_literals +from builtins import object +import requests + +translatable_langs = [_(u"Detect automatically"), _(u"Danish"), _(u"Dutch"), _(u"English"), _(u"Finnish"), _(u"French"), _(u"German"), _(u"Hungarian"), _(u"Korean"), _(u"Italian"), _(u"Japanese"), _(u"Polish"), _(u"Portuguese"), _(u"Russian"), _(u"Spanish"), _(u"Turkish")] +short_langs = ["", "da", "du", "en", "fi", "fr", "de", "hu", "ko", "it", "ja", "pl", "pt", "ru", "es", "tr"] +OcrLangs = ["", "dan", "dut", "eng", "fin", "fre", "ger", "hun", "kor", "ita", "jpn", "pol", "por", "rus", "spa", "tur"] + +class APIError(Exception): + pass + +class OCRSpaceAPI(object): + + def __init__(self, key="4e72ae996f88957", url='https://api.ocr.space/parse/image'): + self.key = key + self.url = url + + def OCR_URL(self, url, overlay=False, lang=None): + payload = { + 'url': url, + 'isOverlayRequired': overlay, + 'apikey': self.key, + } + if lang != None: + payload.update(language=lang) + r = requests.post(self.url, data=payload) + result = r.json()['ParsedResults'][0] + if result['ErrorMessage']: + raise APIError(result['ErrorMessage']) + return result + + def OCR_file(self, fileobj, overlay=False): + payload = { + 'isOverlayRequired': overlay, + 'apikey': self.key, + 'lang': 'es', + } + r = requests.post(self.url, data=payload, files={'file': fileobj}) + results = r.json()['ParsedResults'] + if results[0]['ErrorMessage']: + raise APIError(results[0]['ErrorMessage']) + return results + diff --git a/srcantiguo/extra/ocr/__init__.py b/srcantiguo/extra/ocr/__init__.py new file mode 100644 index 00000000..5617235f --- /dev/null +++ b/srcantiguo/extra/ocr/__init__.py @@ -0,0 +1,5 @@ +# -*- coding: utf-8 -*- +from __future__ import absolute_import +from __future__ import unicode_literals +# -*- coding: utf-8 -*- +from . import OCRSpace diff --git a/srcantiguo/extra/translator/__init__.py b/srcantiguo/extra/translator/__init__.py new file mode 100644 index 00000000..5bd266b0 --- /dev/null +++ b/srcantiguo/extra/translator/__init__.py @@ -0,0 +1,2 @@ +# -*- coding: utf-8 -*- +from .translator import TranslatorController diff --git a/srcantiguo/extra/translator/engines/__init__.py b/srcantiguo/extra/translator/engines/__init__.py new file mode 100644 index 00000000..40a96afc --- /dev/null +++ b/srcantiguo/extra/translator/engines/__init__.py @@ -0,0 +1 @@ +# -*- coding: utf-8 -*- diff --git a/srcantiguo/extra/translator/engines/deep_l.py b/srcantiguo/extra/translator/engines/deep_l.py new file mode 100644 index 00000000..42a5d2b4 --- /dev/null +++ b/srcantiguo/extra/translator/engines/deep_l.py @@ -0,0 +1,14 @@ +# -*- coding: utf-8 -*- +import config +from deepl import Translator + +def translate(text: str, target_language: str) -> str: + key = config.app["translator"]["deepl_api_key"] + t = Translator(key) + return t.translate_text(text, target_lang=target_language).text + +def languages(): + key = config.app["translator"]["deepl_api_key"] + t = Translator(key) + langs = t.get_target_languages() + return langs \ No newline at end of file diff --git a/srcantiguo/extra/translator/engines/libre_translate.py b/srcantiguo/extra/translator/engines/libre_translate.py new file mode 100644 index 00000000..71a1ae06 --- /dev/null +++ b/srcantiguo/extra/translator/engines/libre_translate.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +""" Modified Libretranslatepy module which adds an user agent for making requests against more instances. """ +import json +from typing import Any, Dict +from urllib import request, parse +from libretranslatepy import LibreTranslateAPI + +class CustomLibreTranslateAPI(LibreTranslateAPI): + USER_AGENT = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36" + + def _create_request(self, url: str, method: str, data: Dict[str, str]) -> request.Request: + url_params = parse.urlencode(data) + req = request.Request(url, method=method, data=url_params.encode()) + req.add_header("User-Agent", self.USER_AGENT) + return req + + def translate(self, q: str, source: str = "en", target: str = "es", timeout: int | None = None) -> Any: + url = self.url + "translate" + params: Dict[str, str] = {"q": q, "source": source, "target": target} + if self.api_key is not None: + params["api_key"] = self.api_key + req = self._create_request(url=url, method="POST", data=params) + response = request.urlopen(req, timeout=timeout) + response_str = response.read().decode() + return json.loads(response_str)["translatedText"] + + def detect(self, q: str, timeout: int | None = None) -> Any: + url = self.url + "detect" + params: Dict[str, str] = {"q": q} + if self.api_key is not None: + params["api_key"] = self.api_key + req = self._create_request(url=url, method="POST", data=params) + response = request.urlopen(req, timeout=timeout) + response_str = response.read().decode() + return json.loads(response_str) + + def languages(self, timeout: int | None = None) -> Any: + url = self.url + "languages" + params: Dict[str, str] = dict() + if self.api_key is not None: + params["api_key"] = self.api_key + req = self._create_request(url=url, method="GET", data=params) + response = request.urlopen(req, timeout=timeout) + response_str = response.read().decode() + return json.loads(response_str) \ No newline at end of file diff --git a/srcantiguo/extra/translator/translator.py b/srcantiguo/extra/translator/translator.py new file mode 100644 index 00000000..1957d372 --- /dev/null +++ b/srcantiguo/extra/translator/translator.py @@ -0,0 +1,58 @@ +# -*- coding: utf-8 -*- +import logging +import threading +import wx +import config +from pubsub import pub +from . engines import libre_translate, deep_l +from .wx_ui import translateDialog + +log = logging.getLogger("extras.translator") + +class TranslatorController(object): + def __init__(self, text): + super(TranslatorController, self).__init__() + self.text = text + self.languages = [] + self.response = False + self.dialog = translateDialog() + pub.subscribe(self.on_engine_changed, "translator.engine_changed") + if config.app["translator"]["engine"] == "LibreTranslate": + self.dialog.engine_select.SetSelection(0) + elif config.app["translator"]["engine"] == "DeepL": + self.dialog.engine_select.SetSelection(1) + threading.Thread(target=self.load_languages).start() + if self.dialog.ShowModal() == wx.ID_OK: + self.response = True + for k in self.language_dict: + if self.language_dict[k] == self.dialog.dest_lang.GetStringSelection(): + self.target_language= k + pub.unsubscribe(self.on_engine_changed, "translator.engine_changed") + + def load_languages(self): + self.language_dict = self.get_languages() + self.languages = [self.language_dict[k] for k in self.language_dict] + self.dialog.set_languages(self.languages) + + def on_engine_changed(self, engine): + config.app["translator"]["engine"] = engine + config.app.write() + threading.Thread(target=self.load_languages).start() + + def translate(self): + log.debug("Received translation request for language %s, text=%s" % (self.target_language, self.text)) + if config.app["translator"].get("engine") == "LibreTranslate": + translator = libre_translate.CustomLibreTranslateAPI(config.app["translator"]["lt_api_url"], config.app["translator"]["lt_api_key"]) + vars = dict(q=self.text, target=self.target_language) + return translator.translate(**vars) + elif config.app["translator"]["engine"] == "DeepL" and config.app["translator"]["deepl_api_key"] != "": + return deep_l.translate(text=self.text, target_language=self.target_language) + + def get_languages(self): + languages = {} + if config.app["translator"].get("engine") == "LibreTranslate": + translator = libre_translate.CustomLibreTranslateAPI(config.app["translator"]["lt_api_url"], config.app["translator"]["lt_api_key"]) + languages = {l.get("code"): l.get("name") for l in translator.languages()} + elif config.app["translator"]["engine"] == "DeepL" and config.app["translator"]["deepl_api_key"] != "": + languages = {language.code: language.name for language in deep_l.languages()} + return dict(sorted(languages.items(), key=lambda x: x[1])) diff --git a/srcantiguo/extra/translator/wx_ui.py b/srcantiguo/extra/translator/wx_ui.py new file mode 100644 index 00000000..50a47c74 --- /dev/null +++ b/srcantiguo/extra/translator/wx_ui.py @@ -0,0 +1,56 @@ +# -*- coding: utf-8 -*- +############################################################ +# Copyright (c) 2013, 2014 Manuel Eduardo Cortéz Vallejo +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# +############################################################ +import wx +from pubsub import pub +from wxUI.dialogs import baseDialog + +class translateDialog(baseDialog.BaseWXDialog): + def __init__(self): + super(translateDialog, self).__init__(None, -1, title=_(u"Translate message")) + self.engines = ["LibreTranslate", "DeepL"] + panel = wx.Panel(self) + sizer = wx.BoxSizer(wx.VERTICAL) + staticEngine = wx.StaticText(panel, -1, _(u"Translation engine")) + self.engine_select = wx.ComboBox(panel, -1, choices=self.engines, style=wx.CB_READONLY) + self.engine_select.Bind(wx.EVT_COMBOBOX, lambda event: pub.sendMessage("translator.engine_changed", engine=self.engine_select.GetValue())) + staticDest = wx.StaticText(panel, -1, _(u"Target language")) + self.dest_lang = wx.ComboBox(panel, -1, style = wx.CB_READONLY) + self.dest_lang.SetFocus() + self.dest_lang.SetSelection(0) + engineSizer = wx.BoxSizer(wx.HORIZONTAL) + engineSizer.Add(staticEngine) + engineSizer.Add(self.engine_select) + listSizer = wx.BoxSizer(wx.HORIZONTAL) + listSizer.Add(staticDest) + listSizer.Add(self.dest_lang) + ok = wx.Button(panel, wx.ID_OK) + ok.SetDefault() + cancel = wx.Button(panel, wx.ID_CANCEL) + self.SetEscapeId(wx.ID_CANCEL) + sizer.Add(engineSizer, 0, wx.EXPAND | wx.ALL, 5) + sizer.Add(listSizer, 0, wx.EXPAND | wx.ALL, 5) + sizer.Add(ok, 0, wx.ALIGN_CENTER | wx.ALL, 5) + sizer.Add(cancel, 0, wx.ALIGN_CENTER | wx.ALL, 5) + panel.SetSizer(sizer) + + def set_languages(self, languages): + wx.CallAfter(self.dest_lang.SetItems, languages) + + def get(self, control): + return getattr(self, control).GetSelection() diff --git a/srcantiguo/fixes/__init__.py b/srcantiguo/fixes/__init__.py new file mode 100644 index 00000000..64d14301 --- /dev/null +++ b/srcantiguo/fixes/__init__.py @@ -0,0 +1,19 @@ +# -*- coding: utf-8 -*- +""" This module contains some bugfixes for packages used in TWBlue.""" +from __future__ import absolute_import +from __future__ import unicode_literals +import sys +from . import fix_arrow # A few new locales for Three languages in arrow. +#from . import fix_libloader # Regenerates comcache properly. +from . import fix_urllib3_warnings # Avoiding some SSL warnings related to Twython. +#from . import fix_win32com +#from . import fix_requests #fix cacert.pem location for TWBlue binary copies +def setup(): + fix_arrow.fix() +# if hasattr(sys, "frozen"): +# fix_libloader.fix() +# fix_win32com.fix() +# fix_requests.fix() +# else: +# fix_requests.fix(False) + fix_urllib3_warnings.fix() diff --git a/srcantiguo/fixes/fix_arrow.py b/srcantiguo/fixes/fix_arrow.py new file mode 100644 index 00000000..322c9af7 --- /dev/null +++ b/srcantiguo/fixes/fix_arrow.py @@ -0,0 +1,49 @@ +# -*- coding: utf-8 -*- +from arrow import locales +from arrow.locales import Locale + +def fix(): + # insert a modified function so if there is no language available in arrow, returns English locale. + locales.get_locale = get_locale + +def get_locale(name): + locale_cls = locales._locale_map.get(name.lower()) + if locale_cls is None: + name = name[:2] + locale_cls = locales._locale_map.get(name.lower()) + if locale_cls == None: + return locales.EnglishLocale() + return locale_cls() + +class GalicianLocale(object): + names = ['gl', 'gl_es', 'gl_gl'] + past = 'Hai {0}' + future = 'En {0}' + and_word = "e" + + timeframes = { + 'now': 'Agora', + "second": "un segundo", + 'seconds': '{0} segundos', + 'minute': 'un minuto', + 'minutes': '{0} minutos', + 'hour': 'unha hora', + 'hours': '{0} horas', + 'day': 'un día', + 'days': '{0} días', + "week": "unha semana", + "weeks": "{0} semanas", + 'month': 'un mes', + 'months': '{0} meses', + 'year': 'un ano', + 'years': '{0} anos', + } + + meridians = {"am": "am", "pm": "pm", "AM": "AM", "PM": "PM"} + + month_names = ['', 'xaneiro', 'febreiro', 'marzo', 'abril', 'maio', 'xuño', 'xullo', 'agosto', 'setembro', 'outubro', 'novembro', 'decembro'] + month_abbreviations = ['', 'xan', 'feb', 'mar', 'abr', 'mai', 'xun', 'xul', 'ago', 'set', 'out', 'nov', 'dec'] + day_names = ['', 'luns', 'martes', 'mércores', 'xoves', 'venres', 'sábado', 'domingo'] + day_abbreviations = ['', 'lun', 'mar', 'mer', 'xov', 'ven', 'sab', 'dom'] + ordinal_day_re = r"((?P[1-3]?[0-9](?=[ºª]))[ºª])" + diff --git a/srcantiguo/fixes/fix_libloader.py b/srcantiguo/fixes/fix_libloader.py new file mode 100644 index 00000000..064440f7 --- /dev/null +++ b/srcantiguo/fixes/fix_libloader.py @@ -0,0 +1,42 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals +import logging +import win32com +import paths +win32com.__build_path__=paths.com_path() +import sys +import os +sys.path.append(os.path.join(win32com.__gen_path__, ".")) +from win32com.client import gencache +from pywintypes import com_error +from libloader import com + +log = logging.getLogger("fixes.fix_libloader") + +fixed=False + +def patched_getmodule(modname): + mod=__import__(modname) + return sys.modules[modname] + +def load_com(*names): + global fixed + if fixed==False: + gencache._GetModule=patched_getmodule + com.prepare_gencache() + fixed=True + result = None + for name in names: + try: + result = gencache.EnsureDispatch(name) + break + except com_error: + continue + if result is None: + raise com_error("Unable to load any of the provided com objects.") + return result + +def fix(): + log.debug("Applying fix for Libloader...") + com.load_com = load_com + log.debug("Load_com has been mapped correctly.") diff --git a/srcantiguo/fixes/fix_requests.py b/srcantiguo/fixes/fix_requests.py new file mode 100644 index 00000000..f1e2b51e --- /dev/null +++ b/srcantiguo/fixes/fix_requests.py @@ -0,0 +1,12 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals +import requests +import paths +import os +import logging +log = logging.getLogger("fixes.fix_requests") + +def fix(): + log.debug("Applying fix for requests...") + os.environ["REQUESTS_CA_BUNDLE"] = os.path.join(paths.app_path(), "certifi", "cacert.pem")#.encode(paths.fsencoding) +# log.debug("Changed CA path to %s" % (os.environ["REQUESTS_CA_BUNDLE"]))#.decode(paths.fsencoding))) diff --git a/srcantiguo/fixes/fix_urllib3_warnings.py b/srcantiguo/fixes/fix_urllib3_warnings.py new file mode 100644 index 00000000..67c6d9ad --- /dev/null +++ b/srcantiguo/fixes/fix_urllib3_warnings.py @@ -0,0 +1,27 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals +from future import standard_library +standard_library.install_aliases() +from requests.packages import urllib3 +from requests.packages.urllib3 import fields +import six +import urllib.request, urllib.parse, urllib.error + +def fix(): + urllib3.disable_warnings() + fields.format_header_param=patched_format_header_param + +def patched_format_header_param(name, value): + if not any(ch in value for ch in '"\\\r\n'): + result = '%s="%s"' % (name, value) + try: + result.encode('ascii') + except (UnicodeEncodeError, UnicodeDecodeError): + pass + else: + return result + if not six.PY3 and isinstance(value, six.text_type): # Python 2: + value = value.encode('utf-8') + value=urllib.parse.quote(value, safe='') + value = '%s=%s' % (name, value) + return value diff --git a/srcantiguo/fixes/fix_win32com.py b/srcantiguo/fixes/fix_win32com.py new file mode 100644 index 00000000..bce06112 --- /dev/null +++ b/srcantiguo/fixes/fix_win32com.py @@ -0,0 +1,6 @@ +from __future__ import unicode_literals +import win32com.client +def fix(): + if win32com.client.gencache.is_readonly == True: + win32com.client.gencache.is_readonly = False + win32com.client.gencache.Rebuild() diff --git a/srcantiguo/icon.ico b/srcantiguo/icon.ico new file mode 100644 index 00000000..0f4d65e1 Binary files /dev/null and b/srcantiguo/icon.ico differ diff --git a/srcantiguo/keyboard_handler/__init__.py b/srcantiguo/keyboard_handler/__init__.py new file mode 100644 index 00000000..37e27619 --- /dev/null +++ b/srcantiguo/keyboard_handler/__init__.py @@ -0,0 +1,3 @@ +from __future__ import absolute_import +from .main import KeyboardHandler, KeyboardHandlerError +__all__ = ["KeyboardHandler", "KeyboardHandlerError", ] diff --git a/srcantiguo/keyboard_handler/global_handler.py b/srcantiguo/keyboard_handler/global_handler.py new file mode 100644 index 00000000..b50e082e --- /dev/null +++ b/srcantiguo/keyboard_handler/global_handler.py @@ -0,0 +1,8 @@ +from __future__ import absolute_import +import platform +if platform.system() == 'Linux': + from .linux import LinuxKeyboardHandler as GlobalKeyboardHandler +else: + from .wx_handler import WXKeyboardHandler as GlobalKeyboardHandler +#elif platform.system() == 'Darwin': + #from osx import OSXKeyboardHandler as GlobalKeyboardHandler diff --git a/srcantiguo/keyboard_handler/key_constants.py b/srcantiguo/keyboard_handler/key_constants.py new file mode 100644 index 00000000..6d88ffe9 --- /dev/null +++ b/srcantiguo/keyboard_handler/key_constants.py @@ -0,0 +1,128 @@ +keys = { + 'accept': 30, + 'add': 107, + 'apps': 93, + 'attn': 246, + 'back': 8, + 'browser_back': 166, + 'browser_forward': 167, + 'cancel': 3, + 'capital': 20, + 'clear': 12, + 'control': 17, + 'convert': 28, + 'crsel': 247, + 'decimal': 110, + 'delete': 46, + 'divide': 111, + 'down': 40, + 'end': 35, + 'ereof': 249, + 'escape': 27, + 'execute': 43, + 'exsel': 248, + 'f1': 112, + 'f10': 121, + 'f11': 122, + 'f12': 123, + 'f13': 124, + 'f14': 125, + 'f15': 126, + 'f16': 127, + 'f17': 128, + 'f18': 129, + 'f19': 130, + 'f2': 113, + 'f20': 131, + 'f21': 132, + 'f22': 133, + 'f23': 134, + 'f24': 135, + 'f3': 114, + 'f4': 115, + 'f5': 116, + 'f6': 117, + 'f7': 118, + 'f8': 119, + 'f9': 120, + 'final': 24, + 'hangeul': 21, + 'hangul': 21, + 'hanja': 25, + 'help': 47, + 'home': 36, + 'insert': 45, + 'junja': 23, + 'kana': 21, + 'kanji': 25, + 'lbutton': 1, + 'lcontrol': 162, + 'left': 37, + 'lmenu': 164, + 'lshift': 160, + 'lwin': 91, + 'mbutton': 4, + 'media_next_track': 176, + 'media_play_pause': 179, + 'media_prev_track': 177, + 'menu': 18, + 'modechange': 31, + 'multiply': 106, + 'next': 34, + 'noname': 252, + 'nonconvert': 29, + 'numlock': 144, + 'numpad0': 96, + 'numpad1': 97, + 'numpad2': 98, + 'numpad3': 99, + 'numpad4': 100, + 'numpad5': 101, + 'numpad6': 102, + 'numpad7': 103, + 'numpad8': 104, + 'numpad9': 105, + 'oem_clear': 254, + 'pa1': 253, + 'pagedown': 34, + 'pageup': 33, + 'pause': 19, + 'play': 250, + 'print': 42, + 'prior': 33, + 'processkey': 229, + 'rbutton': 2, + 'rcontrol': 163, + 'return': 13, + 'right': 39, + 'rmenu': 165, + 'rshift': 161, + 'rwin': 92, + 'scroll': 145, + 'select': 41, + 'separator': 108, + 'shift': 16, + 'snapshot': 44, + 'space': 32, + 'subtract': 109, + 'tab': 9, + 'up': 38, + 'volume_down': 174, + 'volume_mute': 173, + 'volume_up': 175, + 'xbutton1': 5, + 'xbutton2': 6, + 'zoom': 251, + '/': 191, + ';': 218, + '[': 219, + '\\': 220, + ']': 221, + '\'': 222, + '=': 187, + '-': 189, + ';': 186, +} + +modifiers = {'alt': 1, 'control': 2, 'shift': 4, 'win': 8} + diff --git a/srcantiguo/keyboard_handler/linux.py b/srcantiguo/keyboard_handler/linux.py new file mode 100644 index 00000000..378f3a25 --- /dev/null +++ b/srcantiguo/keyboard_handler/linux.py @@ -0,0 +1,58 @@ +from main import KeyboardHandler +import threading +import thread +import pyatspi +def parse(s): + """parse a string like control+f into (modifier, key). + Unknown modifiers will return ValueError.""" + m = 0 + lst = s.split('+') + if not len(lst): return (0, s) +#Are these right? + d = { + "shift": 1< 1: #more than one key, parse error + raise ValueError('unknown modifier %s' % lst[0]) + return (m, lst[0].lower()) +class AtspiThread(threading.Thread): + def run(self): + pyatspi.Registry.registerKeystrokeListener(handler, kind=(pyatspi.KEY_PRESSED_EVENT,), + mask=pyatspi.allModifiers()) + pyatspi.Registry.start() +#the keys we registered +keys = {} +def handler(e): + m,k = e.modifiers,e.event_string.lower() +#not sure why we can't catch control+f. Try to fix it. + if (not e.is_text) and e.id >= 97 <= 126: + k = chr(e.id) + if (m,k) not in keys: return False + thread.start_new(keys[(m,k)], ()) + return True #don't pass it on +class LinuxKeyboardHandler(KeyboardHandler): + def __init__(self, *args, **kwargs): + KeyboardHandler.__init__(self, *args, **kwargs) + t = AtspiThread() + t.start() + def register_key(self, key, function): + """key will be a string, such as control+shift+f. + We need to convert that, using parse_key, + into modifier and key to put into our dictionary.""" +#register key so we know if we have it on event receive. + t = parse(key) + keys[t] = function +#if we got this far, the key is valid. + KeyboardHandler.register_key(self, key, function) + + def unregister_key (self, key, function): + KeyboardHandler.unregister_key(self, key, function) + del keys[parse(key)] diff --git a/srcantiguo/keyboard_handler/main.py b/srcantiguo/keyboard_handler/main.py new file mode 100644 index 00000000..0020bf7d --- /dev/null +++ b/srcantiguo/keyboard_handler/main.py @@ -0,0 +1,88 @@ +import platform +import time + +class KeyboardHandlerError (Exception): pass + +class KeyboardHandler(object): + + def __init__(self, repeat_rate=0.0, *args, **kwargs): + self.repeat_rate = repeat_rate #How long between accepting the same keystroke? + self._last_key = None + self._last_keypress_time = 0 + super(KeyboardHandler, self).__init__(*args, **kwargs) + self.active_keys = {} + if not hasattr(self, 'replacement_mods'): + self.replacement_mods = {} + if not hasattr(self, 'replacement_keys'): + self.replacement_keys = {} + + def register_key (self, key, function): + if key in self.active_keys: + raise KeyboardHandlerError("Key %s is already registered to a function" % key) + if not callable(function): + raise TypeError("Must provide a callable to be invoked upon keypress") + self.active_keys[key] = function + + def unregister_key (self, key, function): + try: + if self.active_keys[key] != function: + raise KeyboardHandlerError("key %s is not registered to that function" % key) + except KeyError: + raise KeyboardHandlerError("Key %s not currently registered" % key) + del(self.active_keys[key]) + + def unregister_all_keys(self): + for key in list(self.active_keys): + self.unregister_key(key, self.active_keys[key]) + + def handle_key (self, key): + if self.repeat_rate and key == self._last_key and time.time() - self._last_keypress_time < self.repeat_rate: + return + try: + function = self.active_keys[key] + except KeyError: + return + self._last_key = key + self._last_keypress_time = time.time() + return function() + + def register_keys(self, keys): + """Given a mapping of keystrokes to functions, registers all keystrokes""" + for k in keys: + self.register_key(k, keys[k]) + + def unregister_keys(self, keys): + """Given a mapping of keys to their functions, unregisters all provided keys.""" + for k in keys: + self.unregister_key(k, keys[k]) + + def standardize_key(self, key): + """Takes a keystroke and places it in a standard case and order in a list.""" + working = key.split('+') + working = [i.lower() for i in working] + answer = [] + if "control" in working: + answer.append("control") + if "win" in working: + answer.append("win") + if "alt" in working: + answer.append("alt") + if "shift" in working: + answer.append("shift") + if working[-1] not in answer: + answer.append(working[-1]) + return answer + + def standardize_keymap(self, keymap): + """Given a keymap, returns the keymap standardized.""" + full = {} + for i in keymap: + answer = "" + new = self.standardize_key(keymap[i]) + for (c, j) in enumerate(new): + if c < len(new)-1: + answer = "%s%s+" % (answer, j) + else: + answer = "%s%s" % (answer, j) + full[i] = answer + return full diff --git a/srcantiguo/keyboard_handler/osx.py b/srcantiguo/keyboard_handler/osx.py new file mode 100644 index 00000000..f63e85ad --- /dev/null +++ b/srcantiguo/keyboard_handler/osx.py @@ -0,0 +1,56 @@ +from AppKit import * +from PyObjCTools import AppHelper +from Carbon.CarbonEvt import RegisterEventHotKey, GetApplicationEventTarget +from Carbon.Events import cmdKey, controlKey +import struct +from threading import Thread + +from main import KeyboardHandler + +kEventHotKeyPressedSubtype = 6 +kEventHotKeyReleasedSubtype = 9 + +class OSXKeyboardHandler(KeyboardHandler): + + def __init__(self): + super(OSXKeyboardHandler, self).__init__() + self.replacement_keys = dict() + self.app = KeyboardCapturingNSApplication.alloc().init() + self._event_thread = Thread(target=AppHelper.runEventLoop) + self._event_thread.start() + + def register_key (self, key, function): + super(OSXKeyboardHandler, self).register_key(key, function) + k, m = self.parse_key(key) + key_id = RegisterEventHotKey(k, m, (0, 0), GetApplicationEventTarget(), 0) + self.key_ids[key] = key_id + + def unregister_key (self, key, function): + super(OSXKeyboardHandler, self).unregister_key(key, function) + key_id = self.key_ids[key] + raise NotImplementedError + + def parse_key (self, key): + key=key.split("+") + #replacements + #Modifier keys: + for index, item in enumerate(key[0:-1]): + if self.replacement_mods.has_key(item): + key[index] = self.replacement_mods[item] + if self.replacement_keys.has_key(key[-1]): + key[-1] = self.replacement_keys[key[-1]] + elif len(key[-1])==1: + key[-1] = ord(str(key[-1]))-36 + mods = 0 + for i in key[:-1]: + mods = mods|i + return [key[-1], mods] + +class KeyboardCapturingNSApplication(NSApplication): + + def sendEvent_(self, theEvent): + if theEvent.type() == NSSystemDefined and theEvent.subtype() == kEventHotKeyPressedSubtype: + self.activateIgnoringOtherApps_(True) + NSRunAlertPanel(u'Hot Key Pressed', u'Hot Key Pressed', None, None, None) + super(NSApplication, self).sendEvent_(theEvent) + diff --git a/srcantiguo/keyboard_handler/windows.py b/srcantiguo/keyboard_handler/windows.py new file mode 100644 index 00000000..2411c38c --- /dev/null +++ b/srcantiguo/keyboard_handler/windows.py @@ -0,0 +1,40 @@ +import win32api +import win32con + +from main import KeyboardHandler + +class WindowsKeyboardHandler(KeyboardHandler): + + def __init__ (self, *args, **kwargs): + super(WindowsKeyboardHandler, self).__init__(*args, **kwargs) + #Setup the replacement dictionaries. + for i in dir(win32con): + if i.startswith("VK_"): + key = i[3:].lower() + self.replacement_keys[key] = getattr(win32con, i) + elif i.startswith("MOD_"): + key = i[4:].lower() + self.replacement_mods[key] = getattr(win32con, i) + self.replacement_keys .update(dict(pageup=win32con.VK_PRIOR, pagedown=win32con.VK_NEXT)) + + def parse_key (self, keystroke, separator="+"): + keystroke = str(keystroke) #We don't want unicode + keystroke = [self.keycode_from_key(i) for i in keystroke.split(separator)] + mods = 0 + for i in keystroke[:-1]: + mods = mods | i #or everything together + return (mods, keystroke[-1]) + + def keycode_from_key(self, key): + if key in self.replacement_mods: + return self.replacement_mods[key] + if key in self.replacement_keys: + return self.replacement_keys[key] + if len(key) == 1: + return win32api.VkKeyScanEx(key, win32api.GetKeyboardLayout()) + + def is_key_pressed(self, key): + """Returns if the given key was pressed. Requires an active message loop or will simply give if the key was pressed recently.""" + key = self.keycode_from_key(key) + return win32api.GetAsyncKeyState(key) + diff --git a/srcantiguo/keyboard_handler/wx_handler.py b/srcantiguo/keyboard_handler/wx_handler.py new file mode 100644 index 00000000..ff16db3d --- /dev/null +++ b/srcantiguo/keyboard_handler/wx_handler.py @@ -0,0 +1,130 @@ +from __future__ import absolute_import +import functools +import logging +logger = logging.getLogger("keyboard_handler") +import wx + +from .main import KeyboardHandler, KeyboardHandlerError +from . import key_constants + +__all__ = ['WXKeyboardHandler', 'WXControlKeyboardHandler'] + +def call_after(func): + def wrapper(*args, **kwargs): + wx.CallAfter(func, *args, **kwargs) + functools.update_wrapper(wrapper, func) + return wrapper + + +class BaseWXKeyboardHandler(KeyboardHandler): + + def __init__(self, *args, **kwargs): + super(BaseWXKeyboardHandler, self).__init__(*args, **kwargs) + #Setup the replacement dictionaries. + for i in dir(wx): + if i.startswith('WXK_'): + key = i[4:].lower() + self.replacement_keys[key] = getattr(wx, i) + elif i.startswith('MOD_'): + key = i[4:].lower() + self.replacement_mods[key] = getattr(wx, i) + + def parse_key (self, keystroke, separator="+"): + keystroke = [self.keycode_from_key(i) for i in keystroke.split(separator)] + mods = 0 + for i in keystroke[:-1]: + mods = mods | i #or everything together + return (mods, keystroke[-1]) + + def keycode_from_key(self, key): + result = None + if key in self.replacement_mods: + result = self.replacement_mods[key] + elif key in self.replacement_keys: + result = self.replacement_keys[key] + if result >= 277: + result -= 277 + elif len(key) == 1: + result = ord(key.upper()) + if result is None: + raise KeyboardHandlerError("Could not translate key %r into a valid keycode." % key) + return result + + + +class WXKeyboardHandler(BaseWXKeyboardHandler): + + def __init__ (self, parent, *args, **kwargs): + super(WXKeyboardHandler, self).__init__(*args, **kwargs) + self.parent = parent + self.key_ids = {} + self.replacement_keys = key_constants.keys + self.replacement_mods = key_constants.modifiers + + @call_after + def register_key(self, key, function): + super(WXKeyboardHandler, self).register_key(key, function) + key_id = wx.NewId() + parsed = self.parse_key(key) + res = self.parent.RegisterHotKey(key_id, *parsed) + if not res: + logger.warn("Failed to register hotkey: %s for function %r", key, function) + self.parent.Bind(wx.EVT_HOTKEY, lambda evt: self.process_key(evt, key_id), id=key_id) + self.key_ids[key] = key_id + return res + + def parse_key (self, keystroke, separator="+"): + keystroke = str(keystroke) #We don't want unicode + keystroke = [self.keycode_from_key(i) for i in keystroke.split(separator)] + mods = 0 + for i in keystroke[:-1]: + mods = mods | i #or everything together + return (mods, keystroke[-1]) + + @call_after + def unregister_key (self, key, function): + super(WXKeyboardHandler, self).unregister_key(key, function) + if key not in self.key_ids: + return #there's nothing we can do. + key_id = self.key_ids[key] + self.parent.UnregisterHotKey(key_id) + self.parent.Unbind( wx.EVT_HOTKEY, id=key_id) + self.key_ids.pop(key) + + def process_key (self, evt, id): + evt.Skip() + key_ids = self.key_ids.keys() + for i in key_ids: + if self.key_ids.get(i) == id: + self.handle_key(i) + +class WXControlKeyboardHandler(wx.StaticText, KeyboardHandler): + + def __init__(self, parent=None, *a, **k): + wx.StaticText.__init__(self, parent=parent) + KeyboardHandler.__init__(self, *a, **k) + self.wx_replacements = {} + for i in [d for d in dir(wx) if d.startswith('WXK_')]: + self.wx_replacements[getattr(wx, i)] = i[4:].lower() + self.Bind(wx.EVT_KEY_DOWN, self.process_key, self) + self.SetFocus() + + def process_key(self, evt): + keycode = evt.GetKeyCode() + keyname = self.wx_replacements.get(keycode, None) + modifiers = "" + replacements = ( (evt.ControlDown(), 'control+'), + (evt.AltDown(), 'alt+'), + (evt.ShiftDown(), 'shift+'), + (evt.MetaDown(), 'win+') + ) + for mod, ch in (replacements): + if mod: + modifiers += ch + if keyname is None: + if 27 < keycode < 256: + keyname = chr(keycode).lower() + else: + keyname = "(%s)unknown" % keycode + key = modifiers + keyname + self.handle_key(key) diff --git a/srcantiguo/keymaps/Chicken Nugget.keymap b/srcantiguo/keymaps/Chicken Nugget.keymap new file mode 100644 index 00000000..9d95a47f --- /dev/null +++ b/srcantiguo/keymaps/Chicken Nugget.keymap @@ -0,0 +1,40 @@ +[info] +name = string(default="Chicken Nugget") +desc = string(default="Remaps TWBlue shortcuts to their equivalents in Christopher Toth's Chicken Nugget Twitter client.") +author = string(default="Bill Dengler ") + +[keymap] +up = string(default="control+win+up") +down = string(default="control+win+down") +left = string(default="control+win+left") +right = string(default="control+win+right") +open_conversation = string(default="control+win+c") +show_hide = string(default="control+win+w") +post_tweet = string(default="control+win+t") +post_reply = string(default="control+win+r") +post_retweet = string(default="control+win+shift+t") +send_dm = string(default="control+win+d") +user_details = string(default="control+win+shift+u") +exit = string(default="control+win+q") +open_timeline = string(default="control+win+u") +remove_buffer = string(default="control+win+back") +audio = string(default="control+win+return") +url = string(default="control+win+b") +go_home = string(default="control+win+home") +go_end = string(default="control+win+end") +delete = string(default="control+win+delete") +edit_post = string(default="") +clear_buffer = string(default="control+win+shift+delete") +repeat_item = string(default="control+win+space") +copy_to_clipboard = string(default="control+win+shift+c") +search = string(default="control+win+/") +find = string(default="control+win+shift+/") +check_for_updates = string(default="alt+win+u") +list_manager = string(default="control+win+shift+l") +configuration = string(default="control+win+o") +accountConfiguration = string(default="control+win+shift+o") +update_buffer = string(default="control+win+shift+u") +ocr_image = string(default="win+alt+o") +open_in_browser = string(default="alt+control+win+return") +add_alias=string(default="") +vote=string(default="alt+win+shift+v") \ No newline at end of file diff --git a/srcantiguo/keymaps/Qwitter.keymap b/srcantiguo/keymaps/Qwitter.keymap new file mode 100644 index 00000000..bc0e062f --- /dev/null +++ b/srcantiguo/keymaps/Qwitter.keymap @@ -0,0 +1,59 @@ +[info] +name = string(default="Qwitter") +desc = string(default="A keymap which emulates Qwitter as closely as possible.") +author = string(default="Bill Dengler ") + +[keymap] +up = string(default="control+win+up") +down = string(default="control+win+down") +left = string(default="control+win+left") +right = string(default="control+win+right") +next_account = string(default="control+win+shift+right") +previous_account = string(default="control+win+shift+left") +show_hide = string(default="control+win+w") +post_tweet = string(default="control+win+n") +post_reply = string(default="control+win+r") +post_retweet = string(default="control+win+shift+r") +send_dm = string(default="control+win+d") +add_to_favourites = string(default="alt+win+f") +remove_from_favourites = string(default="alt+shift+win+f") +follow = string(default="control+win+l") +user_details = string(default="control+win+shift+;") +view_item = string(default="control+win+v") +exit = string(default="control+win+f4") +open_timeline = string(default="control+win+i") +remove_buffer = '''string(default="control+win+'")''' +url = string(default="control+win+return") +audio = string(default="control+win+shift+return") +volume_up = string(default="control+win+alt+up") +volume_down = string(default="control+win+alt+down") +go_home = string(default="control+win+home") +go_end = string(default="control+win+end") +go_page_up = string(default="control+win+pageup") +go_page_down = string(default="control+win+pagedown") +update_profile = string(default="control+win+shift+p") +delete = string(default="control+win+delete") +edit_post = string(default="") +clear_buffer = string(default="control+win+shift+delete") +repeat_item = string(default="control+win+space") +copy_to_clipboard = string(default="control+win+shift+c") +add_to_list = string(default="control+win+alt+l") +remove_from_list = string(default="control+win+alt+shift+l") +toggle_buffer_mute = string(default="control+win+alt+m") +toggle_session_mute = string(default="control+win+m") +search = string(default="control+win+/") +find = string(default="control+win+shift+/") +edit_keystrokes = string(default="control+win+k") +view_user_lists = string(default="win+alt+shift+l") +reverse_geocode = string(default="control+win+g") +view_reverse_geocode = string(default="control+win+shift+g") +get_trending_topics = string(default="control+win+shift+t") +check_for_updates = string(default="control+win+u") +list_manager = string(default="control+win+shift+l") +configuration = string(default="control+win+o") +accountConfiguration = string(default="control+win+shift+o") +update_buffer = string(default="control+win+shift+u") +ocr_image = string(default="win+alt+o") +open_in_browser = string(default="alt+control+win+return") +add_alias=string(default="") +vote=string(default="alt+win+shift+v") \ No newline at end of file diff --git a/srcantiguo/keymaps/Windows 10.keymap b/srcantiguo/keymaps/Windows 10.keymap new file mode 100644 index 00000000..c12d78ee --- /dev/null +++ b/srcantiguo/keymaps/Windows 10.keymap @@ -0,0 +1,62 @@ +[info] +name = string(default="Windows 10") +desc = string(default="A keymap with remapped modifiers for Windows 10 compatibility.") +author = string(default="Bill Dengler ") + +[keymap] +up = string(default="alt+win+up") +down = string(default="alt+win+down") +left = string(default="alt+win+left") +right = string(default="alt+win+right") +next_account = string(default="alt+win+shift+right") +previous_account = string(default="alt+win+shift+left") +open_conversation = string(default="alt+win+c") +show_hide = string(default="control+win+w") +post_tweet = string(default="alt+win+n") +post_reply = string(default="control+win+r") +post_retweet = string(default="alt+win+shift+r") +send_dm = string(default="alt+win+shift+d") +toggle_like = string(default="control+alt+win+f") +follow = string(default="alt+win+shift+s") +user_details = string(default="alt+win+shift+n") +view_item = string(default="alt+win+v") +exit = string(default="alt+win+f4") +open_timeline = string(default="alt+win+i") +remove_buffer = string(default="alt+win+shift+i") +url = string(default="alt+win+return") +audio = string(default="alt+shift+win+return") +volume_up = string(default="alt+win+shift+up") +go_home = string(default="alt+win+home") +volume_down = string(default="alt+win+shift+down") +go_end = string(default="alt+win+end") +go_page_up = string(default="control+win+pageup") +go_page_down = string(default="control+win+pagedown") +update_profile = string(default="alt+win+p") +delete = string(default="alt+win+delete") +edit_post = string(default="") +clear_buffer = string(default="alt+win+shift+delete") +repeat_item = string(default="alt+win+space") +copy_to_clipboard = string(default="alt+win+shift+c") +add_to_list = string(default="alt+win+a") +remove_from_list = string(default="alt+win+shift+a") +toggle_buffer_mute = string(default="alt+win+shift+m") +toggle_session_mute = string(default="control+alt+win+m") +toggle_autoread = string(default="alt+win+e") +search = string(default="alt+win+-") +edit_keystrokes = string(default="alt+win+k") +view_user_lists = string(default="alt+win+l") +get_more_items = string(default="alt+win+pageup") +reverse_geocode = string(default="control+win+g") +view_reverse_geocode = string(default="alt+win+shift+g") +get_trending_topics = string(default="control+win+t") +check_for_updates = string(default="alt+win+u") +list_manager = string(default="alt+win+shift+l") +configuration = string(default="control+win+alt+o") +accountConfiguration = string(default="control+win+shift+o") +update_buffer = string(default="control+alt+shift+u") +ocr_image = string(default="win+alt+o") +open_in_browser = string(default="alt+control+win+return") +add_alias=string(default="") +mute_conversation=string(default="control+alt+win+back") +find = string(default="control+win+{") +vote=string(default="alt+win+shift+v") \ No newline at end of file diff --git a/srcantiguo/keymaps/Windows11.keymap b/srcantiguo/keymaps/Windows11.keymap new file mode 100644 index 00000000..c4301cff --- /dev/null +++ b/srcantiguo/keymaps/Windows11.keymap @@ -0,0 +1,62 @@ +[info] +name = string(default="Windows 11") +desc = string(default="A keymap with remapped modifiers for Windows 11 compatibility.") +author = string(default="Bill Jesús ") + +[keymap] +up = string(default="control+alt+win+up") +down = string(default="control+alt+win+down") +left = string(default="control+alt+win+left") +right = string(default="control+alt+win+right") +next_account = string(default="control+alt+win+shift+right") +previous_account = string(default="control+alt+win+shift+left") +open_conversation = string(default="control+alt+win+c") +show_hide = string(default="control+win+w") +post_tweet = string(default="alt+win+n") +post_reply = string(default="control+win+r") +post_retweet = string(default="alt+win+shift+r") +send_dm = string(default="alt+win+shift+d") +toggle_like = string(default="control+alt+win+f") +follow = string(default="alt+win+shift+s") +user_details = string(default="alt+win+shift+n") +view_item = string(default="alt+win+v") +exit = string(default="alt+win+f4") +open_timeline = string(default="alt+win+i") +remove_buffer = string(default="alt+win+shift+i") +url = string(default="alt+win+return") +audio = string(default="alt+shift+win+return") +volume_up = string(default="control+alt+win+shift+up") +go_home = string(default="control+alt+win+home") +volume_down = string(default="control+alt+win+shift+down") +go_end = string(default="control+alt+win+end") +go_page_up = string(default="control+win+pageup") +go_page_down = string(default="control+win+pagedown") +update_profile = string(default="alt+win+p") +delete = string(default="alt+win+delete") +edit_post = string(default="") +clear_buffer = string(default="alt+win+shift+delete") +repeat_item = string(default="control+alt+win+space") +copy_to_clipboard = string(default="alt+win+shift+c") +add_to_list = string(default="alt+win+a") +remove_from_list = string(default="alt+win+shift+a") +toggle_buffer_mute = string(default="alt+win+shift+m") +toggle_session_mute = string(default="control+alt+win+m") +toggle_autoread = string(default="alt+win+e") +search = string(default="alt+win+-") +edit_keystrokes = string(default="control+alt+win+k") +view_user_lists = string(default="alt+win+l") +get_more_items = string(default="alt+win+pageup") +reverse_geocode = string(default="control+win+g") +view_reverse_geocode = string(default="alt+win+shift+g") +get_trending_topics = string(default="control+win+t") +check_for_updates = string(default="alt+win+u") +list_manager = string(default="alt+win+shift+l") +configuration = string(default="control+win+alt+o") +accountConfiguration = string(default="control+win+shift+o") +update_buffer = string(default="control+alt+shift+u") +ocr_image = string(default="win+alt+o") +open_in_browser = string(default="alt+control+win+return") +add_alias=string(default="") +mute_conversation=string(default="control+alt+win+back") +find = string(default="control+win+{") +vote=string(default="alt+win+shift+v") \ No newline at end of file diff --git a/srcantiguo/keymaps/base.template b/srcantiguo/keymaps/base.template new file mode 100644 index 00000000..dba8fa2c --- /dev/null +++ b/srcantiguo/keymaps/base.template @@ -0,0 +1,61 @@ +[info] +name = string(default="Untitled Keymap") +desc = string(default="A fairly nondescript keymap. Nothing noteworthy.") +author = string(default="Nobody") + +[keymap] +up = string(default="control+win+up") +down = string(default="control+win+down") +left = string(default="control+win+left") +right = string(default="control+win+right") +next_account = string(default="control+win+shift+right") +previous_account = string(default="control+win+shift+left") +open_conversation = string(default="control+win+c") +show_hide = string(default="control+win+m") +post_tweet = string(default="control+win+n") +post_reply = string(default="control+win+r") +post_retweet = string(default="control+win+shift+r") +send_dm = string(default="control+win+d") +add_to_favourites = string(default="alt+win+f") +remove_from_favourites = string(default="alt+shift+win+f") +follow = string(default="control+win+s") +user_details = string(default="control+win+alt+n") +view_item = string(default="control+win+v") +exit = string(default="control+win+f4") +open_timeline = string(default="control+win+i") +remove_buffer = string(default="control+win+shift+i") +audio = string(default="control+win+return") +secondary_interact = string(default="control+win+alt+return") +volume_up = string(default="control+win+alt+up") +volume_down = string(default="control+win+alt+down") +go_home = string(default="control+win+home") +go_end = string(default="control+win+end") +go_page_up = string(default="control+win+pageup") +go_page_down = string(default="control+win+pagedown") +update_profile = string(default="alt+win+p") +delete = string(default="control+win+delete") +clear_buffer = string(default="control+win+shift+delete") +repeat_item = string(default="control+win+space") +copy_to_clipboard = string(default="control+win+shift+c") +add_to_list = string(default="control+win+a") +remove_from_list = string(default="control+win+shift+a") +toggle_buffer_mute = string(default="control+win+shift+m") +toggle_session_mute = string(default="alt+win+m") +toggle_autoread = string(default="control+win+e") +search = string(default="control+win+-") +find = string(default="control+win+/") +edit_keystrokes = string(default="control+win+k") +view_user_lists = string(default="control+win+l") +get_more_items = string(default="alt+win+pageup") +reverse_geocode = string(default="control+win+g") +view_reverse_geocode = string(default="control+win+shift+g") +get_trending_topics = string(default="control+win+t") +check_for_updates = string(default="control+win+u") +list_manager = string(default="control+win+shift+l") +configuration = string(default="control+win+o") +accountConfiguration = string(default="control+win+shift+o") +update_buffer = string(default="control+win+shift+u") +open_in_browser = string(default="alt+control+win+return") +add_alias=string(default="") +mute_conversation=string(default="alt+win+shift+delete") +vote=string(default="alt+win+shift+v") \ No newline at end of file diff --git a/srcantiguo/keymaps/default.keymap b/srcantiguo/keymaps/default.keymap new file mode 100644 index 00000000..30e6bcbb --- /dev/null +++ b/srcantiguo/keymaps/default.keymap @@ -0,0 +1,63 @@ +[info] +name = string(default="Default") +desc = string(default="TWBlue's default keymap.") +author = string(default="Bill Dengler ") + +[keymap] +up = string(default="control+win+up") +down = string(default="control+win+down") +left = string(default="control+win+left") +right = string(default="control+win+right") +next_account = string(default="control+win+shift+right") +previous_account = string(default="control+win+shift+left") +open_conversation = string(default="control+win+c") +show_hide = string(default="control+win+m") +post_tweet = string(default="control+win+n") +post_reply = string(default="control+win+r") +post_retweet = string(default="control+win+shift+r") +send_dm = string(default="control+win+d") +add_to_favourites = string(default="alt+win+f") +remove_from_favourites = string(default="alt+shift+win+f") +follow = string(default="control+win+s") +user_details = string(default="control+win+alt+n") +view_item = string(default="control+win+v") +exit = string(default="control+win+f4") +open_timeline = string(default="control+win+i") +remove_buffer = string(default="control+win+shift+i") +audio = string(default="control+alt+win+return") +url = string(default="control+win+return") +volume_up = string(default="control+win+alt+up") +volume_down = string(default="control+win+alt+down") +go_home = string(default="control+win+home") +go_end = string(default="control+win+end") +go_page_up = string(default="control+win+pageup") +go_page_down = string(default="control+win+pagedown") +update_profile = string(default="alt+win+p") +delete = string(default="control+win+delete") +edit_post = string(default="") +clear_buffer = string(default="control+win+shift+delete") +repeat_item = string(default="control+win+space") +copy_to_clipboard = string(default="control+win+shift+c") +add_to_list = string(default="control+win+a") +remove_from_list = string(default="control+win+shift+a") +toggle_buffer_mute = string(default="control+win+shift+m") +toggle_session_mute = string(default="alt+win+m") +toggle_autoread = string(default="control+win+e") +search = string(default="control+win+-") +edit_keystrokes = string(default="control+win+k") +view_user_lists = string(default="control+win+l") +get_more_items = string(default="alt+win+pageup") +reverse_geocode = string(default="control+win+g") +view_reverse_geocode = string(default="control+win+shift+g") +get_trending_topics = string(default="control+win+t") +find = string(default="control+win+{") +check_for_updates = string(default="control+win+u") +list_manager = string(default="control+win+shift+l") +configuration = string(default="control+win+o") +accountConfiguration = string(default="control+win+shift+o") +update_buffer = string(default="control+win+shift+u") +ocr_image = string(default="win+alt+o") +open_in_browser = string(default="alt+control+win+return") +add_alias=string(default="") +mute_conversation=string(default="alt+win+shift+delete") +vote=string(default="alt+win+shift+v") \ No newline at end of file diff --git a/srcantiguo/keystrokeEditor/__init__.py b/srcantiguo/keystrokeEditor/__init__.py new file mode 100644 index 00000000..52a646e0 --- /dev/null +++ b/srcantiguo/keystrokeEditor/__init__.py @@ -0,0 +1 @@ +from .keystrokeEditor import KeystrokeEditor diff --git a/srcantiguo/keystrokeEditor/actions/__init__.py b/srcantiguo/keystrokeEditor/actions/__init__.py new file mode 100644 index 00000000..f18d4a6f --- /dev/null +++ b/srcantiguo/keystrokeEditor/actions/__init__.py @@ -0,0 +1 @@ +from . import mastodon \ No newline at end of file diff --git a/srcantiguo/keystrokeEditor/actions/mastodon.py b/srcantiguo/keystrokeEditor/actions/mastodon.py new file mode 100644 index 00000000..3f07f152 --- /dev/null +++ b/srcantiguo/keystrokeEditor/actions/mastodon.py @@ -0,0 +1,58 @@ +# -*- coding: utf-8 -*- +actions = { + "up": _(u"Go up in the current buffer"), + "down": _(u"Go down in the current buffer"), + "left": _(u"Go to the previous buffer"), + "right": _(u"Go to the next buffer"), + "next_account": _(u"Focus the next session"), + "previous_account": _(u"Focus the previous session"), + "show_hide": _(u"Show or hide the GUI"), + "post_tweet": _("Make a new post"), + "post_reply": _(u"Reply"), + "post_retweet": _(u"Boost"), + "send_dm": _(u"Send direct message"), + "add_to_favourites": _("Add post to favorites"), + "remove_from_favourites": _(u"Remove post from favorites"), + "toggle_like": _("Add/remove post from favorites"), + "follow": _(u"Open the user actions dialogue"), + "user_details": _(u"See user details"), + "view_item": _(u"Show post"), + "exit": _(u"Quit"), + "open_timeline": _(u"Open user timeline"), + "remove_buffer": _(u"Destroy buffer"), + "interact": _(u"Interact with the currently focused post."), + "url": _(u"Open URL"), + "open_in_browser": _(u"View in browser"), + "volume_up": _(u"Increase volume by 5%"), + "volume_down": _(u"Decrease volume by 5%"), + "go_home": _(u"Jump to the first element of a buffer"), + "go_end": _(u"Jump to the last element of the current buffer"), + "go_page_up": _(u"Jump 20 elements up in the current buffer"), + "go_page_down": _(u"Jump 20 elements down in the current buffer"), +# "update_profile": _(u"Edit profile"), + "delete": _("Delete post"), + "clear_buffer": _(u"Empty the current buffer"), + "repeat_item": _(u"Repeat last item"), + "copy_to_clipboard": _(u"Copy to clipboard"), +# "add_to_list": _(u"Add to list"), +# "remove_from_list": _(u"Remove from list"), + "toggle_buffer_mute": _(u"Mute/unmute the active buffer"), + "toggle_session_mute": _(u"Mute/unmute the current session"), + "toggle_autoread": _(u"toggle the automatic reading of incoming tweets in the active buffer"), + "search": _(u"Search on instance"), + "find": _(u"Find a string in the currently focused buffer"), + "edit_keystrokes": _(u"Show the keystroke editor"), +# "view_user_lists": _(u"Show lists for a specified user"), + "get_more_items": _(u"load previous items"), +# "get_trending_topics": _(u"Create a trending topics buffer"), + "open_conversation": _(u"View conversation"), + "check_for_updates": _(u"Check and download updates"), + "configuration": _(u"Opens the global settings dialogue"), +# "list_manager": _(u"Opens the list manager"), + "accountConfiguration": _(u"Opens the account settings dialogue"), + "audio": _(u"Try to play a media file"), + "update_buffer": _(u"Updates the buffer and retrieves possible lost items there."), + "ocr_image": _(u"Extracts the text from a picture and displays the result in a dialog."), + "add_alias": _("Adds an alias to an user"), + "mute_conversation": _("Mute/Unmute conversation"), +} \ No newline at end of file diff --git a/srcantiguo/keystrokeEditor/keystrokeEditor.py b/srcantiguo/keystrokeEditor/keystrokeEditor.py new file mode 100644 index 00000000..d7b5bb6b --- /dev/null +++ b/srcantiguo/keystrokeEditor/keystrokeEditor.py @@ -0,0 +1,71 @@ +# -*- coding: utf-8 -*- +import widgetUtils +import config +from . import wx_ui +from . import actions +from pubsub import pub + +class KeystrokeEditor(object): + def __init__(self, session_type="twitter"): + super(KeystrokeEditor, self).__init__() + self.actions = getattr(actions, session_type).actions + self.changed = False # Change it if the keyboard shorcuts are reassigned. + self.dialog = wx_ui.keystrokeEditorDialog() + self.map = config.keymap["keymap"] + # we need to copy the keymap before modify it, for unregistering the old keystrokes if is needed. + self.hold_map = self.map.copy() + self.dialog.put_keystrokes(self.actions, self.map) + widgetUtils.connect_event(self.dialog.edit, widgetUtils.BUTTON_PRESSED, self.edit_keystroke) + widgetUtils.connect_event(self.dialog.undefine, widgetUtils.BUTTON_PRESSED, self.undefine_keystroke) + widgetUtils.connect_event(self.dialog.execute, widgetUtils.BUTTON_PRESSED, self.execute_action) + self.dialog.get_response() + + def edit_keystroke(self, *args, **kwargs): + action = self.dialog.actions[self.dialog.get_action()] + edit_dialog = wx_ui.editKeystrokeDialog() + self.set_keystroke(self.map[action], edit_dialog) + answer = edit_dialog.get_response() + if answer == widgetUtils.OK: + new_keystroke = self.get_edited_keystroke(edit_dialog) + if new_keystroke != self.map[action]: + self.changed = True + self.map[action] = new_keystroke + self.dialog.put_keystrokes(self.actions, self.map) + + def undefine_keystroke(self, *args, **kwargs): + action = self.dialog.actions[self.dialog.get_action()] + keystroke = self.map.get(action) + if keystroke == None: + return + answer = self.dialog.undefine_keystroke_confirmation() + if answer == widgetUtils.YES: + self.map[action] = "" + self.changed = True + self.dialog.put_keystrokes(self.actions, self.map) + + def set_keystroke(self, keystroke, dialog): + for i in keystroke.split("+"): + if hasattr(dialog, i): + dialog.set(i, True) + dialog.set("key", keystroke.split("+")[-1]) + + def get_edited_keystroke(self, dialog): + keys = [] + if dialog.get("control") == True: + keys.append("control") + if dialog.get("win") == True: + keys.append("win") + if dialog.get("alt") == True: + keys.append("alt") + if dialog.get("shift") == True: + keys.append("shift") + if dialog.get("key") != "": + keys.append(dialog.get("key")) + else: + wx_ui.no_key() + return + return "+".join(keys) + + def execute_action(self, *args, **kwargs): + action = self.dialog.actions[self.dialog.get_action()] + pub.sendMessage("execute-action", action=action) diff --git a/srcantiguo/keystrokeEditor/wx_ui.py b/srcantiguo/keystrokeEditor/wx_ui.py new file mode 100644 index 00000000..fe6f1923 --- /dev/null +++ b/srcantiguo/keystrokeEditor/wx_ui.py @@ -0,0 +1,86 @@ +# -*- coding: utf-8 -*- +import wx +from multiplatform_widgets import widgets +from wxUI.dialogs import baseDialog + +class keystrokeEditorDialog(baseDialog.BaseWXDialog): + def __init__(self): + super(keystrokeEditorDialog, self).__init__(parent=None, id=-1, title=_(u"Keystroke editor")) + self.actions = [] + sizer = wx.BoxSizer(wx.VERTICAL) + keysText = wx.StaticText(self, -1, _(u"Select a keystroke to edit")) + self.keys = widgets.list(self, _(u"Action"), _(u"Keystroke"), style=wx.LC_REPORT|wx.LC_SINGLE_SEL, size=(400, 450)) + self.keys.list.SetFocus() + firstSizer = wx.BoxSizer(wx.HORIZONTAL) + firstSizer.Add(keysText, 0, wx.ALL, 5) + firstSizer.Add(self.keys.list, 0, wx.ALL, 5) + self.edit = wx.Button(self, -1, _(u"Edit")) + self.edit.SetDefault() + self.undefine = wx.Button(self, -1, _("Undefine keystroke")) + self.execute = wx.Button(self, -1, _(u"Execute action")) + close = wx.Button(self, wx.ID_CANCEL, _(u"Close")) + secondSizer = wx.BoxSizer(wx.HORIZONTAL) + secondSizer.Add(self.edit, 0, wx.ALL, 5) + secondSizer.Add(self.execute, 0, wx.ALL, 5) + secondSizer.Add(close, 0, wx.ALL, 5) + sizer.Add(firstSizer, 0, wx.ALL, 5) + sizer.Add(secondSizer, 0, wx.ALL, 5) + self.SetSizer(sizer) + self.SetClientSize(sizer.CalcMin()) + + def put_keystrokes(self, actions, keystrokes): + selection = self.keys.get_selected() + self.keys.clear() + for i in keystrokes: + if (i in actions) == False: + continue + action = actions[i] + self.actions.append(i) + keystroke = keystrokes.get(i) + if keystroke == "": + keystroke = _("Undefined") + self.keys.insert_item(False, *[action, keystroke]) + self.keys.select_item(selection) + + def get_action(self): + return self.keys.get_selected() + + def undefine_keystroke_confirmation(self): + return wx.MessageDialog(self, _("Are you sure you want to undefine this keystroke?"), _("Undefine keystroke"), wx.YES_NO|wx.CANCEL|wx.ICON_QUESTION).ShowModal() + +class editKeystrokeDialog(baseDialog.BaseWXDialog): + def __init__(self): + super(editKeystrokeDialog, self).__init__(parent=None, id=-1, title=_(u"Editing keystroke")) + panel = wx.Panel(self) + sizer = wx.BoxSizer(wx.VERTICAL) + self.control = wx.CheckBox(panel, -1, _(u"Control")) + self.alt = wx.CheckBox(panel, -1, _(u"Alt")) + self.shift = wx.CheckBox(panel, -1, _(u"Shift")) + self.win = wx.CheckBox(panel, -1, _(u"Windows")) + sizer1 = wx.BoxSizer(wx.HORIZONTAL) + sizer1.Add(self.control) + sizer1.Add(self.alt) + sizer1.Add(self.shift) + sizer1.Add(self.win) + charLabel = wx.StaticText(panel, -1, _(u"Key")) + self.key = wx.TextCtrl(panel, -1) + sizer2 = wx.BoxSizer(wx.HORIZONTAL) + sizer2.Add(charLabel) + sizer2.Add(self.key) + ok = wx.Button(panel, wx.ID_OK, _(u"OK")) + ok.SetDefault() + cancel = wx.Button(panel, wx.ID_CANCEL) + sizer3 = wx.BoxSizer(wx.HORIZONTAL) + sizer3.Add(ok) + sizer3.Add(cancel) + sizer.Add(sizer1) + sizer.Add(sizer2) + sizer.Add(sizer3) + panel.SetSizerAndFit(sizer) + + +def no_win_message(): + return wx.MessageDialog(None, _(u"You need to use the Windows key"), _(u"Invalid keystroke"), wx.OK|wx.ICON_ERROR).ShowModal() + +def no_key(): + return wx.MessageDialog(None, _(u"You must provide a character for the keystroke"), _(u"Invalid keystroke"), wx.ICON_ERROR).ShowModal() diff --git a/srcantiguo/languageHandler.py b/srcantiguo/languageHandler.py new file mode 100644 index 00000000..b0ea7fb5 --- /dev/null +++ b/srcantiguo/languageHandler.py @@ -0,0 +1,214 @@ +from __future__ import unicode_literals +from future import standard_library +standard_library.install_aliases() +from builtins import zip +from builtins import str +import builtins +import os +import sys +import ctypes +import locale +import gettext +import paths +import platform +import application + +#a few Windows locale constants +LOCALE_SLANGUAGE=0x2 +LOCALE_SLANGDISPLAYNAME=0x6f + +curLang="en" + +def localeNameToWindowsLCID(localeName): + """Retreave the Windows locale identifier (LCID) for the given locale name + @param localeName: a string of 2letterLanguage_2letterCountry or or just 2letterLanguage + @type localeName: string + @returns: a Windows LCID + @rtype: integer + """ + #Windows Vista is able to convert locale names to LCIDs + func_LocaleNameToLCID=getattr(ctypes.windll.kernel32,'LocaleNameToLCID',None) + if func_LocaleNameToLCID is not None: + localeName=localeName.replace('_','-') + LCID=func_LocaleNameToLCID(str(localeName),0) + else: #Windows doesn't have this functionality, manually search Python's windows_locale dictionary for the LCID + localeName=locale.normalize(localeName) + if '.' in localeName: + localeName=localeName.split('.')[0] + LCList=[x[0] for x in locale.windows_locale.items() if x[1]==localeName] + if len(LCList)>0: + LCID=LCList[0] + else: + LCID=0 + return LCID + +def getLanguageDescription(language): + """Finds out the description (localized full name) of a given local name""" + desc=None + if platform.system() == "Windows": + LCID=localeNameToWindowsLCID(language) + if LCID!=0: + buf=ctypes.create_unicode_buffer(1024) + if '_' not in language: + res=ctypes.windll.kernel32.GetLocaleInfoW(LCID,LOCALE_SLANGDISPLAYNAME,buf,1024) + else: + res=0 + if res==0: + res=ctypes.windll.kernel32.GetLocaleInfoW(LCID,LOCALE_SLANGUAGE,buf,1024) + desc=buf.value + elif platform.system() == "Linux" or not desc: + desc={ + "am":pgettext("languageName","Amharic"), + "an":pgettext("languageName","Aragonese"), + "es":pgettext("languageName","Spanish"), + "pt":pgettext("languageName","Portuguese"), + "ru":pgettext("languageName","Russian"), + "it":pgettext("languageName","italian"), + "tr":pgettext("languageName","Turkey"), + "gl":pgettext("languageName","Galician"), + "ca":pgettext("languageName","Catala"), + "eu":pgettext("languageName","Vasque"), + "pl":pgettext("languageName","polish"), + "ar":pgettext("languageName","Arabic"), + "ne":pgettext("languageName","Nepali"), + "sr":pgettext("languageName","Serbian (Latin)"), + "ja":pgettext("languageName","Japanese"), + }.get(language,None) + return desc + +def getAvailableLanguages(): + """generates a list of locale names, plus their full localized language and country names. + @rtype: list of tuples + """ + #Make a list of all the locales found in NVDA's locale dir + l=[x for x in os.listdir(paths.locale_path()) if not x.startswith('.')] + l=[x for x in l if os.path.isfile(os.path.join(paths.locale_path(), '%s/LC_MESSAGES/%s.po' % (x, application.short_name)))] + #Make sure that en (english) is in the list as it may not have any locale files, but is default + if 'en' not in l: + l.append('en') + l.sort() + #For each locale, ask Windows for its human readable display name + d=[] + for i in l: + desc=getLanguageDescription(i) + label="%s, %s"%(desc,i) if desc else i + d.append(label) + #include a 'user default, windows' language, which just represents the default language for this user account + l.append("system") + # Translators: the label for the Windows default NVDA interface language. + d.append(_("User default")) + #return a zipped up version of both the lists (a list with tuples of locale,label) + return list(zip(l,d)) + +def makePgettext(translations): + """Obtaina pgettext function for use with a gettext translations instance. + pgettext is used to support message contexts, + but Python 2.7's gettext module doesn't support this, + so NVDA must provide its own implementation. + """ + if isinstance(translations, gettext.GNUTranslations): + def pgettext(context, message): + message = str(message) + try: + # Look up the message with its context. + return translations._catalog["%s\x04%s" % (context, message)] + except KeyError: + return message + else: + def pgettext(context, message): + return str(message) + return pgettext + +def setLanguage(lang): + system = platform.system() + global curLang + try: + if lang=="system": + if system == "Windows": + windowsLCID=ctypes.windll.kernel32.GetUserDefaultUILanguage() + localeName=locale.windows_locale[windowsLCID] + elif system == "Darwin": + import Foundation + localeName = Foundation.NSLocale.currentLocale().identifier() + elif system == "Linux": + localeName = locale.getdefaultlocale()[0] + trans=gettext.translation(application.short_name, localedir=paths.locale_path(), languages=[localeName]) + curLang=localeName +# else: +# localeName=locale.getdefaultlocale()[0] +# trans=gettext.translation('twblue', localedir=paths.locale_path(), languages=[localeName]) +# curLang=localeName + + else: + trans=gettext.translation(application.short_name, localedir=paths.locale_path(), languages=[lang]) + curLang=lang + localeChanged=False + #Try setting Python's locale to lang +# try: + if system == "Windows": + locale.setlocale(locale.LC_ALL, langToWindowsLocale(lang)) + localeChanged=True + else: + locale.setlocale(locale.LC_ALL, lang) + localeChanged=True +# except: +# pass + if not localeChanged and '_' in lang: + #Python couldn'tsupport the language_country locale, just try language. + try: + locale.setlocale(locale.LC_ALL, lang.split('_')[0]) + except: + pass + #Set the windows locale for this thread (NVDA core) to this locale. + if system == "Windows": + LCID=localeNameToWindowsLCID(lang) + ctypes.windll.kernel32.SetThreadLocale(LCID) + except IOError: + trans=gettext.translation(application.short_name, fallback=True) + curLang="en" + if sys.version[0] == "3": + trans.install() + else: + trans.install(unicode=True) + # Install our pgettext function. +# __builtin__.__dict__["pgettext"] = makePgettext(trans) + +def getLanguage(): + return curLang + +def normalizeLanguage(lang): + """ + Normalizes a language-dialect string in to a standard form we can deal with. + Converts any dash to underline, and makes sure that language is lowercase and dialect is upercase. + """ + lang=lang.replace('-','_') + ld=lang.split('_') + ld[0]=ld[0].lower() + #Filter out meta languages such as x-western + if ld[0]=='x': + return None + if len(ld)>=2: + ld[1]=ld[1].upper() + return "_".join(ld) + +def langToWindowsLocale(lang): + languages = {"en": "eng", + "ar": "ara", + "ca": "cat", + "de": "deu", + "es": "esp", + "fi": "fin", + "fr": "fre_FRA", + "gl": "glc", + "eu": "euq", + "hu": "hun", + "hr": "hrv", + "it": "ita", + "ja": "jpn", + "pl": "plk", + "pt": "ptb", + "ru": "rus", + "tr": "trk", + "sr": "eng", + } + return languages[lang] diff --git a/srcantiguo/locales/EU/LC_MESSAGES/twblue.mo b/srcantiguo/locales/EU/LC_MESSAGES/twblue.mo new file mode 100644 index 00000000..657e18d9 Binary files /dev/null and b/srcantiguo/locales/EU/LC_MESSAGES/twblue.mo differ diff --git a/srcantiguo/locales/EU/LC_MESSAGES/twblue.po b/srcantiguo/locales/EU/LC_MESSAGES/twblue.po new file mode 100644 index 00000000..f811e6fa --- /dev/null +++ b/srcantiguo/locales/EU/LC_MESSAGES/twblue.po @@ -0,0 +1,4950 @@ +# +msgid "" +msgstr "" +"Project-Id-Version: TW Blue 0.80\n" +"Report-Msgid-Bugs-To: manuel@manuelcortez.net\n" +"POT-Creation-Date: 2025-04-13 01:18+0000\n" +"PO-Revision-Date: 2022-12-20 22:42+0000\n" +"Last-Translator: Anonymous \n" +"Language: EU\n" +"Language-Team: Basque " +"\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.17.0\n" + +#: languageHandler.py:61 +#, fuzzy +msgctxt "languageName" +msgid "Amharic" +msgstr "amharera" + +#: languageHandler.py:62 +#, fuzzy +msgctxt "languageName" +msgid "Aragonese" +msgstr "Japoniera" + +#: languageHandler.py:63 +#, fuzzy +msgctxt "languageName" +msgid "Spanish" +msgstr "Gaztelera" + +#: languageHandler.py:64 +#, fuzzy +msgctxt "languageName" +msgid "Portuguese" +msgstr "Portugesa" + +#: languageHandler.py:65 +#, fuzzy +msgctxt "languageName" +msgid "Russian" +msgstr "Errusiera" + +#: languageHandler.py:66 +#, fuzzy +msgctxt "languageName" +msgid "italian" +msgstr "Italiera" + +#: languageHandler.py:67 +#, fuzzy +msgctxt "languageName" +msgid "Turkey" +msgstr "Ezaugarria" + +#: languageHandler.py:68 +#, fuzzy +msgctxt "languageName" +msgid "Galician" +msgstr "Galiziera" + +#: languageHandler.py:69 +#, fuzzy +msgctxt "languageName" +msgid "Catala" +msgstr "Katalana" + +#: languageHandler.py:70 +#, fuzzy +msgctxt "languageName" +msgid "Vasque" +msgstr "Euskara" + +#: languageHandler.py:71 +#, fuzzy +msgctxt "languageName" +msgid "polish" +msgstr "Poloniera" + +#: languageHandler.py:72 +#, fuzzy +msgctxt "languageName" +msgid "Arabic" +msgstr "Arabiera" + +#: languageHandler.py:73 +#, fuzzy +msgctxt "languageName" +msgid "Nepali" +msgstr "Nepalera" + +#: languageHandler.py:74 +msgctxt "languageName" +msgid "Serbian (Latin)" +msgstr "" + +#: languageHandler.py:75 +#, fuzzy +msgctxt "languageName" +msgid "Japanese" +msgstr "Japoniera" + +#: languageHandler.py:99 +msgid "User default" +msgstr "Lehenetsia" + +#: main.py:105 +#, fuzzy +msgid "https://twblue.mcvsoftware.com/donate" +msgstr "https://twblue.es/donate" + +#: main.py:118 +#, python-brace-format +msgid "" +"{0} is already running. Close the other instance before starting this " +"one. If you're sure that {0} isn't running, try deleting the file at {1}." +" If you're unsure of how to do this, contact the {0} developers." +msgstr "" + +#: sound.py:148 +msgid "Playing..." +msgstr "Erreproduzitzen..." + +#: sound.py:161 +msgid "Stopped." +msgstr "Gelditua." + +#: controller/mainController.py:261 +msgid "Ready" +msgstr "Prest" + +#: controller/mainController.py:369 controller/mainController.py:654 +#: controller/mainController.py:673 controller/mainController.py:692 +#: controller/mainController.py:711 +msgid "" +"No session is currently in focus. Focus a session with the next or " +"previous session shortcut." +msgstr "" +"z daago fokatutako sesiorik. Lehenik, fokatu sesio bat aurreko eta " +"hurrengo sesiora joateko lasterbideekin." + +#: controller/mainController.py:373 +msgid "Empty buffer." +msgstr "Bufferraren osagaiak ezabatu" + +#: controller/mainController.py:380 +#, python-brace-format +msgid "{0} not found." +msgstr "Ez da {0} aurkitu" + +#: controller/mainController.py:702 controller/mainController.py:721 +#, python-format +msgid "%s, %s of %s" +msgstr "%s, %s %s(e)tik" + +#: controller/mainController.py:704 controller/mainController.py:723 +#: controller/mainController.py:751 controller/mainController.py:779 +#, python-format +msgid "%s. Empty" +msgstr "%s. Hutsa" + +#: controller/mainController.py:739 controller/mainController.py:743 +#: controller/mainController.py:767 +#, python-brace-format +msgid "{0}: This account is not logged into Twitter." +msgstr "{0}: kontu hau ez dago Twitterren sartuta." + +#: controller/mainController.py:749 controller/mainController.py:777 +#, python-format +msgid "%s. %s, %s of %s" +msgstr "%s. %s, %s %s(e)tik" + +#: controller/mainController.py:771 +#, python-brace-format +msgid "{0}: This account is not logged into twitter." +msgstr "{0}: kontu hau ez dago Twitterren sartuta." + +#: controller/mainController.py:910 controller/mainController.py:926 +#, fuzzy +msgid "An error happened while trying to connect to the server. Please try later." +msgstr "" +"Ustekabeko zerbait gertatu da erroreari buruz berri ematean. Mesedez, " +"saiatu berriro beranduago." + +#: controller/mainController.py:957 +msgid "The auto-reading of new tweets is enabled for this buffer" +msgstr "Tweet berrien irakurketa automatikoa aktibatua dago buffer honetarako " + +#: controller/mainController.py:960 +msgid "The auto-reading of new tweets is disabled for this buffer" +msgstr "Tweet berrien irakurketa automatikoa desaktibatua dago buffer honetarako " + +#: controller/mainController.py:967 +msgid "Session mute on" +msgstr "Sesioa isildu aktibatua" + +#: controller/mainController.py:970 +msgid "Session mute off" +msgstr "Sesioaren isiltzea desaktibatua dago." + +#: controller/mainController.py:979 +msgid "Buffer mute on" +msgstr "Bufferra isildu aktibatua" + +#: controller/mainController.py:982 +msgid "Buffer mute off" +msgstr "Bufferra isildu desaktibatua" + +#: controller/mainController.py:999 +msgid "Copied" +msgstr "Kopiatua" + +#: controller/mainController.py:1019 +msgid "Unable to update this buffer." +msgstr "Ezinezkoa izan da buffer hau eguneratzea" + +#: controller/mainController.py:1021 +msgid "Updating buffer..." +msgstr "Bufferra eguneratzen..." + +#: controller/mainController.py:1024 +#, python-brace-format +msgid "{0} items retrieved" +msgstr "{0} elementu jasota" + +#: controller/buffers/mastodon/base.py:137 controller/mainController.py:1028 +#: controller/mastodon/handler.py:98 controller/mastodon/handler.py:241 +#, python-brace-format +msgid "Timeline for {}" +msgstr "{}(r)en denbora lerroa" + +#: controller/buffers/mastodon/users.py:93 controller/mainController.py:1030 +#: controller/mastodon/handler.py:100 controller/mastodon/handler.py:255 +#, python-brace-format +msgid "Followers for {}" +msgstr "{}(r)en jarraitzaileak" + +#: controller/mainController.py:1032 +#, python-brace-format +msgid "Friends for {}" +msgstr "{}(r)en lagunak" + +# | msgid "Followers for {}" +#: controller/buffers/mastodon/users.py:95 controller/mainController.py:1034 +#: controller/mastodon/handler.py:102 controller/mastodon/handler.py:269 +#, fuzzy, python-brace-format +msgid "Following for {}" +msgstr "{}(r)en jarraitzaileak" + +#: controller/messages.py:18 +#, fuzzy +msgid "Translated" +msgstr "Itzulia" + +#: controller/settings.py:60 +#, fuzzy +msgid "System default" +msgstr "Lehenetsia" + +#: controller/settings.py:60 +msgid "HTTP" +msgstr "" + +#: controller/settings.py:60 +msgid "SOCKS v4" +msgstr "" + +#: controller/settings.py:60 +msgid "SOCKS v4 with DNS support" +msgstr "" + +#: controller/settings.py:60 +msgid "SOCKS v5" +msgstr "" + +#: controller/settings.py:60 +msgid "SOCKS v5 with DNS support" +msgstr "" + +#: controller/userAlias.py:31 +#, fuzzy, python-brace-format +msgid "Edit alias for {}" +msgstr "{}(r)en zerrrenda" + +#: controller/buffers/base/base.py:91 +#: controller/buffers/mastodon/conversations.py:237 +#: controller/buffers/mastodon/search.py:80 +msgid "This action is not supported for this buffer" +msgstr "Eragiketa hau ez da buffer honetarako onargarria" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:70 +#: controller/mastodon/settings.py:194 +msgid "Home" +msgstr "Hasiera" + +#: controller/buffers/mastodon/base.py:52 +#: controller/buffers/mastodon/community.py:22 +#: controller/mastodon/handler.py:72 controller/mastodon/handler.py:114 +#: controller/mastodon/settings.py:195 +msgid "Local" +msgstr "" + +#: controller/buffers/mastodon/base.py:52 +#: controller/buffers/mastodon/community.py:22 +#: controller/mastodon/handler.py:74 controller/mastodon/settings.py:196 +msgid "Federated" +msgstr "" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:76 +#: controller/mastodon/settings.py:197 +msgid "Mentions" +msgstr "Aipamenak" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:84 +#: controller/mastodon/settings.py:201 +msgid "Bookmarks" +msgstr "" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:78 +msgid "Direct messages" +msgstr "Zuzeneko mezuak" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:80 +#: controller/mastodon/settings.py:199 +msgid "Sent" +msgstr "" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:82 +#: controller/mastodon/settings.py:200 wxUI/dialogs/mastodon/postDialogs.py:229 +msgid "Favorites" +msgstr "" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:86 +#: controller/mastodon/settings.py:202 +msgid "Followers" +msgstr "Jarraitzaileak" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:88 +#: controller/mastodon/settings.py:203 +#, fuzzy +msgid "Following" +msgstr "Ja&rraitzeari utzi" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:92 +#: controller/mastodon/settings.py:204 +msgid "Blocked users" +msgstr "Blokeatutako erabiltzaileak" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:90 +#: controller/mastodon/settings.py:205 +msgid "Muted users" +msgstr "Isildutako erabiltzaileak" + +# | msgid "&Location" +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:94 +#: controller/mastodon/settings.py:206 +#: wxUI/dialogs/mastodon/filters/create_filter.py:80 +#, fuzzy +msgid "Notifications" +msgstr "&Kokapena" + +#: controller/buffers/mastodon/base.py:58 +#, fuzzy, python-brace-format +msgid "{username}'s timeline" +msgstr "Erabiltzailearen denbora lerroa ireki" + +#: controller/buffers/mastodon/base.py:60 +#, python-brace-format +msgid "{username}'s followers" +msgstr "" + +#: controller/buffers/mastodon/base.py:62 +#, fuzzy, python-brace-format +msgid "{username}'s following" +msgstr "Erabiltzailearen denbora lerroa ireki" + +#: controller/buffers/mastodon/base.py:64 +#, fuzzy +msgid "Unknown buffer" +msgstr "ezezaguna" + +#: controller/buffers/mastodon/base.py:67 +#: controller/buffers/mastodon/base.py:645 wxUI/buffers/mastodon/base.py:24 +#: wxUI/buffers/mastodon/conversationList.py:24 +#: wxUI/buffers/mastodon/notifications.py:22 wxUI/buffers/mastodon/user.py:18 +#: wxUI/dialogs/mastodon/postDialogs.py:5 +#: wxUI/dialogs/mastodon/postDialogs.py:194 wxUI/sysTrayIcon.py:35 +msgid "Post" +msgstr "" + +# | msgid "Write the tweet here" +#: controller/buffers/mastodon/base.py:68 +#: controller/buffers/mastodon/base.py:646 +#, fuzzy +msgid "Write your post here" +msgstr "Idatzi txioa hemen" + +#: controller/buffers/mastodon/base.py:153 +#, fuzzy, python-brace-format +msgid "New post in {0}" +msgstr "Txio berri bat" + +#: controller/buffers/mastodon/base.py:159 +#, fuzzy, python-brace-format +msgid "{0} new posts in {1}." +msgstr ",@{0}(e)k zure txioa zitatu du: {1}" + +#: controller/buffers/mastodon/base.py:198 +#: controller/buffers/mastodon/community.py:90 +#: controller/buffers/mastodon/conversations.py:100 +#: controller/buffers/mastodon/mentions.py:82 +#: controller/buffers/mastodon/users.py:139 +#, python-format +msgid "%s items retrieved" +msgstr "%s elementu jasota" + +#: controller/buffers/mastodon/base.py:216 +#: controller/buffers/mastodon/users.py:206 +msgid "This buffer is not a timeline; it can't be deleted." +msgstr "buffer hau ez da denbora lerro bat, ezin da ezabatu." + +# | msgid "Conversation with {0}" +#: controller/buffers/mastodon/base.py:346 +#: controller/buffers/mastodon/base.py:384 +#, fuzzy, python-brace-format +msgid "Conversation with {}" +msgstr "{0}(r)ekin elkarrizketa" + +# | msgid "Write the tweet here" +#: controller/buffers/mastodon/base.py:347 +#: controller/buffers/mastodon/base.py:385 +#: controller/buffers/mastodon/conversations.py:181 +#: controller/buffers/mastodon/notifications.py:122 +#: controller/buffers/mastodon/users.py:52 +#, fuzzy +msgid "Write your message here" +msgstr "Idatzi txioa hemen" + +# | msgid "Reply to {arg0}" +#: controller/buffers/mastodon/base.py:349 +#, fuzzy, python-brace-format +msgid "Reply to {}" +msgstr "{arg0}(r)i erantzun" + +# | msgid "Write the tweet here" +#: controller/buffers/mastodon/base.py:350 +#, fuzzy +msgid "Write your reply here" +msgstr "Idatzi txioa hemen" + +#: controller/buffers/mastodon/base.py:412 +#, fuzzy +msgid "This action is not supported on conversations." +msgstr "Eragiketa hau ez da buffer honetarako onargarria" + +#: controller/buffers/mastodon/base.py:477 +msgid "Opening URL..." +msgstr "URLa irekitzen..." + +#: controller/buffers/mastodon/base.py:490 +msgid "You can delete only your own posts." +msgstr "" + +#: controller/buffers/mastodon/base.py:519 +msgid "Opening item in web browser..." +msgstr "" + +#: controller/buffers/mastodon/base.py:527 +#: controller/buffers/mastodon/base.py:547 +msgid "Adding to favorites..." +msgstr "" + +# | msgid "Remove from list" +#: controller/buffers/mastodon/base.py:534 +#: controller/buffers/mastodon/base.py:549 +#, fuzzy +msgid "Removing from favorites..." +msgstr "Zerrendatik kendu" + +#: controller/buffers/mastodon/base.py:544 +#: controller/buffers/mastodon/base.py:559 +#: controller/buffers/mastodon/base.py:573 +#: controller/buffers/mastodon/conversations.py:213 +msgid "No status found with that ID" +msgstr "Ez da egoerarik aurkitu ID horrekin" + +#: controller/buffers/mastodon/base.py:562 +msgid "Adding to bookmarks..." +msgstr "" + +#: controller/buffers/mastodon/base.py:564 +msgid "Removing from bookmarks..." +msgstr "" + +#: controller/buffers/mastodon/base.py:586 +#, python-brace-format +msgid "Picture {0}" +msgstr "{0} argazkia" + +#: controller/buffers/mastodon/base.py:587 +msgid "Select the picture" +msgstr "Argazkia aukeratu" + +#: controller/buffers/mastodon/base.py:610 +msgid "Unable to extract text" +msgstr "Ezinezkoa testua ateratzea" + +#: controller/buffers/mastodon/base.py:612 +msgid "OCR Result" +msgstr "" + +#: controller/buffers/mastodon/base.py:627 +msgid "this poll no longer exists." +msgstr "" + +#: controller/buffers/mastodon/base.py:630 +msgid "This poll has already expired." +msgstr "" + +#: controller/buffers/mastodon/base.py:633 +msgid "You have already voted on this poll." +msgstr "" + +#: controller/buffers/mastodon/base.py:642 +#, fuzzy +msgid "Sending vote..." +msgstr "Audioa errekodifikatzen..." + +# | msgid "Conversation with {0}" +#: controller/buffers/mastodon/conversations.py:180 +#, fuzzy, python-brace-format +msgid "Reply to conversation with {}" +msgstr "{0}(r)ekin elkarrizketa" + +# | msgid "Conversation with {0}" +#: controller/buffers/mastodon/notifications.py:121 +#: controller/buffers/mastodon/users.py:51 +#, fuzzy, python-brace-format +msgid "New conversation with {}" +msgstr "{0}(r)ekin elkarrizketa" + +#: controller/buffers/mastodon/notifications.py:151 +msgid "Notification dismissed." +msgstr "" + +# | msgid "There are no coordinates in this tweet" +#: controller/buffers/mastodon/users.py:110 +#, fuzzy +msgid "There are no more items in this buffer." +msgstr "Txio honetan ez dago koordenaturik" + +#: controller/mastodon/handler.py:30 wxUI/dialogs/mastodon/updateProfile.py:35 +#, fuzzy +msgid "Update Profile" +msgstr "&Profila eguneratu" + +#: controller/mastodon/handler.py:31 wxUI/dialogs/mastodon/search.py:10 +#: wxUI/view.py:19 +msgid "&Search" +msgstr "&Bilatu" + +#: controller/mastodon/handler.py:33 wxUI/view.py:22 +msgid "Manage user aliases" +msgstr "" + +#: controller/mastodon/handler.py:35 controller/mastodon/handler.py:59 +#: wxUI/view.py:30 +msgid "&Post" +msgstr "" + +#: controller/mastodon/handler.py:36 wxUI/dialogs/mastodon/menus.py:9 +#: wxUI/dialogs/mastodon/menus.py:37 wxUI/view.py:31 +msgid "Re&ply" +msgstr "E&rantzun" + +#: controller/mastodon/handler.py:37 wxUI/dialogs/mastodon/menus.py:7 +#: wxUI/dialogs/mastodon/menus.py:35 wxUI/view.py:32 +msgid "&Boost" +msgstr "" + +# | msgid "&Add to list" +#: controller/mastodon/handler.py:38 wxUI/dialogs/mastodon/menus.py:11 +#: wxUI/dialogs/mastodon/menus.py:39 wxUI/view.py:33 +#, fuzzy +msgid "&Add to favorites" +msgstr "Zerrendara &gehitu" + +# | msgid "Remove from list" +#: controller/mastodon/handler.py:39 +#, fuzzy +msgid "Remove from favorites" +msgstr "Zerrendatik kendu" + +# | msgid "&Show user" +#: controller/mastodon/handler.py:40 wxUI/dialogs/mastodon/menus.py:21 +#: wxUI/dialogs/mastodon/menus.py:49 wxUI/view.py:35 +#, fuzzy +msgid "&Show post" +msgstr "&Erabiltzailea erakutsi" + +#: controller/mastodon/handler.py:41 wxUI/view.py:36 +msgid "View conversa&tion" +msgstr "&Elkarrizketa ikusi" + +#: controller/mastodon/handler.py:42 wxUI/view.py:37 +msgid "Read text in picture" +msgstr "Argazkiko testua irakurri" + +#: controller/mastodon/handler.py:43 wxUI/dialogs/mastodon/menus.py:25 +#: wxUI/view.py:39 +msgid "&Delete" +msgstr "&Ezabatu" + +#: controller/mastodon/handler.py:45 wxUI/view.py:43 +msgid "&Actions..." +msgstr "&Ekintzak..." + +#: controller/mastodon/handler.py:46 wxUI/view.py:44 +msgid "&View timeline..." +msgstr "Ikusi &denbora lerroa..." + +#: controller/mastodon/handler.py:47 wxUI/view.py:45 +msgid "Direct me&ssage" +msgstr "Zuzeneko &mezua" + +#: controller/mastodon/handler.py:48 wxUI/view.py:46 +msgid "Add a&lias" +msgstr "" + +#: controller/mastodon/handler.py:51 +#, fuzzy +msgid "Show user profile" +msgstr "Erabiltzailearen &profila ikusi" + +#: controller/mastodon/handler.py:54 +msgid "Create c&ommunity timeline" +msgstr "" + +#: controller/mastodon/handler.py:55 wxUI/view.py:57 +msgid "Create a &filter" +msgstr "&Iragazki bat sortu" + +#: controller/mastodon/handler.py:56 wxUI/view.py:58 +msgid "&Manage filters" +msgstr "&Iragazkiak administratu" + +#: controller/mastodon/handler.py:95 +msgid "Timelines" +msgstr "Denbora lerroak" + +#: controller/mastodon/handler.py:107 +msgid "Searches" +msgstr "Bilaketak" + +#: controller/mastodon/handler.py:110 controller/mastodon/handler.py:191 +#: controller/mastodon/handler.py:196 +#, python-brace-format +msgid "Search for {}" +msgstr "{} bilatu" + +#: controller/mastodon/handler.py:111 +msgid "Communities" +msgstr "" + +#: controller/mastodon/handler.py:114 +#, fuzzy +msgid "federated" +msgstr "Erabiltzailearen denbora lerroa ireki" + +#: controller/mastodon/handler.py:143 +#, python-brace-format +msgid "Conversation with {0}" +msgstr "{0}(r)ekin elkarrizketa" + +#: controller/mastodon/handler.py:299 +msgid "Add an user alias" +msgstr "" + +#: controller/mastodon/handler.py:311 +#, python-brace-format +msgid "Alias has been set correctly for {}." +msgstr "" + +#: controller/mastodon/handler.py:342 +#, fuzzy +msgid "Update profile" +msgstr "&Profila eguneratu" + +#: controller/mastodon/messages.py:115 +#, python-format +msgid "%s - %s of %d characters" +msgstr "%s - %s %d karakteretik" + +#: controller/mastodon/messages.py:239 +#, python-brace-format +msgid "Poll with {} options" +msgstr "" + +# | msgid "List for {}" +#: controller/mastodon/messages.py:272 +#, fuzzy, python-brace-format +msgid "Post from {}" +msgstr "{}(r)en zerrrenda" + +#: controller/mastodon/messages.py:276 sessions/mastodon/templates.py:82 +#: wxUI/dialogs/mastodon/postDialogs.py:49 +msgid "Public" +msgstr "Publikoa" + +# | msgid "Accounts list" +#: controller/mastodon/messages.py:276 sessions/mastodon/templates.py:82 +#: wxUI/dialogs/mastodon/postDialogs.py:49 +#, fuzzy +msgid "Not listed" +msgstr "Kontuen zerrenda" + +# | msgid "Followers" +#: controller/mastodon/messages.py:276 +#, fuzzy +msgid "followers only" +msgstr "Jarraitzaileak" + +# | msgid "Direct message" +#: controller/mastodon/messages.py:276 sessions/mastodon/templates.py:82 +#: wxUI/dialogs/mastodon/postDialogs.py:49 +#, fuzzy +msgid "Direct" +msgstr "Zuzeneko mezua" + +# | msgid "Remove client" +#: controller/mastodon/messages.py:283 +#, fuzzy +msgid "Remote instance" +msgstr "Aplikazioa kendu" + +#: controller/mastodon/messages.py:291 controller/mastodon/messages.py:319 +#, fuzzy +msgid "Unmute conversation" +msgstr "Elkarrizketa ikusi" + +#: controller/mastodon/messages.py:315 wxUI/dialogs/mastodon/postDialogs.py:237 +#, fuzzy +msgid "Mute conversation" +msgstr "Elkarrizketa ikusi" + +# | msgid "Conversation with {0}" +#: controller/mastodon/messages.py:316 +#, fuzzy +msgid "Conversation unmuted." +msgstr "{0}(r)ekin elkarrizketa" + +# | msgid "Conversation with {0}" +#: controller/mastodon/messages.py:320 +#, fuzzy +msgid "Conversation muted." +msgstr "{0}(r)ekin elkarrizketa" + +#: controller/mastodon/messages.py:331 +msgid "people who boosted this post" +msgstr "" + +#: controller/mastodon/messages.py:336 +msgid "people who favorited this post" +msgstr "" + +#: controller/mastodon/messages.py:342 +#, fuzzy +msgid "Link copied to clipboard." +msgstr "Kopiatu" + +#: controller/mastodon/settings.py:82 +#, python-format +msgid "Account settings for %s" +msgstr "%s(r)en kontu-ezarpenak" + +#: controller/mastodon/settings.py:92 +#, python-brace-format +msgid "Edit template for posts. Current template: {}" +msgstr "" + +#: controller/mastodon/settings.py:101 +#, python-brace-format +msgid "Edit template for conversations. Current template: {}" +msgstr "" + +#: controller/mastodon/settings.py:110 +#, python-brace-format +msgid "Edit template for persons. Current template: {}" +msgstr "" + +#: controller/mastodon/settings.py:198 +msgid "Direct Messages" +msgstr "Zuzeneko mezuak" + +#: controller/mastodon/filters/create_filter.py:75 +#, fuzzy, python-brace-format +msgid "Update Filter: {}" +msgstr "&Profila eguneratu" + +#: controller/mastodon/filters/manage_filters.py:57 +#: wxUI/dialogs/mastodon/filters/create_filter.py:90 +msgid "Never" +msgstr "" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:4 +msgid "Audio tweet." +msgstr "Audiotxioa." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:5 +msgid "User timeline buffer created." +msgstr "Denbora lerro bat sortu da." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:6 +msgid "Buffer destroied." +msgstr "Buffer bat ezabatu da." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:7 +msgid "Direct message received." +msgstr "Zuzeneko mezua jaso da." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:8 +msgid "Direct message sent." +msgstr "Zuzeneko mezua bidali da." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:9 +msgid "Error." +msgstr "Errorea." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:10 +msgid "Tweet liked." +msgstr "Txio bat gogokoetara gehitu da" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:11 +msgid "Likes buffer updated." +msgstr "gogokoen bufferra eguneratu da." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:12 +msgid "Geotweet." +msgstr "Geotxioa." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:13 +msgid "Tweet contains one or more images" +msgstr "Txioakirudi bat edo gehiago dauzka" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:14 +msgid "Boundary reached." +msgstr "Bufferraren mugara iritsi zara" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:15 +msgid "List updated." +msgstr "Zerrenda eguneratu da." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:16 +msgid "Too many characters." +msgstr "Karaktere gehiegi." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:17 +msgid "Mention received." +msgstr "Aipamen bat jaso da." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:18 +msgid "New event." +msgstr "Gertaera bat gertatu da." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:19 +#, python-brace-format +msgid "{0} is ready." +msgstr "{0} prest dago" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:20 +msgid "Mention sent." +msgstr "Aipamena bidali da." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:21 +msgid "Tweet retweeted." +msgstr "Bertxiotu duzu." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:22 +msgid "Search buffer updated." +msgstr "Bilaketa bat eguneratu da" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:23 +msgid "Tweet received." +msgstr "Txio bat jaso da" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:24 +msgid "Tweet sent." +msgstr "Txio bat bidali da." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:25 +msgid "Trending topics buffer updated." +msgstr "Tendentzien buffer bat eguneratu da" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:26 +msgid "New tweet in user timeline buffer." +msgstr "Txio berri bat dago denbora lerro batean" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:27 +msgid "New follower." +msgstr "Jarraitzaile berria." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:28 +msgid "Volume changed." +msgstr "Bolumena aldatu da" + +#: extra/SoundsTutorial/wx_ui.py:8 +msgid "Sounds tutorial" +msgstr "Soinuen tutoriala" + +#: extra/SoundsTutorial/wx_ui.py:11 +msgid "Press enter to listen to the sound for the selected event" +msgstr "Sakatu enter aukeratutako gertaeraren soinua entzuteko" + +#: extra/SpellChecker/spellchecker.py:56 +#, python-format +msgid "Misspelled word: %s" +msgstr "Gaizki idatzitako hitza: %s" + +#: extra/SpellChecker/wx_ui.py:27 +msgid "Misspelled word" +msgstr "Gaizki idatzitako hitza" + +#: extra/SpellChecker/wx_ui.py:32 +msgid "Context" +msgstr "Kontestua" + +#: extra/SpellChecker/wx_ui.py:37 +msgid "Suggestions" +msgstr "Iradokizunak" + +#: extra/SpellChecker/wx_ui.py:42 +#, fuzzy +msgid "&Ignore" +msgstr "Ezikusi" + +#: extra/SpellChecker/wx_ui.py:43 +#, fuzzy +msgid "I&gnore all" +msgstr "Guztiak ezikusi" + +#: extra/SpellChecker/wx_ui.py:44 +#, fuzzy +msgid "&Replace" +msgstr "Aldatu" + +#: extra/SpellChecker/wx_ui.py:45 +#, fuzzy +msgid "R&eplace all" +msgstr "Guztiak aldatu" + +#: extra/SpellChecker/wx_ui.py:46 +#, fuzzy +msgid "&Add to personal dictionary" +msgstr "Hiztegi pertsonalera gehitu" + +#: extra/SpellChecker/wx_ui.py:79 +#, python-brace-format +msgid "" +"An error has occurred. There are no dictionaries available for the " +"selected language in {0}" +msgstr "Bug bat gertatu da. Ez dago hiztegirik {0}-n aukeratutako hizkuntzarentzat" + +#: extra/SpellChecker/wx_ui.py:79 +#: extra/autocompletionUsers/mastodon/wx_scan.py:44 +#: wxUI/commonMessageDialogs.py:23 wxUI/commonMessageDialogs.py:36 +#: wxUI/commonMessageDialogs.py:45 wxUI/commonMessageDialogs.py:52 +#: wxUI/commonMessageDialogs.py:55 wxUI/commonMessageDialogs.py:61 +#: wxUI/dialogs/mastodon/dialogs.py:38 wxUI/dialogs/mastodon/dialogs.py:43 +#: wxUI/dialogs/mastodon/dialogs.py:48 wxUI/dialogs/mastodon/dialogs.py:53 +#: wxUI/dialogs/mastodon/dialogs.py:60 +msgid "Error" +msgstr "Errorea" + +#: extra/SpellChecker/wx_ui.py:82 +msgid "Spell check complete." +msgstr "Ortografiaren egiaztatzea bukatu da." + +#: extra/autocompletionUsers/completion.py:39 +#: extra/autocompletionUsers/completion.py:57 +msgid "You have to start writing" +msgstr "" + +# | msgid "There are no coordinates in this tweet" +#: extra/autocompletionUsers/completion.py:49 +#: extra/autocompletionUsers/completion.py:66 +#, fuzzy +msgid "There are no results in your users database" +msgstr "Txio honetan ez dago koordenaturik" + +#: extra/autocompletionUsers/completion.py:51 +#, fuzzy +msgid "Autocompletion only works for users." +msgstr "Erabiltzaileak &automatikoki osatu" + +#: extra/autocompletionUsers/wx_manage.py:9 +#, fuzzy +msgid "Manage Autocompletion database" +msgstr "Administratu automatikoki osatzeko datu-basea" + +#: extra/autocompletionUsers/wx_manage.py:12 +#, fuzzy, python-brace-format +msgid "Editing {0} users database" +msgstr "{0}(r)en erabiltzaileen datu-basea editatzen" + +#: extra/autocompletionUsers/wx_manage.py:13 +#, fuzzy +msgid "Username" +msgstr "Erabiltzailea" + +#: extra/autocompletionUsers/wx_manage.py:13 wxUI/dialogs/configuration.py:108 +msgid "Name" +msgstr "Izena" + +#: extra/autocompletionUsers/wx_manage.py:16 +#, fuzzy +msgid "Add user" +msgstr "Erabiltzailea" + +#: extra/autocompletionUsers/wx_manage.py:17 +#, fuzzy +msgid "Remove user" +msgstr "Erabiltzailea kendu" + +#: extra/autocompletionUsers/wx_manage.py:38 +msgid "Twitter username" +msgstr "" + +#: extra/autocompletionUsers/wx_manage.py:38 +msgid "Add user to database" +msgstr "" + +#: extra/autocompletionUsers/wx_manage.py:44 +#, fuzzy +msgid "The user does not exist" +msgstr "Erabiltzailea ez da existitzen" + +#: extra/autocompletionUsers/wx_manage.py:44 +#, fuzzy +msgid "Error!" +msgstr "Errorea" + +#: extra/autocompletionUsers/mastodon/scan.py:49 +msgid "" +"Updating database... You can close this window now. A message will tell " +"you when the process finishes." +msgstr "" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:8 +#, fuzzy +msgid "Autocomplete users' settings" +msgstr "Erabiltzaileak &automatikoki osatu" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:11 +msgid "Add &followers to database" +msgstr "" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:12 +msgid "Add f&ollowing to database" +msgstr "" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:26 +#, fuzzy +msgid "Updating autocompletion database" +msgstr "Administratu automatikoki osatzeko datu-basea" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:34 +msgid "" +"This process will retrieve the users you selected from your Mastodon " +"account, and add them to the user autocomplete database. Please note that" +" if there are many users or you have tried to perform this action less " +"than 15 minutes ago, TWBlue may reach a limit in API calls when trying to" +" load the users into the database. If this happens, we will show you an " +"error, in which case you will have to try this process again in a few " +"minutes. If this process ends with no error, you will be redirected back " +"to the account settings dialog. Do you want to continue?" +msgstr "" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:34 +#: wxUI/commonMessageDialogs.py:20 +msgid "Attention" +msgstr "Atentzioa" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:40 +#, python-brace-format +msgid "TWBlue has imported {} users successfully." +msgstr "" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:40 +#, fuzzy +msgid "Done" +msgstr "Egina!" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:44 +msgid "Error adding users from Mastodon. Please try again in about 15 minutes." +msgstr "" + +#: extra/ocr/OCRSpace.py:7 +msgid "Detect automatically" +msgstr "Automatikoki detektatu" + +#: extra/ocr/OCRSpace.py:7 +msgid "Danish" +msgstr "Daniera" + +#: extra/ocr/OCRSpace.py:7 +msgid "Dutch" +msgstr "Neerlandera" + +#: extra/ocr/OCRSpace.py:7 +msgid "English" +msgstr "Ingelesa" + +#: extra/ocr/OCRSpace.py:7 +msgid "Finnish" +msgstr "Suomiera" + +#: extra/ocr/OCRSpace.py:7 +msgid "French" +msgstr "Frantsesa" + +#: extra/ocr/OCRSpace.py:7 +msgid "German" +msgstr "Alemana" + +#: extra/ocr/OCRSpace.py:7 +msgid "Hungarian" +msgstr "Hungariera" + +#: extra/ocr/OCRSpace.py:7 +msgid "Korean" +msgstr "Koreera" + +#: extra/ocr/OCRSpace.py:7 +msgid "Italian" +msgstr "Italiera" + +#: extra/ocr/OCRSpace.py:7 +msgid "Japanese" +msgstr "Japoniera" + +#: extra/ocr/OCRSpace.py:7 +msgid "Polish" +msgstr "Poloniera" + +#: extra/ocr/OCRSpace.py:7 +msgid "Portuguese" +msgstr "Portugesa" + +#: extra/ocr/OCRSpace.py:7 +msgid "Russian" +msgstr "Errusiera" + +#: extra/ocr/OCRSpace.py:7 +msgid "Spanish" +msgstr "Gaztelera" + +#: extra/ocr/OCRSpace.py:7 +msgid "Turkish" +msgstr "Turkiera" + +#: extra/translator/wx_ui.py:25 +msgid "Translate message" +msgstr "Mezua itzuli" + +#: extra/translator/wx_ui.py:29 +#, fuzzy +msgid "Translation engine" +msgstr "Itzulia" + +#: extra/translator/wx_ui.py:32 +msgid "Target language" +msgstr "Helburu hizkuntza" + +#: keystrokeEditor/wx_ui.py:8 +msgid "Keystroke editor" +msgstr "Teklatu lasterbideen editorea" + +#: keystrokeEditor/wx_ui.py:11 +msgid "Select a keystroke to edit" +msgstr "Aukeratu konbinazio bat aldatzeko" + +#: keystrokeEditor/wx_ui.py:12 +#: wxUI/dialogs/mastodon/filters/manage_filters.py:18 +#: wxUI/dialogs/mastodon/userActions.py:9 +#: wxUI/dialogs/mastodon/userActions.py:18 +#: wxUI/dialogs/mastodon/userActions.py:19 +msgid "Action" +msgstr "Eragiketa" + +#: keystrokeEditor/wx_ui.py:12 +msgid "Keystroke" +msgstr "Lasterbidea" + +#: keystrokeEditor/wx_ui.py:17 +#: wxUI/dialogs/mastodon/filters/manage_filters.py:23 +#: wxUI/dialogs/userAliasDialogs.py:53 +msgid "Edit" +msgstr "Aldatu" + +#: keystrokeEditor/wx_ui.py:19 keystrokeEditor/wx_ui.py:49 +#, fuzzy +msgid "Undefine keystroke" +msgstr "Konbinazioa aldatzen" + +#: keystrokeEditor/wx_ui.py:20 +msgid "Execute action" +msgstr "Eragiketa egin" + +#: keystrokeEditor/wx_ui.py:21 wxUI/dialogs/userAliasDialogs.py:25 +msgid "Close" +msgstr "Itxi" + +#: keystrokeEditor/wx_ui.py:41 +msgid "Undefined" +msgstr "" + +#: keystrokeEditor/wx_ui.py:49 +#, fuzzy +msgid "Are you sure you want to undefine this keystroke?" +msgstr "Ziur zaude zerrenda hau ezabatu nahi duzula?" + +#: keystrokeEditor/wx_ui.py:53 +msgid "Editing keystroke" +msgstr "Konbinazioa aldatzen" + +#: keystrokeEditor/wx_ui.py:56 +msgid "Control" +msgstr "KTRL" + +#: keystrokeEditor/wx_ui.py:57 +msgid "Alt" +msgstr "Alt" + +#: keystrokeEditor/wx_ui.py:58 +msgid "Shift" +msgstr "Shift" + +#: keystrokeEditor/wx_ui.py:59 +msgid "Windows" +msgstr "Windows" + +#: keystrokeEditor/wx_ui.py:65 +msgid "Key" +msgstr "Tekla" + +#: keystrokeEditor/wx_ui.py:70 wxUI/dialogs/find.py:21 +#: wxUI/dialogs/mastodon/showUserProfile.py:31 +#: wxUI/dialogs/userAliasDialogs.py:23 +msgid "OK" +msgstr "Onartu" + +#: keystrokeEditor/wx_ui.py:83 +msgid "You need to use the Windows key" +msgstr "Windows tekla erabili behar duzu" + +#: keystrokeEditor/wx_ui.py:83 keystrokeEditor/wx_ui.py:86 +msgid "Invalid keystroke" +msgstr "Baliogabeko lasterbidea" + +#: keystrokeEditor/wx_ui.py:86 +msgid "You must provide a character for the keystroke" +msgstr "Konbinazioak karaktere bat eduki behar du" + +#: keystrokeEditor/actions/mastodon.py:3 +msgid "Go up in the current buffer" +msgstr "Gora joan bufferrean" + +#: keystrokeEditor/actions/mastodon.py:4 +msgid "Go down in the current buffer" +msgstr "Behera joan bufferrean" + +#: keystrokeEditor/actions/mastodon.py:5 +msgid "Go to the previous buffer" +msgstr "Aurreko bufferrera joan" + +#: keystrokeEditor/actions/mastodon.py:6 +msgid "Go to the next buffer" +msgstr "Hurrengo bufferrera joan" + +#: keystrokeEditor/actions/mastodon.py:7 +msgid "Focus the next session" +msgstr "Hurrengo sesiora joan" + +#: keystrokeEditor/actions/mastodon.py:8 +msgid "Focus the previous session" +msgstr "Aurreko sesiora joan" + +#: keystrokeEditor/actions/mastodon.py:9 +msgid "Show or hide the GUI" +msgstr "Interfaze grafikoa erakutsi / ezkutatu" + +# | msgid "Create a new list" +#: keystrokeEditor/actions/mastodon.py:10 +#, fuzzy +msgid "Make a new post" +msgstr "Zerrenda berri bat sortu" + +#: keystrokeEditor/actions/mastodon.py:11 wxUI/buffers/mastodon/base.py:26 +#: wxUI/buffers/mastodon/conversationList.py:25 +msgid "Reply" +msgstr "erantzun" + +#: keystrokeEditor/actions/mastodon.py:12 wxUI/buffers/mastodon/base.py:25 +#: wxUI/dialogs/mastodon/dialogs.py:7 +msgid "Boost" +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:13 +msgid "Send direct message" +msgstr "Zuzeneko mezua bidali" + +#: keystrokeEditor/actions/mastodon.py:14 +msgid "Add post to favorites" +msgstr "" + +# | msgid "Remove from list" +#: keystrokeEditor/actions/mastodon.py:15 +#, fuzzy +msgid "Remove post from favorites" +msgstr "Zerrendatik kendu" + +#: keystrokeEditor/actions/mastodon.py:16 +msgid "Add/remove post from favorites" +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:17 +msgid "Open the user actions dialogue" +msgstr "Ekintzen dialogoa ireki" + +#: keystrokeEditor/actions/mastodon.py:18 +#, fuzzy +msgid "See user details" +msgstr "Erabiltzailea kendu" + +# | msgid "Show tweet" +#: keystrokeEditor/actions/mastodon.py:19 +#, fuzzy +msgid "Show post" +msgstr "Txioa ikusi" + +#: keystrokeEditor/actions/mastodon.py:20 +msgid "Quit" +msgstr "Irten" + +#: keystrokeEditor/actions/mastodon.py:21 +msgid "Open user timeline" +msgstr "Erabiltzailearen denbora lerroa ireki" + +#: keystrokeEditor/actions/mastodon.py:22 +msgid "Destroy buffer" +msgstr "Bufferra ezabatu" + +# | msgid "Interact with the currently focused tweet." +#: keystrokeEditor/actions/mastodon.py:23 +#, fuzzy +msgid "Interact with the currently focused post." +msgstr "enfokatutako txioarekin interaktuatu" + +#: keystrokeEditor/actions/mastodon.py:24 +msgid "Open URL" +msgstr "Ireki URLa" + +#: keystrokeEditor/actions/mastodon.py:25 +#, fuzzy +msgid "View in browser" +msgstr "Bilatu Twitterren" + +#: keystrokeEditor/actions/mastodon.py:26 +msgid "Increase volume by 5%" +msgstr "Bolumena %5 igo" + +#: keystrokeEditor/actions/mastodon.py:27 +msgid "Decrease volume by 5%" +msgstr "Bolumena %5 jaitsi" + +#: keystrokeEditor/actions/mastodon.py:28 +msgid "Jump to the first element of a buffer" +msgstr "Buferraren lehen osagaira joan" + +#: keystrokeEditor/actions/mastodon.py:29 +msgid "Jump to the last element of the current buffer" +msgstr "Buferraren azken osagaira joan" + +#: keystrokeEditor/actions/mastodon.py:30 +msgid "Jump 20 elements up in the current buffer" +msgstr "Buferrean 20 osagai igo" + +#: keystrokeEditor/actions/mastodon.py:31 +msgid "Jump 20 elements down in the current buffer" +msgstr "Buferrean 20 osagai jaitsi" + +# | msgid "Delete" +#: keystrokeEditor/actions/mastodon.py:33 +#, fuzzy +msgid "Delete post" +msgstr "Ezabatu" + +#: keystrokeEditor/actions/mastodon.py:34 +msgid "Empty the current buffer" +msgstr "Bufferraren osagaiak ezabatu" + +#: keystrokeEditor/actions/mastodon.py:35 +msgid "Repeat last item" +msgstr "Azken osagaia errepikatu" + +#: keystrokeEditor/actions/mastodon.py:36 +msgid "Copy to clipboard" +msgstr "Kopiatu" + +#: keystrokeEditor/actions/mastodon.py:39 +msgid "Mute/unmute the active buffer" +msgstr "Buffer hau isildu edo isiltzeari utzi" + +#: keystrokeEditor/actions/mastodon.py:40 +msgid "Mute/unmute the current session" +msgstr "Sesio hau isildu / isiltzeari utzi" + +#: keystrokeEditor/actions/mastodon.py:41 +msgid "toggle the automatic reading of incoming tweets in the active buffer" +msgstr "Buffer honen tweeten irakurketa automatikoa aktibatu edo desaktibatu" + +# | msgid "Search on twitter" +#: keystrokeEditor/actions/mastodon.py:42 +#, fuzzy +msgid "Search on instance" +msgstr "Bilatu Twitterren" + +#: keystrokeEditor/actions/mastodon.py:43 +msgid "Find a string in the currently focused buffer" +msgstr "Bufferrean bilatu" + +#: keystrokeEditor/actions/mastodon.py:44 +msgid "Show the keystroke editor" +msgstr "Teklatu lasterbideen editorea erakutsi" + +#: keystrokeEditor/actions/mastodon.py:46 +msgid "load previous items" +msgstr "Aurreko osagaiak kargatu" + +#: keystrokeEditor/actions/mastodon.py:48 +msgid "View conversation" +msgstr "Elkarrizketa ikusi" + +#: keystrokeEditor/actions/mastodon.py:49 +msgid "Check and download updates" +msgstr "Eguneratzeak bilatu eta jaitsi" + +#: keystrokeEditor/actions/mastodon.py:50 +msgid "Opens the global settings dialogue" +msgstr "Ezarpen globalen elkarrizketa-koadroa ireki" + +#: keystrokeEditor/actions/mastodon.py:52 +msgid "Opens the account settings dialogue" +msgstr "Kontuaren ezarpenen elkarrizketa-koadroa ireki" + +# | msgid "Try to play an audio file" +#: keystrokeEditor/actions/mastodon.py:53 +#, fuzzy +msgid "Try to play a media file" +msgstr "Audioa erreproduzitzen saiatu" + +#: keystrokeEditor/actions/mastodon.py:54 +msgid "Updates the buffer and retrieves possible lost items there." +msgstr "Bufferra eguneratzen du eta galdutako osagaiak berreskuratzen ditu" + +#: keystrokeEditor/actions/mastodon.py:55 +msgid "Extracts the text from a picture and displays the result in a dialog." +msgstr "" +"Argazki bateko testua ateratzen du eta elkarrizketa-koadro batean " +"erakusten du" + +#: keystrokeEditor/actions/mastodon.py:56 +#, fuzzy +msgid "Adds an alias to an user" +msgstr "Hautatu zerrenda bat erabiltzailea bertan gehitzeko" + +#: sessionmanager/sessionManager.py:69 +#, python-brace-format +msgid "{account_name}@{instance} (Mastodon)" +msgstr "" + +#: sessionmanager/wxUI.py:11 +msgid "Session manager" +msgstr "Sesioen kudeatzailea" + +#: sessionmanager/wxUI.py:14 +msgid "Accounts list" +msgstr "Kontuen zerrenda" + +#: sessionmanager/wxUI.py:16 +msgid "Account" +msgstr "Kontua" + +#: sessionmanager/wxUI.py:20 +msgid "New account" +msgstr "Kontu berria" + +#: sessionmanager/wxUI.py:22 sessionmanager/wxUI.py:79 +msgid "Remove account" +msgstr "Kontua kendu" + +#: sessionmanager/wxUI.py:24 +msgid "Global Settings" +msgstr "Konfigurazio &orokorra" + +#: sessionmanager/wxUI.py:48 +msgid "You need to configure an account." +msgstr "Kontu bat konfiguratuta izan behar duzu" + +#: sessionmanager/wxUI.py:48 +msgid "Account Error" +msgstr "Errorea kontuarekin" + +#: sessionmanager/wxUI.py:54 +msgid "Mastodon" +msgstr "" + +#: sessionmanager/wxUI.py:59 +msgid "" +"You will be prompted for your Mastodon data (instance URL, email address " +"and password) so we can authorise TWBlue in your instance. Would you like" +" to authorise your account now?" +msgstr "" + +#: sessionmanager/wxUI.py:59 +msgid "Authorization" +msgstr "Baimena" + +#: sessionmanager/wxUI.py:67 +#, python-format +msgid "Authorized account %d" +msgstr "Baimendutako %d kontua" + +#: sessionmanager/wxUI.py:73 +msgid "" +"Your access token is invalid or the authorization has failed. Please try " +"again." +msgstr "" +"Zure saribde-kodea baliogabea da edo baimentzean errore bat egon da. " +"Mesedez, saiatu berriro beranduago." + +#: sessionmanager/wxUI.py:73 +msgid "Invalid user token" +msgstr "Baliogabeko egiaztapen kodea" + +#: sessionmanager/wxUI.py:79 +msgid "Do you really want to delete this account?" +msgstr "Ziur zaude kontu hau ezabatu nahi duzula?" + +#: sessions/base.py:125 +#, python-brace-format +msgid "" +"An exception occurred while saving the {app} database. It will be deleted" +" and rebuilt automatically. If this error persists, send the error log to" +" the {app} developers." +msgstr "" + +#: sessions/base.py:165 +#, python-brace-format +msgid "" +"An exception occurred while loading the {app} database. It will be " +"deleted and rebuilt automatically. If this error persists, send the error" +" log to the {app} developers." +msgstr "" + +# | msgid "dddd, MMMM D, YYYY H:m:s" +#: sessions/mastodon/compose.py:15 sessions/mastodon/compose.py:61 +#, fuzzy +msgid "dddd, MMMM D, YYYY H:m" +msgstr "dddd, MMMM D, YYYY H:m:s" + +# | msgid "{0}. Quoted tweet from @{1}: {2}" +#: sessions/mastodon/compose.py:17 sessions/mastodon/templates.py:74 +#: sessions/mastodon/templates.py:75 +#, fuzzy, python-brace-format +msgid "Boosted from @{}: {}" +msgstr "{0}: Zitatutako txioa {1}(r)engandik: {2}" + +#: sessions/mastodon/compose.py:22 sessions/mastodon/compose.py:81 +#: sessions/mastodon/templates.py:81 sessions/mastodon/templates.py:176 +#, python-brace-format +msgid "hidden by filter {}" +msgstr "" + +#: sessions/mastodon/compose.py:36 sessions/mastodon/templates.py:28 +msgid "dddd, MMMM D, YYYY H:m:s" +msgstr "dddd, MMMM D, YYYY H:m:s" + +# | msgid "" +# | "%s (@%s). %s followers, %s friends, %s tweets. Last tweeted %s. Joined " +# | "Twitter %s" +#: sessions/mastodon/compose.py:38 +#, fuzzy, python-format +msgid "%s (@%s). %s followers, %s following, %s posts. Joined %s" +msgstr "" +"%s (@%s). %s jarraitzaile, %s lagun, %s txio. Azken txioa %s, Twitterren " +"erregistratu zen %s" + +#: sessions/mastodon/compose.py:49 +#, python-brace-format +msgid "Last message from {}: {}" +msgstr "" + +# | msgid "{0} is following you." +#: sessions/mastodon/compose.py:64 +#, fuzzy, python-brace-format +msgid "{username} has posted: {status}" +msgstr "{0}(e)k jarraitzen zaitu" + +# | msgid "{0} is following you." +#: sessions/mastodon/compose.py:66 +#, fuzzy, python-brace-format +msgid "{username} has mentioned you: {status}" +msgstr "{0}(e)k jarraitzen zaitu" + +#: sessions/mastodon/compose.py:68 +#, python-brace-format +msgid "{username} has boosted: {status}" +msgstr "" + +#: sessions/mastodon/compose.py:70 +#, python-brace-format +msgid "{username} has added to favorites: {status}" +msgstr "" + +# | msgid "{0} is following you." +#: sessions/mastodon/compose.py:72 +#, fuzzy, python-brace-format +msgid "{username} has followed you." +msgstr "{0}(e)k jarraitzen zaitu" + +# | msgid "{0} is following you." +#: sessions/mastodon/compose.py:74 +#, fuzzy, python-brace-format +msgid "{username} has joined the instance." +msgstr "{0}(e)k jarraitzen zaitu" + +#: sessions/mastodon/compose.py:76 sessions/mastodon/templates.py:171 +#, python-brace-format +msgid "A poll in which you have voted has expired: {status}" +msgstr "" + +# | msgid "{0} is following you." +#: sessions/mastodon/compose.py:78 +#, fuzzy, python-brace-format +msgid "{username} wants to follow you." +msgstr "{0}(e)k jarraitzen zaitu" + +#: sessions/mastodon/session.py:69 +msgid "Please enter your instance URL." +msgstr "" + +#: sessions/mastodon/session.py:69 +msgid "Mastodon instance" +msgstr "" + +#: sessions/mastodon/session.py:80 +msgid "" +"We could not connect to your mastodon instance. Please verify that the " +"domain exists and the instance is accessible via a web browser." +msgstr "" + +# | msgid "&Report an error" +#: sessions/mastodon/session.py:80 +#, fuzzy +msgid "Instance error" +msgstr "E&rrore bati buruz berri eman" + +#: sessions/mastodon/session.py:85 +msgid "Enter the verification code" +msgstr "" + +# | msgid "Authorization" +#: sessions/mastodon/session.py:85 +#, fuzzy +msgid "PIN code authorization" +msgstr "Baimena" + +#: sessions/mastodon/session.py:94 +msgid "" +"We could not authorice your mastodon account to be used in TWBlue. This " +"might be caused due to an incorrect verification code. Please try to add " +"the session again." +msgstr "" + +# | msgid "Authorization" +#: sessions/mastodon/session.py:94 +#, fuzzy +msgid "Authorization error" +msgstr "Baimena" + +#: sessions/mastodon/session.py:215 +#, python-format +msgid "%s succeeded." +msgstr "%s eragiketak arrakasta izan du." + +#: sessions/mastodon/templates.py:18 +msgid "$display_name, $text $image_descriptions $date. $source" +msgstr "" + +#: sessions/mastodon/templates.py:19 +msgid "Dm to $recipient_display_name, $text $date" +msgstr "" + +#: sessions/mastodon/templates.py:20 +msgid "" +"$display_name (@$screen_name). $followers followers, $following " +"following, $posts posts. Joined $created_at." +msgstr "" + +#: sessions/mastodon/templates.py:21 +msgid "$display_name $text, $date" +msgstr "" + +#: sessions/mastodon/templates.py:34 +#, python-brace-format +msgid "Content warning: {}" +msgstr "" + +#: sessions/mastodon/templates.py:45 +#, fuzzy, python-brace-format +msgid "Media description: {}" +msgstr "Irudiaren deskribapena" + +# | msgid "Followers" +#: sessions/mastodon/templates.py:82 wxUI/dialogs/mastodon/postDialogs.py:49 +#, fuzzy +msgid "Followers only" +msgstr "Jarraitzaileak" + +#: sessions/mastodon/templates.py:94 +#, fuzzy +msgid "Pinned." +msgstr "Kopiatua" + +#: sessions/mastodon/templates.py:157 +#, python-brace-format +msgid "has posted: {status}" +msgstr "" + +#: sessions/mastodon/templates.py:159 +#, python-brace-format +msgid "has mentioned you: {status}" +msgstr "" + +#: sessions/mastodon/templates.py:161 +#, python-brace-format +msgid "has boosted: {status}" +msgstr "" + +#: sessions/mastodon/templates.py:163 +#, python-brace-format +msgid "has added to favorites: {status}" +msgstr "" + +#: sessions/mastodon/templates.py:165 +#, python-brace-format +msgid "has updated a status: {status}" +msgstr "" + +# | msgid "{0} is following you." +#: sessions/mastodon/templates.py:167 +#, fuzzy +msgid "has followed you." +msgstr "{0}(e)k jarraitzen zaitu" + +# | msgid "Remove client" +#: sessions/mastodon/templates.py:169 +#, fuzzy +msgid "has joined the instance." +msgstr "Aplikazioa kendu" + +# | msgid "{0} is following you." +#: sessions/mastodon/templates.py:173 +#, fuzzy +msgid "wants to follow you." +msgstr "{0}(e)k jarraitzen zaitu" + +#: update/utils.py:29 +#, python-format +msgid "%d day, " +msgstr "Egun %d, " + +#: update/utils.py:31 +#, python-format +msgid "%d days, " +msgstr "%d egun, " + +#: update/utils.py:33 +#, python-format +msgid "%d hour, " +msgstr "Ordu %d, " + +#: update/utils.py:35 +#, python-format +msgid "%d hours, " +msgstr "%d ordu, " + +#: update/utils.py:37 +#, python-format +msgid "%d minute, " +msgstr "Minutu %d, " + +#: update/utils.py:39 +#, python-format +msgid "%d minutes, " +msgstr "%d minutu, " + +#: update/utils.py:41 +#, python-format +msgid "%s second" +msgstr "Segundu %s" + +#: update/utils.py:43 +#, python-format +msgid "%s seconds" +msgstr "%s segundu" + +#: update/wxUpdater.py:11 +#, python-format +msgid "" +"There's a new %s version available, released on %s. Would you like to " +"download it now?\n" +"\n" +" %s version: %s\n" +"\n" +"Changes:\n" +"%s" +msgstr "" +"%s(r)en bertsio berri bat eskuragarri dago, %s(e)an argitaratua. Orain " +"jaitsi nahi duzu?\n" +"\n" +" %s Bertsioa: %s\n" +"\n" +"Aldaketak:\n" +"%s" + +# | msgid "" +# | "There's a new %s version available, released on %s. Would you like to " +# | "download it now?\n" +# | "\n" +# | " %s version: %s\n" +# | "Changes:\n" +# | "%s" +#: update/wxUpdater.py:14 +#, fuzzy, python-format +msgid "" +"There's a new %s version available, released on %s. Updates are not " +"automatic in Windows 7, so you would need to visit TWBlue's download " +"website to get the latest version.\n" +"\n" +" %s version: %s\n" +"\n" +"Changes:\n" +"%s" +msgstr "" +"%s(r)en bertsio berri bat eskuragarri dago, %s(e)an argitaratua. Orain " +"jaitsi nahi duzu?\n" +"\n" +" %s Bertsioa: %s\n" +"\n" +"Aldaketak:\n" +"%s" + +#: update/wxUpdater.py:16 +#, python-format +msgid "New version for %s" +msgstr "%s-ren bertsio berri bat" + +#: update/wxUpdater.py:23 +msgid "Download in Progress" +msgstr "Deskargatzen..." + +#: update/wxUpdater.py:23 +msgid "Downloading the new version..." +msgstr "Bertsio berria jaisten..." + +#: update/wxUpdater.py:33 +#, python-format +msgid "Updating... %s of %s" +msgstr "Eguneratzen... %s %s(e)tik" + +#: update/wxUpdater.py:36 +msgid "" +"The update has been downloaded and installed successfully. Press OK to " +"continue." +msgstr "" +"Bertsio berria jaitsia eta instalatua izan da. Sakatu OK aplikazioa " +"abiatzeko." + +#: update/wxUpdater.py:36 +msgid "Done!" +msgstr "Egina!" + +#: wxUI/commonMessageDialogs.py:6 +#, python-brace-format +msgid "Do you really want to close {0}?" +msgstr "{0} itxi nahi duzu?" + +#: wxUI/commonMessageDialogs.py:6 +msgid "Exit" +msgstr "Irten" + +#: wxUI/commonMessageDialogs.py:10 +#, python-brace-format +msgid " {0} must be restarted for these changes to take effect." +msgstr "{0} berrabiazi behar da aldaketak gordetzeko." + +#: wxUI/commonMessageDialogs.py:10 +#, python-brace-format +msgid "Restart {0} " +msgstr "{0} berrabiazi" + +#: wxUI/commonMessageDialogs.py:13 +msgid "" +"Are you sure you want to delete this user from the database? This user " +"will not appear in autocomplete results anymore." +msgstr "" +"Ziur zaude erabiltzaile hau datu-basetik kendu nahi duzula? Erabiltzaile " +"hau ez da berez osatzeko menuan agertuko." + +#: wxUI/commonMessageDialogs.py:13 +msgid "Confirm" +msgstr "Baieztatu" + +#: wxUI/commonMessageDialogs.py:16 +msgid "" +"Do you really want to empty this buffer? It's items will be removed from" +" the list but not from Twitter" +msgstr "" +"Ziur zaude buffer honen osagaiak ezabatu nahi dituzula? Txioak " +"bufferretik kenduko dira, baina ez twitterretik." + +#: wxUI/commonMessageDialogs.py:16 wxUI/dialogs/mastodon/dialogs.py:31 +msgid "Empty buffer" +msgstr "Bufferraren osagaiak ezabatu" + +#: wxUI/commonMessageDialogs.py:20 +msgid "Do you really want to destroy this buffer?" +msgstr "Ziur zaude buffer hau ezabatu nahi duzula?" + +#: wxUI/commonMessageDialogs.py:23 +msgid "That user does not exist" +msgstr "Erabiltzailea ez da existitzen" + +#: wxUI/commonMessageDialogs.py:26 +msgid "A timeline for this user already exists. You can't open another" +msgstr "" +"Erabiltzaile honetarako jada denbora lerro bat dago. Ezin da beste bat " +"ireki." + +#: wxUI/commonMessageDialogs.py:26 +msgid "Existing timeline" +msgstr "Denbora lerro hau existitzen da" + +#: wxUI/commonMessageDialogs.py:29 +#, python-brace-format +msgid "" +"If you like {0} we need your help to keep it going. Help us by donating " +"to the project. This will help us pay for the server, the domain and some" +" other things to ensure that {0} will be actively maintained. Your " +"donation will give us the means to continue the development of {0}, and " +"to keep {0} free. Would you like to donate now?" +msgstr "" +"{0} gustatzen bazaizu, zure laguntza behar dugu. Lagun gaitzazu donazio " +"batekin. Honek zerbitzaria, domeinua eta beste zenbait gauza ordaintzeko " +"balioko digu, {0} aktiboki garatua izan dadin. Zure donazioak {0} " +"garatzen lagunduko du, eta {0} librea izaten jarraitzeko. Orain egin nahi" +" al duzu?" + +#: wxUI/commonMessageDialogs.py:29 +msgid "We need your help" +msgstr "Zure laguntza behar dugu" + +#: wxUI/commonMessageDialogs.py:33 wxUI/dialogs/mastodon/postDialogs.py:207 +msgid "Information" +msgstr "Informazioa" + +#: wxUI/commonMessageDialogs.py:36 +msgid "The configuration file is invalid." +msgstr "" + +#: wxUI/commonMessageDialogs.py:39 +#, python-brace-format +msgid "" +"{0} quit unexpectedly the last time it was run. If the problem persists, " +"please report it to the {0} developers." +msgstr "" + +#: wxUI/commonMessageDialogs.py:39 +msgid "Warning" +msgstr "Abisua" + +#: wxUI/commonMessageDialogs.py:45 +#, python-brace-format +msgid "Sorry, you can't update while running {} from source." +msgstr "" + +#: wxUI/commonMessageDialogs.py:49 +msgid "the provided instance is invalid. Please try again." +msgstr "" + +#: wxUI/commonMessageDialogs.py:49 +#, fuzzy +msgid "Invalid instance" +msgstr "Baliogabeko lasterbidea" + +#: wxUI/commonMessageDialogs.py:52 +msgid "" +"TWBlue was unable to add or update the filter with the specified " +"settings. Please try again." +msgstr "" + +#: wxUI/commonMessageDialogs.py:55 +msgid "" +"TWBlue was unable to load your filters from the instance. Please try " +"again." +msgstr "" + +#: wxUI/commonMessageDialogs.py:58 +#, fuzzy +msgid "Do you really want to delete this filter ?" +msgstr "Ziur zaude kontu hau ezabatu nahi duzula?" + +#: wxUI/commonMessageDialogs.py:58 +#, fuzzy +msgid "Delete filter" +msgstr "&Iragazki bat sortu" + +#: wxUI/commonMessageDialogs.py:61 +msgid "TWBlue was unable to remove the filter you specified. Please try again." +msgstr "" + +#: wxUI/sysTrayIcon.py:36 wxUI/view.py:25 +msgid "&Global settings" +msgstr "Konfigurazio &orokorra" + +#: wxUI/sysTrayIcon.py:37 wxUI/view.py:24 +msgid "Account se&ttings" +msgstr "Kontuaren &aukerak" + +#: wxUI/sysTrayIcon.py:39 +msgid "&Show / hide" +msgstr "&Erakutsi / ezkutatu" + +#: wxUI/sysTrayIcon.py:40 wxUI/view.py:74 +msgid "&Documentation" +msgstr "&Dokumentazioa" + +#: wxUI/sysTrayIcon.py:41 +msgid "Check for &updates" +msgstr "E&guneratzeak bilatu" + +#: wxUI/sysTrayIcon.py:42 +msgid "&Exit" +msgstr "&Irten" + +#: wxUI/view.py:16 +msgid "&Manage accounts" +msgstr "&Kontuak administratu" + +#: wxUI/view.py:17 +msgid "&Update profile" +msgstr "&Profila eguneratu" + +#: wxUI/view.py:18 +msgid "&Hide window" +msgstr "Leihoa &ezkutatu" + +#: wxUI/view.py:20 +msgid "&Lists manager" +msgstr "&Zerrenden kudeatzailea" + +#: wxUI/view.py:23 +msgid "&Edit keystrokes" +msgstr "Teklatu lasterbidea&k aldatu" + +#: wxUI/view.py:26 +msgid "E&xit" +msgstr "&Irten" + +# | msgid "Remove from list" +#: wxUI/view.py:34 +#, fuzzy +msgid "&Remove from favorites" +msgstr "Zerrendatik kendu" + +#: wxUI/view.py:47 +msgid "&Add to list" +msgstr "Zerrendara &gehitu" + +#: wxUI/view.py:48 +msgid "R&emove from list" +msgstr "Zerrendatik &kendu" + +#: wxUI/view.py:49 +msgid "Show user &profile" +msgstr "Erabiltzailearen &profila ikusi" + +#: wxUI/view.py:50 +msgid "V&iew likes" +msgstr "&gogokoak ikusi" + +#: wxUI/view.py:54 +msgid "&Update buffer" +msgstr "Bufferra &eguneratu" + +#: wxUI/dialogs/mastodon/communityTimeline.py:9 wxUI/view.py:55 +msgid "Create community timeline" +msgstr "" + +#: wxUI/view.py:56 +msgid "New &trending topics buffer..." +msgstr "tenden&tzien buffer berria..." + +#: wxUI/view.py:59 +msgid "Find a string in the currently focused buffer..." +msgstr "Bufferrean bilatu" + +#: wxUI/view.py:60 +msgid "&Load previous items" +msgstr "Aurreko elementuak &kargatu" + +#: wxUI/dialogs/mastodon/userActions.py:21 wxUI/view.py:62 +msgid "&Mute" +msgstr "&Isildu" + +#: wxUI/view.py:63 +msgid "&Autoread" +msgstr "&Automatikoki irakurri" + +#: wxUI/view.py:64 +msgid "&Clear buffer" +msgstr "Bufferraren osa&gaiak ezabatu" + +#: wxUI/view.py:65 +msgid "&Destroy" +msgstr "&Ezabatu" + +#: wxUI/view.py:69 +msgid "&Seek back 5 seconds" +msgstr "Bost segundu &atzeratu" + +#: wxUI/view.py:70 +msgid "&Seek forward 5 seconds" +msgstr "Bost segundu a&urreratu" + +#: wxUI/view.py:75 +msgid "Sounds &tutorial" +msgstr "Soinuen &tutoriala" + +#: wxUI/view.py:76 +msgid "&What's new in this version?" +msgstr "&Zer da berri bertsio honetan?" + +#: wxUI/view.py:77 +msgid "&Check for updates" +msgstr "E&guneratzeak bilatu" + +#: wxUI/view.py:78 +msgid "&Report an error" +msgstr "E&rrore bati buruz berri eman" + +#: wxUI/view.py:79 +#, python-brace-format +msgid "{0}'s &website" +msgstr "{0}(r)en &webgunea" + +#: wxUI/view.py:80 +msgid "Get soundpacks for TWBlue" +msgstr "" + +#: wxUI/view.py:81 +#, python-brace-format +msgid "About &{0}" +msgstr "&{0}(r)i buruz" + +#: wxUI/view.py:84 +msgid "&Application" +msgstr "&Aplikazioa" + +#: wxUI/view.py:85 +msgid "&Tweet" +msgstr "&Txio" + +#: wxUI/dialogs/mastodon/userActions.py:10 wxUI/view.py:86 +msgid "&User" +msgstr "&Erabiltzailea" + +#: wxUI/view.py:87 +msgid "&Buffer" +msgstr "&Bufferra" + +#: wxUI/view.py:88 +msgid "&Audio" +msgstr "&Audioa" + +#: wxUI/view.py:89 +msgid "&Help" +msgstr "&Laguntza" + +#: wxUI/view.py:175 +msgid "Address" +msgstr "Helbidea" + +#: wxUI/view.py:206 +#, python-brace-format +msgid "Your {0} version is up to date" +msgstr "Zure {0}(r)en bertsioa eguneratuta dago" + +#: wxUI/view.py:206 +msgid "Update" +msgstr "Eguneratzea" + +#: wxUI/buffers/panels.py:12 wxUI/buffers/panels.py:20 +msgid "Login" +msgstr "Saioa hasi" + +#: wxUI/buffers/panels.py:14 +msgid "Log in automatically" +msgstr "Saioa automatikoki hasi" + +#: wxUI/buffers/panels.py:22 +msgid "Logout" +msgstr "Saioa amaitu" + +#: wxUI/buffers/mastodon/base.py:11 +#: wxUI/buffers/mastodon/conversationList.py:11 wxUI/buffers/mastodon/user.py:8 +#: wxUI/dialogs/mastodon/userTimeline.py:10 wxUI/dialogs/userAliasDialogs.py:14 +msgid "User" +msgstr "Erabiltzailea" + +#: wxUI/buffers/mastodon/base.py:11 +#: wxUI/buffers/mastodon/conversationList.py:11 +#: wxUI/buffers/mastodon/notifications.py:11 +#: wxUI/dialogs/mastodon/postDialogs.py:37 +#: wxUI/dialogs/mastodon/postDialogs.py:272 +msgid "Text" +msgstr "Testua" + +#: wxUI/buffers/mastodon/base.py:11 +#: wxUI/buffers/mastodon/conversationList.py:11 +#: wxUI/buffers/mastodon/notifications.py:11 +#: wxUI/dialogs/mastodon/postDialogs.py:216 +msgid "Date" +msgstr "Data" + +#: wxUI/buffers/mastodon/base.py:11 +#: wxUI/buffers/mastodon/conversationList.py:11 +msgid "Client" +msgstr "Aplikazioa" + +#: wxUI/buffers/mastodon/base.py:27 +msgid "Favorite" +msgstr "" + +#: wxUI/buffers/mastodon/base.py:28 +msgid "Bookmark" +msgstr "" + +#: wxUI/buffers/mastodon/base.py:29 +msgid "Direct message" +msgstr "Zuzeneko mezua" + +#: wxUI/buffers/mastodon/notifications.py:23 +#: wxUI/dialogs/mastodon/dialogs.py:23 +msgid "Dismiss" +msgstr "" + +#: wxUI/buffers/mastodon/user.py:19 wxUI/dialogs/userAliasDialogs.py:48 +#, fuzzy +msgid "Actions" +msgstr "Eragiketa" + +# | msgid "Direct Messages" +#: wxUI/buffers/mastodon/user.py:20 +#, fuzzy +msgid "Message" +msgstr "Zuzeneko mezuak" + +#: wxUI/dialogs/configuration.py:15 +#, fuzzy +msgid "&Language" +msgstr "Hizkuntza" + +#: wxUI/dialogs/configuration.py:22 +#, fuzzy, python-brace-format +msgid "&Ask before exiting {0}" +msgstr "Galdetu {0}-tik irten aurretik" + +#: wxUI/dialogs/configuration.py:24 +msgid "&Disable Streaming functions" +msgstr "" + +#: wxUI/dialogs/configuration.py:27 +msgid "&Buffer update interval, in minutes" +msgstr "" + +#: wxUI/dialogs/configuration.py:33 +#, fuzzy, python-brace-format +msgid "Pla&y a sound when {0} launches" +msgstr "Soinu bat erreproduzitu {0} hastean" + +#: wxUI/dialogs/configuration.py:35 +#, fuzzy, python-brace-format +msgid "Sp&eak a message when {0} launches" +msgstr "Mezu bat esan {0} hastean" + +#: wxUI/dialogs/configuration.py:37 +#, fuzzy +msgid "&Use invisible interface's keyboard shortcuts while GUI is visible" +msgstr "Erabili interfaze ikusezinaren teklatu lasterbideak interfaze grafikoan" + +#: wxUI/dialogs/configuration.py:39 +#, fuzzy +msgid "A&ctivate Sapi5 when any other screen reader is not being run" +msgstr "Aktibatu SAPI 5 beste pantaila irakurgailu bat piztua ez dagoenean" + +#: wxUI/dialogs/configuration.py:41 +#, fuzzy +msgid "&Hide GUI on launch" +msgstr "Ezkutatu interfaze grafikoa aplikazioa hasieratzean" + +#: wxUI/dialogs/configuration.py:43 +msgid "&Read long posts in GUI" +msgstr "" + +#: wxUI/dialogs/configuration.py:46 +#, fuzzy +msgid "&Keymap" +msgstr "Teklatu mapa" + +#: wxUI/dialogs/configuration.py:51 +#, fuzzy, python-brace-format +msgid "Check for u&pdates when {0} launches" +msgstr "Eguneratzeak bilatu {0} hastean" + +#: wxUI/dialogs/configuration.py:61 +#, fuzzy +msgid "Proxy &type: " +msgstr "Proxi mota" + +#: wxUI/dialogs/configuration.py:68 +#, fuzzy +msgid "Proxy s&erver: " +msgstr "Proxi zerbitzaria:" + +#: wxUI/dialogs/configuration.py:74 +#, fuzzy +msgid "&Port: " +msgstr "Ataka:" + +#: wxUI/dialogs/configuration.py:80 +#, fuzzy +msgid "&User: " +msgstr "Erabiltzailea" + +#: wxUI/dialogs/configuration.py:86 +#, fuzzy +msgid "P&assword: " +msgstr "Pasahitza:" + +#: wxUI/dialogs/configuration.py:98 +msgid "Enable automatic s&peech feedback" +msgstr "" + +#: wxUI/dialogs/configuration.py:100 +msgid "Enable automatic &Braille feedback" +msgstr "" + +#: wxUI/dialogs/configuration.py:108 +msgid "Buffer" +msgstr "Bufferra" + +#: wxUI/dialogs/configuration.py:108 +msgid "Status" +msgstr "Egoera" + +#: wxUI/dialogs/configuration.py:111 +#, fuzzy +msgid "S&how/hide" +msgstr "Erakutsi " + +#: wxUI/dialogs/configuration.py:112 +#, fuzzy +msgid "Move &up" +msgstr "Gora mugitu" + +#: wxUI/dialogs/configuration.py:113 +#, fuzzy +msgid "Move &down" +msgstr "Behera mugitu" + +#: wxUI/dialogs/configuration.py:123 wxUI/dialogs/configuration.py:188 +#: wxUI/dialogs/configuration.py:191 wxUI/dialogs/configuration.py:196 +msgid "Show" +msgstr "Erakutsi" + +#: wxUI/dialogs/configuration.py:125 wxUI/dialogs/configuration.py:135 +#: wxUI/dialogs/configuration.py:159 wxUI/dialogs/configuration.py:189 +msgid "Hide" +msgstr "Ezkutatu" + +#: wxUI/dialogs/configuration.py:133 wxUI/dialogs/configuration.py:157 +msgid "Select a buffer first." +msgstr "Lehenik buffer bat aukeratu." + +#: wxUI/dialogs/configuration.py:136 wxUI/dialogs/configuration.py:160 +msgid "The buffer is hidden, show it first." +msgstr "Bufferra ezkutatuta dago, lehenbizi erakutsi behar duzu." + +#: wxUI/dialogs/configuration.py:139 +msgid "The buffer is already at the top of the list." +msgstr "Bufferra jada zerrendaren goialdean dago." + +#: wxUI/dialogs/configuration.py:163 +msgid "The buffer is already at the bottom of the list." +msgstr "Bufferra jada zerrendaren behealdean dago." + +#: wxUI/dialogs/configuration.py:205 +msgid "&LibreTranslate API URL: " +msgstr "" + +#: wxUI/dialogs/configuration.py:211 +msgid "LibreTranslate API &Key (optional): " +msgstr "" + +#: wxUI/dialogs/configuration.py:217 +msgid "&DeepL API Key: " +msgstr "" + +#: wxUI/dialogs/configuration.py:231 +#, python-brace-format +msgid "{0} preferences" +msgstr "{0}(r)en hobespenak" + +#: wxUI/dialogs/configuration.py:237 wxUI/dialogs/mastodon/configuration.py:144 +msgid "General" +msgstr "Orokorra" + +#: wxUI/dialogs/configuration.py:242 +msgid "Proxy" +msgstr "Proxia" + +#: wxUI/dialogs/configuration.py:246 +#, fuzzy +msgid "Translation services" +msgstr "Itzulia" + +#: wxUI/dialogs/configuration.py:251 wxUI/dialogs/mastodon/configuration.py:170 +#, fuzzy +msgid "&Save" +msgstr "gorde" + +#: wxUI/dialogs/configuration.py:253 +#: wxUI/dialogs/mastodon/communityTimeline.py:27 +#: wxUI/dialogs/mastodon/configuration.py:172 +#: wxUI/dialogs/mastodon/search.py:26 +#: wxUI/dialogs/mastodon/showUserProfile.py:170 +#: wxUI/dialogs/mastodon/updateProfile.py:132 +#: wxUI/dialogs/mastodon/userActions.py:38 +#: wxUI/dialogs/mastodon/userTimeline.py:32 +msgid "&Close" +msgstr "&Itxi" + +#: wxUI/dialogs/find.py:13 +msgid "Find in current buffer" +msgstr "Bufferrean bilatu" + +#: wxUI/dialogs/find.py:14 +msgid "String" +msgstr "Testua" + +#: wxUI/dialogs/find.py:23 wxUI/dialogs/mastodon/showUserProfile.py:33 +msgid "Cancel" +msgstr "Utzi" + +#: wxUI/dialogs/templateDialogs.py:8 +msgid "Edit Template" +msgstr "" + +#: wxUI/dialogs/templateDialogs.py:13 +msgid "Edit template" +msgstr "" + +#: wxUI/dialogs/templateDialogs.py:17 +#, fuzzy +msgid "Available variables" +msgstr "Ez dago erabilgarri" + +#: wxUI/dialogs/templateDialogs.py:29 +msgid "Restore template" +msgstr "" + +#: wxUI/dialogs/templateDialogs.py:48 +#, python-brace-format +msgid "Restored template to {}." +msgstr "" + +#: wxUI/dialogs/templateDialogs.py:52 +msgid "" +"the template you have specified include variables that do not exists for " +"the object. Please fix the template and try again. For your reference, " +"you can see a list of all available variables in the variables list while" +" editing your template." +msgstr "" + +#: wxUI/dialogs/templateDialogs.py:52 +#, fuzzy +msgid "Invalid template" +msgstr "Baliogabeko lasterbidea" + +#: wxUI/dialogs/urlList.py:6 +msgid "Select URL" +msgstr "URLa aukeratu" + +#: wxUI/dialogs/mastodon/userActions.py:13 +#: wxUI/dialogs/mastodon/userTimeline.py:13 wxUI/dialogs/userAliasDialogs.py:13 +msgid "&Autocomplete users" +msgstr "Erabiltzaileaak &automatikoki osatu" + +#: wxUI/dialogs/userAliasDialogs.py:18 +#, fuzzy +msgid "Alias" +msgstr "Beti" + +#: wxUI/dialogs/userAliasDialogs.py:41 +#, fuzzy +msgid "Edit user aliases" +msgstr "{0}(r)en erabiltzaileen datu-basea editatzen" + +#: wxUI/dialogs/mastodon/search.py:19 wxUI/dialogs/userAliasDialogs.py:43 +msgid "Users" +msgstr "Erabiltzaileak" + +#: wxUI/dialogs/userAliasDialogs.py:50 +#, fuzzy +msgid "Add alias" +msgstr "Zerrendara gehitu" + +#: wxUI/dialogs/userAliasDialogs.py:51 +msgid "Adds a new user alias" +msgstr "" + +#: wxUI/dialogs/userAliasDialogs.py:54 +#, fuzzy +msgid "Edit the currently focused user Alias." +msgstr "enfokatutako txioarekin interaktuatu" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:26 +#: wxUI/dialogs/mastodon/filters/manage_filters.py:24 +#: wxUI/dialogs/userAliasDialogs.py:57 +msgid "Remove" +msgstr "Ezabatu" + +#: wxUI/dialogs/userAliasDialogs.py:58 +#, fuzzy +msgid "Remove the currently focused user alias." +msgstr "Bufferrean bilatu" + +#: wxUI/dialogs/userAliasDialogs.py:82 +#, fuzzy +msgid "Are you sure you want to delete this user alias?" +msgstr "Ziur zaude zerrenda hau ezabatu nahi duzula?" + +#: wxUI/dialogs/userAliasDialogs.py:82 +#, fuzzy +msgid "Remove user alias" +msgstr "Erabiltzailea kendu" + +#: wxUI/dialogs/userAliasDialogs.py:93 +#, fuzzy +msgid "User alias" +msgstr "Erabiltzailearen Xehetasunak" + +#: wxUI/dialogs/userList.py:27 +#, fuzzy +msgid "View profile" +msgstr "&Profila eguneratu" + +#: wxUI/dialogs/mastodon/communityTimeline.py:10 +#, fuzzy +msgid "Community URL" +msgstr "KTRL" + +#: wxUI/dialogs/mastodon/communityTimeline.py:16 +#: wxUI/dialogs/mastodon/userTimeline.py:18 +msgid "Buffer type" +msgstr "Buffer mota" + +#: wxUI/dialogs/mastodon/communityTimeline.py:17 +#, fuzzy +msgid "&Local timeline" +msgstr "Denbora lerroak" + +#: wxUI/dialogs/mastodon/communityTimeline.py:18 +#, fuzzy +msgid "&Federated Timeline" +msgstr "Erabiltzailearen denbora lerroa ireki" + +#: wxUI/dialogs/mastodon/communityTimeline.py:25 +#: wxUI/dialogs/mastodon/search.py:24 +#: wxUI/dialogs/mastodon/updateProfile.py:130 +#: wxUI/dialogs/mastodon/userActions.py:36 +#: wxUI/dialogs/mastodon/userTimeline.py:30 +msgid "&OK" +msgstr "&Onartu" + +#: wxUI/dialogs/mastodon/configuration.py:14 +#, fuzzy +msgid "User autocompletion settings" +msgstr "Automatikoki osatzeko aukerak" + +#: wxUI/dialogs/mastodon/configuration.py:15 +msgid "" +"Scan acc&ount and add followers and following users to the user " +"autocompletion database" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:16 +#, fuzzy +msgid "&Manage autocompletion database" +msgstr "Administratu automatikoki osatzeko datu-basea" + +#: wxUI/dialogs/mastodon/configuration.py:21 +msgid "&Disable Streaming API endpoints" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:23 +#, fuzzy +msgid "&Relative timestamps" +msgstr "Denbora erlatiboa" + +#: wxUI/dialogs/mastodon/configuration.py:25 +msgid "" +"R&ead preferences from instance (default visibility when publishing and " +"displaying sensitive content)" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:28 +#, fuzzy +msgid "&Items on each API call" +msgstr "item kopurua APIari dei bakoitzean " + +# | msgid "" +# | "Inverted buffers: The newest tweets will be shown at the beginning while +# " +# | "the oldest at the end" +#: wxUI/dialogs/mastodon/configuration.py:34 +#, fuzzy +msgid "" +"I&nverted buffers: The newest items will be shown at the beginning while " +"the oldest at the end" +msgstr "" +"Buffer alderantzizkatuak: Txio berriak zerrenden hasieran agertuko dira, " +"zaharrenak bukaeran" + +#: wxUI/dialogs/mastodon/configuration.py:36 +msgid "&Ask confirmation before boosting a post" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:38 +#, fuzzy +msgid "S&how screen names instead of full names" +msgstr "Erabiltzaile-izenak izen osoen ordez erakutsi " + +#: wxUI/dialogs/mastodon/configuration.py:40 +msgid "Hide e&mojis in usernames" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:42 +#, fuzzy +msgid "" +"&Number of items per buffer to cache in database (0 to disable caching, " +"blank for unlimited)" +msgstr "" +"Bufferreko elementu kopurua datu basean gordetzeko (utzi hutsik mugagabea" +" egiteko, jarri 0 bat gordetzea desaktibatzeko)" + +#: wxUI/dialogs/mastodon/configuration.py:46 +msgid "" +"&Load cache for items in memory (much faster in big datasets but requires" +" more RAM)" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:53 +#, python-brace-format +msgid "Edit template for &posts. Current template: {}" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:55 +#, python-brace-format +msgid "Edit template for c&onversations. Current template: {}" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:57 +#, python-brace-format +msgid "Edit template for p&ersons. Current template: {}" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:65 +#, fuzzy +msgid "&Volume" +msgstr "Bolumena" + +#: wxUI/dialogs/mastodon/configuration.py:76 +#, fuzzy +msgid "S&ession mute" +msgstr "Sesioa isildu" + +#: wxUI/dialogs/mastodon/configuration.py:78 +#, fuzzy +msgid "&Output device" +msgstr "Irteera dispositiboa" + +#: wxUI/dialogs/mastodon/configuration.py:85 +#, fuzzy +msgid "&Input device" +msgstr "Sarrera dispositiboa" + +#: wxUI/dialogs/mastodon/configuration.py:93 +#, fuzzy +msgid "Sound &pack" +msgstr "Soinu packa" + +# | msgid "Indicate audio tweets with sound" +#: wxUI/dialogs/mastodon/configuration.py:99 +#, fuzzy +msgid "Indicate &audio or video in posts with sound" +msgstr "Audioak dituzten txioak soinu batekin identifikatu" + +# | msgid "Indicate tweets containing images with sound" +#: wxUI/dialogs/mastodon/configuration.py:101 +#, fuzzy +msgid "Indicate posts containing i&mages with sound" +msgstr "Irudiak dituzten txioak soinu batekin identifikatu" + +#: wxUI/dialogs/mastodon/configuration.py:124 +#, fuzzy +msgid "&Language for OCR" +msgstr "OCRaren hizkuntza" + +#: wxUI/dialogs/mastodon/configuration.py:149 +msgid "Feedback" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:153 +msgid "Buffers" +msgstr "Bufferrak" + +#: wxUI/dialogs/mastodon/configuration.py:157 +msgid "Templates" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:161 +msgid "Sound" +msgstr "Soinua" + +#: wxUI/dialogs/mastodon/configuration.py:165 +msgid "Extras" +msgstr "Bestelakoak" + +# | msgid "Would you like to add a comment to this tweet?" +#: wxUI/dialogs/mastodon/dialogs.py:7 +#, fuzzy +msgid "Would you like to share this post?" +msgstr "Txio honi iruzkin bat gehitu nahi al zenioke?" + +# | msgid "" +# | "Do you really want to delete this tweet? It will be deleted from Twitter +# " +# | "as well." +#: wxUI/dialogs/mastodon/dialogs.py:15 +#, fuzzy +msgid "" +"Do you really want to delete this post? It will be deleted from the " +"instance as well." +msgstr "Txio hau ezabatu nahi duzu? Twitterretik ere ezabatuko da." + +#: wxUI/dialogs/mastodon/dialogs.py:15 +msgid "Delete" +msgstr "Ezabatu" + +#: wxUI/dialogs/mastodon/dialogs.py:23 +msgid "" +"Are you sure you want to dismiss this notification? If you dismiss a " +"mention notification, it also disappears from your mentions buffer. The " +"post is not going to be deleted from the instance, though." +msgstr "" + +# | msgid "" +# | "Do you really want to empty this buffer? It's items will be removed from +# " +# | "the list but not from Twitter" +#: wxUI/dialogs/mastodon/dialogs.py:31 +#, fuzzy +msgid "" +"Do you really want to empty this buffer? It's items will be removed from" +" the list but not from the instance" +msgstr "" +"Ziur zaude buffer honen osagaiak ezabatu nahi dituzula? Txioak " +"bufferretik kenduko dira, baina ez twitterretik." + +# | msgid "This user has no tweets. {0} can't create a timeline." +#: wxUI/dialogs/mastodon/dialogs.py:38 +#, fuzzy, python-brace-format +msgid "This user has no posts. {0} can't create a timeline." +msgstr "Erabiltzaile honek ez du txiorik. {0}(e)k ezin du denbora lerro bat ireki." + +# | msgid "This user has no favorited tweets. {0} can't create a timeline." +#: wxUI/dialogs/mastodon/dialogs.py:43 +#, fuzzy, python-brace-format +msgid "This user has no favorited posts. {0} can't create a timeline." +msgstr "" +"Erabiltzaile honek ez du gogokorik. {0}(k) ezin du denbora lerro bat " +"ireki." + +# | msgid "This user has no followers. {0} can't create a timeline." +#: wxUI/dialogs/mastodon/dialogs.py:48 +#, fuzzy, python-brace-format +msgid "This user has no followers yet. {0} can't create a timeline." +msgstr "" +"Erabiltzaile honek ez du jarraitzailerik. {0}(e)k ezin du denbora lerro " +"bat ireki." + +# | msgid "This user has no followers. {0} can't create a timeline." +#: wxUI/dialogs/mastodon/dialogs.py:53 +#, fuzzy, python-brace-format +msgid "This user is not following anyone. {0} can't create a timeline." +msgstr "" +"Erabiltzaile honek ez du jarraitzailerik. {0}(e)k ezin du denbora lerro " +"bat ireki." + +#: wxUI/dialogs/mastodon/dialogs.py:60 +#, python-brace-format +msgid "The focused item has no user in it. {} ca't open a user profile" +msgstr "" + +# | msgid "R&emove from list" +#: wxUI/dialogs/mastodon/menus.py:13 wxUI/dialogs/mastodon/menus.py:41 +#, fuzzy +msgid "R&emove from favorites" +msgstr "Zerrendatik &kendu" + +#: wxUI/dialogs/mastodon/menus.py:15 wxUI/dialogs/mastodon/menus.py:43 +msgid "&Open URL" +msgstr "URLa &ireki" + +# | msgid "Search on twitter" +#: wxUI/dialogs/mastodon/menus.py:17 wxUI/dialogs/mastodon/menus.py:47 +#, fuzzy +msgid "&Open in instance" +msgstr "Bilatu Twitterren" + +#: wxUI/dialogs/mastodon/menus.py:19 wxUI/dialogs/mastodon/menus.py:45 +msgid "&Play audio" +msgstr "Audioa e&rreproduzitu" + +#: wxUI/dialogs/mastodon/menus.py:23 wxUI/dialogs/mastodon/menus.py:51 +msgid "&Copy to clipboard" +msgstr "&Kopiatu" + +#: wxUI/dialogs/mastodon/menus.py:27 wxUI/dialogs/mastodon/menus.py:55 +msgid "&User actions..." +msgstr "E&rabiltzailearen ekintzak" + +#: wxUI/dialogs/mastodon/menus.py:53 +msgid "&Dismiss" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:20 +#: wxUI/dialogs/mastodon/postDialogs.py:38 +msgid "Attachments" +msgstr "Eranskinak" + +#: wxUI/dialogs/mastodon/postDialogs.py:24 +msgid "File" +msgstr "Fitxategia" + +#: wxUI/dialogs/mastodon/postDialogs.py:25 +msgid "Type" +msgstr "Mota" + +#: wxUI/dialogs/mastodon/postDialogs.py:26 +#: wxUI/dialogs/mastodon/postDialogs.py:141 +msgid "Description" +msgstr "Deskribapena" + +# | msgid "Remove client" +#: wxUI/dialogs/mastodon/postDialogs.py:28 +#, fuzzy +msgid "Remove Attachment" +msgstr "Aplikazioa kendu" + +#: wxUI/dialogs/mastodon/postDialogs.py:33 +msgid "Post in the thread" +msgstr "" + +# | msgid "Remove from list" +#: wxUI/dialogs/mastodon/postDialogs.py:40 +#, fuzzy +msgid "Remove post" +msgstr "Zerrendatik kendu" + +#: wxUI/dialogs/mastodon/postDialogs.py:47 +msgid "&Visibility" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:54 +#, fuzzy +msgid "Language" +msgstr "Hizkuntza" + +#: wxUI/dialogs/mastodon/postDialogs.py:58 +msgid "A&dd" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:59 +msgid "S&ensitive content" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:64 +msgid "Content warning" +msgstr "" + +# | msgid "Add to list" +#: wxUI/dialogs/mastodon/postDialogs.py:71 +#, fuzzy +msgid "Add p&ost" +msgstr "Zerrendara gehitu" + +#: wxUI/dialogs/mastodon/postDialogs.py:75 +msgid "Auto&complete users" +msgstr "Erabiltzaileak &automatikoki osatu" + +# | msgid "Check &spelling..." +#: wxUI/dialogs/mastodon/postDialogs.py:77 +#, fuzzy +msgid "Check &spelling" +msgstr "Ortografia &egiaztatu..." + +#: wxUI/dialogs/mastodon/postDialogs.py:79 +#, fuzzy +msgid "&Translate" +msgstr "Itzulia" + +# | msgid "Tweet - %i characters " +#: wxUI/dialogs/mastodon/postDialogs.py:106 +#, fuzzy, python-brace-format +msgid "Post - {} characters" +msgstr "Txioa - %i karaktere" + +#: wxUI/dialogs/mastodon/postDialogs.py:130 +msgid "Image" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:132 +#, fuzzy +msgid "Video" +msgstr "Ezkutatu" + +# | msgid "&Audio" +#: wxUI/dialogs/mastodon/postDialogs.py:134 +#, fuzzy +msgid "Audio" +msgstr "&Audioa" + +#: wxUI/dialogs/mastodon/postDialogs.py:136 +msgid "Poll" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:141 +msgid "please provide a description" +msgstr "Mesedez deskribapen bat sartu" + +#: wxUI/dialogs/mastodon/postDialogs.py:148 +msgid "Select the picture to be uploaded" +msgstr "Aukeratu igo nahi duzun irudia" + +#: wxUI/dialogs/mastodon/postDialogs.py:148 +msgid "Image files (*.png, *.jpg, *.gif)|*.png; *.jpg; *.gif" +msgstr "Irudiak (*.png, *.jpg, *.gif)|*.png; *.jpg; *.gif" + +#: wxUI/dialogs/mastodon/postDialogs.py:155 +#, fuzzy +msgid "Select the video to be uploaded" +msgstr "Aukeratu igo nahi duzun irudia" + +# | msgid "Audio Files (*.mp3, *.ogg, *.wav)|*.mp3; *.ogg; *.wav" +#: wxUI/dialogs/mastodon/postDialogs.py:155 +#, fuzzy +msgid "Video files (*.mp4, *.mov, *.m4v, *.webm)| *.mp4; *.m4v; *.mov; *.webm" +msgstr "Audio fitxategiak (*.mp3, *.ogg, *.wav)|*.mp3; *.ogg; *.wav" + +#: wxUI/dialogs/mastodon/postDialogs.py:162 +msgid "Select the audio file to be uploaded" +msgstr "Igo nahi duzun audio fitxategia hautatu" + +#: wxUI/dialogs/mastodon/postDialogs.py:162 +msgid "" +"Audio files (*.mp3, *.ogg, *.wav, *.flac, *.opus, *.aac, *.m4a, " +"*.3gp)|*.mp3; *.ogg; *.wav; *.flac; *.opus; *.aac; *.m4a; *.3gp" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:169 +msgid "" +"It is not possible to add more attachments. Please take into account that" +" You can add only a maximum of 4 images, or one audio, video or poll per" +" post. Please remove other attachments before continuing." +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:169 +#, fuzzy +msgid "Error adding attachment" +msgstr "Eranskin bat gehitu" + +#: wxUI/dialogs/mastodon/postDialogs.py:172 +msgid "" +"You can add a poll or media files. In order to add your poll, please " +"remove other attachments first." +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:172 +#, fuzzy +msgid "Error adding poll" +msgstr "Eranskin bat gehitu" + +# | msgid "Tweet - %i characters " +#: wxUI/dialogs/mastodon/postDialogs.py:177 +#, fuzzy, python-format +msgid "Post - %i characters " +msgstr "Txioa - %i karaktere" + +#: wxUI/dialogs/mastodon/postDialogs.py:200 +msgid "Image description" +msgstr "Irudiaren deskribapena" + +# | msgid "Private" +#: wxUI/dialogs/mastodon/postDialogs.py:210 +#, fuzzy +msgid "Privacy" +msgstr "Privatua" + +#: wxUI/dialogs/mastodon/postDialogs.py:214 +#, fuzzy +msgid "Source" +msgstr "Jatorria:" + +#: wxUI/dialogs/mastodon/postDialogs.py:222 +msgid "Boosts" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:224 +msgid "View users who boosted this post" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:231 +msgid "View users who favorited this post" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:239 +#, fuzzy +msgid "Copy link to clipboard" +msgstr "Kopiatu" + +#: wxUI/dialogs/mastodon/postDialogs.py:241 +#: wxUI/dialogs/mastodon/postDialogs.py:280 +msgid "Check &spelling..." +msgstr "Ortografia &egiaztatu..." + +#: wxUI/dialogs/mastodon/postDialogs.py:242 +#: wxUI/dialogs/mastodon/postDialogs.py:281 +msgid "&Translate..." +msgstr "I&tzuli..." + +#: wxUI/dialogs/mastodon/postDialogs.py:243 +#: wxUI/dialogs/mastodon/postDialogs.py:282 +msgid "C&lose" +msgstr "&Itxi" + +#: wxUI/dialogs/mastodon/postDialogs.py:294 +msgid "Add a poll" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:298 +msgid "Participation time" +msgstr "" + +# | msgid "%d minutes, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "5 minutes" +msgstr "%d minutu, " + +# | msgid "%d minutes, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "30 minutes" +msgstr "%d minutu, " + +# | msgid "%d hour, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "1 hour" +msgstr "Ordu %d, " + +# | msgid "%d hours, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "6 hours" +msgstr "%d ordu, " + +# | msgid "%d day, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "1 day" +msgstr "Egun %d, " + +# | msgid "%d days, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "2 days" +msgstr "%d egun, " + +# | msgid "%d days, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "3 days" +msgstr "%d egun, " + +# | msgid "%d days, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "4 days" +msgstr "%d egun, " + +# | msgid "%d days, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "5 days" +msgstr "%d egun, " + +# | msgid "%d days, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "6 days" +msgstr "%d egun, " + +# | msgid "%d days, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "7 days" +msgstr "%d egun, " + +#: wxUI/dialogs/mastodon/postDialogs.py:304 +msgid "Choices" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:308 +msgid "Option 1" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:315 +msgid "Option 2" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:322 +msgid "Option 3" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:329 +msgid "Option 4" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:334 +msgid "Allow multiple choices per user" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:337 +msgid "Hide votes count until the poll expires" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:363 +msgid "Please make sure you have provided at least two options for the poll." +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:363 +#, fuzzy +msgid "Not enough information" +msgstr "Informazioa" + +#: wxUI/dialogs/mastodon/postDialogs.py:368 +msgid "Vote in this poll" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:371 +#, fuzzy +msgid "Options" +msgstr "Eragiketa" + +# | msgid "&Search" +#: wxUI/dialogs/mastodon/search.py:9 +#, fuzzy +msgid "Search" +msgstr "&Bilatu" + +#: wxUI/dialogs/mastodon/search.py:18 +msgid "Posts" +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:22 +#, fuzzy +msgid "Select user" +msgstr "URLa aukeratu" + +#: wxUI/dialogs/mastodon/showUserProfile.py:73 +#, fuzzy, python-brace-format +msgid "{}'s Profile" +msgstr "&Profila eguneratu" + +#: wxUI/dialogs/mastodon/showUserProfile.py:79 +#, fuzzy +msgid "&Name: " +msgstr "Izena" + +#: wxUI/dialogs/mastodon/showUserProfile.py:84 +#, fuzzy +msgid "&URL: " +msgstr "Erabiltzailea" + +#: wxUI/dialogs/mastodon/showUserProfile.py:89 +msgid "&Bio: " +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:94 +msgid "&Joined at: " +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:99 +#, fuzzy +msgid "&Actions" +msgstr "Eragiketa" + +#: wxUI/dialogs/mastodon/showUserProfile.py:104 +#, fuzzy +msgid "Header: " +msgstr "Ezkutatu" + +#: wxUI/dialogs/mastodon/showUserProfile.py:112 +msgid "Avatar: " +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:122 +#, python-brace-format +msgid "Field &{} - Label: " +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:129 +#, fuzzy +msgid "Content: " +msgstr "Kontestua" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:43 +#: wxUI/dialogs/mastodon/filters/create_filter.py:65 +#: wxUI/dialogs/mastodon/showUserProfile.py:135 +msgid "Yes" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:43 +#: wxUI/dialogs/mastodon/filters/create_filter.py:65 +#: wxUI/dialogs/mastodon/filters/create_filter.py:69 +#: wxUI/dialogs/mastodon/showUserProfile.py:135 +msgid "No" +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:137 +#, fuzzy +msgid "&Private account: " +msgstr "Kontua kendu" + +#: wxUI/dialogs/mastodon/showUserProfile.py:144 +#, fuzzy +msgid "&Bot account: " +msgstr "Kontua" + +#: wxUI/dialogs/mastodon/showUserProfile.py:151 +#, fuzzy +msgid "&Discoverable account: " +msgstr "Kontua kendu" + +#: wxUI/dialogs/mastodon/showUserProfile.py:157 +#, python-brace-format +msgid "{} p&osts. Click to open posts timeline" +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:162 +#, python-brace-format +msgid "{} &following. Click to open Following timeline" +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:166 +#, python-brace-format +msgid "{} fo&llowers. Click to open followers timeline" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:43 +msgid "&Display Name" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:50 +#, fuzzy +msgid "&Bio" +msgstr "&Blokeatu" + +#: wxUI/dialogs/mastodon/updateProfile.py:58 +#, fuzzy +msgid "Header" +msgstr "Ezkutatu" + +#: wxUI/dialogs/mastodon/updateProfile.py:71 +#, fuzzy +msgid "Change &header" +msgstr "Ezkutatu" + +#: wxUI/dialogs/mastodon/updateProfile.py:79 +msgid "Avatar" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:92 +msgid "Change &avatar" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:102 +#, python-brace-format +msgid "Field &{}: Label" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:110 +#, fuzzy +msgid "Content" +msgstr "Kontestua" + +#: wxUI/dialogs/mastodon/updateProfile.py:120 +#, fuzzy +msgid "&Private account" +msgstr "Kontua kendu" + +#: wxUI/dialogs/mastodon/updateProfile.py:122 +#, fuzzy +msgid "&Bot account" +msgstr "Kontua" + +#: wxUI/dialogs/mastodon/updateProfile.py:124 +#, fuzzy +msgid "&Discoverable account" +msgstr "Kontua kendu" + +#: wxUI/dialogs/mastodon/updateProfile.py:167 +msgid "Select header image - max 2MB" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:172 +#: wxUI/dialogs/mastodon/updateProfile.py:194 +msgid "The selected file is larger than 2MB. Do you want to select another file?" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:173 +#: wxUI/dialogs/mastodon/updateProfile.py:195 +msgid "File more than 2MB" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:189 +msgid "Select avatar image - max 2MB" +msgstr "" + +#: wxUI/dialogs/mastodon/userActions.py:19 +msgid "&Follow" +msgstr "&Jarraitu" + +#: wxUI/dialogs/mastodon/userActions.py:20 +msgid "U&nfollow" +msgstr "Ja&rraitzeari utzi" + +#: wxUI/dialogs/mastodon/userActions.py:22 +msgid "Unmu&te" +msgstr "Isiltzeari &utzi" + +#: wxUI/dialogs/mastodon/userActions.py:23 +msgid "&Block" +msgstr "&Blokeatu" + +#: wxUI/dialogs/mastodon/userActions.py:24 +msgid "Unbl&ock" +msgstr "Desbl&okeatu" + +#: wxUI/dialogs/mastodon/userTimeline.py:9 +#, python-format +msgid "Timeline for %s" +msgstr "%s(r)en denbora lerroa" + +#: wxUI/dialogs/mastodon/userTimeline.py:19 +msgid "&Posts" +msgstr "" + +#: wxUI/dialogs/mastodon/userTimeline.py:20 +msgid "&Followers" +msgstr "&Jarraitzaileak" + +#: wxUI/dialogs/mastodon/userTimeline.py:21 +#, fuzzy +msgid "Fo&llowing" +msgstr "Ja&rraitzeari utzi" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:12 +#, fuzzy +msgid "Keyword" +msgstr "Tekla" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:13 +#: wxUI/dialogs/mastodon/filters/create_filter.py:24 +msgid "Whole word" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:19 +msgid "Keyword:" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:25 +#: wxUI/dialogs/mastodon/filters/manage_filters.py:22 +#, fuzzy +msgid "Add" +msgstr "Helbidea" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:34 +msgid "Palabras clave a filtrar:" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:74 +#, fuzzy +msgid "New filter" +msgstr "&Iragazkiak administratu" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:78 +#, fuzzy +msgid "Home timeline" +msgstr "Denbora lerroak" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:79 +msgid "Public statuses" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:81 +#, fuzzy +msgid "Threads" +msgstr "Prest" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:82 +#, fuzzy +msgid "Profiles" +msgstr "&Profila eguneratu" + +# | msgid "Delete" +#: wxUI/dialogs/mastodon/filters/create_filter.py:86 +#, fuzzy +msgid "Hide posts" +msgstr "Ezabatu" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:87 +msgid "Set a content warning to posts" +msgstr "" + +# | msgid "%d hours, " +#: wxUI/dialogs/mastodon/filters/create_filter.py:91 +#, fuzzy +msgid "Hours" +msgstr "%d ordu, " + +# | msgid "%d days, " +#: wxUI/dialogs/mastodon/filters/create_filter.py:92 +#, fuzzy +msgid "Days" +msgstr "%d egun, " + +#: wxUI/dialogs/mastodon/filters/create_filter.py:93 +msgid "Weeks" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:94 +msgid "months" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:97 +#, fuzzy +msgid "Title:" +msgstr "Fitxategia" + +# | msgid "Reply to {arg0}" +#: wxUI/dialogs/mastodon/filters/create_filter.py:104 +#, fuzzy +msgid "Apply to:" +msgstr "{arg0}(r)i erantzun" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:114 +#, fuzzy +msgid "Action:" +msgstr "Eragiketa" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:122 +msgid "Expires in:" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/manage_filters.py:10 +#, fuzzy +msgid "Filters" +msgstr "Fitxategia" + +#: wxUI/dialogs/mastodon/filters/manage_filters.py:15 +#, fuzzy +msgid "Title" +msgstr "Fitxategia" + +#: wxUI/dialogs/mastodon/filters/manage_filters.py:16 +msgid "Keywords" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/manage_filters.py:17 +#, fuzzy +msgid "Contexts" +msgstr "Kontestua" + +#: wxUI/dialogs/mastodon/filters/manage_filters.py:19 +#, fuzzy +msgid "Expires" +msgstr "Bestelakoak" + +#~ msgid "There are no results for the coordinates in this tweet" +#~ msgstr "Ez dago emaitzarik txio honen koordenatuetarako" + +#~ msgid "This list is already opened" +#~ msgstr "Zerrenda hau jada irekita dago." + +# | msgid "Timeline for {}" +#~ msgid "Timelines for {}" +#~ msgstr "{}(r)en denbora lerroa" + +#~ msgid "{account_name} (Mastodon)" +#~ msgstr "" + +#~ msgid "URL of mastodon instance:" +#~ msgstr "" + +# | msgid "View &address" +#~ msgid "Email address:" +#~ msgstr "&Helbidea ikusi" + +# | msgid "Password: " +#~ msgid "Password:" +#~ msgstr "Pasahitza:" + +# | msgid "Item" +#~ msgid "&Item" +#~ msgstr "Elementua" + +#~ msgid "Visibility" +#~ msgstr "" + +#~ msgid "Sensitive content" +#~ msgstr "" + +#~ msgid "Allow multiple votes per user" +#~ msgstr "" + +#~ msgid "{username} has mentionned you: {status}" +#~ msgstr "" + +#~ msgid "has mentionned you: {status}" +#~ msgstr "" + +#~ msgid "Likes for {}" +#~ msgstr "{}(r)en gogokoak" + +#~ msgid "Trending topics for %s" +#~ msgstr "%s(e)rako tendentziak" + +#~ msgid "Select user" +#~ msgstr "Erabiltzailea aukeratu" + +#~ msgid "Sent direct messages" +#~ msgstr "Bidalitako zuzeneko mezuak" + +#~ msgid "Sent tweets" +#~ msgstr "Bidalitako txioak" + +#~ msgid "Likes" +#~ msgstr "Gogokoak" + +#~ msgid "Friends" +#~ msgstr "Lagunak" + +#~ msgid "{username}'s likes" +#~ msgstr "" + +#~ msgid "{username}'s friends" +#~ msgstr "" + +#~ msgid "Tweet" +#~ msgstr "Txio" + +#~ msgid "Write the tweet here" +#~ msgstr "Idatzi txioa hemen" + +#~ msgid "New tweet in {0}" +#~ msgstr "Txio berri bat" + +#~ msgid "{0} new tweets in {1}." +#~ msgstr ",@{0}(e)k zure txioa zitatu du: {1}" + +#~ msgid "Reply to {arg0}" +#~ msgstr "{arg0}(r)i erantzun" + +#~ msgid "Reply to %s" +#~ msgstr "%s(r)i erantzun" + +#~ msgid "Direct message to %s" +#~ msgstr "Zuzeneko mezua %s(r)i" + +#~ msgid "New direct message" +#~ msgstr "Zuzeneko mezu bat" + +#~ msgid "This action is not supported on protected accounts." +#~ msgstr "Eragiketa hau ez da buffer honetarako onargarria" + +#~ msgid "Quote" +#~ msgstr "Zitatu" + +#~ msgid "Add your comment to the tweet" +#~ msgstr "Txioari iruzkin bat erantsi" + +#~ msgid "User details" +#~ msgstr "Erabiltzailearen Xehetasunak" + +#~ msgid "MMM D, YYYY. H:m" +#~ msgstr "dddd, MMMM D, YYYY H:m:s" + +#~ msgid "There are no coordinates in this tweet" +#~ msgstr "Txio honetan ez dago koordenaturik" + +#~ msgid "Error decoding coordinates. Try again later." +#~ msgstr "Errorea koordenatuak dekodetzean. Mesedez, saiatu berriro beranduago" + +#~ msgid "Invalid buffer" +#~ msgstr "Baliogabeko buferra" + +#~ msgid "{0} new direct messages." +#~ msgstr "Zuzeneko mezu bat" + +#~ msgid "This action is not supported in the buffer yet." +#~ msgstr "Eragiketa hau ez da buffer honetarako onargarria" + +#~ msgid "" +#~ "Getting more items cannot be done " +#~ "in this buffer. Use the direct " +#~ "messages buffer instead." +#~ msgstr "" + +#~ msgid "Mention" +#~ msgstr "Aipamena" + +#~ msgid "Mention to %s" +#~ msgstr "%s aipatu" + +#~ msgid "{0} new followers." +#~ msgstr "Jarraitzaile berria." + +#~ msgid "This action is not supported in the buffer, yet." +#~ msgstr "Eragiketa hau ez da buffer honetarako onargarria" + +#~ msgid "&Retweet" +#~ msgstr "Bert&xiotu" + +#~ msgid "&Like" +#~ msgstr "koetara &gehitu" + +#~ msgid "&Unlike" +#~ msgstr "gogokoetatik &kendu" + +#~ msgid "View &address" +#~ msgstr "&Helbidea ikusi" + +#~ msgid "&View lists" +#~ msgstr "&Zerrendak ikusi" + +# | msgid "V&iew likes" +#~ msgid "View likes" +#~ msgstr "&gogokoak ikusi" + +#~ msgid "Likes timelines" +#~ msgstr "Gogokoen denbora lerroa" + +#~ msgid "Followers timelines" +#~ msgstr "Jarraitzaleen denbora lerroa" + +#~ msgid "Following timelines" +#~ msgstr "Jarraitzaleen denbora lerroa" + +#~ msgid "Lists" +#~ msgstr "Zerrendak" + +#~ msgid "List for {}" +#~ msgstr "{}(r)en zerrrenda" + +#~ msgid "Filters cannot be applied on this buffer" +#~ msgstr "Ezin dira iragazkiak bufer honetan erabili" + +#~ msgid "View item" +#~ msgstr "&Zerrendak ikusi" + +#~ msgid "Ask" +#~ msgstr "Galdetu" + +#~ msgid "Retweet without comments" +#~ msgstr "Iruzkindu gabe bertxiotu" + +#~ msgid "Retweet with comments" +#~ msgstr "Iruzkinekin bertxiotu" + +#~ msgid "Edit template for tweets. Current template: {}" +#~ msgstr "" + +#~ msgid "Edit template for direct messages. Current template: {}" +#~ msgstr "" + +#~ msgid "Edit template for sent direct messages. Current template: {}" +#~ msgstr "" + +#~ msgid "User has been suspended" +#~ msgstr "Erabiltzailea ezabatua izan da" + +#~ msgid "Information for %s" +#~ msgstr "%s(r)en xehetasunak" + +#~ msgid "Discarded" +#~ msgstr "Baztertua" + +#~ msgid "Username: @%s\n" +#~ msgstr "Erabiltzaile izena: @%s\n" + +#~ msgid "Name: %s\n" +#~ msgstr "Izena: %s\n" + +#~ msgid "Location: %s\n" +#~ msgstr "Kokapena: %s\n" + +#~ msgid "URL: %s\n" +#~ msgstr "URLa: %s\n" + +#~ msgid "Bio: %s\n" +#~ msgstr "Bio: %s\n" + +#~ msgid "Yes" +#~ msgstr "Bai" + +#~ msgid "No" +#~ msgstr "Ez" + +#~ msgid "Protected: %s\n" +#~ msgstr "Babestua: %s\n" + +#~ msgid "Relationship: " +#~ msgstr "" + +#~ msgid "You follow {0}. " +#~ msgstr "{0} jarraitzen duzu" + +#~ msgid "{0} is following you." +#~ msgstr "{0}(e)k jarraitzen zaitu" + +#~ msgid "" +#~ "Followers: %s\n" +#~ " Friends: %s\n" +#~ msgstr "" +#~ "Jarraitzaileak: %s\n" +#~ " Lagunak: %s\n" + +#~ msgid "Verified: %s\n" +#~ msgstr "Egiaztatuta: %s\n" + +#~ msgid "Tweets: %s\n" +#~ msgstr "Txioak: %s\n" + +#~ msgid "Likes: %s" +#~ msgstr "gogokoak: %s" + +#~ msgid "You can't ignore direct messages" +#~ msgstr "Ezin dituzu zuzeneko mezuak ezikusi" + +#~ msgid "Attaching..." +#~ msgstr "Atxikitzen..." + +#~ msgid "Pause" +#~ msgstr "Pausatu" + +#~ msgid "&Resume" +#~ msgstr "&Jarraitu" + +#~ msgid "Resume" +#~ msgstr "Jarraitu" + +#~ msgid "&Pause" +#~ msgstr "&Pausatu" + +#~ msgid "&Stop" +#~ msgstr "&Gelditu" + +#~ msgid "Recording" +#~ msgstr "Grabatzen" + +#~ msgid "Stopped" +#~ msgstr "Gelditua" + +#~ msgid "&Record" +#~ msgstr "&Grabatu" + +#~ msgid "&Play" +#~ msgstr "E&rreproduzitu" + +#~ msgid "Recoding audio..." +#~ msgstr "Audioa errekodifikatzen..." + +#~ msgid "Error in file upload: {0}" +#~ msgstr "Errorea. Kodea {0}" + +#~ msgid "Transferred" +#~ msgstr "Bidalia" + +#~ msgid "Total file size" +#~ msgstr "Artxibuaren neurria" + +#~ msgid "Transfer rate" +#~ msgstr "Bidalketaren abiadura" + +#~ msgid "Time left" +#~ msgstr "Gelditzen den denbora" + +#~ msgid "Attach audio" +#~ msgstr "Audioa atxiki" + +#~ msgid "&Add an existing file" +#~ msgstr "&Fitxategi bat gehitu" + +#~ msgid "&Discard" +#~ msgstr "&Baztertu" + +#~ msgid "Upload to" +#~ msgstr "Nora igo:" + +#~ msgid "Attach" +#~ msgstr "Atxiki" + +#~ msgid "&Cancel" +#~ msgstr "&Utzi" + +#~ msgid "Audio Files (*.mp3, *.ogg, *.wav)|*.mp3; *.ogg; *.wav" +#~ msgstr "Audio fitxategiak (*.mp3, *.ogg, *.wav)|*.mp3; *.ogg; *.wav" + +#~ msgid "You have to start writing" +#~ msgstr "Idazten hasi behar zara" + +#~ msgid "There are no results in your users database" +#~ msgstr "Ez dago emaitzarik zure erabiltzaileen datu basean." + +#~ msgid "Autocompletion only works for users." +#~ msgstr "" +#~ "Automatikoki osatzeko funtzioak erabiltzaileekin " +#~ "soilik funtzionatzen du." + +#~ msgid "" +#~ "Updating database... You can close this" +#~ " window now. A message will tell " +#~ "you when the process finishes." +#~ msgstr "" +#~ "Datu basea eguneratzen ari da. Leiho " +#~ "hau itxi dezakezu. Mezu bat agertuko " +#~ "da prozesua bukatzean." + +#~ msgid "Manage Autocompletion database" +#~ msgstr "Administratu automatikoki osatzeko datu-basea" + +#~ msgid "Editing {0} users database" +#~ msgstr "{0}(r)en erabiltzaileen datu-basea editatzen" + +#~ msgid "Username" +#~ msgstr "Erabiltzaile-izena" + +#~ msgid "Add user" +#~ msgstr "Erabiltzailea gehitu" + +#~ msgid "Remove user" +#~ msgstr "Erabiltzailea kendu" + +#~ msgid "Twitter username" +#~ msgstr "Twitterreko erabiltzaile-izena" + +#~ msgid "Add user to database" +#~ msgstr "Erabiltzailea datu-basera gehitu" + +#~ msgid "The user does not exist" +#~ msgstr "Erabiltzailea ez da existitzen" + +#~ msgid "Error!" +#~ msgstr "Errorea!" + +#~ msgid "Autocomplete users' settings" +#~ msgstr "Automatikoki osatzeko erabiltzaileen aukerak" + +#~ msgid "Add followers to database" +#~ msgstr "" + +#~ msgid "Add friends to database" +#~ msgstr "Erabiltzailea datu-basera gehitu" + +#~ msgid "Updating autocompletion database" +#~ msgstr "Administratu automatikoki osatzeko datu-basea" + +#~ msgid "" +#~ "This process will retrieve the users " +#~ "you selected from Twitter, and add " +#~ "them to the user autocomplete database." +#~ " Please note that if there are " +#~ "many users or you have tried to" +#~ " perform this action less than 15 " +#~ "minutes ago, TWBlue may reach a " +#~ "limit in Twitter API calls when " +#~ "trying to load the users into the" +#~ " database. If this happens, we will" +#~ " show you an error, in which " +#~ "case you will have to try this " +#~ "process again in a few minutes. If" +#~ " this process ends with no error, " +#~ "you will be redirected back to the" +#~ " account settings dialog. Do you want" +#~ " to continue?" +#~ msgstr "" + +#~ msgid "TWBlue has imported {} users successfully." +#~ msgstr "" + +#~ msgid "Done" +#~ msgstr "Egina" + +#~ msgid "Error adding users from Twitter. Please try again in about 15 minutes." +#~ msgstr "" + +#~ msgid "New tweet" +#~ msgstr "Txio berri bat" + +#~ msgid "Retweet" +#~ msgstr "Bertxiotu" + +#~ msgid "Like a tweet" +#~ msgstr "Txio bat gogokoetara gehitu" + +#~ msgid "Like/unlike a tweet" +#~ msgstr "Txio bat gogokoetatik kendu" + +#~ msgid "Unlike a tweet" +#~ msgstr "Txio bat gogokoetatik kendu" + +#~ msgid "See user details" +#~ msgstr "Erabiltzailearen Xehetasunak ikusi" + +#~ msgid "Show tweet" +#~ msgstr "Txioa ikusi" + +#~ msgid "Interact with the currently focused tweet." +#~ msgstr "enfokatutako txioarekin interaktuatu" + +#~ msgid "View in Twitter" +#~ msgstr "Bilatu Twitterren" + +#~ msgid "Edit profile" +#~ msgstr "Profila aldatu" + +#~ msgid "Delete a tweet or direct message" +#~ msgstr "Txio edo zuzeneko mezu bat ezabatu" + +#~ msgid "Add to list" +#~ msgstr "Zerrendara gehitu" + +#~ msgid "Remove from list" +#~ msgstr "Zerrendatik kendu" + +#~ msgid "Search on twitter" +#~ msgstr "Bilatu Twitterren" + +#~ msgid "Show lists for a specified user" +#~ msgstr "Erabiltzaile baten zerrendak ikusi" + +#~ msgid "Get geolocation" +#~ msgstr "Kokapena lortu" + +#~ msgid "Display the tweet's geolocation in a dialog" +#~ msgstr "Txio baten kokalekua elkarrizketa koadro batean erakutsi" + +#~ msgid "Create a trending topics buffer" +#~ msgstr "Tendentzien buffer bat sortu" + +#~ msgid "" +#~ "Opens the list manager, which allows " +#~ "you to create, edit, delete and " +#~ "open lists in buffers." +#~ msgstr "" +#~ "Zerrenden kudeatzailea irekitzen du. " +#~ "Kudeatzaileak zerrendak sortzea, editatzea, " +#~ "ezabatzea eta bufferretan irekitzea " +#~ "ahalbidetzen du" + +#~ msgid "Opens the list manager" +#~ msgstr "Zerrenden kudeatzailea" + +#~ msgid "{account_name} (Twitter)" +#~ msgstr "" + +#~ msgid "Twitter" +#~ msgstr "Bilatu Twitterren" + +#~ msgid "" +#~ "The request to authorize your Twitter" +#~ " account will be opened in your " +#~ "browser. You only need to do this" +#~ " once. Would you like to continue?" +#~ msgstr "" +#~ "Zure Twitter kontua erabiltzeko baimen-" +#~ "eskaera nabigatzailean irekiko da. Soilik " +#~ "behin egin behar duzu hau. Jarraitu " +#~ "nahi duzu?" + +#~ msgid "" +#~ "TWBlue is unable to authenticate the " +#~ "account for {} in Twitter. It " +#~ "might be due to an invalid or " +#~ "expired token, revoqued access to the" +#~ " application, or after an account " +#~ "reactivation. Please remove the account " +#~ "manually from your Twitter sessions in" +#~ " order to stop seeing this message." +#~ msgstr "" + +#~ msgid "Authentication error for session {}" +#~ msgstr "" + +#~ msgid "Dm to %s " +#~ msgstr "Zuzeneko mezua %s(r)i" + +#~ msgid "{0}. Quoted tweet from @{1}: {2}" +#~ msgstr "{0}: Zitatutako txioa {1}(r)engandik: {2}" + +#~ msgid "Unavailable" +#~ msgstr "Ez dago erabilgarri" + +#~ msgid "" +#~ "%s (@%s). %s followers, %s friends, " +#~ "%s tweets. Last tweeted %s. Joined " +#~ "Twitter %s" +#~ msgstr "" +#~ "%s (@%s). %s jarraitzaile, %s lagun, " +#~ "%s txio. Azken txioa %s, Twitterren " +#~ "erregistratu zen %s" + +#~ msgid "No description available" +#~ msgstr "Ez dago deskripziorik" + +#~ msgid "private" +#~ msgstr "Pribatua" + +#~ msgid "public" +#~ msgstr "Publikoa" + +#~ msgid "Enter your PIN code here" +#~ msgstr "Sartu kodea hemen" + +#~ msgid "Authorising account..." +#~ msgstr "Kontua baimentzen..." + +#~ msgid "" +#~ "We could not authorice your Twitter " +#~ "account to be used in TWBlue. This" +#~ " might be caused due to an " +#~ "incorrect verification code. Please try " +#~ "to add the session again." +#~ msgstr "" + +#~ msgid "%s failed. Reason: %s" +#~ msgstr "%s eragiketak ez du arrakasta izan. Arrazoia: %s" + +#~ msgid "Deleted account" +#~ msgstr "Kontu berria" + +#~ msgid "$sender_display_name, $text $date" +#~ msgstr "" + +#~ msgid "" +#~ "$display_name (@$screen_name). $followers followers," +#~ " $following following, $tweets tweets. " +#~ "Joined Twitter $created_at." +#~ msgstr "" + +#~ msgid "Image description: {}." +#~ msgstr "Irudiaren deskribapena" + +#~ msgid "RT @{}: {} Quote from @{}: {}" +#~ msgstr "{0}: Zitatutako txioa {1}(r)engandik: {2}" + +# | msgid "{0}. Quoted tweet from @{1}: {2}" +#~ msgid "RT @{}: {}" +#~ msgstr "{0}: Zitatutako txioa {1}(r)engandik: {2}" + +# | msgid "{0}. Quoted tweet from @{1}: {2}" +#~ msgid "{} Quote from @{}: {}" +#~ msgstr "{0}: Zitatutako txioa {1}(r)engandik: {2}" + +#~ msgid "Sorry, you are not authorised to see this status." +#~ msgstr "Barkatu, ez duzu egoera hau ikusteko baimenik" + +#~ msgid "Error {0}" +#~ msgstr "Errorea. Kodea {0}" + +#~ msgid "{user_1}, {user_2} and {all_users} more: {text}" +#~ msgstr "" + +#~ msgid "" +#~ "This retweet is over 140 characters. " +#~ "Would you like to post it as " +#~ "a mention to the poster with your" +#~ " comments and a link to the " +#~ "original tweet?" +#~ msgstr "" +#~ "Bertxio honek 140 karaktere baino " +#~ "pgehiago ditu. Egileari aipamen bezala " +#~ "bidali nahi diozu, zure iruzkinarekin " +#~ "eta jatorrizko txiorako urlarekin?" + +#~ msgid "Would you like to add a comment to this tweet?" +#~ msgstr "Txio honi iruzkin bat gehitu nahi al zenioke?" + +#~ msgid "" +#~ "Do you really want to delete this" +#~ " tweet? It will be deleted from " +#~ "Twitter as well." +#~ msgstr "Txio hau ezabatu nahi duzu? Twitterretik ere ezabatuko da." + +#~ msgid "Enter the name of the client : " +#~ msgstr "Sartu aplikazioaren izena hemen" + +#~ msgid "Add client" +#~ msgstr "Aplikazioa gehitu" + +#~ msgid "This user has no tweets, so you can't open a timeline for them." +#~ msgstr "Erabiltzaile honek ez du Txiorik. Ezin duzu denbora lerro bat ireki." + +#~ msgid "" +#~ "This is a protected Twitter user, " +#~ "which means you can't open a " +#~ "timeline using the Streaming API. The" +#~ " user's tweets will not update due" +#~ " to a twitter policy. Do you " +#~ "want to continue?" +#~ msgstr "" +#~ "Hau babestutako erabiltzaile bat da. " +#~ "Ezin duzu erabiltzaile honen denbora " +#~ "lerro bat ireki Streaming APIa " +#~ "erabilita. Erabiltzailearen txioak ez dira " +#~ "eguneratuko Twitterren politikarengatik. Jarraitu" +#~ " nahi duzu?" + +#~ msgid "" +#~ "This is a protected user account, " +#~ "you need to follow this user to" +#~ " view their tweets or likes." +#~ msgstr "" +#~ "Kontu hau babestutako erabiltzaile batena " +#~ "da. Kontua jarraitu behar duzu bere " +#~ "txioak eta gogokoak ikusteko." + +#~ msgid "This user has no tweets. {0} can't create a timeline." +#~ msgstr "" +#~ "Erabiltzaile honek ez du txiorik. " +#~ "{0}(e)k ezin du denbora lerro bat " +#~ "ireki." + +#~ msgid "This user has no favorited tweets. {0} can't create a timeline." +#~ msgstr "" +#~ "Erabiltzaile honek ez du gogokorik. " +#~ "{0}(k) ezin du denbora lerro bat " +#~ "ireki." + +#~ msgid "This user has no followers. {0} can't create a timeline." +#~ msgstr "" +#~ "Erabiltzaile honek ez du jarraitzailerik. " +#~ "{0}(e)k ezin du denbora lerro bat " +#~ "ireki." + +#~ msgid "This user has no friends. {0} can't create a timeline." +#~ msgstr "" +#~ "Erabiltzaile honek ez du lagunik. " +#~ "{0}(e)k ezin du denbora lerro bat " +#~ "ireki." + +#~ msgid "Geolocation data: {0}" +#~ msgstr "Kokapena: {0}" + +#~ msgid "Geo data for this tweet" +#~ msgstr "Txio honen kokapena" + +#~ msgid "You have been blocked from viewing this content" +#~ msgstr "Eduki hau ikustetik blokeatua izan zara" + +#~ msgid "" +#~ "You have been blocked from viewing " +#~ "someone's content. In order to avoid " +#~ "conflicts with the full session, TWBlue" +#~ " will remove the affected timeline." +#~ msgstr "" +#~ "Norbaiten edukia ikustetik blokeatua izan " +#~ "zara. Sesio osoa ez galarazteko, TWBluek" +#~ " denboalerro hori ezabatuko du." + +#~ msgid "" +#~ "TWBlue cannot load this timeline because" +#~ " the user has been suspended from " +#~ "Twitter." +#~ msgstr "" +#~ "TWBluek ezin du denbora lerro hau " +#~ "erakutsi erabiltzailea Twitterretik ezabatua " +#~ "izan delako" + +#~ msgid "Do you really want to delete this filter?" +#~ msgstr "Ziur zaude iragazki hau ezabatu nahi duzula?" + +#~ msgid "This filter already exists. Please use a different title" +#~ msgstr "Iragzi hau jada existitzen da. Erabili beste izenburu bat." + +#~ msgid "&Show direct message" +#~ msgstr "&Zuzeneko mezua erakutsi" + +#~ msgid "&Show event" +#~ msgstr "&Gertaera erakutsi" + +#~ msgid "Direct &message" +#~ msgstr "Zuzeneko &mezua" + +#~ msgid "&Show user" +#~ msgstr "&Erabiltzailea erakutsi" + +#~ msgid "Search topic" +#~ msgstr "Bilatu gaia" + +#~ msgid "&Tweet about this trend" +#~ msgstr "Tendentzia honetaz &txiokatu" + +#~ msgid "&Show item" +#~ msgstr "Osagaia e&rakutsi" + +#~ msgid "Update &profile" +#~ msgstr "Profila &eguneratu" + +#~ msgid "Event" +#~ msgstr "Gertaera" + +#~ msgid "Remove event" +#~ msgstr "Gertaera ezabatu" + +#~ msgid "Trending topic" +#~ msgstr "&Tendentziak" + +#~ msgid "Tweet about this trend" +#~ msgstr "Tendentzia honi buruz txiokatu" + +#~ msgid "" +#~ "Scan account and add friends and " +#~ "followers to the user autocompletion " +#~ "database" +#~ msgstr "" + +#~ msgid "" +#~ "Inverted buffers: The newest tweets will" +#~ " be shown at the beginning while " +#~ "the oldest at the end" +#~ msgstr "" +#~ "Buffer alderantzizkatuak: Txio berriak " +#~ "zerrenden hasieran agertuko dira, zaharrenak" +#~ " bukaeran" + +#~ msgid "Retweet mode" +#~ msgstr "Bertxiotze modua" + +#~ msgid "" +#~ "Load cache for tweets in memory " +#~ "(much faster in big datasets but " +#~ "requires more RAM)" +#~ msgstr "" + +#~ msgid "Ignored clients" +#~ msgstr "Aplikazio ezikusiak" + +#~ msgid "Remove client" +#~ msgstr "Aplikazioa kendu" + +#~ msgid "Indicate audio tweets with sound" +#~ msgstr "Audioak dituzten txioak soinu batekin identifikatu" + +#~ msgid "Indicate geotweets with sound" +#~ msgstr "Informazio geografikoak dituzten txioak soinu batekin identifikatu" + +#~ msgid "Indicate tweets containing images with sound" +#~ msgstr "Irudiak dituzten txioak soinu batekin identifikatu" + +#~ msgid "API Key for SndUp" +#~ msgstr "SndUperako API kodea" + +#~ msgid "Create a filter for this buffer" +#~ msgstr "Buffer honetarako iragazki bat sortu" + +#~ msgid "Filter title" +#~ msgstr "Iragazkiaren izenburua" + +#~ msgid "Filter by word" +#~ msgstr "Hitzak iragazi" + +#~ msgid "Ignore tweets wich contain the following word" +#~ msgstr "Hitz hau duten txioak ezikusi" + +#~ msgid "Ignore tweets without the following word" +#~ msgstr "Hitz hau ez duten txioak ezikusi" + +#~ msgid "word" +#~ msgstr "hitza" + +#~ msgid "Allow retweets" +#~ msgstr "Txioa ikusi" + +#~ msgid "Allow quoted tweets" +#~ msgstr "" + +#~ msgid "Allow replies" +#~ msgstr "Jarraitzaleen denbora lerroa" + +#~ msgid "Use this term as a regular expression" +#~ msgstr "Erabili termino hau adierazpen erregular gisa" + +#~ msgid "Filter by language" +#~ msgstr "Hizkuntzak iragazi" + +#~ msgid "Load tweets in the following languages" +#~ msgstr "Hizkuntza hauetako txioak kargatu" + +#~ msgid "Ignore tweets in the following languages" +#~ msgstr "Hizkuntza hoetako txioak ezikusi" + +#~ msgid "Don't filter by language" +#~ msgstr "Ez iragazi hizkuntzak erabilita" + +#~ msgid "Supported languages" +#~ msgstr "Onartutako hizkuntzak" + +#~ msgid "Add selected language to filter" +#~ msgstr "Hautatutako hizkuntza iragazkira gehitu" + +#~ msgid "Selected languages" +#~ msgstr "Hautatutako hizkuntzak" + +#~ msgid "You must define a name for the filter before creating it." +#~ msgstr "" + +#~ msgid "Missing filter name" +#~ msgstr "" + +#~ msgid "Manage filters" +#~ msgstr "Iragazkiak administratu" + +#~ msgid "Filters" +#~ msgstr "Iragazkiak" + +#~ msgid "Filter" +#~ msgstr "Iragazkia" + +#~ msgid "Lists manager" +#~ msgstr "Zerrenden kudeatzailea" + +#~ msgid "List" +#~ msgstr "Zerrenda" + +#~ msgid "Owner" +#~ msgstr "Jabea" + +#~ msgid "Members" +#~ msgstr "Kideak" + +#~ msgid "mode" +#~ msgstr "Modua" + +#~ msgid "Create a new list" +#~ msgstr "Zerrenda berri bat sortu" + +#~ msgid "Open in buffer" +#~ msgstr "Buffer batean ireki" + +#~ msgid "Viewing lists for %s" +#~ msgstr "%s(r)en zerrendak ikusten" + +#~ msgid "Subscribe" +#~ msgstr "Harpidetu" + +#~ msgid "Unsubscribe" +#~ msgstr "Harpidetzeari utzi" + +#~ msgid "Name (20 characters maximun)" +#~ msgstr "Izena (gehienez 20 karaktere)" + +#~ msgid "Mode" +#~ msgstr "Modua" + +#~ msgid "Private" +#~ msgstr "Privatua" + +#~ msgid "Editing the list %s" +#~ msgstr "%S ZERRENDA ALDATZEN" + +#~ msgid "Select a list to add the user" +#~ msgstr "Hautatu zerrenda bat erabiltzailea bertan gehitzeko" + +#~ msgid "Add" +#~ msgstr "Gehitu" + +#~ msgid "Select a list to remove the user" +#~ msgstr "Hautatu zerrenda bat erabiltzailea bertatik kentzeko" + +#~ msgid "Do you really want to delete this list?" +#~ msgstr "Ziur zaude zerrenda hau ezabatu nahi duzula?" + +#~ msgid "Search on Twitter" +#~ msgstr "Bilatu Twitterren" + +#~ msgid "Tweets" +#~ msgstr "Txioak" + +#~ msgid "&Language for results: " +#~ msgstr "&Emaitzetarako hizkuntza:" + +#~ msgid "any" +#~ msgstr "Edozein" + +#~ msgid "Results &type: " +#~ msgstr "Emaitza &mota:" + +#~ msgid "Mixed" +#~ msgstr "Nahasiak" + +#~ msgid "Recent" +#~ msgstr "Azkenak" + +#~ msgid "Popular" +#~ msgstr "Popularra" + +#~ msgid "Details" +#~ msgstr "Xehetasunak" + +#~ msgid "&Go to URL" +#~ msgstr "&URLera joan" + +#~ msgid "View trending topics" +#~ msgstr "Tendentziak ikusi" + +#~ msgid "Trending topics by" +#~ msgstr "Tendentziak honen arabera" + +#~ msgid "Country" +#~ msgstr "Herrialdea" + +#~ msgid "City" +#~ msgstr "Hiria" + +#~ msgid "&Location" +#~ msgstr "&Kokapena" + +#~ msgid "Update your profile" +#~ msgstr "Zure profila eguneratu" + +#~ msgid "&Name (50 characters maximum)" +#~ msgstr "&Izena (gehienez 50 karaktere)" + +#~ msgid "&Website" +#~ msgstr "&Webgunea" + +#~ msgid "&Bio (160 characters maximum)" +#~ msgstr "&Bioa (gehienez 160 karaktere)" + +#~ msgid "Upload a &picture" +#~ msgstr "ºArgazki bat &igo" + +#~ msgid "Upload a picture" +#~ msgstr "Argazki bat igo" + +#~ msgid "Discard image" +#~ msgstr "Irudia baztertu" + +#~ msgid "&Report as spam" +#~ msgstr "&Spam bezala salatu" + +#~ msgid "&Ignore tweets from this client" +#~ msgstr "Aplikazio honetako txioak &ezikusi" + +#~ msgid "&Tweets" +#~ msgstr "&Txioak" + +#~ msgid "&Likes" +#~ msgstr "&Gogokoak" + +#~ msgid "F&riends" +#~ msgstr "&Lagunak" + +#~ msgid "Delete attachment" +#~ msgstr "Eranskina kendu" + +#~ msgid "Added Tweets" +#~ msgstr "Bidalitako txioak" + +#~ msgid "Delete tweet" +#~ msgstr "Bidalitako txioak" + +#~ msgid "A&dd..." +#~ msgstr "" + +#~ msgid "Add t&weet" +#~ msgstr "Txio bat gogokoetara gehitu" + +#~ msgid "&Attach audio..." +#~ msgstr "Audioa &atxiki..." + +#~ msgid "Sen&d" +#~ msgstr "Bi&dali" + +#~ msgid "Video files (*.mp4)|*.mp4" +#~ msgstr "" + +#~ msgid "" +#~ "It is not possible to add more " +#~ "attachments. Please make sure your tweet" +#~ " complies with Twitter'S attachment rules." +#~ " You can add only one video or" +#~ " GIF in every tweet, and a " +#~ "maximum of 4 photos." +#~ msgstr "" + +#~ msgid "&Mention to all" +#~ msgstr "Aipa&mena guztiei" + +#~ msgid "&Recipient" +#~ msgstr "&Hartzailea" + +#~ msgid "Tweet - %i characters " +#~ msgstr "Txioa - %i karaktere" + +#~ msgid "Retweets: " +#~ msgstr "Bertxioak:" + +#~ msgid "Likes: " +#~ msgstr "Gogokoak:" + +#~ msgid "View" +#~ msgstr "Ikusi" + +#~ msgid "Item" +#~ msgstr "Elementua" + +#~ msgid "&Expand URL" +#~ msgstr "URLa &zabaldu" + +#~ msgid "Participation time (in days)" +#~ msgstr "" + +#~ msgid "&Open in Twitter" +#~ msgstr "Bilatu Twitterren" + +#~ msgid "&Show tweet" +#~ msgstr "Txioa &ikusi" + +#~ msgid "Translated" +#~ msgstr "Itzulia" + +#~ msgid "Afrikaans" +#~ msgstr "Africaans" + +#~ msgid "Albanian" +#~ msgstr "Albaniera" + +#~ msgid "Amharic" +#~ msgstr "amharera" + +#~ msgid "Arabic" +#~ msgstr "Arabiera" + +#~ msgid "Armenian" +#~ msgstr "Armeniera" + +#~ msgid "Azerbaijani" +#~ msgstr "Azerbaijanera" + +#~ msgid "Basque" +#~ msgstr "Euskara" + +#~ msgid "Belarusian" +#~ msgstr "Bielorrusiera" + +#~ msgid "Bengali" +#~ msgstr "Bengalera" + +#~ msgid "Bihari" +#~ msgstr "Bihari" + +#~ msgid "Bulgarian" +#~ msgstr "Bulgariera" + +#~ msgid "Burmese" +#~ msgstr "Birmaniera" + +#~ msgid "Catalan" +#~ msgstr "Katalana" + +#~ msgid "Cherokee" +#~ msgstr "Cherokee" + +#~ msgid "Chinese" +#~ msgstr "Txinera" + +#~ msgid "Chinese_simplified" +#~ msgstr "Txinera sinplifikatua" + +#~ msgid "Chinese_traditional" +#~ msgstr "Txinera tradizionala" + +#~ msgid "Croatian" +#~ msgstr "Kroaziera" + +#~ msgid "Czech" +#~ msgstr "Txekiera" + +#~ msgid "Dhivehi" +#~ msgstr "Maldivera" + +#~ msgid "Esperanto" +#~ msgstr "Esperantoa" + +#~ msgid "Estonian" +#~ msgstr "Estoniera" + +#~ msgid "Filipino" +#~ msgstr "Filipinera" + +#~ msgid "Galician" +#~ msgstr "Galiziera" + +#~ msgid "Georgian" +#~ msgstr "Georgiera" + +#~ msgid "Greek" +#~ msgstr "Greziera" + +#~ msgid "Guarani" +#~ msgstr "Guaraniera" + +#~ msgid "Gujarati" +#~ msgstr "Gujaratera" + +#~ msgid "Hebrew" +#~ msgstr "Hebreera" + +#~ msgid "Hindi" +#~ msgstr "Hindi" + +#~ msgid "Icelandic" +#~ msgstr "Islandiera" + +#~ msgid "Indonesian" +#~ msgstr "Indonesiera" + +#~ msgid "Inuktitut" +#~ msgstr "Inuktitutera" + +#~ msgid "Irish" +#~ msgstr "Irlandera" + +#~ msgid "Kannada" +#~ msgstr "Kannada" + +#~ msgid "Kazakh" +#~ msgstr "Kazakera" + +#~ msgid "Khmer" +#~ msgstr "Khmerera" + +#~ msgid "Kurdish" +#~ msgstr "Kurduera" + +#~ msgid "Kyrgyz" +#~ msgstr "Kirjizera" + +#~ msgid "Laothian" +#~ msgstr "Laosera" + +#~ msgid "Latvian" +#~ msgstr "Letoniera" + +#~ msgid "Lithuanian" +#~ msgstr "Lituaniera" + +#~ msgid "Macedonian" +#~ msgstr "Mazedoniera" + +#~ msgid "Malay" +#~ msgstr "Malaisiera" + +#~ msgid "Malayalam" +#~ msgstr "Malabarera" + +#~ msgid "Maltese" +#~ msgstr "Maltera" + +#~ msgid "Marathi" +#~ msgstr "Maratera" + +#~ msgid "Mongolian" +#~ msgstr "Mongoliera" + +#~ msgid "Nepali" +#~ msgstr "Nepalera" + +#~ msgid "Norwegian" +#~ msgstr "Norbegiera" + +#~ msgid "Oriya" +#~ msgstr "Oriya" + +#~ msgid "Pashto" +#~ msgstr "Paxtuera" + +#~ msgid "Persian" +#~ msgstr "Persiera" + +#~ msgid "Punjabi" +#~ msgstr "Punjabera" + +#~ msgid "Romanian" +#~ msgstr "Errumaniera" + +#~ msgid "Sanskrit" +#~ msgstr "Sanskrito" + +#~ msgid "Serbian" +#~ msgstr "Serbiera" + +#~ msgid "Sindhi" +#~ msgstr "Sindi" + +#~ msgid "Sinhalese" +#~ msgstr "Sinhala" + +#~ msgid "Slovak" +#~ msgstr "Eslobakiera" + +#~ msgid "Slovenian" +#~ msgstr "Eslobeniera" + +#~ msgid "Swahili" +#~ msgstr "Swahili" + +#~ msgid "Swedish" +#~ msgstr "Suediera" + +#~ msgid "Tajik" +#~ msgstr "Tajikera" + +#~ msgid "Tamil" +#~ msgstr "Tamilera" + +#~ msgid "Tagalog" +#~ msgstr "Taglo" + +#~ msgid "Telugu" +#~ msgstr "Telugu" + +#~ msgid "Thai" +#~ msgstr "Tailandiera" + +#~ msgid "Tibetan" +#~ msgstr "Tibetera" + +#~ msgid "Ukrainian" +#~ msgstr "Ukrainera" + +#~ msgid "Urdu" +#~ msgstr "Urdu" + +#~ msgid "Uzbek" +#~ msgstr "Uzbekera" + +#~ msgid "Uighur" +#~ msgstr "Uigurrera" + +#~ msgid "Vietnamese" +#~ msgstr "Vietnamera" + +#~ msgid "Welsh" +#~ msgstr "Gales" + +#~ msgid "Yiddish" +#~ msgstr "Yiddisha" + +#~ msgid "" +#~ "TWBlue has detected that you're running" +#~ " windows 10 and has changed the " +#~ "default keymap to the Windows 10 " +#~ "keymap. It means that some keyboard " +#~ "shorcuts could be different. Please " +#~ "check the keystroke editor by pressing" +#~ " Alt+Win+K to see all available " +#~ "keystrokes for this keymap." +#~ msgstr "" +#~ "TWBluek Windows 10 erabiltzen ari zarela" +#~ " detektatu du eta lehenetsitako teklatu " +#~ "mapa Windows 10erako teklatu mapara " +#~ "aldatu du. Teklatu mapa honetan " +#~ "lasterbide batzuk ezberdinak dira. Ikusi " +#~ "lasterbideen editorea Alt + Win + " +#~ "K sakatuz lasterbide guztiak ikusteko." + +#~ msgid "Boosts: " +#~ msgstr "" + +#~ msgid "Favorites: " +#~ msgstr "" + +#~ msgid "Date: " +#~ msgstr "Data" + +#~ msgid "Community for {}" +#~ msgstr "" + +#~ msgid "Run {0} at Windows startup" +#~ msgstr "Abiarazi {0} Windows abiaraztean" + +#~ msgid "Use Codeofdusk's longtweet handlers (may decrease client performance)" +#~ msgstr "" +#~ "Erabili Codeofdusken tweet luzeen detekzioa" +#~ " (aplikazioaren abiadura mantso dezake)" + +#~ msgid "Remember state for mention all and long tweet" +#~ msgstr "" + +#~ msgid "Bio: " +#~ msgstr "" + +#~ msgid "Joined at: " +#~ msgstr "" + +#~ msgid "Field {} - Label: " +#~ msgstr "" + +#~ msgid "{} posts. Click to open posts timeline" +#~ msgstr "" + +#~ msgid "{} following. Click to open Following timeline" +#~ msgstr "" + +#~ msgid "{} followers. Click to open followers timeline" +#~ msgstr "" + +#~ msgid "Display Name" +#~ msgstr "" + +#~ msgid "Bio" +#~ msgstr "" + +#~ msgid "Change header" +#~ msgstr "" + +#~ msgid "Change avatar" +#~ msgstr "" + +#~ msgid "Field {}: Label" +#~ msgstr "" + +#~ msgid "Add following to database" +#~ msgstr "" + +#~ msgid "Disable Streaming functions" +#~ msgstr "" + +#~ msgid "Buffer update interval, in minutes" +#~ msgstr "" + +#~ msgid "Read long posts in GUI" +#~ msgstr "" + +#~ msgid "Enable automatic speech feedback" +#~ msgstr "" + +#~ msgid "Enable automatic Braille feedback" +#~ msgstr "" + +#~ msgid "LibreTranslate API URL: " +#~ msgstr "" + +#~ msgid "LibreTranslate API Key (optional): " +#~ msgstr "" + +#~ msgid "DeepL API Key: " +#~ msgstr "" + +#~ msgid "" +#~ "Scan account and add followers and " +#~ "following users to the user " +#~ "autocompletion database" +#~ msgstr "" + +#~ msgid "Disable Streaming API endpoints" +#~ msgstr "" + +#~ msgid "" +#~ "Read preferences from instance (default " +#~ "visibility when publishing and displaying " +#~ "sensitive content)" +#~ msgstr "" + +#~ msgid "Ask confirmation before boosting a post" +#~ msgstr "" + +#~ msgid "hide emojis in usernames" +#~ msgstr "" + +#~ msgid "" +#~ "Load cache for items in memory " +#~ "(much faster in big datasets but " +#~ "requires more RAM)" +#~ msgstr "" + diff --git a/srcantiguo/locales/ar/LC_MESSAGES/twblue.mo b/srcantiguo/locales/ar/LC_MESSAGES/twblue.mo new file mode 100644 index 00000000..f104d515 Binary files /dev/null and b/srcantiguo/locales/ar/LC_MESSAGES/twblue.mo differ diff --git a/srcantiguo/locales/ar/LC_MESSAGES/twblue.po b/srcantiguo/locales/ar/LC_MESSAGES/twblue.po new file mode 100644 index 00000000..26d82c4c --- /dev/null +++ b/srcantiguo/locales/ar/LC_MESSAGES/twblue.po @@ -0,0 +1,4927 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2018 ORGANIZATION +# FIRST AUTHOR , 2018. +# +msgid "" +msgstr "" +"Project-Id-Version: TW Blue 0.80\n" +"Report-Msgid-Bugs-To: manuel@manuelcortez.net\n" +"POT-Creation-Date: 2025-04-13 01:18+0000\n" +"PO-Revision-Date: 2022-12-20 22:42+0000\n" +"Last-Translator: Anonymous \n" +"Language: ar\n" +"Language-Team: Arabic " +"\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 ? 4 : 5;\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.17.0\n" + +#: languageHandler.py:61 +#, fuzzy +msgctxt "languageName" +msgid "Amharic" +msgstr "الأمهارية" + +#: languageHandler.py:62 +#, fuzzy +msgctxt "languageName" +msgid "Aragonese" +msgstr "اليابانية" + +#: languageHandler.py:63 +#, fuzzy +msgctxt "languageName" +msgid "Spanish" +msgstr "الإسبانية" + +#: languageHandler.py:64 +#, fuzzy +msgctxt "languageName" +msgid "Portuguese" +msgstr "البرتغالية" + +#: languageHandler.py:65 +#, fuzzy +msgctxt "languageName" +msgid "Russian" +msgstr "الروسية" + +#: languageHandler.py:66 +#, fuzzy +msgctxt "languageName" +msgid "italian" +msgstr "الإيطالية" + +#: languageHandler.py:67 +#, fuzzy +msgctxt "languageName" +msgid "Turkey" +msgstr "ميزة" + +#: languageHandler.py:68 +#, fuzzy +msgctxt "languageName" +msgid "Galician" +msgstr "Galician" + +#: languageHandler.py:69 +#, fuzzy +msgctxt "languageName" +msgid "Catala" +msgstr "Catalan" + +#: languageHandler.py:70 +#, fuzzy +msgctxt "languageName" +msgid "Vasque" +msgstr "Basque" + +#: languageHandler.py:71 +#, fuzzy +msgctxt "languageName" +msgid "polish" +msgstr "البولندية" + +#: languageHandler.py:72 +#, fuzzy +msgctxt "languageName" +msgid "Arabic" +msgstr "العربية" + +#: languageHandler.py:73 +#, fuzzy +msgctxt "languageName" +msgid "Nepali" +msgstr "Nepali" + +#: languageHandler.py:74 +msgctxt "languageName" +msgid "Serbian (Latin)" +msgstr "" + +#: languageHandler.py:75 +#, fuzzy +msgctxt "languageName" +msgid "Japanese" +msgstr "اليابانية" + +#: languageHandler.py:99 +msgid "User default" +msgstr "الإفتراضي للمستخدم" + +#: main.py:105 +#, fuzzy +msgid "https://twblue.mcvsoftware.com/donate" +msgstr "https://twblue.es/donate" + +#: main.py:118 +#, python-brace-format +msgid "" +"{0} is already running. Close the other instance before starting this " +"one. If you're sure that {0} isn't running, try deleting the file at {1}." +" If you're unsure of how to do this, contact the {0} developers." +msgstr "" + +#: sound.py:148 +msgid "Playing..." +msgstr "جاري التشغيل" + +#: sound.py:161 +msgid "Stopped." +msgstr "تم الإيقاف." + +#: controller/mainController.py:261 +msgid "Ready" +msgstr "جاهز" + +#: controller/mainController.py:369 controller/mainController.py:654 +#: controller/mainController.py:673 controller/mainController.py:692 +#: controller/mainController.py:711 +msgid "" +"No session is currently in focus. Focus a session with the next or " +"previous session shortcut." +msgstr "لا توجد جلسة مختارة. يرجى إستخدام مفاتيح التنقل بين الجلسات لتحديد جلسة." + +#: controller/mainController.py:373 +msgid "Empty buffer." +msgstr "سياق زمني فارغ" + +#: controller/mainController.py:380 +#, python-brace-format +msgid "{0} not found." +msgstr "{0} لم يتم العثور عليه" + +#: controller/mainController.py:702 controller/mainController.py:721 +#, python-format +msgid "%s, %s of %s" +msgstr "%s, %s من %s" + +#: controller/mainController.py:704 controller/mainController.py:723 +#: controller/mainController.py:751 controller/mainController.py:779 +#, python-format +msgid "%s. Empty" +msgstr "%s فارغة" + +#: controller/mainController.py:739 controller/mainController.py:743 +#: controller/mainController.py:767 +#, python-brace-format +msgid "{0}: This account is not logged into Twitter." +msgstr "{0}: هذا الحساب لم يقم بتسجيل الدخول لتويتر." + +#: controller/mainController.py:749 controller/mainController.py:777 +#, python-format +msgid "%s. %s, %s of %s" +msgstr "%s. %s, %s الخاصة %s" + +#: controller/mainController.py:771 +#, python-brace-format +msgid "{0}: This account is not logged into twitter." +msgstr "{0}: هذا الحساب لم يقم بتسجيل الدخول لتويتر." + +#: controller/mainController.py:910 controller/mainController.py:926 +#, fuzzy +msgid "An error happened while trying to connect to the server. Please try later." +msgstr "شيء غير متوقع حدث في أثناء الإبلاغ عن العطل. الرجاء المحاولة ثانيا لاحقا." + +#: controller/mainController.py:957 +msgid "The auto-reading of new tweets is enabled for this buffer" +msgstr "القراءة التلقائية للتغريدات الجديدة مفعلة لهذه الصفحة." + +#: controller/mainController.py:960 +msgid "The auto-reading of new tweets is disabled for this buffer" +msgstr "القراءة التلقائية للتغريدات الجديدة معطلة لهذه الصفحة." + +#: controller/mainController.py:967 +msgid "Session mute on" +msgstr "تشغيل الوضع الصامت للجلسة" + +#: controller/mainController.py:970 +msgid "Session mute off" +msgstr "تعطيل الوضع الصامت للجلسة" + +#: controller/mainController.py:979 +msgid "Buffer mute on" +msgstr "تشغيل الوضع الصامت لهذه الصفحة." + +#: controller/mainController.py:982 +msgid "Buffer mute off" +msgstr "تعطيل الوضع الصامت لهذه الصفحة." + +#: controller/mainController.py:999 +msgid "Copied" +msgstr "تم النسخ" + +#: controller/mainController.py:1019 +msgid "Unable to update this buffer." +msgstr "غير قادر على تحديث هذه الصفحة" + +#: controller/mainController.py:1021 +msgid "Updating buffer..." +msgstr "تحديث الصفحة" + +#: controller/mainController.py:1024 +#, python-brace-format +msgid "{0} items retrieved" +msgstr "(0) من العناصر جُلبت" + +#: controller/buffers/mastodon/base.py:137 controller/mainController.py:1028 +#: controller/mastodon/handler.py:98 controller/mastodon/handler.py:241 +#, python-brace-format +msgid "Timeline for {}" +msgstr "السياق الزمني ل{}" + +#: controller/buffers/mastodon/users.py:93 controller/mainController.py:1030 +#: controller/mastodon/handler.py:100 controller/mastodon/handler.py:255 +#, python-brace-format +msgid "Followers for {}" +msgstr "المتابِعون ل{}" + +#: controller/mainController.py:1032 +#, python-brace-format +msgid "Friends for {}" +msgstr "قائمة الأصدقاء ل{}" + +# | msgid "Followers for {}" +#: controller/buffers/mastodon/users.py:95 controller/mainController.py:1034 +#: controller/mastodon/handler.py:102 controller/mastodon/handler.py:269 +#, fuzzy, python-brace-format +msgid "Following for {}" +msgstr "المتابِعون ل{}" + +#: controller/messages.py:18 +#, fuzzy +msgid "Translated" +msgstr "تمت ترجمته" + +#: controller/settings.py:60 +#, fuzzy +msgid "System default" +msgstr "الإفتراضي للمستخدم" + +#: controller/settings.py:60 +msgid "HTTP" +msgstr "" + +#: controller/settings.py:60 +msgid "SOCKS v4" +msgstr "" + +#: controller/settings.py:60 +msgid "SOCKS v4 with DNS support" +msgstr "" + +#: controller/settings.py:60 +msgid "SOCKS v5" +msgstr "" + +#: controller/settings.py:60 +msgid "SOCKS v5 with DNS support" +msgstr "" + +#: controller/userAlias.py:31 +#, fuzzy, python-brace-format +msgid "Edit alias for {}" +msgstr "قائمة ل{}" + +#: controller/buffers/base/base.py:91 +#: controller/buffers/mastodon/conversations.py:237 +#: controller/buffers/mastodon/search.py:80 +msgid "This action is not supported for this buffer" +msgstr "هذا الإجراء غير ممكن في هذه الصفحة" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:70 +#: controller/mastodon/settings.py:194 +msgid "Home" +msgstr "الصفحة الرئيسية" + +#: controller/buffers/mastodon/base.py:52 +#: controller/buffers/mastodon/community.py:22 +#: controller/mastodon/handler.py:72 controller/mastodon/handler.py:114 +#: controller/mastodon/settings.py:195 +msgid "Local" +msgstr "" + +#: controller/buffers/mastodon/base.py:52 +#: controller/buffers/mastodon/community.py:22 +#: controller/mastodon/handler.py:74 controller/mastodon/settings.py:196 +msgid "Federated" +msgstr "" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:76 +#: controller/mastodon/settings.py:197 +msgid "Mentions" +msgstr "الإشارات" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:84 +#: controller/mastodon/settings.py:201 +msgid "Bookmarks" +msgstr "" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:78 +msgid "Direct messages" +msgstr "الرسائل الخاصة" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:80 +#: controller/mastodon/settings.py:199 +msgid "Sent" +msgstr "" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:82 +#: controller/mastodon/settings.py:200 wxUI/dialogs/mastodon/postDialogs.py:229 +msgid "Favorites" +msgstr "" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:86 +#: controller/mastodon/settings.py:202 +msgid "Followers" +msgstr "المتابِعون" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:88 +#: controller/mastodon/settings.py:203 +#, fuzzy +msgid "Following" +msgstr "إل&غاء المتابعة" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:92 +#: controller/mastodon/settings.py:204 +msgid "Blocked users" +msgstr "المستخدمون المحظورون" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:90 +#: controller/mastodon/settings.py:205 +msgid "Muted users" +msgstr "المستخدمون الذين كُتمت تنبيهاتهم" + +# | msgid "&Location" +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:94 +#: controller/mastodon/settings.py:206 +#: wxUI/dialogs/mastodon/filters/create_filter.py:80 +#, fuzzy +msgid "Notifications" +msgstr "الموقع" + +#: controller/buffers/mastodon/base.py:58 +#, fuzzy, python-brace-format +msgid "{username}'s timeline" +msgstr "إفتح سياق المستخدم" + +#: controller/buffers/mastodon/base.py:60 +#, python-brace-format +msgid "{username}'s followers" +msgstr "" + +#: controller/buffers/mastodon/base.py:62 +#, fuzzy, python-brace-format +msgid "{username}'s following" +msgstr "إفتح سياق المستخدم" + +#: controller/buffers/mastodon/base.py:64 +#, fuzzy +msgid "Unknown buffer" +msgstr "غير معروف" + +#: controller/buffers/mastodon/base.py:67 +#: controller/buffers/mastodon/base.py:645 wxUI/buffers/mastodon/base.py:24 +#: wxUI/buffers/mastodon/conversationList.py:24 +#: wxUI/buffers/mastodon/notifications.py:22 wxUI/buffers/mastodon/user.py:18 +#: wxUI/dialogs/mastodon/postDialogs.py:5 +#: wxUI/dialogs/mastodon/postDialogs.py:194 wxUI/sysTrayIcon.py:35 +msgid "Post" +msgstr "" + +# | msgid "Write the tweet here" +#: controller/buffers/mastodon/base.py:68 +#: controller/buffers/mastodon/base.py:646 +#, fuzzy +msgid "Write your post here" +msgstr "اكتب التغريدة هنا" + +#: controller/buffers/mastodon/base.py:153 +#, fuzzy, python-brace-format +msgid "New post in {0}" +msgstr "تغريدة جديدة" + +#: controller/buffers/mastodon/base.py:159 +#, fuzzy, python-brace-format +msgid "{0} new posts in {1}." +msgstr "@{0} إقتبس تغريدتك: {1} " + +#: controller/buffers/mastodon/base.py:198 +#: controller/buffers/mastodon/community.py:90 +#: controller/buffers/mastodon/conversations.py:100 +#: controller/buffers/mastodon/mentions.py:82 +#: controller/buffers/mastodon/users.py:139 +#, python-format +msgid "%s items retrieved" +msgstr "تم جلب %s عناصر" + +#: controller/buffers/mastodon/base.py:216 +#: controller/buffers/mastodon/users.py:206 +msgid "This buffer is not a timeline; it can't be deleted." +msgstr "هذه الصفحة ليست سياق زمني ولا يمكن حذفها" + +# | msgid "Conversation with {0}" +#: controller/buffers/mastodon/base.py:346 +#: controller/buffers/mastodon/base.py:384 +#, fuzzy, python-brace-format +msgid "Conversation with {}" +msgstr "محادثة مع {0}" + +# | msgid "Write the tweet here" +#: controller/buffers/mastodon/base.py:347 +#: controller/buffers/mastodon/base.py:385 +#: controller/buffers/mastodon/conversations.py:181 +#: controller/buffers/mastodon/notifications.py:122 +#: controller/buffers/mastodon/users.py:52 +#, fuzzy +msgid "Write your message here" +msgstr "اكتب التغريدة هنا" + +# | msgid "Reply to {arg0}" +#: controller/buffers/mastodon/base.py:349 +#, fuzzy, python-brace-format +msgid "Reply to {}" +msgstr "الرد على {arg0}" + +# | msgid "Write the tweet here" +#: controller/buffers/mastodon/base.py:350 +#, fuzzy +msgid "Write your reply here" +msgstr "اكتب التغريدة هنا" + +#: controller/buffers/mastodon/base.py:412 +#, fuzzy +msgid "This action is not supported on conversations." +msgstr "هذا الإجراء غير ممكن في هذه الصفحة" + +#: controller/buffers/mastodon/base.py:477 +msgid "Opening URL..." +msgstr "فتح رابط" + +#: controller/buffers/mastodon/base.py:490 +msgid "You can delete only your own posts." +msgstr "" + +#: controller/buffers/mastodon/base.py:519 +msgid "Opening item in web browser..." +msgstr "" + +#: controller/buffers/mastodon/base.py:527 +#: controller/buffers/mastodon/base.py:547 +msgid "Adding to favorites..." +msgstr "" + +# | msgid "Remove from list" +#: controller/buffers/mastodon/base.py:534 +#: controller/buffers/mastodon/base.py:549 +#, fuzzy +msgid "Removing from favorites..." +msgstr "حذف من قائمة" + +#: controller/buffers/mastodon/base.py:544 +#: controller/buffers/mastodon/base.py:559 +#: controller/buffers/mastodon/base.py:573 +#: controller/buffers/mastodon/conversations.py:213 +msgid "No status found with that ID" +msgstr "لم يتم العثور على حالة بهذا الرمز." + +#: controller/buffers/mastodon/base.py:562 +msgid "Adding to bookmarks..." +msgstr "" + +#: controller/buffers/mastodon/base.py:564 +msgid "Removing from bookmarks..." +msgstr "" + +#: controller/buffers/mastodon/base.py:586 +#, python-brace-format +msgid "Picture {0}" +msgstr "صورة {0}" + +#: controller/buffers/mastodon/base.py:587 +msgid "Select the picture" +msgstr "اختر الصورة" + +#: controller/buffers/mastodon/base.py:610 +msgid "Unable to extract text" +msgstr "غير قادر على إستخلاص أي نص" + +#: controller/buffers/mastodon/base.py:612 +msgid "OCR Result" +msgstr "" + +#: controller/buffers/mastodon/base.py:627 +msgid "this poll no longer exists." +msgstr "" + +#: controller/buffers/mastodon/base.py:630 +msgid "This poll has already expired." +msgstr "" + +#: controller/buffers/mastodon/base.py:633 +msgid "You have already voted on this poll." +msgstr "" + +#: controller/buffers/mastodon/base.py:642 +#, fuzzy +msgid "Sending vote..." +msgstr "جاري تسجيل الصوت" + +# | msgid "Conversation with {0}" +#: controller/buffers/mastodon/conversations.py:180 +#, fuzzy, python-brace-format +msgid "Reply to conversation with {}" +msgstr "محادثة مع {0}" + +# | msgid "Conversation with {0}" +#: controller/buffers/mastodon/notifications.py:121 +#: controller/buffers/mastodon/users.py:51 +#, fuzzy, python-brace-format +msgid "New conversation with {}" +msgstr "محادثة مع {0}" + +#: controller/buffers/mastodon/notifications.py:151 +msgid "Notification dismissed." +msgstr "" + +# | msgid "There are no coordinates in this tweet" +#: controller/buffers/mastodon/users.py:110 +#, fuzzy +msgid "There are no more items in this buffer." +msgstr "لا توجد إحداثيات في هذه التغريدة" + +#: controller/mastodon/handler.py:30 wxUI/dialogs/mastodon/updateProfile.py:35 +#, fuzzy +msgid "Update Profile" +msgstr "حدّث الملف الشخصي" + +#: controller/mastodon/handler.py:31 wxUI/dialogs/mastodon/search.py:10 +#: wxUI/view.py:19 +msgid "&Search" +msgstr "البحث" + +#: controller/mastodon/handler.py:33 wxUI/view.py:22 +msgid "Manage user aliases" +msgstr "" + +#: controller/mastodon/handler.py:35 controller/mastodon/handler.py:59 +#: wxUI/view.py:30 +msgid "&Post" +msgstr "" + +#: controller/mastodon/handler.py:36 wxUI/dialogs/mastodon/menus.py:9 +#: wxUI/dialogs/mastodon/menus.py:37 wxUI/view.py:31 +msgid "Re&ply" +msgstr "الرد" + +#: controller/mastodon/handler.py:37 wxUI/dialogs/mastodon/menus.py:7 +#: wxUI/dialogs/mastodon/menus.py:35 wxUI/view.py:32 +msgid "&Boost" +msgstr "" + +# | msgid "&Add to list" +#: controller/mastodon/handler.py:38 wxUI/dialogs/mastodon/menus.py:11 +#: wxUI/dialogs/mastodon/menus.py:39 wxUI/view.py:33 +#, fuzzy +msgid "&Add to favorites" +msgstr "الإضافة إلى قائمة" + +# | msgid "Remove from list" +#: controller/mastodon/handler.py:39 +#, fuzzy +msgid "Remove from favorites" +msgstr "حذف من قائمة" + +# | msgid "&Show user" +#: controller/mastodon/handler.py:40 wxUI/dialogs/mastodon/menus.py:21 +#: wxUI/dialogs/mastodon/menus.py:49 wxUI/view.py:35 +#, fuzzy +msgid "&Show post" +msgstr "&إظهر المستخدمين" + +#: controller/mastodon/handler.py:41 wxUI/view.py:36 +msgid "View conversa&tion" +msgstr "عرض المحادثة" + +#: controller/mastodon/handler.py:42 wxUI/view.py:37 +msgid "Read text in picture" +msgstr "اقرء النص الذي في الصورة" + +#: controller/mastodon/handler.py:43 wxUI/dialogs/mastodon/menus.py:25 +#: wxUI/view.py:39 +msgid "&Delete" +msgstr "حذف" + +#: controller/mastodon/handler.py:45 wxUI/view.py:43 +msgid "&Actions..." +msgstr "إجراءات" + +#: controller/mastodon/handler.py:46 wxUI/view.py:44 +msgid "&View timeline..." +msgstr "&اعرِضِ السياق الزمني" + +#: controller/mastodon/handler.py:47 wxUI/view.py:45 +msgid "Direct me&ssage" +msgstr "رسالة خاصة" + +#: controller/mastodon/handler.py:48 wxUI/view.py:46 +msgid "Add a&lias" +msgstr "" + +#: controller/mastodon/handler.py:51 +#, fuzzy +msgid "Show user profile" +msgstr "إظهار الملف الشخصي للمستخدم" + +#: controller/mastodon/handler.py:54 +msgid "Create c&ommunity timeline" +msgstr "" + +#: controller/mastodon/handler.py:55 wxUI/view.py:57 +#, fuzzy +msgid "Create a &filter" +msgstr "إنشء قائمة جديدة" + +#: controller/mastodon/handler.py:56 wxUI/view.py:58 +#, fuzzy +msgid "&Manage filters" +msgstr "&إدر الحسابات" + +#: controller/mastodon/handler.py:95 +msgid "Timelines" +msgstr "السياقات الزمنية" + +#: controller/mastodon/handler.py:107 +msgid "Searches" +msgstr "عمليات البحث" + +#: controller/mastodon/handler.py:110 controller/mastodon/handler.py:191 +#: controller/mastodon/handler.py:196 +#, python-brace-format +msgid "Search for {}" +msgstr "البحث عن {}" + +#: controller/mastodon/handler.py:111 +msgid "Communities" +msgstr "" + +#: controller/mastodon/handler.py:114 +#, fuzzy +msgid "federated" +msgstr "إفتح سياق المستخدم" + +#: controller/mastodon/handler.py:143 +#, python-brace-format +msgid "Conversation with {0}" +msgstr "محادثة مع {0}" + +#: controller/mastodon/handler.py:299 +msgid "Add an user alias" +msgstr "" + +#: controller/mastodon/handler.py:311 +#, python-brace-format +msgid "Alias has been set correctly for {}." +msgstr "" + +#: controller/mastodon/handler.py:342 +#, fuzzy +msgid "Update profile" +msgstr "حدّث الملف الشخصي" + +#: controller/mastodon/messages.py:115 +#, python-format +msgid "%s - %s of %d characters" +msgstr "%s - %s من %d characters%s - %s من 140 أحرف" + +#: controller/mastodon/messages.py:239 +#, python-brace-format +msgid "Poll with {} options" +msgstr "" + +# | msgid "List for {}" +#: controller/mastodon/messages.py:272 +#, fuzzy, python-brace-format +msgid "Post from {}" +msgstr "قائمة ل{}" + +#: controller/mastodon/messages.py:276 sessions/mastodon/templates.py:82 +#: wxUI/dialogs/mastodon/postDialogs.py:49 +msgid "Public" +msgstr "عامة" + +# | msgid "Accounts list" +#: controller/mastodon/messages.py:276 sessions/mastodon/templates.py:82 +#: wxUI/dialogs/mastodon/postDialogs.py:49 +#, fuzzy +msgid "Not listed" +msgstr "قائمة الحسابات" + +# | msgid "Followers" +#: controller/mastodon/messages.py:276 +#, fuzzy +msgid "followers only" +msgstr "المتابِعون" + +# | msgid "Direct message" +#: controller/mastodon/messages.py:276 sessions/mastodon/templates.py:82 +#: wxUI/dialogs/mastodon/postDialogs.py:49 +#, fuzzy +msgid "Direct" +msgstr "رسالة خاصة" + +# | msgid "Remove client" +#: controller/mastodon/messages.py:283 +#, fuzzy +msgid "Remote instance" +msgstr "إحذف تطبيق" + +#: controller/mastodon/messages.py:291 controller/mastodon/messages.py:319 +#, fuzzy +msgid "Unmute conversation" +msgstr "إعرض المحادثة" + +#: controller/mastodon/messages.py:315 wxUI/dialogs/mastodon/postDialogs.py:237 +#, fuzzy +msgid "Mute conversation" +msgstr "إعرض المحادثة" + +# | msgid "Conversation with {0}" +#: controller/mastodon/messages.py:316 +#, fuzzy +msgid "Conversation unmuted." +msgstr "محادثة مع {0}" + +# | msgid "Conversation with {0}" +#: controller/mastodon/messages.py:320 +#, fuzzy +msgid "Conversation muted." +msgstr "محادثة مع {0}" + +#: controller/mastodon/messages.py:331 +msgid "people who boosted this post" +msgstr "" + +#: controller/mastodon/messages.py:336 +msgid "people who favorited this post" +msgstr "" + +#: controller/mastodon/messages.py:342 +#, fuzzy +msgid "Link copied to clipboard." +msgstr "إنسخ إلى لوحة النسخ" + +#: controller/mastodon/settings.py:82 +#, python-format +msgid "Account settings for %s" +msgstr "إعدادات الحساب لب%s" + +#: controller/mastodon/settings.py:92 +#, python-brace-format +msgid "Edit template for posts. Current template: {}" +msgstr "" + +#: controller/mastodon/settings.py:101 +#, python-brace-format +msgid "Edit template for conversations. Current template: {}" +msgstr "" + +#: controller/mastodon/settings.py:110 +#, python-brace-format +msgid "Edit template for persons. Current template: {}" +msgstr "" + +#: controller/mastodon/settings.py:198 +msgid "Direct Messages" +msgstr "رسائل خاصة" + +#: controller/mastodon/filters/create_filter.py:75 +#, fuzzy, python-brace-format +msgid "Update Filter: {}" +msgstr "حدّث الملف الشخصي" + +#: controller/mastodon/filters/manage_filters.py:57 +#: wxUI/dialogs/mastodon/filters/create_filter.py:90 +msgid "Never" +msgstr "" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:4 +msgid "Audio tweet." +msgstr "تغريدة تتضمّن مقطعا صوتيا" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:5 +msgid "User timeline buffer created." +msgstr "تم إنشاء صفحة بالسياق الزمني للمستخدم." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:6 +msgid "Buffer destroied." +msgstr "تم حذف الصفحة." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:7 +msgid "Direct message received." +msgstr "رسالة خاصة مُتَسلَّمة" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:8 +msgid "Direct message sent." +msgstr "الرسائل الخاصة المُرسَلة" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:9 +msgid "Error." +msgstr "خطأ" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:10 +msgid "Tweet liked." +msgstr "تمّ تسجيل الإعجاب بالتغريدة" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:11 +msgid "Likes buffer updated." +msgstr "تمّ تحديث صفحة الإعجابات" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:12 +msgid "Geotweet." +msgstr "إحداثيات التغريدة" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:13 +msgid "Tweet contains one or more images" +msgstr "تحتوي التغريدة على صورة أو أكثر" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:14 +msgid "Boundary reached." +msgstr "تم الوصول إلى النهاية" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:15 +msgid "List updated." +msgstr "القائمة مُحدّثة" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:16 +msgid "Too many characters." +msgstr "عدد الأحرف كبير جدا" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:17 +msgid "Mention received." +msgstr "إشارة مُتسلّمة" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:18 +msgid "New event." +msgstr "حدث جديد" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:19 +#, python-brace-format +msgid "{0} is ready." +msgstr "{0} جاهز" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:20 +msgid "Mention sent." +msgstr "إشارة مُرسَلة" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:21 +msgid "Tweet retweeted." +msgstr "لقد قمتَ بإعادة التغريد" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:22 +msgid "Search buffer updated." +msgstr "تم تحديث صفحة البحث." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:23 +msgid "Tweet received." +msgstr "تم إستلام التغريدة" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:24 +msgid "Tweet sent." +msgstr "تغريدة مُرسَلة" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:25 +msgid "Trending topics buffer updated." +msgstr "تم تحديث صفحة المواضيع المشهورة." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:26 +msgid "New tweet in user timeline buffer." +msgstr "تغريدة جديدة في صفحة السياق الزمني للمستخدم." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:27 +msgid "New follower." +msgstr "متابِع جديد" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:28 +msgid "Volume changed." +msgstr "تم تغيير علو الصوت" + +#: extra/SoundsTutorial/wx_ui.py:8 +msgid "Sounds tutorial" +msgstr "مُعَلِم الأصوات" + +#: extra/SoundsTutorial/wx_ui.py:11 +msgid "Press enter to listen to the sound for the selected event" +msgstr "إضغط مفتاح الدخول لسماع الصوت" + +#: extra/SpellChecker/spellchecker.py:56 +#, python-format +msgid "Misspelled word: %s" +msgstr "خطء إملائي في الكلمة: %s" + +#: extra/SpellChecker/wx_ui.py:27 +msgid "Misspelled word" +msgstr "كلمة فيها خطء إملائي" + +#: extra/SpellChecker/wx_ui.py:32 +msgid "Context" +msgstr "السياق" + +#: extra/SpellChecker/wx_ui.py:37 +msgid "Suggestions" +msgstr "إقتراحات" + +#: extra/SpellChecker/wx_ui.py:42 +#, fuzzy +msgid "&Ignore" +msgstr "تجاهل" + +#: extra/SpellChecker/wx_ui.py:43 +#, fuzzy +msgid "I&gnore all" +msgstr "تجاهل الكل" + +#: extra/SpellChecker/wx_ui.py:44 +#, fuzzy +msgid "&Replace" +msgstr "استبدل" + +#: extra/SpellChecker/wx_ui.py:45 +#, fuzzy +msgid "R&eplace all" +msgstr "استبدل الكل" + +#: extra/SpellChecker/wx_ui.py:46 +msgid "&Add to personal dictionary" +msgstr "" + +#: extra/SpellChecker/wx_ui.py:79 +#, python-brace-format +msgid "" +"An error has occurred. There are no dictionaries available for the " +"selected language in {0}" +msgstr "لقد حدث خطأ. لا يوجد قاموس للغة المختارة في {0}" + +#: extra/SpellChecker/wx_ui.py:79 +#: extra/autocompletionUsers/mastodon/wx_scan.py:44 +#: wxUI/commonMessageDialogs.py:23 wxUI/commonMessageDialogs.py:36 +#: wxUI/commonMessageDialogs.py:45 wxUI/commonMessageDialogs.py:52 +#: wxUI/commonMessageDialogs.py:55 wxUI/commonMessageDialogs.py:61 +#: wxUI/dialogs/mastodon/dialogs.py:38 wxUI/dialogs/mastodon/dialogs.py:43 +#: wxUI/dialogs/mastodon/dialogs.py:48 wxUI/dialogs/mastodon/dialogs.py:53 +#: wxUI/dialogs/mastodon/dialogs.py:60 +msgid "Error" +msgstr "خطأ" + +#: extra/SpellChecker/wx_ui.py:82 +msgid "Spell check complete." +msgstr "انتهاء التدقيق الإملائي" + +#: extra/autocompletionUsers/completion.py:39 +#: extra/autocompletionUsers/completion.py:57 +msgid "You have to start writing" +msgstr "" + +# | msgid "There are no coordinates in this tweet" +#: extra/autocompletionUsers/completion.py:49 +#: extra/autocompletionUsers/completion.py:66 +#, fuzzy +msgid "There are no results in your users database" +msgstr "لا توجد إحداثيات في هذه التغريدة" + +#: extra/autocompletionUsers/completion.py:51 +#, fuzzy +msgid "Autocompletion only works for users." +msgstr "&إكمال تلقائي للمستخدمين" + +#: extra/autocompletionUsers/wx_manage.py:9 +#, fuzzy +msgid "Manage Autocompletion database" +msgstr "إدارة قاعدة بيانات التعبئة التلقائية" + +#: extra/autocompletionUsers/wx_manage.py:12 +#, fuzzy, python-brace-format +msgid "Editing {0} users database" +msgstr "تحرير قاعدة بيانات المستخدمين ل {0} " + +#: extra/autocompletionUsers/wx_manage.py:13 +#, fuzzy +msgid "Username" +msgstr "المستخدم" + +#: extra/autocompletionUsers/wx_manage.py:13 wxUI/dialogs/configuration.py:108 +msgid "Name" +msgstr "الاسم" + +#: extra/autocompletionUsers/wx_manage.py:16 +#, fuzzy +msgid "Add user" +msgstr "المستخدم" + +#: extra/autocompletionUsers/wx_manage.py:17 +#, fuzzy +msgid "Remove user" +msgstr "احذف مستخدما" + +#: extra/autocompletionUsers/wx_manage.py:38 +msgid "Twitter username" +msgstr "" + +#: extra/autocompletionUsers/wx_manage.py:38 +msgid "Add user to database" +msgstr "" + +#: extra/autocompletionUsers/wx_manage.py:44 +#, fuzzy +msgid "The user does not exist" +msgstr "هذا المستخدم غير موجود" + +#: extra/autocompletionUsers/wx_manage.py:44 +#, fuzzy +msgid "Error!" +msgstr "خطأ" + +#: extra/autocompletionUsers/mastodon/scan.py:49 +msgid "" +"Updating database... You can close this window now. A message will tell " +"you when the process finishes." +msgstr "" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:8 +#, fuzzy +msgid "Autocomplete users' settings" +msgstr "&إكمال تلقائي للمستخدمين" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:11 +msgid "Add &followers to database" +msgstr "" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:12 +msgid "Add f&ollowing to database" +msgstr "" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:26 +#, fuzzy +msgid "Updating autocompletion database" +msgstr "إدارة قاعدة بيانات التعبئة التلقائية" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:34 +msgid "" +"This process will retrieve the users you selected from your Mastodon " +"account, and add them to the user autocomplete database. Please note that" +" if there are many users or you have tried to perform this action less " +"than 15 minutes ago, TWBlue may reach a limit in API calls when trying to" +" load the users into the database. If this happens, we will show you an " +"error, in which case you will have to try this process again in a few " +"minutes. If this process ends with no error, you will be redirected back " +"to the account settings dialog. Do you want to continue?" +msgstr "" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:34 +#: wxUI/commonMessageDialogs.py:20 +msgid "Attention" +msgstr "تنبيه" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:40 +#, python-brace-format +msgid "TWBlue has imported {} users successfully." +msgstr "" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:40 +#, fuzzy +msgid "Done" +msgstr "تم الإنتهاء" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:44 +msgid "Error adding users from Mastodon. Please try again in about 15 minutes." +msgstr "" + +#: extra/ocr/OCRSpace.py:7 +msgid "Detect automatically" +msgstr "اكتشف تلقائيا" + +#: extra/ocr/OCRSpace.py:7 +msgid "Danish" +msgstr "Danish" + +#: extra/ocr/OCRSpace.py:7 +msgid "Dutch" +msgstr "Dutch" + +#: extra/ocr/OCRSpace.py:7 +msgid "English" +msgstr "الإنجليزية" + +#: extra/ocr/OCRSpace.py:7 +msgid "Finnish" +msgstr "الينيقي" + +#: extra/ocr/OCRSpace.py:7 +msgid "French" +msgstr "الفرنسية" + +#: extra/ocr/OCRSpace.py:7 +msgid "German" +msgstr "الألمانيةGerman" + +#: extra/ocr/OCRSpace.py:7 +msgid "Hungarian" +msgstr "هنجاري" + +#: extra/ocr/OCRSpace.py:7 +msgid "Korean" +msgstr "الكورية" + +#: extra/ocr/OCRSpace.py:7 +msgid "Italian" +msgstr "الإيطالية" + +#: extra/ocr/OCRSpace.py:7 +msgid "Japanese" +msgstr "اليابانية" + +#: extra/ocr/OCRSpace.py:7 +msgid "Polish" +msgstr "البولندية" + +#: extra/ocr/OCRSpace.py:7 +msgid "Portuguese" +msgstr "البرتغالية" + +#: extra/ocr/OCRSpace.py:7 +msgid "Russian" +msgstr "الروسية" + +#: extra/ocr/OCRSpace.py:7 +msgid "Spanish" +msgstr "الإسبانية" + +#: extra/ocr/OCRSpace.py:7 +msgid "Turkish" +msgstr "التركية" + +#: extra/translator/wx_ui.py:25 +msgid "Translate message" +msgstr "ترجم الرسالة" + +#: extra/translator/wx_ui.py:29 +#, fuzzy +msgid "Translation engine" +msgstr "تمت ترجمته" + +#: extra/translator/wx_ui.py:32 +msgid "Target language" +msgstr "اللغة الهدف" + +#: keystrokeEditor/wx_ui.py:8 +msgid "Keystroke editor" +msgstr "محرر مفاتيح الإختصار" + +#: keystrokeEditor/wx_ui.py:11 +msgid "Select a keystroke to edit" +msgstr "إختر مفتاح الإختصار الذي تود تحريره" + +#: keystrokeEditor/wx_ui.py:12 +#: wxUI/dialogs/mastodon/filters/manage_filters.py:18 +#: wxUI/dialogs/mastodon/userActions.py:9 +#: wxUI/dialogs/mastodon/userActions.py:18 +#: wxUI/dialogs/mastodon/userActions.py:19 +msgid "Action" +msgstr "الإجراء" + +#: keystrokeEditor/wx_ui.py:12 +msgid "Keystroke" +msgstr "مفتاح الإختصار" + +#: keystrokeEditor/wx_ui.py:17 +#: wxUI/dialogs/mastodon/filters/manage_filters.py:23 +#: wxUI/dialogs/userAliasDialogs.py:53 +msgid "Edit" +msgstr "حرر" + +#: keystrokeEditor/wx_ui.py:19 keystrokeEditor/wx_ui.py:49 +#, fuzzy +msgid "Undefine keystroke" +msgstr "جاري تحرير مفتاح الإختصار" + +#: keystrokeEditor/wx_ui.py:20 +msgid "Execute action" +msgstr "ينفذ المهمة" + +#: keystrokeEditor/wx_ui.py:21 wxUI/dialogs/userAliasDialogs.py:25 +msgid "Close" +msgstr "إغلاق" + +#: keystrokeEditor/wx_ui.py:41 +msgid "Undefined" +msgstr "" + +#: keystrokeEditor/wx_ui.py:49 +#, fuzzy +msgid "Are you sure you want to undefine this keystroke?" +msgstr "هل أنت متأكد من رغبتك بإزالة هذه القائمة؟" + +#: keystrokeEditor/wx_ui.py:53 +msgid "Editing keystroke" +msgstr "جاري تحرير مفتاح الإختصار" + +#: keystrokeEditor/wx_ui.py:56 +msgid "Control" +msgstr "مفتاح التحكم" + +#: keystrokeEditor/wx_ui.py:57 +msgid "Alt" +msgstr "مفتاح القائمة" + +#: keystrokeEditor/wx_ui.py:58 +msgid "Shift" +msgstr "مفتاح التبويبة" + +#: keystrokeEditor/wx_ui.py:59 +msgid "Windows" +msgstr "مفتاح الويندوز" + +#: keystrokeEditor/wx_ui.py:65 +msgid "Key" +msgstr "مفتاح" + +#: keystrokeEditor/wx_ui.py:70 wxUI/dialogs/find.py:21 +#: wxUI/dialogs/mastodon/showUserProfile.py:31 +#: wxUI/dialogs/userAliasDialogs.py:23 +msgid "OK" +msgstr "موافق" + +#: keystrokeEditor/wx_ui.py:83 +msgid "You need to use the Windows key" +msgstr "تحتاج إلى إستخدام مفتاح الويندوز" + +#: keystrokeEditor/wx_ui.py:83 keystrokeEditor/wx_ui.py:86 +msgid "Invalid keystroke" +msgstr "مفتاح إختصار غير مقبول" + +#: keystrokeEditor/wx_ui.py:86 +msgid "You must provide a character for the keystroke" +msgstr "يجب أن تختار حرفا لمفتاح الإختصار" + +#: keystrokeEditor/actions/mastodon.py:3 +msgid "Go up in the current buffer" +msgstr "اذهب لأعلى القائمة الحالية" + +#: keystrokeEditor/actions/mastodon.py:4 +msgid "Go down in the current buffer" +msgstr "اذهب لأسفل القائمة الحالية" + +#: keystrokeEditor/actions/mastodon.py:5 +msgid "Go to the previous buffer" +msgstr "انتقل إلى التبويبة السابقة" + +#: keystrokeEditor/actions/mastodon.py:6 +msgid "Go to the next buffer" +msgstr "انتقل إلى لتبويبة التالية" + +#: keystrokeEditor/actions/mastodon.py:7 +msgid "Focus the next session" +msgstr "إنتقل للجلسة التالية." + +#: keystrokeEditor/actions/mastodon.py:8 +msgid "Focus the previous session" +msgstr "إنتقل للجلسة السابقة." + +#: keystrokeEditor/actions/mastodon.py:9 +msgid "Show or hide the GUI" +msgstr "أظهِرْ أو أخفِ واجهةَ البرنامج" + +# | msgid "Create a new list" +#: keystrokeEditor/actions/mastodon.py:10 +#, fuzzy +msgid "Make a new post" +msgstr "إنشء قائمة جديدة" + +#: keystrokeEditor/actions/mastodon.py:11 wxUI/buffers/mastodon/base.py:26 +#: wxUI/buffers/mastodon/conversationList.py:25 +msgid "Reply" +msgstr "الرد" + +#: keystrokeEditor/actions/mastodon.py:12 wxUI/buffers/mastodon/base.py:25 +#: wxUI/dialogs/mastodon/dialogs.py:7 +msgid "Boost" +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:13 +msgid "Send direct message" +msgstr "إرسل رسالة خاصة " + +#: keystrokeEditor/actions/mastodon.py:14 +msgid "Add post to favorites" +msgstr "" + +# | msgid "Remove from list" +#: keystrokeEditor/actions/mastodon.py:15 +#, fuzzy +msgid "Remove post from favorites" +msgstr "حذف من قائمة" + +#: keystrokeEditor/actions/mastodon.py:16 +msgid "Add/remove post from favorites" +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:17 +msgid "Open the user actions dialogue" +msgstr "افتح صندوق الحوار لإجراءات المستخدم" + +#: keystrokeEditor/actions/mastodon.py:18 +#, fuzzy +msgid "See user details" +msgstr "احذف مستخدما" + +# | msgid "Show tweet" +#: keystrokeEditor/actions/mastodon.py:19 +#, fuzzy +msgid "Show post" +msgstr "إظهار التغريدة" + +#: keystrokeEditor/actions/mastodon.py:20 +msgid "Quit" +msgstr "الخروج" + +#: keystrokeEditor/actions/mastodon.py:21 +msgid "Open user timeline" +msgstr "إفتح سياق المستخدم" + +#: keystrokeEditor/actions/mastodon.py:22 +msgid "Destroy buffer" +msgstr "إحذف الصفحة" + +# | msgid "Interact with the currently focused tweet." +#: keystrokeEditor/actions/mastodon.py:23 +#, fuzzy +msgid "Interact with the currently focused post." +msgstr "التفاعل مع التغريدة المختارة حاليا" + +#: keystrokeEditor/actions/mastodon.py:24 +msgid "Open URL" +msgstr "إفتح الرابط" + +#: keystrokeEditor/actions/mastodon.py:25 +#, fuzzy +msgid "View in browser" +msgstr "البحث في تويتر" + +#: keystrokeEditor/actions/mastodon.py:26 +msgid "Increase volume by 5%" +msgstr "زيادة علو الصوت %5" + +#: keystrokeEditor/actions/mastodon.py:27 +msgid "Decrease volume by 5%" +msgstr "إنقاص علو الصوت %5" + +#: keystrokeEditor/actions/mastodon.py:28 +msgid "Jump to the first element of a buffer" +msgstr "القفز إلى أول عنصر في الصفحة" + +#: keystrokeEditor/actions/mastodon.py:29 +msgid "Jump to the last element of the current buffer" +msgstr "القفز إلى آخر عنصر في الصفحة الحالية" + +#: keystrokeEditor/actions/mastodon.py:30 +msgid "Jump 20 elements up in the current buffer" +msgstr "القفز إلى 20 عنصر للأعلى في الصفحة الحالية" + +#: keystrokeEditor/actions/mastodon.py:31 +msgid "Jump 20 elements down in the current buffer" +msgstr "القفز إلى 20 عنصر أسفل في الصفحة الحالية" + +# | msgid "Delete" +#: keystrokeEditor/actions/mastodon.py:33 +#, fuzzy +msgid "Delete post" +msgstr "حذف" + +#: keystrokeEditor/actions/mastodon.py:34 +msgid "Empty the current buffer" +msgstr "إفراغ السياق الزمني الحالي" + +#: keystrokeEditor/actions/mastodon.py:35 +msgid "Repeat last item" +msgstr "إعد العنصر الأخير" + +#: keystrokeEditor/actions/mastodon.py:36 +msgid "Copy to clipboard" +msgstr "إنسخ إلى لوحة النسخ" + +#: keystrokeEditor/actions/mastodon.py:39 +msgid "Mute/unmute the active buffer" +msgstr "كتم / إلغاء كتم الصفحة النَشِطة" + +#: keystrokeEditor/actions/mastodon.py:40 +msgid "Mute/unmute the current session" +msgstr "كتم / إلغاء الكتم للجلسة الحالية" + +#: keystrokeEditor/actions/mastodon.py:41 +msgid "toggle the automatic reading of incoming tweets in the active buffer" +msgstr "تفعيل القراءة التلقائية للتغريدات الجديدة في الصفحة النَشِطة" + +# | msgid "Search on twitter" +#: keystrokeEditor/actions/mastodon.py:42 +#, fuzzy +msgid "Search on instance" +msgstr "البحث في تويتر" + +#: keystrokeEditor/actions/mastodon.py:43 +msgid "Find a string in the currently focused buffer" +msgstr "ابحث عن نصّ في الصفحة الحالية" + +#: keystrokeEditor/actions/mastodon.py:44 +msgid "Show the keystroke editor" +msgstr "أظهِرْ مُحرِّر مفاتيح الاختصار" + +#: keystrokeEditor/actions/mastodon.py:46 +msgid "load previous items" +msgstr "حمل العناصر السابقة" + +#: keystrokeEditor/actions/mastodon.py:48 +msgid "View conversation" +msgstr "إعرض المحادثة" + +#: keystrokeEditor/actions/mastodon.py:49 +msgid "Check and download updates" +msgstr "فحص وتحميل التحديثات الجديدة" + +#: keystrokeEditor/actions/mastodon.py:50 +msgid "Opens the global settings dialogue" +msgstr "افتح صندوق حوار الخيارات" + +#: keystrokeEditor/actions/mastodon.py:52 +msgid "Opens the account settings dialogue" +msgstr "افتح صندوق حوار إعدادات الحساب" + +# | msgid "Try to play an audio file" +#: keystrokeEditor/actions/mastodon.py:53 +#, fuzzy +msgid "Try to play a media file" +msgstr "حاول تشغيل مقطع صوتي" + +#: keystrokeEditor/actions/mastodon.py:54 +msgid "Updates the buffer and retrieves possible lost items there." +msgstr "تقوم بتحديث الصفحة وتعيد بعض العناصر التي من الممكن أن تكون قد ضاعت بها." + +#: keystrokeEditor/actions/mastodon.py:55 +msgid "Extracts the text from a picture and displays the result in a dialog." +msgstr "تستخلص النص من الصورة وتعرض النتيجة في صندوق الحوار" + +#: keystrokeEditor/actions/mastodon.py:56 +#, fuzzy +msgid "Adds an alias to an user" +msgstr "إختر القائمة لإضافة المستخدم لها" + +#: sessionmanager/sessionManager.py:69 +#, python-brace-format +msgid "{account_name}@{instance} (Mastodon)" +msgstr "" + +#: sessionmanager/wxUI.py:11 +msgid "Session manager" +msgstr "مدير الجلسة" + +#: sessionmanager/wxUI.py:14 +msgid "Accounts list" +msgstr "قائمة الحسابات" + +#: sessionmanager/wxUI.py:16 +msgid "Account" +msgstr "حسابفك ربط حساب الدروب بوكس." + +#: sessionmanager/wxUI.py:20 +msgid "New account" +msgstr "حساب جديد" + +#: sessionmanager/wxUI.py:22 sessionmanager/wxUI.py:79 +msgid "Remove account" +msgstr "إحذف الحساب" + +#: sessionmanager/wxUI.py:24 +msgid "Global Settings" +msgstr "إعدادات عامة" + +#: sessionmanager/wxUI.py:48 +msgid "You need to configure an account." +msgstr "عليك أن تثبت حساب" + +#: sessionmanager/wxUI.py:48 +msgid "Account Error" +msgstr "خطء في الحساب" + +#: sessionmanager/wxUI.py:54 +msgid "Mastodon" +msgstr "" + +#: sessionmanager/wxUI.py:59 +msgid "" +"You will be prompted for your Mastodon data (instance URL, email address " +"and password) so we can authorise TWBlue in your instance. Would you like" +" to authorise your account now?" +msgstr "" + +#: sessionmanager/wxUI.py:59 +msgid "Authorization" +msgstr "التحقُّق" + +#: sessionmanager/wxUI.py:67 +#, python-format +msgid "Authorized account %d" +msgstr "تم التصريح للحساب %d" + +#: sessionmanager/wxUI.py:73 +msgid "" +"Your access token is invalid or the authorization has failed. Please try " +"again." +msgstr "هناك مشكلة في التصريح. يرجى المحاولة مرة أخرى." + +#: sessionmanager/wxUI.py:73 +msgid "Invalid user token" +msgstr "مفتاح العبور ر غير صحيح" + +#: sessionmanager/wxUI.py:79 +msgid "Do you really want to delete this account?" +msgstr "هل أنت متأكد من رغبتك في حذف هذا الحساب؟" + +#: sessions/base.py:125 +#, python-brace-format +msgid "" +"An exception occurred while saving the {app} database. It will be deleted" +" and rebuilt automatically. If this error persists, send the error log to" +" the {app} developers." +msgstr "" + +#: sessions/base.py:165 +#, python-brace-format +msgid "" +"An exception occurred while loading the {app} database. It will be " +"deleted and rebuilt automatically. If this error persists, send the error" +" log to the {app} developers." +msgstr "" + +# | msgid "dddd, MMMM D, YYYY H:m:s" +#: sessions/mastodon/compose.py:15 sessions/mastodon/compose.py:61 +#, fuzzy +msgid "dddd, MMMM D, YYYY H:m" +msgstr "dddd, MMMM D, YYYY H:m:s" + +# | msgid "{0}. Quoted tweet from @{1}: {2}" +#: sessions/mastodon/compose.py:17 sessions/mastodon/templates.py:74 +#: sessions/mastodon/templates.py:75 +#, fuzzy, python-brace-format +msgid "Boosted from @{}: {}" +msgstr "{0}. إقتبس تغريدة من @{1}: {2}" + +#: sessions/mastodon/compose.py:22 sessions/mastodon/compose.py:81 +#: sessions/mastodon/templates.py:81 sessions/mastodon/templates.py:176 +#, python-brace-format +msgid "hidden by filter {}" +msgstr "" + +#: sessions/mastodon/compose.py:36 sessions/mastodon/templates.py:28 +msgid "dddd, MMMM D, YYYY H:m:s" +msgstr "dddd, MMMM D, YYYY H:m:s" + +# | msgid "" +# | "%s (@%s). %s followers, %s friends, %s tweets. Last tweeted %s. Joined " +# | "Twitter %s" +#: sessions/mastodon/compose.py:38 +#, fuzzy, python-format +msgid "%s (@%s). %s followers, %s following, %s posts. Joined %s" +msgstr "" +"%s (@%s). %s متابعين, %s أصدقاء, %s تغريدات. آخر تغريدة %s. إنضم إلى " +"تويتر في %s" + +#: sessions/mastodon/compose.py:49 +#, python-brace-format +msgid "Last message from {}: {}" +msgstr "" + +# | msgid "{0} is following you." +#: sessions/mastodon/compose.py:64 +#, fuzzy, python-brace-format +msgid "{username} has posted: {status}" +msgstr "{0} يتابعك" + +# | msgid "{0} is following you." +#: sessions/mastodon/compose.py:66 +#, fuzzy, python-brace-format +msgid "{username} has mentioned you: {status}" +msgstr "{0} يتابعك" + +#: sessions/mastodon/compose.py:68 +#, python-brace-format +msgid "{username} has boosted: {status}" +msgstr "" + +#: sessions/mastodon/compose.py:70 +#, python-brace-format +msgid "{username} has added to favorites: {status}" +msgstr "" + +# | msgid "{0} is following you." +#: sessions/mastodon/compose.py:72 +#, fuzzy, python-brace-format +msgid "{username} has followed you." +msgstr "{0} يتابعك" + +# | msgid "{0} is following you." +#: sessions/mastodon/compose.py:74 +#, fuzzy, python-brace-format +msgid "{username} has joined the instance." +msgstr "{0} يتابعك" + +#: sessions/mastodon/compose.py:76 sessions/mastodon/templates.py:171 +#, python-brace-format +msgid "A poll in which you have voted has expired: {status}" +msgstr "" + +# | msgid "{0} is following you." +#: sessions/mastodon/compose.py:78 +#, fuzzy, python-brace-format +msgid "{username} wants to follow you." +msgstr "{0} يتابعك" + +#: sessions/mastodon/session.py:69 +msgid "Please enter your instance URL." +msgstr "" + +#: sessions/mastodon/session.py:69 +msgid "Mastodon instance" +msgstr "" + +#: sessions/mastodon/session.py:80 +msgid "" +"We could not connect to your mastodon instance. Please verify that the " +"domain exists and the instance is accessible via a web browser." +msgstr "" + +# | msgid "&Report an error" +#: sessions/mastodon/session.py:80 +#, fuzzy +msgid "Instance error" +msgstr "إبلغ عن عطل" + +#: sessions/mastodon/session.py:85 +msgid "Enter the verification code" +msgstr "" + +# | msgid "Authorization" +#: sessions/mastodon/session.py:85 +#, fuzzy +msgid "PIN code authorization" +msgstr "التحقُّق" + +#: sessions/mastodon/session.py:94 +msgid "" +"We could not authorice your mastodon account to be used in TWBlue. This " +"might be caused due to an incorrect verification code. Please try to add " +"the session again." +msgstr "" + +# | msgid "Authorization" +#: sessions/mastodon/session.py:94 +#, fuzzy +msgid "Authorization error" +msgstr "التحقُّق" + +#: sessions/mastodon/session.py:215 +#, python-format +msgid "%s succeeded." +msgstr "نجح %s" + +#: sessions/mastodon/templates.py:18 +msgid "$display_name, $text $image_descriptions $date. $source" +msgstr "" + +#: sessions/mastodon/templates.py:19 +msgid "Dm to $recipient_display_name, $text $date" +msgstr "" + +#: sessions/mastodon/templates.py:20 +msgid "" +"$display_name (@$screen_name). $followers followers, $following " +"following, $posts posts. Joined $created_at." +msgstr "" + +#: sessions/mastodon/templates.py:21 +msgid "$display_name $text, $date" +msgstr "" + +#: sessions/mastodon/templates.py:34 +#, python-brace-format +msgid "Content warning: {}" +msgstr "" + +#: sessions/mastodon/templates.py:45 +#, fuzzy, python-brace-format +msgid "Media description: {}" +msgstr "وصف الصورة" + +# | msgid "Followers" +#: sessions/mastodon/templates.py:82 wxUI/dialogs/mastodon/postDialogs.py:49 +#, fuzzy +msgid "Followers only" +msgstr "المتابِعون" + +#: sessions/mastodon/templates.py:94 +#, fuzzy +msgid "Pinned." +msgstr "تم النسخ" + +#: sessions/mastodon/templates.py:157 +#, python-brace-format +msgid "has posted: {status}" +msgstr "" + +#: sessions/mastodon/templates.py:159 +#, python-brace-format +msgid "has mentioned you: {status}" +msgstr "" + +#: sessions/mastodon/templates.py:161 +#, python-brace-format +msgid "has boosted: {status}" +msgstr "" + +#: sessions/mastodon/templates.py:163 +#, python-brace-format +msgid "has added to favorites: {status}" +msgstr "" + +#: sessions/mastodon/templates.py:165 +#, python-brace-format +msgid "has updated a status: {status}" +msgstr "" + +# | msgid "{0} is following you." +#: sessions/mastodon/templates.py:167 +#, fuzzy +msgid "has followed you." +msgstr "{0} يتابعك" + +# | msgid "Remove client" +#: sessions/mastodon/templates.py:169 +#, fuzzy +msgid "has joined the instance." +msgstr "إحذف تطبيق" + +# | msgid "{0} is following you." +#: sessions/mastodon/templates.py:173 +#, fuzzy +msgid "wants to follow you." +msgstr "{0} يتابعك" + +#: update/utils.py:29 +#, python-format +msgid "%d day, " +msgstr "%d يوم" + +#: update/utils.py:31 +#, python-format +msgid "%d days, " +msgstr "%d أيام" + +#: update/utils.py:33 +#, python-format +msgid "%d hour, " +msgstr "%d ساعة" + +#: update/utils.py:35 +#, python-format +msgid "%d hours, " +msgstr "%d ساعات" + +#: update/utils.py:37 +#, python-format +msgid "%d minute, " +msgstr "%d دقيقة" + +#: update/utils.py:39 +#, python-format +msgid "%d minutes, " +msgstr "%d دقائق" + +#: update/utils.py:41 +#, python-format +msgid "%s second" +msgstr "%s ثانية" + +#: update/utils.py:43 +#, python-format +msgid "%s seconds" +msgstr "%s ثواني" + +#: update/wxUpdater.py:11 +#, python-format +msgid "" +"There's a new %s version available, released on %s. Would you like to " +"download it now?\n" +"\n" +" %s version: %s\n" +"\n" +"Changes:\n" +"%s" +msgstr "" +"الإصدار %s متوفر الآن, صدر في %s. هل ترغب بتحميله الآن\n" +"\n" +" %s الإصدار: %s\n" +"\n" +"المستجدات:\n" +"%s" + +# | msgid "" +# | "There's a new %s version available, released on %s. Would you like to " +# | "download it now?\n" +# | "\n" +# | " %s version: %s\n" +# | "Changes:\n" +# | "%s" +#: update/wxUpdater.py:14 +#, fuzzy, python-format +msgid "" +"There's a new %s version available, released on %s. Updates are not " +"automatic in Windows 7, so you would need to visit TWBlue's download " +"website to get the latest version.\n" +"\n" +" %s version: %s\n" +"\n" +"Changes:\n" +"%s" +msgstr "" +"الإصدار %s متوفر الآن, صدر في %s. هل ترغب بتحميله الآن\n" +"\n" +" %s الإصدار: %s\n" +"\n" +"المستجدات:\n" +"%s" + +#: update/wxUpdater.py:16 +#, python-format +msgid "New version for %s" +msgstr "إصدار جديد من %s" + +#: update/wxUpdater.py:23 +msgid "Download in Progress" +msgstr "جاري التحميل" + +#: update/wxUpdater.py:23 +msgid "Downloading the new version..." +msgstr "جاري تحميل الإصدار الجديد" + +#: update/wxUpdater.py:33 +#, python-format +msgid "Updating... %s of %s" +msgstr "جاري التحديث... %s من %s" + +#: update/wxUpdater.py:36 +msgid "" +"The update has been downloaded and installed successfully. Press OK to " +"continue." +msgstr "" +"الإصدار الجديد من TW Blue تم تحميله وتنصيبه. اضغط على زر موافق لبدء تشغيل" +" التطبيق." + +#: update/wxUpdater.py:36 +msgid "Done!" +msgstr "تم الإنتهاء" + +#: wxUI/commonMessageDialogs.py:6 +#, python-brace-format +msgid "Do you really want to close {0}?" +msgstr "هل تىغب حقا إغلاق {0}?" + +#: wxUI/commonMessageDialogs.py:6 +msgid "Exit" +msgstr "الخروج" + +#: wxUI/commonMessageDialogs.py:10 +#, python-brace-format +msgid " {0} must be restarted for these changes to take effect." +msgstr "يجب إعادة تشغيل {0} كي تتفعل التغييرات." + +#: wxUI/commonMessageDialogs.py:10 +#, python-brace-format +msgid "Restart {0} " +msgstr "إعادة تشغيل {0} " + +#: wxUI/commonMessageDialogs.py:13 +msgid "" +"Are you sure you want to delete this user from the database? This user " +"will not appear in autocomplete results anymore." +msgstr "" +"هل أنت متأكد من رغبتك في حذف هذا المستخدم من قاعدة البيانات؟ لن يظهر " +"المستخدم في قائمة التعبئة التلقائية بعد هذا." + +#: wxUI/commonMessageDialogs.py:13 +msgid "Confirm" +msgstr "تأكيد" + +#: wxUI/commonMessageDialogs.py:16 +msgid "" +"Do you really want to empty this buffer? It's items will be removed from" +" the list but not from Twitter" +msgstr "" +"هل أنت متأكد من رغبتك بإفراغ هذه الصفحة؟ ستزال التغريدات من هذه الصفحة " +"فقط وليس من تويتر" + +#: wxUI/commonMessageDialogs.py:16 wxUI/dialogs/mastodon/dialogs.py:31 +msgid "Empty buffer" +msgstr "إفراغ السياق الزمني" + +#: wxUI/commonMessageDialogs.py:20 +msgid "Do you really want to destroy this buffer?" +msgstr "هل أنت متأكد من رغبتك في إزالة هذه الصفحة؟" + +#: wxUI/commonMessageDialogs.py:23 +msgid "That user does not exist" +msgstr "هذا المستخدم غير موجود" + +#: wxUI/commonMessageDialogs.py:26 +msgid "A timeline for this user already exists. You can't open another" +msgstr "يوجد سياق زمني لهذا المستخدم بالفعل، لا يمكن فتحُ آخر." + +#: wxUI/commonMessageDialogs.py:26 +msgid "Existing timeline" +msgstr "السياق الزمني موجود مسبقا" + +#: wxUI/commonMessageDialogs.py:29 +#, python-brace-format +msgid "" +"If you like {0} we need your help to keep it going. Help us by donating " +"to the project. This will help us pay for the server, the domain and some" +" other things to ensure that {0} will be actively maintained. Your " +"donation will give us the means to continue the development of {0}, and " +"to keep {0} free. Would you like to donate now?" +msgstr "" +"إذا كنت تحب {0} فأننا بحاجة لمساعدتك لإستمراريته. ساعدنا بتبرعك للمشروع." +" هذا سوف يساعدنا على دفع فواتير الخادم, فاتورة النطاق, وأشياء أخرى كي " +"يستمر تطوير {0} وكي يبقى مجانيا. هل ترغب أن تتبرع الآن؟" + +#: wxUI/commonMessageDialogs.py:29 +msgid "We need your help" +msgstr "نحن بحاجة لمساعدتك" + +#: wxUI/commonMessageDialogs.py:33 wxUI/dialogs/mastodon/postDialogs.py:207 +msgid "Information" +msgstr "معلومات" + +#: wxUI/commonMessageDialogs.py:36 +msgid "The configuration file is invalid." +msgstr "" + +#: wxUI/commonMessageDialogs.py:39 +#, python-brace-format +msgid "" +"{0} quit unexpectedly the last time it was run. If the problem persists, " +"please report it to the {0} developers." +msgstr "" + +#: wxUI/commonMessageDialogs.py:39 +msgid "Warning" +msgstr "تحذير" + +#: wxUI/commonMessageDialogs.py:45 +#, python-brace-format +msgid "Sorry, you can't update while running {} from source." +msgstr "" + +#: wxUI/commonMessageDialogs.py:49 +msgid "the provided instance is invalid. Please try again." +msgstr "" + +#: wxUI/commonMessageDialogs.py:49 +#, fuzzy +msgid "Invalid instance" +msgstr "مفتاح إختصار غير مقبول" + +#: wxUI/commonMessageDialogs.py:52 +msgid "" +"TWBlue was unable to add or update the filter with the specified " +"settings. Please try again." +msgstr "" + +#: wxUI/commonMessageDialogs.py:55 +msgid "" +"TWBlue was unable to load your filters from the instance. Please try " +"again." +msgstr "" + +#: wxUI/commonMessageDialogs.py:58 +#, fuzzy +msgid "Do you really want to delete this filter ?" +msgstr "هل أنت متأكد من رغبتك في حذف هذا الحساب؟" + +#: wxUI/commonMessageDialogs.py:58 +#, fuzzy +msgid "Delete filter" +msgstr "إنشء قائمة جديدة" + +#: wxUI/commonMessageDialogs.py:61 +msgid "TWBlue was unable to remove the filter you specified. Please try again." +msgstr "" + +#: wxUI/sysTrayIcon.py:36 wxUI/view.py:25 +msgid "&Global settings" +msgstr "&الإعدادات العامة" + +#: wxUI/sysTrayIcon.py:37 wxUI/view.py:24 +msgid "Account se&ttings" +msgstr "إعدادات الحساب" + +#: wxUI/sysTrayIcon.py:39 +msgid "&Show / hide" +msgstr "&الإظهار او الإخفاء" + +#: wxUI/sysTrayIcon.py:40 wxUI/view.py:74 +msgid "&Documentation" +msgstr "دليل المستخدم" + +#: wxUI/sysTrayIcon.py:41 +msgid "Check for &updates" +msgstr "فحص &التحديثات الجديدة" + +#: wxUI/sysTrayIcon.py:42 +msgid "&Exit" +msgstr "&الخروج" + +#: wxUI/view.py:16 +msgid "&Manage accounts" +msgstr "&إدر الحسابات" + +#: wxUI/view.py:17 +msgid "&Update profile" +msgstr "حدّث الملف الشخصي" + +#: wxUI/view.py:18 +msgid "&Hide window" +msgstr "إخفاء شاشة التطبيق" + +#: wxUI/view.py:20 +msgid "&Lists manager" +msgstr "مدير القوائم" + +#: wxUI/view.py:23 +msgid "&Edit keystrokes" +msgstr "حرر مفاتيح الإختصار" + +#: wxUI/view.py:26 +msgid "E&xit" +msgstr "الخروج" + +# | msgid "Remove from list" +#: wxUI/view.py:34 +#, fuzzy +msgid "&Remove from favorites" +msgstr "حذف من قائمة" + +#: wxUI/view.py:47 +msgid "&Add to list" +msgstr "الإضافة إلى قائمة" + +#: wxUI/view.py:48 +msgid "R&emove from list" +msgstr "حذف من قائمة" + +#: wxUI/view.py:49 +msgid "Show user &profile" +msgstr "إظهار الملف الشخصي للمستخدم" + +#: wxUI/view.py:50 +msgid "V&iew likes" +msgstr "عرض قائمة الإعجابات" + +#: wxUI/view.py:54 +msgid "&Update buffer" +msgstr "تحديث السياق الزمني" + +#: wxUI/dialogs/mastodon/communityTimeline.py:9 wxUI/view.py:55 +msgid "Create community timeline" +msgstr "" + +#: wxUI/view.py:56 +msgid "New &trending topics buffer..." +msgstr "أظهِرْ صفحة جديدة للموضوعات المتداولة" + +#: wxUI/view.py:59 +msgid "Find a string in the currently focused buffer..." +msgstr "ابحث عن نصّ في القائمة الحالية" + +#: wxUI/view.py:60 +msgid "&Load previous items" +msgstr "&تحميل العناصر السابقة" + +#: wxUI/dialogs/mastodon/userActions.py:21 wxUI/view.py:62 +msgid "&Mute" +msgstr "كتم" + +#: wxUI/view.py:63 +msgid "&Autoread" +msgstr "&قراءة تلقائية" + +#: wxUI/view.py:64 +msgid "&Clear buffer" +msgstr "مسح التغريدات من الصفحة" + +#: wxUI/view.py:65 +msgid "&Destroy" +msgstr "إ&زالة" + +#: wxUI/view.py:69 +msgid "&Seek back 5 seconds" +msgstr "&تراجع للخلف خمس ثواني" + +#: wxUI/view.py:70 +msgid "&Seek forward 5 seconds" +msgstr "&تقدم للأمام خمس ثواني" + +#: wxUI/view.py:75 +msgid "Sounds &tutorial" +msgstr "مُعَلِم الأصوات" + +#: wxUI/view.py:76 +msgid "&What's new in this version?" +msgstr "ما هو الجديد في هذا الإصدار" + +#: wxUI/view.py:77 +msgid "&Check for updates" +msgstr "فحص التحديثات الجديدة" + +#: wxUI/view.py:78 +msgid "&Report an error" +msgstr "إبلغ عن عطل" + +#: wxUI/view.py:79 +#, python-brace-format +msgid "{0}'s &website" +msgstr "&website الخاص ب{0} " + +#: wxUI/view.py:80 +msgid "Get soundpacks for TWBlue" +msgstr "" + +#: wxUI/view.py:81 +#, python-brace-format +msgid "About &{0}" +msgstr "عن &{0}" + +#: wxUI/view.py:84 +msgid "&Application" +msgstr "خيارات التطبيق" + +#: wxUI/view.py:85 +msgid "&Tweet" +msgstr "تغريدة" + +#: wxUI/dialogs/mastodon/userActions.py:10 wxUI/view.py:86 +msgid "&User" +msgstr "المستخدم" + +#: wxUI/view.py:87 +msgid "&Buffer" +msgstr "الصفحة" + +#: wxUI/view.py:88 +msgid "&Audio" +msgstr "&صوت" + +#: wxUI/view.py:89 +msgid "&Help" +msgstr "المساعدة" + +#: wxUI/view.py:175 +msgid "Address" +msgstr "عنوان" + +#: wxUI/view.py:206 +#, python-brace-format +msgid "Your {0} version is up to date" +msgstr "برنامجُ {0} مُحدّثٌ لآخر إصدار" + +#: wxUI/view.py:206 +msgid "Update" +msgstr "حَدِث" + +#: wxUI/buffers/panels.py:12 wxUI/buffers/panels.py:20 +msgid "Login" +msgstr "سجل الدخول" + +#: wxUI/buffers/panels.py:14 +msgid "Log in automatically" +msgstr "تسجيل الدخول تلقائيا" + +#: wxUI/buffers/panels.py:22 +msgid "Logout" +msgstr "سجل الخروج" + +#: wxUI/buffers/mastodon/base.py:11 +#: wxUI/buffers/mastodon/conversationList.py:11 wxUI/buffers/mastodon/user.py:8 +#: wxUI/dialogs/mastodon/userTimeline.py:10 wxUI/dialogs/userAliasDialogs.py:14 +msgid "User" +msgstr "المستخدم" + +#: wxUI/buffers/mastodon/base.py:11 +#: wxUI/buffers/mastodon/conversationList.py:11 +#: wxUI/buffers/mastodon/notifications.py:11 +#: wxUI/dialogs/mastodon/postDialogs.py:37 +#: wxUI/dialogs/mastodon/postDialogs.py:272 +msgid "Text" +msgstr "النص" + +#: wxUI/buffers/mastodon/base.py:11 +#: wxUI/buffers/mastodon/conversationList.py:11 +#: wxUI/buffers/mastodon/notifications.py:11 +#: wxUI/dialogs/mastodon/postDialogs.py:216 +msgid "Date" +msgstr "تاريخ" + +#: wxUI/buffers/mastodon/base.py:11 +#: wxUI/buffers/mastodon/conversationList.py:11 +msgid "Client" +msgstr "برنامج التحكم" + +#: wxUI/buffers/mastodon/base.py:27 +msgid "Favorite" +msgstr "" + +#: wxUI/buffers/mastodon/base.py:28 +msgid "Bookmark" +msgstr "" + +#: wxUI/buffers/mastodon/base.py:29 +msgid "Direct message" +msgstr "رسالة خاصة" + +#: wxUI/buffers/mastodon/notifications.py:23 +#: wxUI/dialogs/mastodon/dialogs.py:23 +msgid "Dismiss" +msgstr "" + +#: wxUI/buffers/mastodon/user.py:19 wxUI/dialogs/userAliasDialogs.py:48 +#, fuzzy +msgid "Actions" +msgstr "الإجراء" + +# | msgid "Direct Messages" +#: wxUI/buffers/mastodon/user.py:20 +#, fuzzy +msgid "Message" +msgstr "رسائل خاصة" + +#: wxUI/dialogs/configuration.py:15 +#, fuzzy +msgid "&Language" +msgstr "اللغة" + +#: wxUI/dialogs/configuration.py:22 +#, fuzzy, python-brace-format +msgid "&Ask before exiting {0}" +msgstr "إسأل قبل أن تخرج من {0} " + +#: wxUI/dialogs/configuration.py:24 +msgid "&Disable Streaming functions" +msgstr "" + +#: wxUI/dialogs/configuration.py:27 +msgid "&Buffer update interval, in minutes" +msgstr "" + +#: wxUI/dialogs/configuration.py:33 +#, fuzzy, python-brace-format +msgid "Pla&y a sound when {0} launches" +msgstr "إلعب صوتا عند بدء {0} " + +#: wxUI/dialogs/configuration.py:35 +#, fuzzy, python-brace-format +msgid "Sp&eak a message when {0} launches" +msgstr "إقرء رسالة عندما يفتح {0} " + +#: wxUI/dialogs/configuration.py:37 +#, fuzzy +msgid "&Use invisible interface's keyboard shortcuts while GUI is visible" +msgstr "استخدم مفاتيح الاختصار الخاصة بالواجهة المخفية في واجهة التطبيق الظاهرة" + +#: wxUI/dialogs/configuration.py:39 +#, fuzzy +msgid "A&ctivate Sapi5 when any other screen reader is not being run" +msgstr "تشغيل sapi5 عندما لا يكون أي قارء للشاشة يعمل" + +#: wxUI/dialogs/configuration.py:41 +#, fuzzy +msgid "&Hide GUI on launch" +msgstr "إخفاء الواجهة عند البدء" + +#: wxUI/dialogs/configuration.py:43 +msgid "&Read long posts in GUI" +msgstr "" + +#: wxUI/dialogs/configuration.py:46 +#, fuzzy +msgid "&Keymap" +msgstr "خريطة المفاتيح" + +#: wxUI/dialogs/configuration.py:51 +#, fuzzy, python-brace-format +msgid "Check for u&pdates when {0} launches" +msgstr "فحص التحديثات الجديدة عند تشغيل {0} " + +#: wxUI/dialogs/configuration.py:61 +#, fuzzy +msgid "Proxy &type: " +msgstr "نوع خادم البروكسي" + +#: wxUI/dialogs/configuration.py:68 +#, fuzzy +msgid "Proxy s&erver: " +msgstr "خادم الوكيل" + +#: wxUI/dialogs/configuration.py:74 +#, fuzzy +msgid "&Port: " +msgstr "رقم المنفذ;" + +#: wxUI/dialogs/configuration.py:80 +#, fuzzy +msgid "&User: " +msgstr "المستخدم:" + +#: wxUI/dialogs/configuration.py:86 +#, fuzzy +msgid "P&assword: " +msgstr "كلمة المرور:" + +#: wxUI/dialogs/configuration.py:98 +msgid "Enable automatic s&peech feedback" +msgstr "" + +#: wxUI/dialogs/configuration.py:100 +msgid "Enable automatic &Braille feedback" +msgstr "" + +#: wxUI/dialogs/configuration.py:108 +msgid "Buffer" +msgstr "الصفحة" + +#: wxUI/dialogs/configuration.py:108 +msgid "Status" +msgstr "الحالة" + +#: wxUI/dialogs/configuration.py:111 +#, fuzzy +msgid "S&how/hide" +msgstr "إظهار / إخفاء" + +#: wxUI/dialogs/configuration.py:112 +#, fuzzy +msgid "Move &up" +msgstr "التحريك إلى الأعلى" + +#: wxUI/dialogs/configuration.py:113 +#, fuzzy +msgid "Move &down" +msgstr "التحريك إلى الأسفل" + +#: wxUI/dialogs/configuration.py:123 wxUI/dialogs/configuration.py:188 +#: wxUI/dialogs/configuration.py:191 wxUI/dialogs/configuration.py:196 +msgid "Show" +msgstr "إظهر" + +#: wxUI/dialogs/configuration.py:125 wxUI/dialogs/configuration.py:135 +#: wxUI/dialogs/configuration.py:159 wxUI/dialogs/configuration.py:189 +msgid "Hide" +msgstr "إخفي" + +#: wxUI/dialogs/configuration.py:133 wxUI/dialogs/configuration.py:157 +msgid "Select a buffer first." +msgstr "اختَرْ صفحةً أولًا" + +#: wxUI/dialogs/configuration.py:136 wxUI/dialogs/configuration.py:160 +msgid "The buffer is hidden, show it first." +msgstr "الصفحة مخفيّة، اعرضها في البداية" + +#: wxUI/dialogs/configuration.py:139 +msgid "The buffer is already at the top of the list." +msgstr "الصفحة في أعلى القائمة بالفعل" + +#: wxUI/dialogs/configuration.py:163 +msgid "The buffer is already at the bottom of the list." +msgstr "الصفحةُ في أسفل القائمة بالفعل" + +#: wxUI/dialogs/configuration.py:205 +msgid "&LibreTranslate API URL: " +msgstr "" + +#: wxUI/dialogs/configuration.py:211 +msgid "LibreTranslate API &Key (optional): " +msgstr "" + +#: wxUI/dialogs/configuration.py:217 +msgid "&DeepL API Key: " +msgstr "" + +#: wxUI/dialogs/configuration.py:231 +#, python-brace-format +msgid "{0} preferences" +msgstr "{0} الخيارات" + +#: wxUI/dialogs/configuration.py:237 wxUI/dialogs/mastodon/configuration.py:144 +msgid "General" +msgstr "عام" + +#: wxUI/dialogs/configuration.py:242 +msgid "Proxy" +msgstr "خادم الوكيل" + +#: wxUI/dialogs/configuration.py:246 +#, fuzzy +msgid "Translation services" +msgstr "تمت ترجمته" + +#: wxUI/dialogs/configuration.py:251 wxUI/dialogs/mastodon/configuration.py:170 +#, fuzzy +msgid "&Save" +msgstr "حفظ" + +#: wxUI/dialogs/configuration.py:253 +#: wxUI/dialogs/mastodon/communityTimeline.py:27 +#: wxUI/dialogs/mastodon/configuration.py:172 +#: wxUI/dialogs/mastodon/search.py:26 +#: wxUI/dialogs/mastodon/showUserProfile.py:170 +#: wxUI/dialogs/mastodon/updateProfile.py:132 +#: wxUI/dialogs/mastodon/userActions.py:38 +#: wxUI/dialogs/mastodon/userTimeline.py:32 +msgid "&Close" +msgstr "إغ&لاق" + +#: wxUI/dialogs/find.py:13 +msgid "Find in current buffer" +msgstr "إبحث في الصفحة الحالية" + +#: wxUI/dialogs/find.py:14 +msgid "String" +msgstr "جملة" + +#: wxUI/dialogs/find.py:23 wxUI/dialogs/mastodon/showUserProfile.py:33 +msgid "Cancel" +msgstr "إلغاء" + +#: wxUI/dialogs/templateDialogs.py:8 +msgid "Edit Template" +msgstr "" + +#: wxUI/dialogs/templateDialogs.py:13 +msgid "Edit template" +msgstr "" + +#: wxUI/dialogs/templateDialogs.py:17 +#, fuzzy +msgid "Available variables" +msgstr "غير متوفر" + +#: wxUI/dialogs/templateDialogs.py:29 +msgid "Restore template" +msgstr "" + +#: wxUI/dialogs/templateDialogs.py:48 +#, python-brace-format +msgid "Restored template to {}." +msgstr "" + +#: wxUI/dialogs/templateDialogs.py:52 +msgid "" +"the template you have specified include variables that do not exists for " +"the object. Please fix the template and try again. For your reference, " +"you can see a list of all available variables in the variables list while" +" editing your template." +msgstr "" + +#: wxUI/dialogs/templateDialogs.py:52 +#, fuzzy +msgid "Invalid template" +msgstr "مفتاح إختصار غير مقبول" + +#: wxUI/dialogs/urlList.py:6 +msgid "Select URL" +msgstr "اختيار رابط" + +#: wxUI/dialogs/mastodon/userActions.py:13 +#: wxUI/dialogs/mastodon/userTimeline.py:13 wxUI/dialogs/userAliasDialogs.py:13 +msgid "&Autocomplete users" +msgstr "&التعبئة التلقائية للمستخدمون" + +#: wxUI/dialogs/userAliasDialogs.py:18 +#, fuzzy +msgid "Alias" +msgstr "دائما" + +#: wxUI/dialogs/userAliasDialogs.py:41 +#, fuzzy +msgid "Edit user aliases" +msgstr "تحرير قاعدة بيانات المستخدمين ل {0} " + +#: wxUI/dialogs/mastodon/search.py:19 wxUI/dialogs/userAliasDialogs.py:43 +msgid "Users" +msgstr "المستخدمون" + +#: wxUI/dialogs/userAliasDialogs.py:50 +#, fuzzy +msgid "Add alias" +msgstr "الإضافة إلى قائمة" + +#: wxUI/dialogs/userAliasDialogs.py:51 +msgid "Adds a new user alias" +msgstr "" + +#: wxUI/dialogs/userAliasDialogs.py:54 +#, fuzzy +msgid "Edit the currently focused user Alias." +msgstr "التفاعل مع التغريدة المختارة حاليا" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:26 +#: wxUI/dialogs/mastodon/filters/manage_filters.py:24 +#: wxUI/dialogs/userAliasDialogs.py:57 +msgid "Remove" +msgstr "حذف" + +#: wxUI/dialogs/userAliasDialogs.py:58 +#, fuzzy +msgid "Remove the currently focused user alias." +msgstr "ابحث عن نصّ في القائمة الحالية" + +#: wxUI/dialogs/userAliasDialogs.py:82 +#, fuzzy +msgid "Are you sure you want to delete this user alias?" +msgstr "هل أنت متأكد من رغبتك بإزالة هذه القائمة؟" + +#: wxUI/dialogs/userAliasDialogs.py:82 +#, fuzzy +msgid "Remove user alias" +msgstr "احذف مستخدما" + +#: wxUI/dialogs/userAliasDialogs.py:93 +#, fuzzy +msgid "User alias" +msgstr "تفاصيل المستخدم" + +#: wxUI/dialogs/userList.py:27 +#, fuzzy +msgid "View profile" +msgstr "حدّث الملف الشخصي" + +#: wxUI/dialogs/mastodon/communityTimeline.py:10 +#, fuzzy +msgid "Community URL" +msgstr "مفتاح التحكم" + +#: wxUI/dialogs/mastodon/communityTimeline.py:16 +#: wxUI/dialogs/mastodon/userTimeline.py:18 +msgid "Buffer type" +msgstr "نوع الصفحة" + +#: wxUI/dialogs/mastodon/communityTimeline.py:17 +#, fuzzy +msgid "&Local timeline" +msgstr "السياقات الزمنية" + +#: wxUI/dialogs/mastodon/communityTimeline.py:18 +#, fuzzy +msgid "&Federated Timeline" +msgstr "إفتح سياق المستخدم" + +#: wxUI/dialogs/mastodon/communityTimeline.py:25 +#: wxUI/dialogs/mastodon/search.py:24 +#: wxUI/dialogs/mastodon/updateProfile.py:130 +#: wxUI/dialogs/mastodon/userActions.py:36 +#: wxUI/dialogs/mastodon/userTimeline.py:30 +msgid "&OK" +msgstr "&موافق" + +#: wxUI/dialogs/mastodon/configuration.py:14 +#, fuzzy +msgid "User autocompletion settings" +msgstr "إعدادات الإكمال التلقائي" + +#: wxUI/dialogs/mastodon/configuration.py:15 +msgid "" +"Scan acc&ount and add followers and following users to the user " +"autocompletion database" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:16 +#, fuzzy +msgid "&Manage autocompletion database" +msgstr "إدارة قاعدة بيانات التعبئة التلقائية" + +#: wxUI/dialogs/mastodon/configuration.py:21 +msgid "&Disable Streaming API endpoints" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:23 +#, fuzzy +msgid "&Relative timestamps" +msgstr "أوقات نسبية" + +#: wxUI/dialogs/mastodon/configuration.py:25 +msgid "" +"R&ead preferences from instance (default visibility when publishing and " +"displaying sensitive content)" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:28 +#, fuzzy +msgid "&Items on each API call" +msgstr "عدد العناصر في كل تحديث" + +# | msgid "" +# | "Inverted buffers: The newest tweets will be shown at the beginning while +# " +# | "the oldest at the end" +#: wxUI/dialogs/mastodon/configuration.py:34 +#, fuzzy +msgid "" +"I&nverted buffers: The newest items will be shown at the beginning while " +"the oldest at the end" +msgstr "" +"عكس عرض التغريدات: التغريدة الأحدث ستُعرَض في بداية القائمة بينما تكون " +"التغريدة الأقدم في نهايتها." + +#: wxUI/dialogs/mastodon/configuration.py:36 +msgid "&Ask confirmation before boosting a post" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:38 +#, fuzzy +msgid "S&how screen names instead of full names" +msgstr "تعرض أسماء الإستعارة بدلا من الأسماء الكاملة" + +#: wxUI/dialogs/mastodon/configuration.py:40 +msgid "Hide e&mojis in usernames" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:42 +#, fuzzy +msgid "" +"&Number of items per buffer to cache in database (0 to disable caching, " +"blank for unlimited)" +msgstr "" +"عددُ العناصر في كل صفحة للحفظ في قاعدة البيانات (0 لتعطيل الحفظ، مسافة " +"فارغة للحفظ غير المحدود)" + +#: wxUI/dialogs/mastodon/configuration.py:46 +msgid "" +"&Load cache for items in memory (much faster in big datasets but requires" +" more RAM)" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:53 +#, python-brace-format +msgid "Edit template for &posts. Current template: {}" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:55 +#, python-brace-format +msgid "Edit template for c&onversations. Current template: {}" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:57 +#, python-brace-format +msgid "Edit template for p&ersons. Current template: {}" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:65 +#, fuzzy +msgid "&Volume" +msgstr "مستوا الصوت" + +#: wxUI/dialogs/mastodon/configuration.py:76 +#, fuzzy +msgid "S&ession mute" +msgstr "كتمُ التنبيهات الصوتية للجلسة" + +#: wxUI/dialogs/mastodon/configuration.py:78 +#, fuzzy +msgid "&Output device" +msgstr "جهاز إخراج الصوت" + +#: wxUI/dialogs/mastodon/configuration.py:85 +#, fuzzy +msgid "&Input device" +msgstr "جهاز إدخال الصوت" + +#: wxUI/dialogs/mastodon/configuration.py:93 +#, fuzzy +msgid "Sound &pack" +msgstr "حزمة صوت" + +# | msgid "Indicate audio tweets with sound" +#: wxUI/dialogs/mastodon/configuration.py:99 +#, fuzzy +msgid "Indicate &audio or video in posts with sound" +msgstr "يشير إلى تغريدية صوتية من خلال نغمة" + +# | msgid "Indicate tweets containing images with sound" +#: wxUI/dialogs/mastodon/configuration.py:101 +#, fuzzy +msgid "Indicate posts containing i&mages with sound" +msgstr "يشير إلى تغريدة تتضمن صور من خلال نغمة" + +#: wxUI/dialogs/mastodon/configuration.py:124 +#, fuzzy +msgid "&Language for OCR" +msgstr "لغة التعرّف الضوئي على النصلغة النتائج" + +#: wxUI/dialogs/mastodon/configuration.py:149 +msgid "Feedback" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:153 +msgid "Buffers" +msgstr "الصفحات" + +#: wxUI/dialogs/mastodon/configuration.py:157 +msgid "Templates" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:161 +msgid "Sound" +msgstr "الصوت" + +#: wxUI/dialogs/mastodon/configuration.py:165 +msgid "Extras" +msgstr "إضافات" + +# | msgid "Would you like to add a comment to this tweet?" +#: wxUI/dialogs/mastodon/dialogs.py:7 +#, fuzzy +msgid "Would you like to share this post?" +msgstr "هل ترغب بإضافة تعليق إلى هذه التغريدة؟" + +# | msgid "" +# | "Do you really want to delete this tweet? It will be deleted from Twitter +# " +# | "as well." +#: wxUI/dialogs/mastodon/dialogs.py:15 +#, fuzzy +msgid "" +"Do you really want to delete this post? It will be deleted from the " +"instance as well." +msgstr "هل ترغبُ فعلا في حذفِ هذه التغريدة؟ سيؤدي ذلك لحذفها من تويتر أيضا." + +#: wxUI/dialogs/mastodon/dialogs.py:15 +msgid "Delete" +msgstr "حذف" + +#: wxUI/dialogs/mastodon/dialogs.py:23 +msgid "" +"Are you sure you want to dismiss this notification? If you dismiss a " +"mention notification, it also disappears from your mentions buffer. The " +"post is not going to be deleted from the instance, though." +msgstr "" + +# | msgid "" +# | "Do you really want to empty this buffer? It's items will be removed from +# " +# | "the list but not from Twitter" +#: wxUI/dialogs/mastodon/dialogs.py:31 +#, fuzzy +msgid "" +"Do you really want to empty this buffer? It's items will be removed from" +" the list but not from the instance" +msgstr "" +"هل أنت متأكد من رغبتك بإفراغ هذه الصفحة؟ ستزال التغريدات من هذه الصفحة " +"فقط وليس من تويتر" + +# | msgid "This user has no tweets. {0} can't create a timeline." +#: wxUI/dialogs/mastodon/dialogs.py:38 +#, fuzzy, python-brace-format +msgid "This user has no posts. {0} can't create a timeline." +msgstr "هذا المستخدم لا يوجد له أية تغريدات. لا يمكن فتح سياق زمني خاص به." + +# | msgid "This user has no favorited tweets. {0} can't create a timeline." +#: wxUI/dialogs/mastodon/dialogs.py:43 +#, fuzzy, python-brace-format +msgid "This user has no favorited posts. {0} can't create a timeline." +msgstr "" +"هذا المستخدم لا يوجد له أية تغريدات مُفضّلة. لا يمكن ل{0} فتح سياق زمني " +"خاص بها" + +# | msgid "This user has no followers. {0} can't create a timeline." +#: wxUI/dialogs/mastodon/dialogs.py:48 +#, fuzzy, python-brace-format +msgid "This user has no followers yet. {0} can't create a timeline." +msgstr "هذا المستخدم لا يوجد له أي مُتابعين. لا يمكن فتح سياق زمني له." + +# | msgid "This user has no followers. {0} can't create a timeline." +#: wxUI/dialogs/mastodon/dialogs.py:53 +#, fuzzy, python-brace-format +msgid "This user is not following anyone. {0} can't create a timeline." +msgstr "هذا المستخدم لا يوجد له أي مُتابعين. لا يمكن فتح سياق زمني له." + +#: wxUI/dialogs/mastodon/dialogs.py:60 +#, python-brace-format +msgid "The focused item has no user in it. {} ca't open a user profile" +msgstr "" + +# | msgid "R&emove from list" +#: wxUI/dialogs/mastodon/menus.py:13 wxUI/dialogs/mastodon/menus.py:41 +#, fuzzy +msgid "R&emove from favorites" +msgstr "حذف من قائمة" + +#: wxUI/dialogs/mastodon/menus.py:15 wxUI/dialogs/mastodon/menus.py:43 +msgid "&Open URL" +msgstr "&إفتح الرابط" + +# | msgid "Search on twitter" +#: wxUI/dialogs/mastodon/menus.py:17 wxUI/dialogs/mastodon/menus.py:47 +#, fuzzy +msgid "&Open in instance" +msgstr "البحث في تويتر" + +#: wxUI/dialogs/mastodon/menus.py:19 wxUI/dialogs/mastodon/menus.py:45 +msgid "&Play audio" +msgstr "&شغل مقطع صوتي" + +#: wxUI/dialogs/mastodon/menus.py:23 wxUI/dialogs/mastodon/menus.py:51 +msgid "&Copy to clipboard" +msgstr "&إنسخ إلى الحافظة" + +#: wxUI/dialogs/mastodon/menus.py:27 wxUI/dialogs/mastodon/menus.py:55 +msgid "&User actions..." +msgstr "&إجراآت المستخدم" + +#: wxUI/dialogs/mastodon/menus.py:53 +msgid "&Dismiss" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:20 +#: wxUI/dialogs/mastodon/postDialogs.py:38 +msgid "Attachments" +msgstr "مُرفقات" + +#: wxUI/dialogs/mastodon/postDialogs.py:24 +msgid "File" +msgstr "ملف" + +#: wxUI/dialogs/mastodon/postDialogs.py:25 +msgid "Type" +msgstr "النوع" + +#: wxUI/dialogs/mastodon/postDialogs.py:26 +#: wxUI/dialogs/mastodon/postDialogs.py:141 +msgid "Description" +msgstr "الوصف" + +# | msgid "Remove client" +#: wxUI/dialogs/mastodon/postDialogs.py:28 +#, fuzzy +msgid "Remove Attachment" +msgstr "إحذف تطبيق" + +#: wxUI/dialogs/mastodon/postDialogs.py:33 +msgid "Post in the thread" +msgstr "" + +# | msgid "Remove from list" +#: wxUI/dialogs/mastodon/postDialogs.py:40 +#, fuzzy +msgid "Remove post" +msgstr "حذف من قائمة" + +#: wxUI/dialogs/mastodon/postDialogs.py:47 +msgid "&Visibility" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:54 +#, fuzzy +msgid "Language" +msgstr "اللغة" + +#: wxUI/dialogs/mastodon/postDialogs.py:58 +msgid "A&dd" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:59 +msgid "S&ensitive content" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:64 +msgid "Content warning" +msgstr "" + +# | msgid "Add to list" +#: wxUI/dialogs/mastodon/postDialogs.py:71 +#, fuzzy +msgid "Add p&ost" +msgstr "الإضافة إلى قائمة" + +#: wxUI/dialogs/mastodon/postDialogs.py:75 +msgid "Auto&complete users" +msgstr "&إكمال تلقائي للمستخدمين" + +# | msgid "Check &spelling..." +#: wxUI/dialogs/mastodon/postDialogs.py:77 +#, fuzzy +msgid "Check &spelling" +msgstr "تدقيق إملائي" + +#: wxUI/dialogs/mastodon/postDialogs.py:79 +#, fuzzy +msgid "&Translate" +msgstr "تمت ترجمته" + +# | msgid "Tweet - %i characters " +#: wxUI/dialogs/mastodon/postDialogs.py:106 +#, fuzzy, python-brace-format +msgid "Post - {} characters" +msgstr "تغريدة - %i أحرف" + +#: wxUI/dialogs/mastodon/postDialogs.py:130 +msgid "Image" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:132 +#, fuzzy +msgid "Video" +msgstr "إخفي" + +# | msgid "&Audio" +#: wxUI/dialogs/mastodon/postDialogs.py:134 +#, fuzzy +msgid "Audio" +msgstr "&صوت" + +#: wxUI/dialogs/mastodon/postDialogs.py:136 +msgid "Poll" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:141 +msgid "please provide a description" +msgstr "فضلًا أضِفْ وصفًا" + +#: wxUI/dialogs/mastodon/postDialogs.py:148 +msgid "Select the picture to be uploaded" +msgstr "إختر الصورة التي ترغب بتحميلها" + +#: wxUI/dialogs/mastodon/postDialogs.py:148 +msgid "Image files (*.png, *.jpg, *.gif)|*.png; *.jpg; *.gif" +msgstr "ملفات الصور (*.png, *.jpg, *.gif)|*.png; *.jpg; *.gif" + +#: wxUI/dialogs/mastodon/postDialogs.py:155 +#, fuzzy +msgid "Select the video to be uploaded" +msgstr "إختر الصورة التي ترغب بتحميلها" + +# | msgid "Audio Files (*.mp3, *.ogg, *.wav)|*.mp3; *.ogg; *.wav" +#: wxUI/dialogs/mastodon/postDialogs.py:155 +#, fuzzy +msgid "Video files (*.mp4, *.mov, *.m4v, *.webm)| *.mp4; *.m4v; *.mov; *.webm" +msgstr "الملفات الصوتية (*.mp3, *.ogg, *.wav)|*.mp3; *.ogg; *.wav" + +#: wxUI/dialogs/mastodon/postDialogs.py:162 +msgid "Select the audio file to be uploaded" +msgstr "إختر الملف الصوتي الذي تريد رفعه" + +#: wxUI/dialogs/mastodon/postDialogs.py:162 +msgid "" +"Audio files (*.mp3, *.ogg, *.wav, *.flac, *.opus, *.aac, *.m4a, " +"*.3gp)|*.mp3; *.ogg; *.wav; *.flac; *.opus; *.aac; *.m4a; *.3gp" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:169 +msgid "" +"It is not possible to add more attachments. Please take into account that" +" You can add only a maximum of 4 images, or one audio, video or poll per" +" post. Please remove other attachments before continuing." +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:169 +#, fuzzy +msgid "Error adding attachment" +msgstr "إضف مرفقا" + +#: wxUI/dialogs/mastodon/postDialogs.py:172 +msgid "" +"You can add a poll or media files. In order to add your poll, please " +"remove other attachments first." +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:172 +#, fuzzy +msgid "Error adding poll" +msgstr "إضف مرفقا" + +# | msgid "Tweet - %i characters " +#: wxUI/dialogs/mastodon/postDialogs.py:177 +#, fuzzy, python-format +msgid "Post - %i characters " +msgstr "تغريدة - %i أحرف" + +#: wxUI/dialogs/mastodon/postDialogs.py:200 +msgid "Image description" +msgstr "وصف الصورة" + +# | msgid "Private" +#: wxUI/dialogs/mastodon/postDialogs.py:210 +#, fuzzy +msgid "Privacy" +msgstr "خاصة" + +#: wxUI/dialogs/mastodon/postDialogs.py:214 +#, fuzzy +msgid "Source" +msgstr "المصدر:" + +#: wxUI/dialogs/mastodon/postDialogs.py:222 +msgid "Boosts" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:224 +msgid "View users who boosted this post" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:231 +msgid "View users who favorited this post" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:239 +#, fuzzy +msgid "Copy link to clipboard" +msgstr "إنسخ إلى لوحة النسخ" + +#: wxUI/dialogs/mastodon/postDialogs.py:241 +#: wxUI/dialogs/mastodon/postDialogs.py:280 +msgid "Check &spelling..." +msgstr "تدقيق إملائي" + +#: wxUI/dialogs/mastodon/postDialogs.py:242 +#: wxUI/dialogs/mastodon/postDialogs.py:281 +msgid "&Translate..." +msgstr "ترجِمْ" + +#: wxUI/dialogs/mastodon/postDialogs.py:243 +#: wxUI/dialogs/mastodon/postDialogs.py:282 +msgid "C&lose" +msgstr "&إغلاق" + +#: wxUI/dialogs/mastodon/postDialogs.py:294 +msgid "Add a poll" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:298 +msgid "Participation time" +msgstr "" + +# | msgid "%d minutes, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "5 minutes" +msgstr "%d دقائق" + +# | msgid "%d minutes, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "30 minutes" +msgstr "%d دقائق" + +# | msgid "%d hour, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "1 hour" +msgstr "%d ساعة" + +# | msgid "%d hours, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "6 hours" +msgstr "%d ساعات" + +# | msgid "%d day, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "1 day" +msgstr "%d يوم" + +# | msgid "%d days, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "2 days" +msgstr "%d أيام" + +# | msgid "%d days, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "3 days" +msgstr "%d أيام" + +# | msgid "%d days, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "4 days" +msgstr "%d أيام" + +# | msgid "%d days, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "5 days" +msgstr "%d أيام" + +# | msgid "%d days, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "6 days" +msgstr "%d أيام" + +# | msgid "%d days, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "7 days" +msgstr "%d أيام" + +#: wxUI/dialogs/mastodon/postDialogs.py:304 +msgid "Choices" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:308 +msgid "Option 1" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:315 +msgid "Option 2" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:322 +msgid "Option 3" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:329 +msgid "Option 4" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:334 +msgid "Allow multiple choices per user" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:337 +msgid "Hide votes count until the poll expires" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:363 +msgid "Please make sure you have provided at least two options for the poll." +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:363 +#, fuzzy +msgid "Not enough information" +msgstr "معلومات" + +#: wxUI/dialogs/mastodon/postDialogs.py:368 +msgid "Vote in this poll" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:371 +#, fuzzy +msgid "Options" +msgstr "الإجراء" + +# | msgid "&Search" +#: wxUI/dialogs/mastodon/search.py:9 +#, fuzzy +msgid "Search" +msgstr "البحث" + +#: wxUI/dialogs/mastodon/search.py:18 +msgid "Posts" +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:22 +#, fuzzy +msgid "Select user" +msgstr "اختيار رابط" + +#: wxUI/dialogs/mastodon/showUserProfile.py:73 +#, fuzzy, python-brace-format +msgid "{}'s Profile" +msgstr "حدّث الملف الشخصي" + +#: wxUI/dialogs/mastodon/showUserProfile.py:79 +#, fuzzy +msgid "&Name: " +msgstr "الاسم" + +#: wxUI/dialogs/mastodon/showUserProfile.py:84 +#, fuzzy +msgid "&URL: " +msgstr "المستخدم:" + +#: wxUI/dialogs/mastodon/showUserProfile.py:89 +msgid "&Bio: " +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:94 +msgid "&Joined at: " +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:99 +#, fuzzy +msgid "&Actions" +msgstr "الإجراء" + +#: wxUI/dialogs/mastodon/showUserProfile.py:104 +#, fuzzy +msgid "Header: " +msgstr "إخفي" + +#: wxUI/dialogs/mastodon/showUserProfile.py:112 +msgid "Avatar: " +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:122 +#, python-brace-format +msgid "Field &{} - Label: " +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:129 +#, fuzzy +msgid "Content: " +msgstr "السياق" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:43 +#: wxUI/dialogs/mastodon/filters/create_filter.py:65 +#: wxUI/dialogs/mastodon/showUserProfile.py:135 +msgid "Yes" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:43 +#: wxUI/dialogs/mastodon/filters/create_filter.py:65 +#: wxUI/dialogs/mastodon/filters/create_filter.py:69 +#: wxUI/dialogs/mastodon/showUserProfile.py:135 +msgid "No" +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:137 +#, fuzzy +msgid "&Private account: " +msgstr "إحذف الحساب" + +#: wxUI/dialogs/mastodon/showUserProfile.py:144 +#, fuzzy +msgid "&Bot account: " +msgstr "حسابفك ربط حساب الدروب بوكس." + +#: wxUI/dialogs/mastodon/showUserProfile.py:151 +#, fuzzy +msgid "&Discoverable account: " +msgstr "إحذف الحساب" + +#: wxUI/dialogs/mastodon/showUserProfile.py:157 +#, python-brace-format +msgid "{} p&osts. Click to open posts timeline" +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:162 +#, python-brace-format +msgid "{} &following. Click to open Following timeline" +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:166 +#, python-brace-format +msgid "{} fo&llowers. Click to open followers timeline" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:43 +msgid "&Display Name" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:50 +#, fuzzy +msgid "&Bio" +msgstr "حذر" + +#: wxUI/dialogs/mastodon/updateProfile.py:58 +#, fuzzy +msgid "Header" +msgstr "إخفي" + +#: wxUI/dialogs/mastodon/updateProfile.py:71 +#, fuzzy +msgid "Change &header" +msgstr "إخفي" + +#: wxUI/dialogs/mastodon/updateProfile.py:79 +msgid "Avatar" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:92 +msgid "Change &avatar" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:102 +#, python-brace-format +msgid "Field &{}: Label" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:110 +#, fuzzy +msgid "Content" +msgstr "السياق" + +#: wxUI/dialogs/mastodon/updateProfile.py:120 +#, fuzzy +msgid "&Private account" +msgstr "إحذف الحساب" + +#: wxUI/dialogs/mastodon/updateProfile.py:122 +#, fuzzy +msgid "&Bot account" +msgstr "حسابفك ربط حساب الدروب بوكس." + +#: wxUI/dialogs/mastodon/updateProfile.py:124 +#, fuzzy +msgid "&Discoverable account" +msgstr "إحذف الحساب" + +#: wxUI/dialogs/mastodon/updateProfile.py:167 +msgid "Select header image - max 2MB" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:172 +#: wxUI/dialogs/mastodon/updateProfile.py:194 +msgid "The selected file is larger than 2MB. Do you want to select another file?" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:173 +#: wxUI/dialogs/mastodon/updateProfile.py:195 +msgid "File more than 2MB" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:189 +msgid "Select avatar image - max 2MB" +msgstr "" + +#: wxUI/dialogs/mastodon/userActions.py:19 +msgid "&Follow" +msgstr "متابعة" + +#: wxUI/dialogs/mastodon/userActions.py:20 +msgid "U&nfollow" +msgstr "إل&غاء المتابعة" + +#: wxUI/dialogs/mastodon/userActions.py:22 +msgid "Unmu&te" +msgstr "إلغاء الكتم" + +#: wxUI/dialogs/mastodon/userActions.py:23 +msgid "&Block" +msgstr "حذر" + +#: wxUI/dialogs/mastodon/userActions.py:24 +msgid "Unbl&ock" +msgstr "إلغاء الحظر" + +#: wxUI/dialogs/mastodon/userTimeline.py:9 +#, python-format +msgid "Timeline for %s" +msgstr "السياق الزمني الخاص ب%s" + +#: wxUI/dialogs/mastodon/userTimeline.py:19 +msgid "&Posts" +msgstr "" + +#: wxUI/dialogs/mastodon/userTimeline.py:20 +msgid "&Followers" +msgstr "المتابِعون" + +#: wxUI/dialogs/mastodon/userTimeline.py:21 +#, fuzzy +msgid "Fo&llowing" +msgstr "إل&غاء المتابعة" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:12 +#, fuzzy +msgid "Keyword" +msgstr "مفتاح" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:13 +#: wxUI/dialogs/mastodon/filters/create_filter.py:24 +msgid "Whole word" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:19 +msgid "Keyword:" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:25 +#: wxUI/dialogs/mastodon/filters/manage_filters.py:22 +#, fuzzy +msgid "Add" +msgstr "عنوان" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:34 +msgid "Palabras clave a filtrar:" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:74 +#, fuzzy +msgid "New filter" +msgstr "&إدر الحسابات" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:78 +#, fuzzy +msgid "Home timeline" +msgstr "السياقات الزمنية" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:79 +msgid "Public statuses" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:81 +#, fuzzy +msgid "Threads" +msgstr "جاهز" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:82 +#, fuzzy +msgid "Profiles" +msgstr "حدّث الملف الشخصي" + +# | msgid "Delete" +#: wxUI/dialogs/mastodon/filters/create_filter.py:86 +#, fuzzy +msgid "Hide posts" +msgstr "حذف" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:87 +msgid "Set a content warning to posts" +msgstr "" + +# | msgid "%d hours, " +#: wxUI/dialogs/mastodon/filters/create_filter.py:91 +#, fuzzy +msgid "Hours" +msgstr "%d ساعات" + +# | msgid "%d days, " +#: wxUI/dialogs/mastodon/filters/create_filter.py:92 +#, fuzzy +msgid "Days" +msgstr "%d أيام" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:93 +msgid "Weeks" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:94 +msgid "months" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:97 +#, fuzzy +msgid "Title:" +msgstr "ملف" + +# | msgid "Reply to {arg0}" +#: wxUI/dialogs/mastodon/filters/create_filter.py:104 +#, fuzzy +msgid "Apply to:" +msgstr "الرد على {arg0}" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:114 +#, fuzzy +msgid "Action:" +msgstr "الإجراء" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:122 +msgid "Expires in:" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/manage_filters.py:10 +#, fuzzy +msgid "Filters" +msgstr "ملف" + +#: wxUI/dialogs/mastodon/filters/manage_filters.py:15 +#, fuzzy +msgid "Title" +msgstr "ملف" + +#: wxUI/dialogs/mastodon/filters/manage_filters.py:16 +msgid "Keywords" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/manage_filters.py:17 +#, fuzzy +msgid "Contexts" +msgstr "السياق" + +#: wxUI/dialogs/mastodon/filters/manage_filters.py:19 +#, fuzzy +msgid "Expires" +msgstr "إضافات" + +#~ msgid "There are no results for the coordinates in this tweet" +#~ msgstr "لا توجد نتائج للإحداثيات التي في هذه التغريدة" + +#~ msgid "This list is already opened" +#~ msgstr "هذه القائمة تم فتحها من قبل" + +# | msgid "Timeline for {}" +#~ msgid "Timelines for {}" +#~ msgstr "السياق الزمني ل{}" + +#~ msgid "{account_name} (Mastodon)" +#~ msgstr "" + +#~ msgid "URL of mastodon instance:" +#~ msgstr "" + +# | msgid "View &address" +#~ msgid "Email address:" +#~ msgstr "عرض &العنوان" + +# | msgid "Password: " +#~ msgid "Password:" +#~ msgstr "كلمة المرور:" + +# | msgid "Item" +#~ msgid "&Item" +#~ msgstr "عنصر" + +#~ msgid "Visibility" +#~ msgstr "" + +#~ msgid "Sensitive content" +#~ msgstr "" + +#~ msgid "Allow multiple votes per user" +#~ msgstr "" + +#~ msgid "{username} has mentionned you: {status}" +#~ msgstr "" + +#~ msgid "has mentionned you: {status}" +#~ msgstr "" + +#~ msgid "Likes for {}" +#~ msgstr "قائمة الإعجابات ل{}" + +#~ msgid "Trending topics for %s" +#~ msgstr "المواضيع المتداولة ل %s" + +#~ msgid "Select user" +#~ msgstr "اختر المستخدم" + +#~ msgid "Sent direct messages" +#~ msgstr "الرسائلُ الخاصة المُرسَلة" + +#~ msgid "Sent tweets" +#~ msgstr "التغريدات" + +#~ msgid "Likes" +#~ msgstr "إعجابات" + +#~ msgid "Friends" +#~ msgstr "الأصدقاء" + +#~ msgid "{username}'s likes" +#~ msgstr "" + +#~ msgid "{username}'s friends" +#~ msgstr "" + +#~ msgid "Tweet" +#~ msgstr "تغريدة" + +#~ msgid "Write the tweet here" +#~ msgstr "اكتب التغريدة هنا" + +#~ msgid "New tweet in {0}" +#~ msgstr "تغريدة جديدة" + +#~ msgid "{0} new tweets in {1}." +#~ msgstr "@{0} إقتبس تغريدتك: {1} " + +#~ msgid "Reply to {arg0}" +#~ msgstr "الرد على {arg0}" + +#~ msgid "Reply to %s" +#~ msgstr "الرد على %s" + +#~ msgid "Direct message to %s" +#~ msgstr "رسالة خاصة ل%s" + +#~ msgid "New direct message" +#~ msgstr "رسالة خاصة جديدة" + +#~ msgid "This action is not supported on protected accounts." +#~ msgstr "هذا الإجراء غير ممكن في هذه الصفحة" + +#~ msgid "Quote" +#~ msgstr "اقتباس" + +#~ msgid "Add your comment to the tweet" +#~ msgstr "أَضفْ تعليقك للتغريدة" + +#~ msgid "User details" +#~ msgstr "تفاصيل المستخدم" + +#~ msgid "MMM D, YYYY. H:m" +#~ msgstr "dddd, MMMM D, YYYY H:m:s" + +#~ msgid "There are no coordinates in this tweet" +#~ msgstr "لا توجد إحداثيات في هذه التغريدة" + +#~ msgid "Error decoding coordinates. Try again later." +#~ msgstr "حدث خطء في فكة تشفيرة الإحداثيات. يرجى المحاولة مرة أخرى لاحقا." + +#~ msgid "Invalid buffer" +#~ msgstr "صفحة غير صالحة" + +#~ msgid "{0} new direct messages." +#~ msgstr "رسالة خاصة جديدة" + +#~ msgid "This action is not supported in the buffer yet." +#~ msgstr "هذا الإجراء غير ممكن في هذه الصفحة" + +#~ msgid "" +#~ "Getting more items cannot be done " +#~ "in this buffer. Use the direct " +#~ "messages buffer instead." +#~ msgstr "" + +#~ msgid "Mention" +#~ msgstr "إشارة" + +#~ msgid "Mention to %s" +#~ msgstr "أَشِرْ ل%s" + +#~ msgid "{0} new followers." +#~ msgstr "متابِع جديد" + +#~ msgid "This action is not supported in the buffer, yet." +#~ msgstr "هذا الإجراء غير ممكن في هذه الصفحة" + +#~ msgid "&Retweet" +#~ msgstr "إعادة التغريد" + +#~ msgid "&Like" +#~ msgstr "إ&عجاب" + +#~ msgid "&Unlike" +#~ msgstr "&عدم الإعجاب" + +#~ msgid "View &address" +#~ msgstr "عرض &العنوان" + +#~ msgid "&View lists" +#~ msgstr "عرض القوائم" + +# | msgid "V&iew likes" +#~ msgid "View likes" +#~ msgstr "عرض قائمة الإعجابات" + +#~ msgid "Likes timelines" +#~ msgstr "السياقات الزمنية للإعجابات" + +#~ msgid "Followers timelines" +#~ msgstr "السياقات الزمنية للمُتابِعين" + +#~ msgid "Following timelines" +#~ msgstr "السياقات الزمنية للمُتابِعين" + +#~ msgid "Lists" +#~ msgstr "القوائم" + +#~ msgid "List for {}" +#~ msgstr "قائمة ل{}" + +#~ msgid "Filters cannot be applied on this buffer" +#~ msgstr "هذا الإجراء غير ممكن في هذه الصفحة" + +#~ msgid "View item" +#~ msgstr "عرض القوائم" + +#~ msgid "Ask" +#~ msgstr "اسأال" + +#~ msgid "Retweet without comments" +#~ msgstr "إعادة التغريد دون إضافة تعليق" + +#~ msgid "Retweet with comments" +#~ msgstr "إعادة التغريد مع تعليق" + +#~ msgid "Edit template for tweets. Current template: {}" +#~ msgstr "" + +#~ msgid "Edit template for direct messages. Current template: {}" +#~ msgstr "" + +#~ msgid "Edit template for sent direct messages. Current template: {}" +#~ msgstr "" + +#~ msgid "User has been suspended" +#~ msgstr "المستخدم موقوف" + +#~ msgid "Information for %s" +#~ msgstr "معلومات عن %s" + +#~ msgid "Discarded" +#~ msgstr "تم التراجع" + +#~ msgid "Username: @%s\n" +#~ msgstr "إسم المستخدم: @%s\n" + +#~ msgid "Name: %s\n" +#~ msgstr "الإسم: %s\n" + +#~ msgid "Location: %s\n" +#~ msgstr "المكان: %s\n" + +#~ msgid "URL: %s\n" +#~ msgstr "رابط لصفحة: %s\n" + +#~ msgid "Bio: %s\n" +#~ msgstr "السيرة الذاتية: %s\n" + +#~ msgid "Yes" +#~ msgstr "نعم" + +#~ msgid "No" +#~ msgstr "لا" + +#~ msgid "Protected: %s\n" +#~ msgstr "حساب محمي: %s\n" + +#~ msgid "Relationship: " +#~ msgstr "" + +#~ msgid "You follow {0}. " +#~ msgstr "أنت تتابع {0}. " + +#~ msgid "{0} is following you." +#~ msgstr "{0} يتابعك" + +#~ msgid "" +#~ "Followers: %s\n" +#~ " Friends: %s\n" +#~ msgstr "" +#~ "المتابعين : %s\n" +#~ " الإصدقاء: %s\n" + +#~ msgid "Verified: %s\n" +#~ msgstr "معرف: %s\n" + +#~ msgid "Tweets: %s\n" +#~ msgstr "التغريدات: %s\n" + +#~ msgid "Likes: %s" +#~ msgstr "الإعجابات: %s" + +#~ msgid "You can't ignore direct messages" +#~ msgstr "لا يمكن تجاهل الرسائل الخاصة" + +#~ msgid "Attaching..." +#~ msgstr "جاري الإرفاق" + +#~ msgid "Pause" +#~ msgstr "إيقاف مؤقت" + +#~ msgid "&Resume" +#~ msgstr "&مواصلة" + +#~ msgid "Resume" +#~ msgstr "متابعة" + +#~ msgid "&Pause" +#~ msgstr "إي&قاف مؤقّت" + +#~ msgid "&Stop" +#~ msgstr "&إيقاف" + +#~ msgid "Recording" +#~ msgstr "جاري التسجيل" + +#~ msgid "Stopped" +#~ msgstr "تم إيقافه" + +#~ msgid "&Record" +#~ msgstr "&تسجيل" + +#~ msgid "&Play" +#~ msgstr "ت&شغيل" + +#~ msgid "Recoding audio..." +#~ msgstr "جاري تسجيل الصوت" + +#~ msgid "Error in file upload: {0}" +#~ msgstr "خطء رقم {0}" + +#~ msgid "Transferred" +#~ msgstr "تم نقله" + +#~ msgid "Total file size" +#~ msgstr "الحجم الكلي للملف" + +#~ msgid "Transfer rate" +#~ msgstr "سرعة التحميل" + +#~ msgid "Time left" +#~ msgstr "الوقت المتبقي" + +#~ msgid "Attach audio" +#~ msgstr "إرفق مقطع صوتي" + +#~ msgid "&Add an existing file" +#~ msgstr "أ&ضِف ملفا موجودا" + +#~ msgid "&Discard" +#~ msgstr "تراجع" + +#~ msgid "Upload to" +#~ msgstr "إرفع إلى" + +#~ msgid "Attach" +#~ msgstr "إرفق" + +#~ msgid "&Cancel" +#~ msgstr "إل&غاء" + +#~ msgid "Audio Files (*.mp3, *.ogg, *.wav)|*.mp3; *.ogg; *.wav" +#~ msgstr "الملفات الصوتية (*.mp3, *.ogg, *.wav)|*.mp3; *.ogg; *.wav" + +#~ msgid "You have to start writing" +#~ msgstr "يجب أن تبدء في الكتابة" + +#~ msgid "There are no results in your users database" +#~ msgstr "لا توجد نتائج في قاعدة البيانات الخاصة بك." + +#~ msgid "Autocompletion only works for users." +#~ msgstr "خاصية التعبئة التلقائية لا تعمل إلى مع المستخدمون" + +#~ msgid "" +#~ "Updating database... You can close this" +#~ " window now. A message will tell " +#~ "you when the process finishes." +#~ msgstr "" +#~ "يتم الآن تحديث قاعدة البيانات. بإمكانك" +#~ " إغلاق هذه الشاشة. سوف تظهر لك " +#~ "رسالة تخبرك عندما تنتهي هذه العملية." + +#~ msgid "Manage Autocompletion database" +#~ msgstr "إدارة قاعدة بيانات التعبئة التلقائية" + +#~ msgid "Editing {0} users database" +#~ msgstr "تحرير قاعدة بيانات المستخدمين ل {0} " + +#~ msgid "Username" +#~ msgstr "إسم المستخدم" + +#~ msgid "Add user" +#~ msgstr "أضِف مستخدما" + +#~ msgid "Remove user" +#~ msgstr "احذف مستخدما" + +#~ msgid "Twitter username" +#~ msgstr "إسم مستخدم تويتر" + +#~ msgid "Add user to database" +#~ msgstr "إضف المستخدم إلى قاعدة البيانات" + +#~ msgid "The user does not exist" +#~ msgstr "المستخدم غير موجود" + +#~ msgid "Error!" +#~ msgstr "خطأ" + +#~ msgid "Autocomplete users' settings" +#~ msgstr "إعدادات الإكمال التلقائي للمستخدم" + +#~ msgid "Add followers to database" +#~ msgstr "" + +#~ msgid "Add friends to database" +#~ msgstr "إضف المستخدم إلى قاعدة البيانات" + +#~ msgid "Updating autocompletion database" +#~ msgstr "إدارة قاعدة بيانات التعبئة التلقائية" + +#~ msgid "" +#~ "This process will retrieve the users " +#~ "you selected from Twitter, and add " +#~ "them to the user autocomplete database." +#~ " Please note that if there are " +#~ "many users or you have tried to" +#~ " perform this action less than 15 " +#~ "minutes ago, TWBlue may reach a " +#~ "limit in Twitter API calls when " +#~ "trying to load the users into the" +#~ " database. If this happens, we will" +#~ " show you an error, in which " +#~ "case you will have to try this " +#~ "process again in a few minutes. If" +#~ " this process ends with no error, " +#~ "you will be redirected back to the" +#~ " account settings dialog. Do you want" +#~ " to continue?" +#~ msgstr "" + +#~ msgid "TWBlue has imported {} users successfully." +#~ msgstr "" + +#~ msgid "Done" +#~ msgstr "تمّ" + +#~ msgid "Error adding users from Twitter. Please try again in about 15 minutes." +#~ msgstr "" + +#~ msgid "New tweet" +#~ msgstr "تغريدة جديدة" + +#~ msgid "Retweet" +#~ msgstr "إعادة التغريد" + +#~ msgid "Like a tweet" +#~ msgstr "الإعجاب بتغريدة" + +#~ msgid "Like/unlike a tweet" +#~ msgstr "إلغاء الإعجاب بتغريدة" + +#~ msgid "Unlike a tweet" +#~ msgstr "إلغاء الإعجاب بتغريدة" + +#~ msgid "See user details" +#~ msgstr "إظهر تفاصيل المستخدم" + +#~ msgid "Show tweet" +#~ msgstr "إظهار التغريدة" + +#~ msgid "Interact with the currently focused tweet." +#~ msgstr "التفاعل مع التغريدة المختارة حاليا" + +#~ msgid "View in Twitter" +#~ msgstr "البحث في تويتر" + +#~ msgid "Edit profile" +#~ msgstr "حرر ملفك الشخصي" + +#~ msgid "Delete a tweet or direct message" +#~ msgstr "إحذف تغريدة أو رسالة مباشرة" + +#~ msgid "Add to list" +#~ msgstr "الإضافة إلى قائمة" + +#~ msgid "Remove from list" +#~ msgstr "حذف من قائمة" + +#~ msgid "Search on twitter" +#~ msgstr "البحث في تويتر" + +#~ msgid "Show lists for a specified user" +#~ msgstr "إظهار القوائم لمستخدم محدد" + +#~ msgid "Get geolocation" +#~ msgstr "الحصول على إحداثيات الموقع" + +#~ msgid "Display the tweet's geolocation in a dialog" +#~ msgstr "عرض صندوق حوار بإحداثيات موقع التغريدة" + +#~ msgid "Create a trending topics buffer" +#~ msgstr "أنشِئ صفححةً بالمواضيع المتداولة" + +#~ msgid "" +#~ "Opens the list manager, which allows " +#~ "you to create, edit, delete and " +#~ "open lists in buffers." +#~ msgstr "" +#~ "تفتح مدير القوائم والذي يمكنك من " +#~ "إنشاء وتحرير وحذف وفتح القوائم والصفحات." + +#~ msgid "Opens the list manager" +#~ msgstr "مدير القوائم" + +#~ msgid "{account_name} (Twitter)" +#~ msgstr "" + +#~ msgid "Twitter" +#~ msgstr "البحث في تويتر" + +#~ msgid "" +#~ "The request to authorize your Twitter" +#~ " account will be opened in your " +#~ "browser. You only need to do this" +#~ " once. Would you like to continue?" +#~ msgstr "" +#~ "سوف يفتح متصفح للسماح للبرنامج بالدخول" +#~ " على حساب تويتر الخاص بك. أنت " +#~ "تحتاج أن تفعل هذا مرة واحدة. هل" +#~ " ترغب بالمتابعة؟" + +#~ msgid "" +#~ "TWBlue is unable to authenticate the " +#~ "account for {} in Twitter. It " +#~ "might be due to an invalid or " +#~ "expired token, revoqued access to the" +#~ " application, or after an account " +#~ "reactivation. Please remove the account " +#~ "manually from your Twitter sessions in" +#~ " order to stop seeing this message." +#~ msgstr "" + +#~ msgid "Authentication error for session {}" +#~ msgstr "" + +#~ msgid "Dm to %s " +#~ msgstr "رسالة خاصة إلى %s" + +#~ msgid "{0}. Quoted tweet from @{1}: {2}" +#~ msgstr "{0}. إقتبس تغريدة من @{1}: {2}" + +#~ msgid "Unavailable" +#~ msgstr "غير متوفر" + +#~ msgid "" +#~ "%s (@%s). %s followers, %s friends, " +#~ "%s tweets. Last tweeted %s. Joined " +#~ "Twitter %s" +#~ msgstr "" +#~ "%s (@%s). %s متابعين, %s أصدقاء, " +#~ "%s تغريدات. آخر تغريدة %s. إنضم " +#~ "إلى تويتر في %s" + +#~ msgid "No description available" +#~ msgstr "لا يوجد وصف" + +#~ msgid "private" +#~ msgstr "خاصة" + +#~ msgid "public" +#~ msgstr "عامة" + +#~ msgid "Enter your PIN code here" +#~ msgstr "إدخل الرمزهنا." + +#~ msgid "Authorising account..." +#~ msgstr "حساب مرخص %d" + +#~ msgid "" +#~ "We could not authorice your Twitter " +#~ "account to be used in TWBlue. This" +#~ " might be caused due to an " +#~ "incorrect verification code. Please try " +#~ "to add the session again." +#~ msgstr "" + +#~ msgid "%s failed. Reason: %s" +#~ msgstr "فشل %s بسبب %s" + +#~ msgid "Deleted account" +#~ msgstr "حساب جديد" + +#~ msgid "$sender_display_name, $text $date" +#~ msgstr "" + +#~ msgid "" +#~ "$display_name (@$screen_name). $followers followers," +#~ " $following following, $tweets tweets. " +#~ "Joined Twitter $created_at." +#~ msgstr "" + +#~ msgid "Image description: {}." +#~ msgstr "وصف الصورة" + +#~ msgid "RT @{}: {} Quote from @{}: {}" +#~ msgstr "{0}. إقتبس تغريدة من @{1}: {2}" + +# | msgid "{0}. Quoted tweet from @{1}: {2}" +#~ msgid "RT @{}: {}" +#~ msgstr "{0}. إقتبس تغريدة من @{1}: {2}" + +# | msgid "{0}. Quoted tweet from @{1}: {2}" +#~ msgid "{} Quote from @{}: {}" +#~ msgstr "{0}. إقتبس تغريدة من @{1}: {2}" + +#~ msgid "Sorry, you are not authorised to see this status." +#~ msgstr "نأسف, ليس مصرح لك أن ترى هذه الحالة." + +#~ msgid "Error {0}" +#~ msgstr "خطء رقم {0}" + +#~ msgid "{user_1}, {user_2} and {all_users} more: {text}" +#~ msgstr "" + +#~ msgid "" +#~ "This retweet is over 140 characters. " +#~ "Would you like to post it as " +#~ "a mention to the poster with your" +#~ " comments and a link to the " +#~ "original tweet?" +#~ msgstr "" +#~ "إعادة التغريدة هذه أطول من 140 " +#~ "حرف. هل ترغب بنشرها كذكر لصاحبها " +#~ "مع تعليق ورابط للتغريدة الأصلية؟" + +#~ msgid "Would you like to add a comment to this tweet?" +#~ msgstr "هل ترغب بإضافة تعليق إلى هذه التغريدة؟" + +#~ msgid "" +#~ "Do you really want to delete this" +#~ " tweet? It will be deleted from " +#~ "Twitter as well." +#~ msgstr "هل ترغبُ فعلا في حذفِ هذه التغريدة؟ سيؤدي ذلك لحذفها من تويتر أيضا." + +#~ msgid "Enter the name of the client : " +#~ msgstr "أدخِل اسم التطبيق هنا" + +#~ msgid "Add client" +#~ msgstr "أضف تطبيق" + +#~ msgid "This user has no tweets, so you can't open a timeline for them." +#~ msgstr "" +#~ "هذا المستخدم لا يوجد له أية " +#~ "تغريدات. وبالتالي لا يمكن فتح سياق " +#~ "زمني خاص به." + +#~ msgid "" +#~ "This is a protected Twitter user, " +#~ "which means you can't open a " +#~ "timeline using the Streaming API. The" +#~ " user's tweets will not update due" +#~ " to a twitter policy. Do you " +#~ "want to continue?" +#~ msgstr "" +#~ "هذا مستخدم تويتر محمي مما يعني أنك" +#~ " لا تستطيع فتح سياقه الزمني بإستخدام" +#~ " الواجهة البرمجية لتويتر.ولم يتحدث سياقه" +#~ " الزمني بسبب سياسة تويتر هذه. هل " +#~ "تود المتابعة؟" + +#~ msgid "" +#~ "This is a protected user account, " +#~ "you need to follow this user to" +#~ " view their tweets or likes." +#~ msgstr "" +#~ "هذا حساب مستخدم محمي. تحتاج أن " +#~ "تتبع هذا المستخدم إذا أردت أن " +#~ "تشاهد تغريداته وإعجاباته." + +#~ msgid "This user has no tweets. {0} can't create a timeline." +#~ msgstr "هذا المستخدم لا يوجد له أية تغريدات. لا يمكن فتح سياق زمني خاص به." + +#~ msgid "This user has no favorited tweets. {0} can't create a timeline." +#~ msgstr "" +#~ "هذا المستخدم لا يوجد له أية " +#~ "تغريدات مُفضّلة. لا يمكن ل{0} فتح " +#~ "سياق زمني خاص بها" + +#~ msgid "This user has no followers. {0} can't create a timeline." +#~ msgstr "هذا المستخدم لا يوجد له أي مُتابعين. لا يمكن فتح سياق زمني له." + +#~ msgid "This user has no friends. {0} can't create a timeline." +#~ msgstr "هذا المستخدم لا يوجد له أي أصدقاء. لا يمكن فتح سياق زمني له.." + +#~ msgid "Geolocation data: {0}" +#~ msgstr "إحداثيات الموقع: {0}" + +#~ msgid "Geo data for this tweet" +#~ msgstr "معلومات جغرافية لهذه التغريدة" + +#~ msgid "You have been blocked from viewing this content" +#~ msgstr "المحتوى محجوب ولا يمكن لك عرضه" + +#~ msgid "" +#~ "You have been blocked from viewing " +#~ "someone's content. In order to avoid " +#~ "conflicts with the full session, TWBlue" +#~ " will remove the affected timeline." +#~ msgstr "" +#~ "أنت محظورٌ من عرض محتوى صفحة أحد" +#~ " الأشخاص. تفاديا للتعارُض مع كامل " +#~ "الجلسة؛ سيُزيل TWBlue الخطّ الزمني " +#~ "المتأثّر." + +#~ msgid "" +#~ "TWBlue cannot load this timeline because" +#~ " the user has been suspended from " +#~ "Twitter." +#~ msgstr "" +#~ "لا يمنك لTW Blue تحميل هذا الخط" +#~ " الزمني لكون هذا المستخدم موقوفا من" +#~ " تويتر" + +#~ msgid "Do you really want to delete this filter?" +#~ msgstr "هل أنت متأكد من رغبتك بإزالة هذه القائمة؟" + +#~ msgid "This filter already exists. Please use a different title" +#~ msgstr "" + +#~ msgid "&Show direct message" +#~ msgstr "&إعرض الرسالة الخاصة" + +#~ msgid "&Show event" +#~ msgstr "&إظهر الحدث" + +#~ msgid "Direct &message" +#~ msgstr "رسالة خاصة" + +#~ msgid "&Show user" +#~ msgstr "&إظهر المستخدمين" + +#~ msgid "Search topic" +#~ msgstr "موضوع البحث" + +#~ msgid "&Tweet about this trend" +#~ msgstr "&التغريد حول هذا الموضوع" + +#~ msgid "&Show item" +#~ msgstr "&إعرض العنصر" + +#~ msgid "Update &profile" +#~ msgstr "حدث &ملفك الشخصي" + +#~ msgid "Event" +#~ msgstr "حدث" + +#~ msgid "Remove event" +#~ msgstr "حذف الحدث" + +#~ msgid "Trending topic" +#~ msgstr "موضوع متداول" + +#~ msgid "Tweet about this trend" +#~ msgstr "غرد عن هذاالأمر المتداول " + +#~ msgid "" +#~ "Scan account and add friends and " +#~ "followers to the user autocompletion " +#~ "database" +#~ msgstr "" + +#~ msgid "" +#~ "Inverted buffers: The newest tweets will" +#~ " be shown at the beginning while " +#~ "the oldest at the end" +#~ msgstr "" +#~ "عكس عرض التغريدات: التغريدة الأحدث " +#~ "ستُعرَض في بداية القائمة بينما تكون " +#~ "التغريدة الأقدم في نهايتها." + +#~ msgid "Retweet mode" +#~ msgstr "نمطُ إعادة التغريد" + +#~ msgid "" +#~ "Load cache for tweets in memory " +#~ "(much faster in big datasets but " +#~ "requires more RAM)" +#~ msgstr "" + +#~ msgid "Ignored clients" +#~ msgstr "التطبيقات التي تم تجاهلها" + +#~ msgid "Remove client" +#~ msgstr "إحذف تطبيق" + +#~ msgid "Indicate audio tweets with sound" +#~ msgstr "يشير إلى تغريدية صوتية من خلال نغمة" + +#~ msgid "Indicate geotweets with sound" +#~ msgstr "يشير إلى تغريدة تتضمن موقع من خلال نغمة" + +#~ msgid "Indicate tweets containing images with sound" +#~ msgstr "يشير إلى تغريدة تتضمن صور من خلال نغمة" + +#~ msgid "API Key for SndUp" +#~ msgstr "API Key for SndUp" + +#~ msgid "Create a filter for this buffer" +#~ msgstr "إنشء تصفية لهذه الصفحة" + +#~ msgid "Filter title" +#~ msgstr "" + +#~ msgid "Filter by word" +#~ msgstr "" + +#~ msgid "Ignore tweets wich contain the following word" +#~ msgstr "تجاهَل التغريدات باللغات التالية" + +#~ msgid "Ignore tweets without the following word" +#~ msgstr "تجاهَل التغريدات باللغات التالية" + +#~ msgid "word" +#~ msgstr "كلمة" + +#~ msgid "Allow retweets" +#~ msgstr "إظهار التغريدة" + +#~ msgid "Allow quoted tweets" +#~ msgstr "" + +#~ msgid "Allow replies" +#~ msgstr "السياقات الزمنية للمُتابِعين" + +#~ msgid "Use this term as a regular expression" +#~ msgstr "استخدم هذ المصطلح كتعبير حسابي" + +#~ msgid "Filter by language" +#~ msgstr "لا تصنّفْ حسبَ اللُغة" + +#~ msgid "Load tweets in the following languages" +#~ msgstr "تحميل التغريدات بهذه اللغات" + +#~ msgid "Ignore tweets in the following languages" +#~ msgstr "تجاهَل التغريدات باللغات التالية" + +#~ msgid "Don't filter by language" +#~ msgstr "لا تصنّفْ حسبَ اللُغة" + +#~ msgid "Supported languages" +#~ msgstr "اللغة الأصلية" + +#~ msgid "Add selected language to filter" +#~ msgstr "" + +#~ msgid "Selected languages" +#~ msgstr "اللغة الأصلية" + +#~ msgid "You must define a name for the filter before creating it." +#~ msgstr "" + +#~ msgid "Missing filter name" +#~ msgstr "" + +#~ msgid "Manage filters" +#~ msgstr "حساب جديد" + +#~ msgid "Filters" +#~ msgstr "" + +#~ msgid "Filter" +#~ msgstr "" + +#~ msgid "Lists manager" +#~ msgstr "مدير القوائم" + +#~ msgid "List" +#~ msgstr "القائمة" + +#~ msgid "Owner" +#~ msgstr "المالك" + +#~ msgid "Members" +#~ msgstr "الإعضاء" + +#~ msgid "mode" +#~ msgstr "النمط" + +#~ msgid "Create a new list" +#~ msgstr "إنشء قائمة جديدة" + +#~ msgid "Open in buffer" +#~ msgstr "إفتح في صفحة جديدة" + +#~ msgid "Viewing lists for %s" +#~ msgstr "عرض القوائم ل%s" + +#~ msgid "Subscribe" +#~ msgstr "إشترك" + +#~ msgid "Unsubscribe" +#~ msgstr "إلغاء الإشتراك" + +#~ msgid "Name (20 characters maximun)" +#~ msgstr "الإسم, 20 حرف على الأكثر" + +#~ msgid "Mode" +#~ msgstr "النمط" + +#~ msgid "Private" +#~ msgstr "خاصة" + +#~ msgid "Editing the list %s" +#~ msgstr "جاري تحرير القائمة %s" + +#~ msgid "Select a list to add the user" +#~ msgstr "إختر القائمة لإضافة المستخدم لها" + +#~ msgid "Add" +#~ msgstr "إضافة" + +#~ msgid "Select a list to remove the user" +#~ msgstr "إختر القائمة التي تريد حذف المستخدم منها" + +#~ msgid "Do you really want to delete this list?" +#~ msgstr "هل أنت متأكد من رغبتك بإزالة هذه القائمة؟" + +#~ msgid "Search on Twitter" +#~ msgstr "البحث في تويتر" + +#~ msgid "Tweets" +#~ msgstr "التغريدات" + +#~ msgid "&Language for results: " +#~ msgstr "لغة النتائج" + +#~ msgid "any" +#~ msgstr "أي" + +#~ msgid "Results &type: " +#~ msgstr "نوع النتائج" + +#~ msgid "Mixed" +#~ msgstr "مخلوطة" + +#~ msgid "Recent" +#~ msgstr "الحديث" + +#~ msgid "Popular" +#~ msgstr "المشهور" + +#~ msgid "Details" +#~ msgstr "التفاصيل" + +#~ msgid "&Go to URL" +#~ msgstr "&فتح الرابط" + +#~ msgid "View trending topics" +#~ msgstr "إعرض المواضيع المتداولة" + +#~ msgid "Trending topics by" +#~ msgstr "المواضيع المتداولة حسب" + +#~ msgid "Country" +#~ msgstr "الدولة" + +#~ msgid "City" +#~ msgstr "المدينة" + +#~ msgid "&Location" +#~ msgstr "الموقع" + +#~ msgid "Update your profile" +#~ msgstr "حدث ملفك الشخصي" + +#~ msgid "&Name (50 characters maximum)" +#~ msgstr "الاسم (20 حرفا على الأكثر)" + +#~ msgid "&Website" +#~ msgstr "الم&وقع الإلكتروني" + +#~ msgid "&Bio (160 characters maximum)" +#~ msgstr "السيرة الذاتية (160 حرف على الأكثر)" + +#~ msgid "Upload a &picture" +#~ msgstr "ارفَعْ صورة" + +#~ msgid "Upload a picture" +#~ msgstr "قم بتحميل صورة" + +#~ msgid "Discard image" +#~ msgstr "التراجع عن الصورة" + +#~ msgid "&Report as spam" +#~ msgstr "إبلاغ برسائل غير مرغوب بها" + +#~ msgid "&Ignore tweets from this client" +#~ msgstr "ت&جاهل التغريدات من هذا التطبيق" + +#~ msgid "&Tweets" +#~ msgstr "تغريدات" + +#~ msgid "&Likes" +#~ msgstr "إعجابات" + +#~ msgid "F&riends" +#~ msgstr "الأ&صدقاء" + +#~ msgid "Delete attachment" +#~ msgstr "أِزِلِ مُرفقا" + +#~ msgid "Added Tweets" +#~ msgstr "التغريدات" + +#~ msgid "Delete tweet" +#~ msgstr "التغريدات" + +#~ msgid "A&dd..." +#~ msgstr "" + +#~ msgid "Add t&weet" +#~ msgstr "الإعجاب بتغريدة" + +#~ msgid "&Attach audio..." +#~ msgstr "أرفق مقطعا صوتيا" + +#~ msgid "Sen&d" +#~ msgstr "أر&سِلْ" + +#~ msgid "Video files (*.mp4)|*.mp4" +#~ msgstr "" + +#~ msgid "" +#~ "It is not possible to add more " +#~ "attachments. Please make sure your tweet" +#~ " complies with Twitter'S attachment rules." +#~ " You can add only one video or" +#~ " GIF in every tweet, and a " +#~ "maximum of 4 photos." +#~ msgstr "" + +#~ msgid "&Mention to all" +#~ msgstr "الإ&شارة &إلى الجميع" + +#~ msgid "&Recipient" +#~ msgstr "المرسَل إليه" + +#~ msgid "Tweet - %i characters " +#~ msgstr "تغريدة - %i أحرف" + +#~ msgid "Retweets: " +#~ msgstr "إعادة التغريدات:" + +#~ msgid "Likes: " +#~ msgstr "إعجابات" + +#~ msgid "View" +#~ msgstr "عرض" + +#~ msgid "Item" +#~ msgstr "عنصر" + +#~ msgid "&Expand URL" +#~ msgstr "توسيع الرابط" + +#~ msgid "Participation time (in days)" +#~ msgstr "" + +#~ msgid "&Open in Twitter" +#~ msgstr "البحث في تويتر" + +#~ msgid "&Show tweet" +#~ msgstr "إظهار التغريدة" + +#~ msgid "Translated" +#~ msgstr "تمت ترجمته" + +#~ msgid "Afrikaans" +#~ msgstr "الإفريقية" + +#~ msgid "Albanian" +#~ msgstr "الألبانية" + +#~ msgid "Amharic" +#~ msgstr "الأمهارية" + +#~ msgid "Arabic" +#~ msgstr "العربية" + +#~ msgid "Armenian" +#~ msgstr "الأرمينية" + +#~ msgid "Azerbaijani" +#~ msgstr "Azerbaijani" + +#~ msgid "Basque" +#~ msgstr "Basque" + +#~ msgid "Belarusian" +#~ msgstr "Belarusian" + +#~ msgid "Bengali" +#~ msgstr "بنغالي" + +#~ msgid "Bihari" +#~ msgstr "Bihari" + +#~ msgid "Bulgarian" +#~ msgstr "بللغاري" + +#~ msgid "Burmese" +#~ msgstr "Burmese" + +#~ msgid "Catalan" +#~ msgstr "Catalan" + +#~ msgid "Cherokee" +#~ msgstr "Cherokee" + +#~ msgid "Chinese" +#~ msgstr "الصينية" + +#~ msgid "Chinese_simplified" +#~ msgstr "الصينية المبسطة" + +#~ msgid "Chinese_traditional" +#~ msgstr "الصينية التقليدية " + +#~ msgid "Croatian" +#~ msgstr "Croatian" + +#~ msgid "Czech" +#~ msgstr "Czech" + +#~ msgid "Dhivehi" +#~ msgstr "Dhivehi" + +#~ msgid "Esperanto" +#~ msgstr "Esperanto" + +#~ msgid "Estonian" +#~ msgstr "Estonian" + +#~ msgid "Filipino" +#~ msgstr "الفلبينية" + +#~ msgid "Galician" +#~ msgstr "Galician" + +#~ msgid "Georgian" +#~ msgstr "Georgian" + +#~ msgid "Greek" +#~ msgstr "اليونانية" + +#~ msgid "Guarani" +#~ msgstr "Guarani" + +#~ msgid "Gujarati" +#~ msgstr "Gujarati" + +#~ msgid "Hebrew" +#~ msgstr "العبرية" + +#~ msgid "Hindi" +#~ msgstr "الهندية" + +#~ msgid "Icelandic" +#~ msgstr "Icelandic" + +#~ msgid "Indonesian" +#~ msgstr "الإندونيسية" + +#~ msgid "Inuktitut" +#~ msgstr "Inuktitut" + +#~ msgid "Irish" +#~ msgstr "الأيرلندلية" + +#~ msgid "Kannada" +#~ msgstr "Kannada" + +#~ msgid "Kazakh" +#~ msgstr "Kazakh" + +#~ msgid "Khmer" +#~ msgstr "Khmer" + +#~ msgid "Kurdish" +#~ msgstr "الكردية" + +#~ msgid "Kyrgyz" +#~ msgstr "Kyrgyz" + +#~ msgid "Laothian" +#~ msgstr "Laothian" + +#~ msgid "Latvian" +#~ msgstr "الاتيفية" + +#~ msgid "Lithuanian" +#~ msgstr "الثوانية" + +#~ msgid "Macedonian" +#~ msgstr "المسدونية" + +#~ msgid "Malay" +#~ msgstr "المالية" + +#~ msgid "Malayalam" +#~ msgstr "Malayalam" + +#~ msgid "Maltese" +#~ msgstr "Maltese" + +#~ msgid "Marathi" +#~ msgstr "Marathi" + +#~ msgid "Mongolian" +#~ msgstr "Mongolian" + +#~ msgid "Nepali" +#~ msgstr "Nepali" + +#~ msgid "Norwegian" +#~ msgstr "النرويجية" + +#~ msgid "Oriya" +#~ msgstr "Oriya" + +#~ msgid "Pashto" +#~ msgstr "Pashto" + +#~ msgid "Persian" +#~ msgstr "فارسي" + +#~ msgid "Punjabi" +#~ msgstr "Punjabi" + +#~ msgid "Romanian" +#~ msgstr "الرومانية" + +#~ msgid "Sanskrit" +#~ msgstr "السنسكريتية" + +#~ msgid "Serbian" +#~ msgstr "الصربية" + +#~ msgid "Sindhi" +#~ msgstr "Sindhi" + +#~ msgid "Sinhalese" +#~ msgstr "Sinhalese" + +#~ msgid "Slovak" +#~ msgstr "السلوفاكية" + +#~ msgid "Slovenian" +#~ msgstr "السلوفية" + +#~ msgid "Swahili" +#~ msgstr "السواحيلي" + +#~ msgid "Swedish" +#~ msgstr "السويدية" + +#~ msgid "Tajik" +#~ msgstr "Tajik" + +#~ msgid "Tamil" +#~ msgstr "Tamil" + +#~ msgid "Tagalog" +#~ msgstr "Tagalog" + +#~ msgid "Telugu" +#~ msgstr "Telugu" + +#~ msgid "Thai" +#~ msgstr "Thai" + +#~ msgid "Tibetan" +#~ msgstr "Tibetan" + +#~ msgid "Ukrainian" +#~ msgstr "الأكرونية" + +#~ msgid "Urdu" +#~ msgstr "الأوردية" + +#~ msgid "Uzbek" +#~ msgstr "الأوباكستانية" + +#~ msgid "Uighur" +#~ msgstr "Uighur" + +#~ msgid "Vietnamese" +#~ msgstr "الفيتمينية" + +#~ msgid "Welsh" +#~ msgstr "Welsh" + +#~ msgid "Yiddish" +#~ msgstr "Yiddish" + +#~ msgid "" +#~ "TWBlue has detected that you're running" +#~ " windows 10 and has changed the " +#~ "default keymap to the Windows 10 " +#~ "keymap. It means that some keyboard " +#~ "shorcuts could be different. Please " +#~ "check the keystroke editor by pressing" +#~ " Alt+Win+K to see all available " +#~ "keystrokes for this keymap." +#~ msgstr "" +#~ "اكتشف TWBlue أنّك تعمل على windows " +#~ "10 وغيّر خارطة المفاتيح الافتراضية إلى" +#~ " خارطة مفاتيح windows 10 ، وذلك " +#~ "يعني اختلافا في بعض مفاتيح الاختصار. " +#~ "فضلا راجع محرّر مفاتيح الاختصار بالضغط" +#~ " على المفاتيح: Alt+Windows+K لرؤية كافة" +#~ " مفاتيح الاختصار المتاحة لهذه الخارطة" + +#~ msgid "Boosts: " +#~ msgstr "" + +#~ msgid "Favorites: " +#~ msgstr "" + +#~ msgid "Date: " +#~ msgstr "تاريخ" + +#~ msgid "Community for {}" +#~ msgstr "" + +#~ msgid "Run {0} at Windows startup" +#~ msgstr "شغل {0} مع بداية تشغيل ويندوز" + +#~ msgid "Use Codeofdusk's longtweet handlers (may decrease client performance)" +#~ msgstr "" +#~ "إستخدم معالجات التغريدات الطويلة " +#~ "لCodeofdusk's. (قد تأثر سلبا على أداء" +#~ " البرنامج)" + +#~ msgid "Remember state for mention all and long tweet" +#~ msgstr "" + +#~ msgid "Bio: " +#~ msgstr "" + +#~ msgid "Joined at: " +#~ msgstr "" + +#~ msgid "Field {} - Label: " +#~ msgstr "" + +#~ msgid "{} posts. Click to open posts timeline" +#~ msgstr "" + +#~ msgid "{} following. Click to open Following timeline" +#~ msgstr "" + +#~ msgid "{} followers. Click to open followers timeline" +#~ msgstr "" + +#~ msgid "Display Name" +#~ msgstr "" + +#~ msgid "Bio" +#~ msgstr "" + +#~ msgid "Change header" +#~ msgstr "" + +#~ msgid "Change avatar" +#~ msgstr "" + +#~ msgid "Field {}: Label" +#~ msgstr "" + +#~ msgid "Add following to database" +#~ msgstr "" + +#~ msgid "Disable Streaming functions" +#~ msgstr "" + +#~ msgid "Buffer update interval, in minutes" +#~ msgstr "" + +#~ msgid "Read long posts in GUI" +#~ msgstr "" + +#~ msgid "Enable automatic speech feedback" +#~ msgstr "" + +#~ msgid "Enable automatic Braille feedback" +#~ msgstr "" + +#~ msgid "LibreTranslate API URL: " +#~ msgstr "" + +#~ msgid "LibreTranslate API Key (optional): " +#~ msgstr "" + +#~ msgid "DeepL API Key: " +#~ msgstr "" + +#~ msgid "" +#~ "Scan account and add followers and " +#~ "following users to the user " +#~ "autocompletion database" +#~ msgstr "" + +#~ msgid "Disable Streaming API endpoints" +#~ msgstr "" + +#~ msgid "" +#~ "Read preferences from instance (default " +#~ "visibility when publishing and displaying " +#~ "sensitive content)" +#~ msgstr "" + +#~ msgid "Ask confirmation before boosting a post" +#~ msgstr "" + +#~ msgid "hide emojis in usernames" +#~ msgstr "" + +#~ msgid "" +#~ "Load cache for items in memory " +#~ "(much faster in big datasets but " +#~ "requires more RAM)" +#~ msgstr "" + diff --git a/srcantiguo/locales/bg/LC_MESSAGES/twblue.mo b/srcantiguo/locales/bg/LC_MESSAGES/twblue.mo new file mode 100644 index 00000000..5aeddf5a Binary files /dev/null and b/srcantiguo/locales/bg/LC_MESSAGES/twblue.mo differ diff --git a/srcantiguo/locales/bg/LC_MESSAGES/twblue.po b/srcantiguo/locales/bg/LC_MESSAGES/twblue.po new file mode 100644 index 00000000..516c5a0f --- /dev/null +++ b/srcantiguo/locales/bg/LC_MESSAGES/twblue.po @@ -0,0 +1,3222 @@ +# Bulgarian translations for PROJECT. +# Copyright (C) 2025 MCV software +# This file is distributed under the same license as the PROJECT project. +# FIRST AUTHOR , 2025. +# "Mira P." , 2025. +msgid "" +msgstr "" +"Project-Id-Version: PROJECT VERSION\n" +"Report-Msgid-Bugs-To: manuel@manuelcortez.net\n" +"POT-Creation-Date: 2025-04-13 01:18+0000\n" +"PO-Revision-Date: 2025-03-08 18:23+0000\n" +"Last-Translator: \"Mira P.\" \n" +"Language: bg\n" +"Language-Team: Bulgarian " +"\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.17.0\n" + +#: languageHandler.py:61 +msgctxt "languageName" +msgid "Amharic" +msgstr "Амхарски" + +#: languageHandler.py:62 +msgctxt "languageName" +msgid "Aragonese" +msgstr "Арагонски" + +#: languageHandler.py:63 +msgctxt "languageName" +msgid "Spanish" +msgstr "Испански" + +#: languageHandler.py:64 +msgctxt "languageName" +msgid "Portuguese" +msgstr "Португалски" + +#: languageHandler.py:65 +msgctxt "languageName" +msgid "Russian" +msgstr "Руски" + +#: languageHandler.py:66 +msgctxt "languageName" +msgid "italian" +msgstr "Италиански" + +#: languageHandler.py:67 +msgctxt "languageName" +msgid "Turkey" +msgstr "Турски" + +#: languageHandler.py:68 +msgctxt "languageName" +msgid "Galician" +msgstr "Галисийски" + +#: languageHandler.py:69 +msgctxt "languageName" +msgid "Catala" +msgstr "Каталонски" + +#: languageHandler.py:70 +msgctxt "languageName" +msgid "Vasque" +msgstr "Баск" + +#: languageHandler.py:71 +msgctxt "languageName" +msgid "polish" +msgstr "Полски" + +#: languageHandler.py:72 +msgctxt "languageName" +msgid "Arabic" +msgstr "Арабски" + +#: languageHandler.py:73 +msgctxt "languageName" +msgid "Nepali" +msgstr "Непалски" + +#: languageHandler.py:74 +msgctxt "languageName" +msgid "Serbian (Latin)" +msgstr "Сръбски (Латински)" + +#: languageHandler.py:75 +msgctxt "languageName" +msgid "Japanese" +msgstr "Японски" + +#: languageHandler.py:99 +msgid "User default" +msgstr "Системен по подразбиране" + +#: main.py:105 +msgid "https://twblue.mcvsoftware.com/donate" +msgstr "https://twblue.mcvsoftware.com/donate" + +#: main.py:118 +#, python-brace-format +msgid "" +"{0} is already running. Close the other instance before starting this " +"one. If you're sure that {0} isn't running, try deleting the file at {1}." +" If you're unsure of how to do this, contact the {0} developers." +msgstr "" +"{0} вече е отворена. Затворете програмата, преди да я отворите отново. " +"Ако сте сигурни, че {0} не се изпълнява, изтрийте файла в {1} Ако не сте " +"сигурни как да го направите, свържете се с разработчиците на {0}." + +#: sound.py:148 +msgid "Playing..." +msgstr "Възпроизвеждане..." + +#: sound.py:161 +msgid "Stopped." +msgstr "Спряно." + +#: controller/mainController.py:261 +msgid "Ready" +msgstr "Готово" + +#: controller/mainController.py:369 controller/mainController.py:654 +#: controller/mainController.py:673 controller/mainController.py:692 +#: controller/mainController.py:711 +msgid "" +"No session is currently in focus. Focus a session with the next or " +"previous session shortcut." +msgstr "" +"Няма фокусирана сесия. Натиснете клавишната комбинация, за да фокусирате " +"сесия." + +#: controller/mainController.py:373 +msgid "Empty buffer." +msgstr "Буферът е празен." + +#: controller/mainController.py:380 +#, python-brace-format +msgid "{0} not found." +msgstr "{0} не е намерен." + +#: controller/mainController.py:702 controller/mainController.py:721 +#, python-format +msgid "%s, %s of %s" +msgstr "" +"1\n" +"%s, \n" +"2\n" +"%s от \n" +"3\n" +"%s" + +#: controller/mainController.py:704 controller/mainController.py:723 +#: controller/mainController.py:751 controller/mainController.py:779 +#, python-format +msgid "%s. Empty" +msgstr "%s. празен" + +#: controller/mainController.py:739 controller/mainController.py:743 +#: controller/mainController.py:767 +#, python-brace-format +msgid "{0}: This account is not logged into Twitter." +msgstr "{0}: Този акаунт не е вписан в Mastodon." + +#: controller/mainController.py:749 controller/mainController.py:777 +#, python-format +msgid "%s. %s, %s of %s" +msgstr "" +"1\n" +"%s. \n" +"2\n" +"%s, \n" +"3\n" +"%s от\n" +"4\n" +"%s" + +#: controller/mainController.py:771 +#, python-brace-format +msgid "{0}: This account is not logged into twitter." +msgstr "{0}: този акаунт не е вписан в Mastodon." + +#: controller/mainController.py:910 controller/mainController.py:926 +msgid "An error happened while trying to connect to the server. Please try later." +msgstr "Грешка при свързване със сървъра. Моля, опитайте по-късно." + +#: controller/mainController.py:957 +msgid "The auto-reading of new tweets is enabled for this buffer" +msgstr "Автоматичното четене за публикации е разрешено за този буфер." + +#: controller/mainController.py:960 +msgid "The auto-reading of new tweets is disabled for this buffer" +msgstr "Автоматичното четене за публикации е изключено за този буфер." + +#: controller/mainController.py:967 +msgid "Session mute on" +msgstr "Заглушаване на сесията включено." + +#: controller/mainController.py:970 +msgid "Session mute off" +msgstr "Заглушаване на сесията изключено." + +#: controller/mainController.py:979 +msgid "Buffer mute on" +msgstr "Заглушаване на буфера включено." + +#: controller/mainController.py:982 +msgid "Buffer mute off" +msgstr "Заглушаване на буфера изключено." + +#: controller/mainController.py:999 +msgid "Copied" +msgstr "Копирано" + +#: controller/mainController.py:1019 +msgid "Unable to update this buffer." +msgstr "Невъзможност за обновяване на буфера." + +#: controller/mainController.py:1021 +msgid "Updating buffer..." +msgstr "Обновяване на буфера..." + +#: controller/mainController.py:1024 +#, python-brace-format +msgid "{0} items retrieved" +msgstr "{0} публикации са извлечени" + +#: controller/buffers/mastodon/base.py:137 controller/mainController.py:1028 +#: controller/mastodon/handler.py:98 controller/mastodon/handler.py:241 +#, python-brace-format +msgid "Timeline for {}" +msgstr "Timeline за {}" + +#: controller/buffers/mastodon/users.py:93 controller/mainController.py:1030 +#: controller/mastodon/handler.py:100 controller/mastodon/handler.py:255 +#, python-brace-format +msgid "Followers for {}" +msgstr "Последователи за {}" + +#: controller/mainController.py:1032 +#, python-brace-format +msgid "Friends for {}" +msgstr "Приятели за {}" + +#: controller/buffers/mastodon/users.py:95 controller/mainController.py:1034 +#: controller/mastodon/handler.py:102 controller/mastodon/handler.py:269 +#, python-brace-format +msgid "Following for {}" +msgstr "Последвани за {}" + +#: controller/messages.py:18 +msgid "Translated" +msgstr "Преведено" + +#: controller/settings.py:60 +msgid "System default" +msgstr "Системен по подразбиране" + +#: controller/settings.py:60 +msgid "HTTP" +msgstr "HTTP" + +#: controller/settings.py:60 +msgid "SOCKS v4" +msgstr "SOCKS v4" + +#: controller/settings.py:60 +msgid "SOCKS v4 with DNS support" +msgstr "SOCKS v4 with DNS поддръжка" + +#: controller/settings.py:60 +msgid "SOCKS v5" +msgstr "SOCKS v5" + +#: controller/settings.py:60 +msgid "SOCKS v5 with DNS support" +msgstr "SOCKS v5 с DNS поддръжка" + +#: controller/userAlias.py:31 +#, python-brace-format +msgid "Edit alias for {}" +msgstr "Редактиране на псевдоним за {}" + +#: controller/buffers/base/base.py:91 +#: controller/buffers/mastodon/conversations.py:237 +#: controller/buffers/mastodon/search.py:80 +msgid "This action is not supported for this buffer" +msgstr "Това действие не се поддържа за този буфер." + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:70 +#: controller/mastodon/settings.py:194 +msgid "Home" +msgstr "Начало" + +#: controller/buffers/mastodon/base.py:52 +#: controller/buffers/mastodon/community.py:22 +#: controller/mastodon/handler.py:72 controller/mastodon/handler.py:114 +#: controller/mastodon/settings.py:195 +msgid "Local" +msgstr "Локален" + +#: controller/buffers/mastodon/base.py:52 +#: controller/buffers/mastodon/community.py:22 +#: controller/mastodon/handler.py:74 controller/mastodon/settings.py:196 +msgid "Federated" +msgstr "Публичен" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:76 +#: controller/mastodon/settings.py:197 +msgid "Mentions" +msgstr "Отбелязван" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:84 +#: controller/mastodon/settings.py:201 +msgid "Bookmarks" +msgstr "Любими" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:78 +msgid "Direct messages" +msgstr "Съобщения" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:80 +#: controller/mastodon/settings.py:199 +msgid "Sent" +msgstr "Изпратени" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:82 +#: controller/mastodon/settings.py:200 wxUI/dialogs/mastodon/postDialogs.py:229 +msgid "Favorites" +msgstr "Харесвания" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:86 +#: controller/mastodon/settings.py:202 +msgid "Followers" +msgstr "Последователи" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:88 +#: controller/mastodon/settings.py:203 +msgid "Following" +msgstr "Последвани" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:92 +#: controller/mastodon/settings.py:204 +msgid "Blocked users" +msgstr "Блокирани потребители" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:90 +#: controller/mastodon/settings.py:205 +msgid "Muted users" +msgstr "Заглушени потребители" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:94 +#: controller/mastodon/settings.py:206 +#: wxUI/dialogs/mastodon/filters/create_filter.py:80 +msgid "Notifications" +msgstr "Известия" + +#: controller/buffers/mastodon/base.py:58 +#, python-brace-format +msgid "{username}'s timeline" +msgstr "Хронологията на {username}" + +#: controller/buffers/mastodon/base.py:60 +#, python-brace-format +msgid "{username}'s followers" +msgstr "Последователите на {username}" + +#: controller/buffers/mastodon/base.py:62 +#, python-brace-format +msgid "{username}'s following" +msgstr "Последвани от {username}" + +#: controller/buffers/mastodon/base.py:64 +msgid "Unknown buffer" +msgstr "Неизвестен буфер" + +#: controller/buffers/mastodon/base.py:67 +#: controller/buffers/mastodon/base.py:645 wxUI/buffers/mastodon/base.py:24 +#: wxUI/buffers/mastodon/conversationList.py:24 +#: wxUI/buffers/mastodon/notifications.py:22 wxUI/buffers/mastodon/user.py:18 +#: wxUI/dialogs/mastodon/postDialogs.py:5 +#: wxUI/dialogs/mastodon/postDialogs.py:194 wxUI/sysTrayIcon.py:35 +msgid "Post" +msgstr "Публикуване" + +#: controller/buffers/mastodon/base.py:68 +#: controller/buffers/mastodon/base.py:646 +msgid "Write your post here" +msgstr "Напишете вашата публикация тук" + +#: controller/buffers/mastodon/base.py:153 +#, python-brace-format +msgid "New post in {0}" +msgstr "Нова публикация в {0}" + +#: controller/buffers/mastodon/base.py:159 +#, python-brace-format +msgid "{0} new posts in {1}." +msgstr "{0} нови публикации в {1}" + +#: controller/buffers/mastodon/base.py:198 +#: controller/buffers/mastodon/community.py:90 +#: controller/buffers/mastodon/conversations.py:100 +#: controller/buffers/mastodon/mentions.py:82 +#: controller/buffers/mastodon/users.py:139 +#, python-format +msgid "%s items retrieved" +msgstr "%s неща извлечени" + +#: controller/buffers/mastodon/base.py:216 +#: controller/buffers/mastodon/users.py:206 +msgid "This buffer is not a timeline; it can't be deleted." +msgstr "Този буфер не е хронология —не може да бъде изтрит." + +#: controller/buffers/mastodon/base.py:346 +#: controller/buffers/mastodon/base.py:384 +#, python-brace-format +msgid "Conversation with {}" +msgstr "Дискусия с {}" + +#: controller/buffers/mastodon/base.py:347 +#: controller/buffers/mastodon/base.py:385 +#: controller/buffers/mastodon/conversations.py:181 +#: controller/buffers/mastodon/notifications.py:122 +#: controller/buffers/mastodon/users.py:52 +msgid "Write your message here" +msgstr "Напишете вашето съобщение тук" + +#: controller/buffers/mastodon/base.py:349 +#, python-brace-format +msgid "Reply to {}" +msgstr "Отговор до {}" + +#: controller/buffers/mastodon/base.py:350 +msgid "Write your reply here" +msgstr "Напишете вашия отговор тук" + +#: controller/buffers/mastodon/base.py:412 +msgid "This action is not supported on conversations." +msgstr "Това действие не се поддържа за дискусии." + +#: controller/buffers/mastodon/base.py:477 +msgid "Opening URL..." +msgstr "Адресът се отваря..." + +#: controller/buffers/mastodon/base.py:490 +msgid "You can delete only your own posts." +msgstr "Можете да изтривате само ваши публикации." + +#: controller/buffers/mastodon/base.py:519 +msgid "Opening item in web browser..." +msgstr "Отваряне на публикацията в уеб браузър..." + +#: controller/buffers/mastodon/base.py:527 +#: controller/buffers/mastodon/base.py:547 +msgid "Adding to favorites..." +msgstr "Добавяне към харесвани..." + +#: controller/buffers/mastodon/base.py:534 +#: controller/buffers/mastodon/base.py:549 +msgid "Removing from favorites..." +msgstr "Премахване от харесвани..." + +#: controller/buffers/mastodon/base.py:544 +#: controller/buffers/mastodon/base.py:559 +#: controller/buffers/mastodon/base.py:573 +#: controller/buffers/mastodon/conversations.py:213 +msgid "No status found with that ID" +msgstr "Няма статус намерен с това ID" + +#: controller/buffers/mastodon/base.py:562 +msgid "Adding to bookmarks..." +msgstr "Добавя се към любими..." + +#: controller/buffers/mastodon/base.py:564 +msgid "Removing from bookmarks..." +msgstr "Премахва се от любими..." + +#: controller/buffers/mastodon/base.py:586 +#, python-brace-format +msgid "Picture {0}" +msgstr "Снимка {0}" + +#: controller/buffers/mastodon/base.py:587 +msgid "Select the picture" +msgstr "Изберете снимка" + +#: controller/buffers/mastodon/base.py:610 +msgid "Unable to extract text" +msgstr "Невъзможно извличането на текст" + +#: controller/buffers/mastodon/base.py:612 +msgid "OCR Result" +msgstr "Резултат от оптично разпознаване — (OCR)" + +#: controller/buffers/mastodon/base.py:627 +msgid "this poll no longer exists." +msgstr "Тази анкета вече не съществува." + +#: controller/buffers/mastodon/base.py:630 +msgid "This poll has already expired." +msgstr "Срокът за тази анкета вече е изтекъл." + +#: controller/buffers/mastodon/base.py:633 +msgid "You have already voted on this poll." +msgstr "Вече сте гласували в тази анкета" + +#: controller/buffers/mastodon/base.py:642 +msgid "Sending vote..." +msgstr "Изпращане на глас..." + +#: controller/buffers/mastodon/conversations.py:180 +#, python-brace-format +msgid "Reply to conversation with {}" +msgstr "Отговор на дискусия с {}" + +#: controller/buffers/mastodon/notifications.py:121 +#: controller/buffers/mastodon/users.py:51 +#, python-brace-format +msgid "New conversation with {}" +msgstr "Нова дискусия с {}" + +#: controller/buffers/mastodon/notifications.py:151 +msgid "Notification dismissed." +msgstr "Известието е отхвърлено" + +#: controller/buffers/mastodon/users.py:110 +msgid "There are no more items in this buffer." +msgstr "Няма повече публикации в този буфер." + +#: controller/mastodon/handler.py:30 wxUI/dialogs/mastodon/updateProfile.py:35 +msgid "Update Profile" +msgstr "Обновяване на профила" + +#: controller/mastodon/handler.py:31 wxUI/dialogs/mastodon/search.py:10 +#: wxUI/view.py:19 +msgid "&Search" +msgstr "Търсене" + +#: controller/mastodon/handler.py:33 wxUI/view.py:22 +msgid "Manage user aliases" +msgstr "Управление на псевдонимите за потребители" + +#: controller/mastodon/handler.py:35 controller/mastodon/handler.py:59 +#: wxUI/view.py:30 +msgid "&Post" +msgstr "Публикувай" + +#: controller/mastodon/handler.py:36 wxUI/dialogs/mastodon/menus.py:9 +#: wxUI/dialogs/mastodon/menus.py:37 wxUI/view.py:31 +msgid "Re&ply" +msgstr "Отговор" + +#: controller/mastodon/handler.py:37 wxUI/dialogs/mastodon/menus.py:7 +#: wxUI/dialogs/mastodon/menus.py:35 wxUI/view.py:32 +msgid "&Boost" +msgstr "Boost" + +#: controller/mastodon/handler.py:38 wxUI/dialogs/mastodon/menus.py:11 +#: wxUI/dialogs/mastodon/menus.py:39 wxUI/view.py:33 +msgid "&Add to favorites" +msgstr "Добавяне към харесани" + +#: controller/mastodon/handler.py:39 +msgid "Remove from favorites" +msgstr "Премахване от харесвани" + +#: controller/mastodon/handler.py:40 wxUI/dialogs/mastodon/menus.py:21 +#: wxUI/dialogs/mastodon/menus.py:49 wxUI/view.py:35 +msgid "&Show post" +msgstr "Показване на публикация" + +#: controller/mastodon/handler.py:41 wxUI/view.py:36 +msgid "View conversa&tion" +msgstr "Преглед на дискусията" + +#: controller/mastodon/handler.py:42 wxUI/view.py:37 +msgid "Read text in picture" +msgstr "Прочитане на текст от снимка" + +#: controller/mastodon/handler.py:43 wxUI/dialogs/mastodon/menus.py:25 +#: wxUI/view.py:39 +msgid "&Delete" +msgstr "Изтриване" + +#: controller/mastodon/handler.py:45 wxUI/view.py:43 +msgid "&Actions..." +msgstr "Действия" + +#: controller/mastodon/handler.py:46 wxUI/view.py:44 +msgid "&View timeline..." +msgstr "Преглед на хронологията" + +#: controller/mastodon/handler.py:47 wxUI/view.py:45 +msgid "Direct me&ssage" +msgstr "Съобщения" + +#: controller/mastodon/handler.py:48 wxUI/view.py:46 +msgid "Add a&lias" +msgstr "Добавяне на псевдоним" + +#: controller/mastodon/handler.py:51 +msgid "Show user profile" +msgstr "Показване профил на потребител" + +#: controller/mastodon/handler.py:54 +msgid "Create c&ommunity timeline" +msgstr "" + +#: controller/mastodon/handler.py:55 wxUI/view.py:57 +msgid "Create a &filter" +msgstr "Създаване на филтър" + +#: controller/mastodon/handler.py:56 wxUI/view.py:58 +msgid "&Manage filters" +msgstr "" + +#: controller/mastodon/handler.py:95 +msgid "Timelines" +msgstr "Хронологии" + +#: controller/mastodon/handler.py:107 +msgid "Searches" +msgstr "Търсения" + +#: controller/mastodon/handler.py:110 controller/mastodon/handler.py:191 +#: controller/mastodon/handler.py:196 +#, python-brace-format +msgid "Search for {}" +msgstr "Търсене за {}" + +#: controller/mastodon/handler.py:111 +msgid "Communities" +msgstr "Общности" + +#: controller/mastodon/handler.py:114 +msgid "federated" +msgstr "Публично" + +#: controller/mastodon/handler.py:143 +#, python-brace-format +msgid "Conversation with {0}" +msgstr "Дискусия с {0}" + +#: controller/mastodon/handler.py:299 +msgid "Add an user alias" +msgstr "Добавяне на псевдоним за потребител" + +#: controller/mastodon/handler.py:311 +#, python-brace-format +msgid "Alias has been set correctly for {}." +msgstr "Правилно създаден псевдоним за {}." + +#: controller/mastodon/handler.py:342 +msgid "Update profile" +msgstr "Обновяване на профила" + +#: controller/mastodon/messages.py:115 +#, fuzzy, python-format +msgid "%s - %s of %d characters" +msgstr "%s остават %s от %d characters" + +#: controller/mastodon/messages.py:239 +#, python-brace-format +msgid "Poll with {} options" +msgstr "Анкета с {}" + +#: controller/mastodon/messages.py:272 +#, python-brace-format +msgid "Post from {}" +msgstr "Публикувайте от {}" + +#: controller/mastodon/messages.py:276 sessions/mastodon/templates.py:82 +#: wxUI/dialogs/mastodon/postDialogs.py:49 +msgid "Public" +msgstr "Публично" + +#: controller/mastodon/messages.py:276 sessions/mastodon/templates.py:82 +#: wxUI/dialogs/mastodon/postDialogs.py:49 +#, fuzzy +msgid "Not listed" +msgstr "В профил" + +#: controller/mastodon/messages.py:276 +msgid "followers only" +msgstr "Само до последователи" + +#: controller/mastodon/messages.py:276 sessions/mastodon/templates.py:82 +#: wxUI/dialogs/mastodon/postDialogs.py:49 +msgid "Direct" +msgstr "Съобщение" + +#: controller/mastodon/messages.py:283 +msgid "Remote instance" +msgstr "Дистанционен сървър" + +#: controller/mastodon/messages.py:291 controller/mastodon/messages.py:319 +msgid "Unmute conversation" +msgstr "Отглушаване на дискусия" + +#: controller/mastodon/messages.py:315 wxUI/dialogs/mastodon/postDialogs.py:237 +msgid "Mute conversation" +msgstr "Заглушаване на дискусия" + +#: controller/mastodon/messages.py:316 +msgid "Conversation unmuted." +msgstr "Дискусията отглушена" + +#: controller/mastodon/messages.py:320 +msgid "Conversation muted." +msgstr "Дискусията заглушена" + +#: controller/mastodon/messages.py:331 +msgid "people who boosted this post" +msgstr "Хората, споделили тази публикация" + +#: controller/mastodon/messages.py:336 +msgid "people who favorited this post" +msgstr "Хората, харесали тази публикация" + +#: controller/mastodon/messages.py:342 +msgid "Link copied to clipboard." +msgstr "Връзката е копирана" + +#: controller/mastodon/settings.py:82 +#, python-format +msgid "Account settings for %s" +msgstr "Настройки на акаунт за %s" + +#: controller/mastodon/settings.py:92 +#, python-brace-format +msgid "Edit template for posts. Current template: {}" +msgstr "Редактиране на шаблона за публикации. Текущият шаблон е {}" + +#: controller/mastodon/settings.py:101 +#, python-brace-format +msgid "Edit template for conversations. Current template: {}" +msgstr "Редактиране на шаблона за дискусии. Текущият шаблон е{}" + +#: controller/mastodon/settings.py:110 +#, python-brace-format +msgid "Edit template for persons. Current template: {}" +msgstr "Редактиране на шаблона за хора. Текущият шаблон е {}" + +#: controller/mastodon/settings.py:198 +msgid "Direct Messages" +msgstr "Лични съобщения" + +#: controller/mastodon/filters/create_filter.py:75 +#, fuzzy, python-brace-format +msgid "Update Filter: {}" +msgstr "Обновяване на профила" + +#: controller/mastodon/filters/manage_filters.py:57 +#: wxUI/dialogs/mastodon/filters/create_filter.py:90 +msgid "Never" +msgstr "" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:4 +msgid "Audio tweet." +msgstr "Аудио публикация" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:5 +msgid "User timeline buffer created." +msgstr "Буфер — хронология за потребител създаден" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:6 +msgid "Buffer destroied." +msgstr "Буфер изтрит" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:7 +msgid "Direct message received." +msgstr "Получено лично съобщение." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:8 +msgid "Direct message sent." +msgstr "Лично съобщение изпратено" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:9 +msgid "Error." +msgstr "Грешка." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:10 +msgid "Tweet liked." +msgstr "Публикацията харесана" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:11 +msgid "Likes buffer updated." +msgstr "Буфер харесани обновен" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:12 +msgid "Geotweet." +msgstr "Публикация с местоположение" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:13 +msgid "Tweet contains one or more images" +msgstr "Публикацията съдържа една или повече снимки" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:14 +msgid "Boundary reached." +msgstr "Края е достигнат" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:15 +msgid "List updated." +msgstr "Списъкът е обновен" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:16 +msgid "Too many characters." +msgstr "Много знаци" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:17 +msgid "Mention received." +msgstr "Получено отбелязване" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:18 +msgid "New event." +msgstr "Ново събитие" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:19 +#, python-brace-format +msgid "{0} is ready." +msgstr "{0} е готово" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:20 +msgid "Mention sent." +msgstr "Отбелязване изпратено" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:21 +msgid "Tweet retweeted." +msgstr "Публикация споделена" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:22 +msgid "Search buffer updated." +msgstr "Буферът търсене обновен" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:23 +msgid "Tweet received." +msgstr "Получена публикация" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:24 +msgid "Tweet sent." +msgstr "Публикация изпратена" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:25 +msgid "Trending topics buffer updated." +msgstr "Буферът популярни теми обновен" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:26 +msgid "New tweet in user timeline buffer." +msgstr "Нова публикация в потребителска хронология" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:27 +msgid "New follower." +msgstr "Нов последовател" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:28 +msgid "Volume changed." +msgstr "Звук променен" + +#: extra/SoundsTutorial/wx_ui.py:8 +msgid "Sounds tutorial" +msgstr "Звуково обучение" + +#: extra/SoundsTutorial/wx_ui.py:11 +msgid "Press enter to listen to the sound for the selected event" +msgstr "Натиснете enter,за да прослушате звука за избрано събитие" + +#: extra/SpellChecker/spellchecker.py:56 +#, python-format +msgid "Misspelled word: %s" +msgstr "Правописна грешка: %s" + +#: extra/SpellChecker/wx_ui.py:27 +msgid "Misspelled word" +msgstr "Правописна грешка" + +#: extra/SpellChecker/wx_ui.py:32 +msgid "Context" +msgstr "Съдържание" + +#: extra/SpellChecker/wx_ui.py:37 +msgid "Suggestions" +msgstr "Предложения" + +#: extra/SpellChecker/wx_ui.py:42 +msgid "&Ignore" +msgstr "Пропускане" + +#: extra/SpellChecker/wx_ui.py:43 +msgid "I&gnore all" +msgstr "Пропускане на всички" + +#: extra/SpellChecker/wx_ui.py:44 +msgid "&Replace" +msgstr "Заместване" + +#: extra/SpellChecker/wx_ui.py:45 +msgid "R&eplace all" +msgstr "Заместване на всички" + +#: extra/SpellChecker/wx_ui.py:46 +msgid "&Add to personal dictionary" +msgstr "Добавяне към личен речник" + +#: extra/SpellChecker/wx_ui.py:79 +#, python-brace-format +msgid "" +"An error has occurred. There are no dictionaries available for the " +"selected language in {0}" +msgstr "Грешка! Няма налични речници за избрания език в {0}." + +#: extra/SpellChecker/wx_ui.py:79 +#: extra/autocompletionUsers/mastodon/wx_scan.py:44 +#: wxUI/commonMessageDialogs.py:23 wxUI/commonMessageDialogs.py:36 +#: wxUI/commonMessageDialogs.py:45 wxUI/commonMessageDialogs.py:52 +#: wxUI/commonMessageDialogs.py:55 wxUI/commonMessageDialogs.py:61 +#: wxUI/dialogs/mastodon/dialogs.py:38 wxUI/dialogs/mastodon/dialogs.py:43 +#: wxUI/dialogs/mastodon/dialogs.py:48 wxUI/dialogs/mastodon/dialogs.py:53 +#: wxUI/dialogs/mastodon/dialogs.py:60 +msgid "Error" +msgstr "Грешка!" + +#: extra/SpellChecker/wx_ui.py:82 +msgid "Spell check complete." +msgstr "Проверка на правопис завършена." + +#: extra/autocompletionUsers/completion.py:39 +#: extra/autocompletionUsers/completion.py:57 +msgid "You have to start writing" +msgstr "Трябва да започнете да пишете" + +#: extra/autocompletionUsers/completion.py:49 +#: extra/autocompletionUsers/completion.py:66 +msgid "There are no results in your users database" +msgstr "Няма резултати във вашата потребителска база данни." + +#: extra/autocompletionUsers/completion.py:51 +msgid "Autocompletion only works for users." +msgstr "Автоматичното попълване работи само за потребители." + +#: extra/autocompletionUsers/wx_manage.py:9 +msgid "Manage Autocompletion database" +msgstr "Управление на базата данни за автоматично попълване" + +#: extra/autocompletionUsers/wx_manage.py:12 +#, fuzzy, python-brace-format +msgid "Editing {0} users database" +msgstr "Редактиране: {0} потребителската база данни." + +#: extra/autocompletionUsers/wx_manage.py:13 +msgid "Username" +msgstr "Потребителско име" + +#: extra/autocompletionUsers/wx_manage.py:13 wxUI/dialogs/configuration.py:108 +msgid "Name" +msgstr "Име" + +#: extra/autocompletionUsers/wx_manage.py:16 +msgid "Add user" +msgstr "Добавяне на потребител" + +#: extra/autocompletionUsers/wx_manage.py:17 +msgid "Remove user" +msgstr "Премахване на потребител" + +#: extra/autocompletionUsers/wx_manage.py:38 +#, fuzzy +msgid "Twitter username" +msgstr "Потребителско име за Twitter" + +#: extra/autocompletionUsers/wx_manage.py:38 +msgid "Add user to database" +msgstr "Добавяне на потребител към базата данни." + +#: extra/autocompletionUsers/wx_manage.py:44 +msgid "The user does not exist" +msgstr "Потребителят не съществува" + +#: extra/autocompletionUsers/wx_manage.py:44 +msgid "Error!" +msgstr "Грешка!" + +#: extra/autocompletionUsers/mastodon/scan.py:49 +msgid "" +"Updating database... You can close this window now. A message will tell " +"you when the process finishes." +msgstr "" +"Обновяване на базата данни. Можете да затворите прозореца. Когато " +"процесът приключи, ще бъдете уведомени със съобщение." + +#: extra/autocompletionUsers/mastodon/wx_scan.py:8 +msgid "Autocomplete users' settings" +msgstr "Настройки за автоматично попълване на потребители" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:11 +msgid "Add &followers to database" +msgstr "Добавяне на последователи към базата данни" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:12 +#, fuzzy +msgid "Add f&ollowing to database" +msgstr "Добавяне на последвани към базата данни." + +#: extra/autocompletionUsers/mastodon/wx_scan.py:26 +msgid "Updating autocompletion database" +msgstr "Обновяване базата данни за автоматично попълване на потребители" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:34 +msgid "" +"This process will retrieve the users you selected from your Mastodon " +"account, and add them to the user autocomplete database. Please note that" +" if there are many users or you have tried to perform this action less " +"than 15 minutes ago, TWBlue may reach a limit in API calls when trying to" +" load the users into the database. If this happens, we will show you an " +"error, in which case you will have to try this process again in a few " +"minutes. If this process ends with no error, you will be redirected back " +"to the account settings dialog. Do you want to continue?" +msgstr "" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:34 +#: wxUI/commonMessageDialogs.py:20 +msgid "Attention" +msgstr "" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:40 +#, python-brace-format +msgid "TWBlue has imported {} users successfully." +msgstr "" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:40 +msgid "Done" +msgstr "" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:44 +msgid "Error adding users from Mastodon. Please try again in about 15 minutes." +msgstr "" + +#: extra/ocr/OCRSpace.py:7 +msgid "Detect automatically" +msgstr "" + +#: extra/ocr/OCRSpace.py:7 +msgid "Danish" +msgstr "" + +#: extra/ocr/OCRSpace.py:7 +msgid "Dutch" +msgstr "" + +#: extra/ocr/OCRSpace.py:7 +msgid "English" +msgstr "" + +#: extra/ocr/OCRSpace.py:7 +msgid "Finnish" +msgstr "" + +#: extra/ocr/OCRSpace.py:7 +msgid "French" +msgstr "" + +#: extra/ocr/OCRSpace.py:7 +msgid "German" +msgstr "" + +#: extra/ocr/OCRSpace.py:7 +msgid "Hungarian" +msgstr "" + +#: extra/ocr/OCRSpace.py:7 +msgid "Korean" +msgstr "" + +#: extra/ocr/OCRSpace.py:7 +msgid "Italian" +msgstr "" + +#: extra/ocr/OCRSpace.py:7 +msgid "Japanese" +msgstr "" + +#: extra/ocr/OCRSpace.py:7 +msgid "Polish" +msgstr "" + +#: extra/ocr/OCRSpace.py:7 +msgid "Portuguese" +msgstr "" + +#: extra/ocr/OCRSpace.py:7 +msgid "Russian" +msgstr "" + +#: extra/ocr/OCRSpace.py:7 +msgid "Spanish" +msgstr "" + +#: extra/ocr/OCRSpace.py:7 +msgid "Turkish" +msgstr "" + +#: extra/translator/wx_ui.py:25 +msgid "Translate message" +msgstr "" + +#: extra/translator/wx_ui.py:29 +msgid "Translation engine" +msgstr "" + +#: extra/translator/wx_ui.py:32 +msgid "Target language" +msgstr "" + +#: keystrokeEditor/wx_ui.py:8 +msgid "Keystroke editor" +msgstr "" + +#: keystrokeEditor/wx_ui.py:11 +msgid "Select a keystroke to edit" +msgstr "" + +#: keystrokeEditor/wx_ui.py:12 +#: wxUI/dialogs/mastodon/filters/manage_filters.py:18 +#: wxUI/dialogs/mastodon/userActions.py:9 +#: wxUI/dialogs/mastodon/userActions.py:18 +#: wxUI/dialogs/mastodon/userActions.py:19 +msgid "Action" +msgstr "" + +#: keystrokeEditor/wx_ui.py:12 +msgid "Keystroke" +msgstr "" + +#: keystrokeEditor/wx_ui.py:17 +#: wxUI/dialogs/mastodon/filters/manage_filters.py:23 +#: wxUI/dialogs/userAliasDialogs.py:53 +msgid "Edit" +msgstr "" + +#: keystrokeEditor/wx_ui.py:19 keystrokeEditor/wx_ui.py:49 +msgid "Undefine keystroke" +msgstr "" + +#: keystrokeEditor/wx_ui.py:20 +msgid "Execute action" +msgstr "" + +#: keystrokeEditor/wx_ui.py:21 wxUI/dialogs/userAliasDialogs.py:25 +msgid "Close" +msgstr "" + +#: keystrokeEditor/wx_ui.py:41 +msgid "Undefined" +msgstr "" + +#: keystrokeEditor/wx_ui.py:49 +msgid "Are you sure you want to undefine this keystroke?" +msgstr "" + +#: keystrokeEditor/wx_ui.py:53 +msgid "Editing keystroke" +msgstr "" + +#: keystrokeEditor/wx_ui.py:56 +msgid "Control" +msgstr "" + +#: keystrokeEditor/wx_ui.py:57 +msgid "Alt" +msgstr "" + +#: keystrokeEditor/wx_ui.py:58 +msgid "Shift" +msgstr "" + +#: keystrokeEditor/wx_ui.py:59 +msgid "Windows" +msgstr "" + +#: keystrokeEditor/wx_ui.py:65 +msgid "Key" +msgstr "" + +#: keystrokeEditor/wx_ui.py:70 wxUI/dialogs/find.py:21 +#: wxUI/dialogs/mastodon/showUserProfile.py:31 +#: wxUI/dialogs/userAliasDialogs.py:23 +msgid "OK" +msgstr "" + +#: keystrokeEditor/wx_ui.py:83 +msgid "You need to use the Windows key" +msgstr "" + +#: keystrokeEditor/wx_ui.py:83 keystrokeEditor/wx_ui.py:86 +msgid "Invalid keystroke" +msgstr "" + +#: keystrokeEditor/wx_ui.py:86 +msgid "You must provide a character for the keystroke" +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:3 +msgid "Go up in the current buffer" +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:4 +msgid "Go down in the current buffer" +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:5 +msgid "Go to the previous buffer" +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:6 +msgid "Go to the next buffer" +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:7 +msgid "Focus the next session" +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:8 +msgid "Focus the previous session" +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:9 +msgid "Show or hide the GUI" +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:10 +msgid "Make a new post" +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:11 wxUI/buffers/mastodon/base.py:26 +#: wxUI/buffers/mastodon/conversationList.py:25 +msgid "Reply" +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:12 wxUI/buffers/mastodon/base.py:25 +#: wxUI/dialogs/mastodon/dialogs.py:7 +msgid "Boost" +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:13 +msgid "Send direct message" +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:14 +msgid "Add post to favorites" +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:15 +msgid "Remove post from favorites" +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:16 +msgid "Add/remove post from favorites" +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:17 +msgid "Open the user actions dialogue" +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:18 +msgid "See user details" +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:19 +msgid "Show post" +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:20 +msgid "Quit" +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:21 +msgid "Open user timeline" +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:22 +msgid "Destroy buffer" +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:23 +msgid "Interact with the currently focused post." +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:24 +msgid "Open URL" +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:25 +msgid "View in browser" +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:26 +msgid "Increase volume by 5%" +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:27 +msgid "Decrease volume by 5%" +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:28 +msgid "Jump to the first element of a buffer" +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:29 +msgid "Jump to the last element of the current buffer" +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:30 +msgid "Jump 20 elements up in the current buffer" +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:31 +msgid "Jump 20 elements down in the current buffer" +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:33 +msgid "Delete post" +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:34 +msgid "Empty the current buffer" +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:35 +msgid "Repeat last item" +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:36 +msgid "Copy to clipboard" +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:39 +msgid "Mute/unmute the active buffer" +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:40 +msgid "Mute/unmute the current session" +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:41 +msgid "toggle the automatic reading of incoming tweets in the active buffer" +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:42 +msgid "Search on instance" +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:43 +msgid "Find a string in the currently focused buffer" +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:44 +msgid "Show the keystroke editor" +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:46 +msgid "load previous items" +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:48 +msgid "View conversation" +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:49 +msgid "Check and download updates" +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:50 +msgid "Opens the global settings dialogue" +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:52 +msgid "Opens the account settings dialogue" +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:53 +msgid "Try to play a media file" +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:54 +msgid "Updates the buffer and retrieves possible lost items there." +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:55 +msgid "Extracts the text from a picture and displays the result in a dialog." +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:56 +msgid "Adds an alias to an user" +msgstr "" + +#: sessionmanager/sessionManager.py:69 +#, python-brace-format +msgid "{account_name}@{instance} (Mastodon)" +msgstr "" + +#: sessionmanager/wxUI.py:11 +msgid "Session manager" +msgstr "" + +#: sessionmanager/wxUI.py:14 +msgid "Accounts list" +msgstr "" + +#: sessionmanager/wxUI.py:16 +msgid "Account" +msgstr "" + +#: sessionmanager/wxUI.py:20 +msgid "New account" +msgstr "" + +#: sessionmanager/wxUI.py:22 sessionmanager/wxUI.py:79 +msgid "Remove account" +msgstr "" + +#: sessionmanager/wxUI.py:24 +msgid "Global Settings" +msgstr "" + +#: sessionmanager/wxUI.py:48 +msgid "You need to configure an account." +msgstr "" + +#: sessionmanager/wxUI.py:48 +msgid "Account Error" +msgstr "" + +#: sessionmanager/wxUI.py:54 +msgid "Mastodon" +msgstr "" + +#: sessionmanager/wxUI.py:59 +msgid "" +"You will be prompted for your Mastodon data (instance URL, email address " +"and password) so we can authorise TWBlue in your instance. Would you like" +" to authorise your account now?" +msgstr "" + +#: sessionmanager/wxUI.py:59 +msgid "Authorization" +msgstr "" + +#: sessionmanager/wxUI.py:67 +#, python-format +msgid "Authorized account %d" +msgstr "" + +#: sessionmanager/wxUI.py:73 +msgid "" +"Your access token is invalid or the authorization has failed. Please try " +"again." +msgstr "" + +#: sessionmanager/wxUI.py:73 +msgid "Invalid user token" +msgstr "" + +#: sessionmanager/wxUI.py:79 +msgid "Do you really want to delete this account?" +msgstr "" + +#: sessions/base.py:125 +#, python-brace-format +msgid "" +"An exception occurred while saving the {app} database. It will be deleted" +" and rebuilt automatically. If this error persists, send the error log to" +" the {app} developers." +msgstr "" + +#: sessions/base.py:165 +#, python-brace-format +msgid "" +"An exception occurred while loading the {app} database. It will be " +"deleted and rebuilt automatically. If this error persists, send the error" +" log to the {app} developers." +msgstr "" + +#: sessions/mastodon/compose.py:15 sessions/mastodon/compose.py:61 +msgid "dddd, MMMM D, YYYY H:m" +msgstr "" + +#: sessions/mastodon/compose.py:17 sessions/mastodon/templates.py:74 +#: sessions/mastodon/templates.py:75 +#, python-brace-format +msgid "Boosted from @{}: {}" +msgstr "" + +#: sessions/mastodon/compose.py:22 sessions/mastodon/compose.py:81 +#: sessions/mastodon/templates.py:81 sessions/mastodon/templates.py:176 +#, python-brace-format +msgid "hidden by filter {}" +msgstr "" + +#: sessions/mastodon/compose.py:36 sessions/mastodon/templates.py:28 +msgid "dddd, MMMM D, YYYY H:m:s" +msgstr "" + +#: sessions/mastodon/compose.py:38 +#, python-format +msgid "%s (@%s). %s followers, %s following, %s posts. Joined %s" +msgstr "" + +#: sessions/mastodon/compose.py:49 +#, python-brace-format +msgid "Last message from {}: {}" +msgstr "" + +#: sessions/mastodon/compose.py:64 +#, python-brace-format +msgid "{username} has posted: {status}" +msgstr "" + +#: sessions/mastodon/compose.py:66 +#, python-brace-format +msgid "{username} has mentioned you: {status}" +msgstr "" + +#: sessions/mastodon/compose.py:68 +#, python-brace-format +msgid "{username} has boosted: {status}" +msgstr "" + +#: sessions/mastodon/compose.py:70 +#, python-brace-format +msgid "{username} has added to favorites: {status}" +msgstr "" + +#: sessions/mastodon/compose.py:72 +#, python-brace-format +msgid "{username} has followed you." +msgstr "" + +#: sessions/mastodon/compose.py:74 +#, python-brace-format +msgid "{username} has joined the instance." +msgstr "" + +#: sessions/mastodon/compose.py:76 sessions/mastodon/templates.py:171 +#, python-brace-format +msgid "A poll in which you have voted has expired: {status}" +msgstr "" + +#: sessions/mastodon/compose.py:78 +#, python-brace-format +msgid "{username} wants to follow you." +msgstr "" + +#: sessions/mastodon/session.py:69 +msgid "Please enter your instance URL." +msgstr "" + +#: sessions/mastodon/session.py:69 +msgid "Mastodon instance" +msgstr "" + +#: sessions/mastodon/session.py:80 +msgid "" +"We could not connect to your mastodon instance. Please verify that the " +"domain exists and the instance is accessible via a web browser." +msgstr "" + +#: sessions/mastodon/session.py:80 +msgid "Instance error" +msgstr "" + +#: sessions/mastodon/session.py:85 +msgid "Enter the verification code" +msgstr "" + +#: sessions/mastodon/session.py:85 +msgid "PIN code authorization" +msgstr "" + +#: sessions/mastodon/session.py:94 +msgid "" +"We could not authorice your mastodon account to be used in TWBlue. This " +"might be caused due to an incorrect verification code. Please try to add " +"the session again." +msgstr "" + +#: sessions/mastodon/session.py:94 +msgid "Authorization error" +msgstr "" + +#: sessions/mastodon/session.py:215 +#, python-format +msgid "%s succeeded." +msgstr "" + +#: sessions/mastodon/templates.py:18 +msgid "$display_name, $text $image_descriptions $date. $source" +msgstr "" + +#: sessions/mastodon/templates.py:19 +msgid "Dm to $recipient_display_name, $text $date" +msgstr "" + +#: sessions/mastodon/templates.py:20 +msgid "" +"$display_name (@$screen_name). $followers followers, $following " +"following, $posts posts. Joined $created_at." +msgstr "" + +#: sessions/mastodon/templates.py:21 +msgid "$display_name $text, $date" +msgstr "" + +#: sessions/mastodon/templates.py:34 +#, python-brace-format +msgid "Content warning: {}" +msgstr "" + +#: sessions/mastodon/templates.py:45 +#, python-brace-format +msgid "Media description: {}" +msgstr "" + +#: sessions/mastodon/templates.py:82 wxUI/dialogs/mastodon/postDialogs.py:49 +msgid "Followers only" +msgstr "" + +#: sessions/mastodon/templates.py:94 +#, fuzzy +msgid "Pinned." +msgstr "Копирано" + +#: sessions/mastodon/templates.py:157 +#, python-brace-format +msgid "has posted: {status}" +msgstr "" + +#: sessions/mastodon/templates.py:159 +#, python-brace-format +msgid "has mentioned you: {status}" +msgstr "" + +#: sessions/mastodon/templates.py:161 +#, python-brace-format +msgid "has boosted: {status}" +msgstr "" + +#: sessions/mastodon/templates.py:163 +#, python-brace-format +msgid "has added to favorites: {status}" +msgstr "" + +#: sessions/mastodon/templates.py:165 +#, python-brace-format +msgid "has updated a status: {status}" +msgstr "" + +#: sessions/mastodon/templates.py:167 +msgid "has followed you." +msgstr "" + +#: sessions/mastodon/templates.py:169 +msgid "has joined the instance." +msgstr "" + +#: sessions/mastodon/templates.py:173 +msgid "wants to follow you." +msgstr "" + +#: update/utils.py:29 +#, python-format +msgid "%d day, " +msgstr "" + +#: update/utils.py:31 +#, python-format +msgid "%d days, " +msgstr "" + +#: update/utils.py:33 +#, python-format +msgid "%d hour, " +msgstr "" + +#: update/utils.py:35 +#, python-format +msgid "%d hours, " +msgstr "" + +#: update/utils.py:37 +#, python-format +msgid "%d minute, " +msgstr "" + +#: update/utils.py:39 +#, python-format +msgid "%d minutes, " +msgstr "" + +#: update/utils.py:41 +#, python-format +msgid "%s second" +msgstr "" + +#: update/utils.py:43 +#, python-format +msgid "%s seconds" +msgstr "" + +#: update/wxUpdater.py:11 +#, python-format +msgid "" +"There's a new %s version available, released on %s. Would you like to " +"download it now?\n" +"\n" +" %s version: %s\n" +"\n" +"Changes:\n" +"%s" +msgstr "" + +#: update/wxUpdater.py:14 +#, python-format +msgid "" +"There's a new %s version available, released on %s. Updates are not " +"automatic in Windows 7, so you would need to visit TWBlue's download " +"website to get the latest version.\n" +"\n" +" %s version: %s\n" +"\n" +"Changes:\n" +"%s" +msgstr "" + +#: update/wxUpdater.py:16 +#, python-format +msgid "New version for %s" +msgstr "" + +#: update/wxUpdater.py:23 +msgid "Download in Progress" +msgstr "" + +#: update/wxUpdater.py:23 +msgid "Downloading the new version..." +msgstr "" + +#: update/wxUpdater.py:33 +#, python-format +msgid "Updating... %s of %s" +msgstr "" + +#: update/wxUpdater.py:36 +msgid "" +"The update has been downloaded and installed successfully. Press OK to " +"continue." +msgstr "" + +#: update/wxUpdater.py:36 +msgid "Done!" +msgstr "" + +#: wxUI/commonMessageDialogs.py:6 +#, python-brace-format +msgid "Do you really want to close {0}?" +msgstr "" + +#: wxUI/commonMessageDialogs.py:6 +msgid "Exit" +msgstr "" + +#: wxUI/commonMessageDialogs.py:10 +#, python-brace-format +msgid " {0} must be restarted for these changes to take effect." +msgstr "" + +#: wxUI/commonMessageDialogs.py:10 +#, python-brace-format +msgid "Restart {0} " +msgstr "" + +#: wxUI/commonMessageDialogs.py:13 +msgid "" +"Are you sure you want to delete this user from the database? This user " +"will not appear in autocomplete results anymore." +msgstr "" + +#: wxUI/commonMessageDialogs.py:13 +msgid "Confirm" +msgstr "" + +#: wxUI/commonMessageDialogs.py:16 +msgid "" +"Do you really want to empty this buffer? It's items will be removed from" +" the list but not from Twitter" +msgstr "" + +#: wxUI/commonMessageDialogs.py:16 wxUI/dialogs/mastodon/dialogs.py:31 +msgid "Empty buffer" +msgstr "" + +#: wxUI/commonMessageDialogs.py:20 +msgid "Do you really want to destroy this buffer?" +msgstr "" + +#: wxUI/commonMessageDialogs.py:23 +msgid "That user does not exist" +msgstr "" + +#: wxUI/commonMessageDialogs.py:26 +msgid "A timeline for this user already exists. You can't open another" +msgstr "" + +#: wxUI/commonMessageDialogs.py:26 +msgid "Existing timeline" +msgstr "" + +#: wxUI/commonMessageDialogs.py:29 +#, python-brace-format +msgid "" +"If you like {0} we need your help to keep it going. Help us by donating " +"to the project. This will help us pay for the server, the domain and some" +" other things to ensure that {0} will be actively maintained. Your " +"donation will give us the means to continue the development of {0}, and " +"to keep {0} free. Would you like to donate now?" +msgstr "" + +#: wxUI/commonMessageDialogs.py:29 +msgid "We need your help" +msgstr "" + +#: wxUI/commonMessageDialogs.py:33 wxUI/dialogs/mastodon/postDialogs.py:207 +msgid "Information" +msgstr "" + +#: wxUI/commonMessageDialogs.py:36 +msgid "The configuration file is invalid." +msgstr "" + +#: wxUI/commonMessageDialogs.py:39 +#, python-brace-format +msgid "" +"{0} quit unexpectedly the last time it was run. If the problem persists, " +"please report it to the {0} developers." +msgstr "" + +#: wxUI/commonMessageDialogs.py:39 +msgid "Warning" +msgstr "" + +#: wxUI/commonMessageDialogs.py:45 +#, python-brace-format +msgid "Sorry, you can't update while running {} from source." +msgstr "" + +#: wxUI/commonMessageDialogs.py:49 +msgid "the provided instance is invalid. Please try again." +msgstr "" + +#: wxUI/commonMessageDialogs.py:49 +msgid "Invalid instance" +msgstr "" + +#: wxUI/commonMessageDialogs.py:52 +msgid "" +"TWBlue was unable to add or update the filter with the specified " +"settings. Please try again." +msgstr "" + +#: wxUI/commonMessageDialogs.py:55 +msgid "" +"TWBlue was unable to load your filters from the instance. Please try " +"again." +msgstr "" + +#: wxUI/commonMessageDialogs.py:58 +msgid "Do you really want to delete this filter ?" +msgstr "" + +#: wxUI/commonMessageDialogs.py:58 +#, fuzzy +msgid "Delete filter" +msgstr "Създаване на филтър" + +#: wxUI/commonMessageDialogs.py:61 +msgid "TWBlue was unable to remove the filter you specified. Please try again." +msgstr "" + +#: wxUI/sysTrayIcon.py:36 wxUI/view.py:25 +msgid "&Global settings" +msgstr "" + +#: wxUI/sysTrayIcon.py:37 wxUI/view.py:24 +msgid "Account se&ttings" +msgstr "" + +#: wxUI/sysTrayIcon.py:39 +msgid "&Show / hide" +msgstr "" + +#: wxUI/sysTrayIcon.py:40 wxUI/view.py:74 +msgid "&Documentation" +msgstr "" + +#: wxUI/sysTrayIcon.py:41 +msgid "Check for &updates" +msgstr "" + +#: wxUI/sysTrayIcon.py:42 +msgid "&Exit" +msgstr "" + +#: wxUI/view.py:16 +msgid "&Manage accounts" +msgstr "" + +#: wxUI/view.py:17 +msgid "&Update profile" +msgstr "" + +#: wxUI/view.py:18 +msgid "&Hide window" +msgstr "" + +#: wxUI/view.py:20 +msgid "&Lists manager" +msgstr "" + +#: wxUI/view.py:23 +msgid "&Edit keystrokes" +msgstr "" + +#: wxUI/view.py:26 +msgid "E&xit" +msgstr "" + +#: wxUI/view.py:34 +msgid "&Remove from favorites" +msgstr "" + +#: wxUI/view.py:47 +msgid "&Add to list" +msgstr "" + +#: wxUI/view.py:48 +msgid "R&emove from list" +msgstr "" + +#: wxUI/view.py:49 +msgid "Show user &profile" +msgstr "" + +#: wxUI/view.py:50 +msgid "V&iew likes" +msgstr "" + +#: wxUI/view.py:54 +msgid "&Update buffer" +msgstr "" + +#: wxUI/dialogs/mastodon/communityTimeline.py:9 wxUI/view.py:55 +msgid "Create community timeline" +msgstr "" + +#: wxUI/view.py:56 +msgid "New &trending topics buffer..." +msgstr "" + +#: wxUI/view.py:59 +msgid "Find a string in the currently focused buffer..." +msgstr "" + +#: wxUI/view.py:60 +msgid "&Load previous items" +msgstr "" + +#: wxUI/dialogs/mastodon/userActions.py:21 wxUI/view.py:62 +msgid "&Mute" +msgstr "" + +#: wxUI/view.py:63 +msgid "&Autoread" +msgstr "" + +#: wxUI/view.py:64 +msgid "&Clear buffer" +msgstr "" + +#: wxUI/view.py:65 +msgid "&Destroy" +msgstr "" + +#: wxUI/view.py:69 +msgid "&Seek back 5 seconds" +msgstr "" + +#: wxUI/view.py:70 +msgid "&Seek forward 5 seconds" +msgstr "" + +#: wxUI/view.py:75 +msgid "Sounds &tutorial" +msgstr "" + +#: wxUI/view.py:76 +msgid "&What's new in this version?" +msgstr "" + +#: wxUI/view.py:77 +msgid "&Check for updates" +msgstr "" + +#: wxUI/view.py:78 +msgid "&Report an error" +msgstr "" + +#: wxUI/view.py:79 +#, python-brace-format +msgid "{0}'s &website" +msgstr "" + +#: wxUI/view.py:80 +msgid "Get soundpacks for TWBlue" +msgstr "" + +#: wxUI/view.py:81 +#, python-brace-format +msgid "About &{0}" +msgstr "" + +#: wxUI/view.py:84 +msgid "&Application" +msgstr "" + +#: wxUI/view.py:85 +msgid "&Tweet" +msgstr "" + +#: wxUI/dialogs/mastodon/userActions.py:10 wxUI/view.py:86 +msgid "&User" +msgstr "" + +#: wxUI/view.py:87 +msgid "&Buffer" +msgstr "" + +#: wxUI/view.py:88 +msgid "&Audio" +msgstr "" + +#: wxUI/view.py:89 +msgid "&Help" +msgstr "" + +#: wxUI/view.py:175 +msgid "Address" +msgstr "" + +#: wxUI/view.py:206 +#, python-brace-format +msgid "Your {0} version is up to date" +msgstr "" + +#: wxUI/view.py:206 +msgid "Update" +msgstr "" + +#: wxUI/buffers/panels.py:12 wxUI/buffers/panels.py:20 +msgid "Login" +msgstr "" + +#: wxUI/buffers/panels.py:14 +msgid "Log in automatically" +msgstr "" + +#: wxUI/buffers/panels.py:22 +msgid "Logout" +msgstr "" + +#: wxUI/buffers/mastodon/base.py:11 +#: wxUI/buffers/mastodon/conversationList.py:11 wxUI/buffers/mastodon/user.py:8 +#: wxUI/dialogs/mastodon/userTimeline.py:10 wxUI/dialogs/userAliasDialogs.py:14 +msgid "User" +msgstr "" + +#: wxUI/buffers/mastodon/base.py:11 +#: wxUI/buffers/mastodon/conversationList.py:11 +#: wxUI/buffers/mastodon/notifications.py:11 +#: wxUI/dialogs/mastodon/postDialogs.py:37 +#: wxUI/dialogs/mastodon/postDialogs.py:272 +msgid "Text" +msgstr "" + +#: wxUI/buffers/mastodon/base.py:11 +#: wxUI/buffers/mastodon/conversationList.py:11 +#: wxUI/buffers/mastodon/notifications.py:11 +#: wxUI/dialogs/mastodon/postDialogs.py:216 +msgid "Date" +msgstr "" + +#: wxUI/buffers/mastodon/base.py:11 +#: wxUI/buffers/mastodon/conversationList.py:11 +msgid "Client" +msgstr "" + +#: wxUI/buffers/mastodon/base.py:27 +msgid "Favorite" +msgstr "" + +#: wxUI/buffers/mastodon/base.py:28 +msgid "Bookmark" +msgstr "" + +#: wxUI/buffers/mastodon/base.py:29 +msgid "Direct message" +msgstr "" + +#: wxUI/buffers/mastodon/notifications.py:23 +#: wxUI/dialogs/mastodon/dialogs.py:23 +msgid "Dismiss" +msgstr "" + +#: wxUI/buffers/mastodon/user.py:19 wxUI/dialogs/userAliasDialogs.py:48 +msgid "Actions" +msgstr "" + +#: wxUI/buffers/mastodon/user.py:20 +msgid "Message" +msgstr "" + +#: wxUI/dialogs/configuration.py:15 +msgid "&Language" +msgstr "" + +#: wxUI/dialogs/configuration.py:22 +#, python-brace-format +msgid "&Ask before exiting {0}" +msgstr "" + +#: wxUI/dialogs/configuration.py:24 +msgid "&Disable Streaming functions" +msgstr "" + +#: wxUI/dialogs/configuration.py:27 +msgid "&Buffer update interval, in minutes" +msgstr "" + +#: wxUI/dialogs/configuration.py:33 +#, python-brace-format +msgid "Pla&y a sound when {0} launches" +msgstr "" + +#: wxUI/dialogs/configuration.py:35 +#, python-brace-format +msgid "Sp&eak a message when {0} launches" +msgstr "" + +#: wxUI/dialogs/configuration.py:37 +msgid "&Use invisible interface's keyboard shortcuts while GUI is visible" +msgstr "" + +#: wxUI/dialogs/configuration.py:39 +msgid "A&ctivate Sapi5 when any other screen reader is not being run" +msgstr "" + +#: wxUI/dialogs/configuration.py:41 +msgid "&Hide GUI on launch" +msgstr "" + +#: wxUI/dialogs/configuration.py:43 +msgid "&Read long posts in GUI" +msgstr "" + +#: wxUI/dialogs/configuration.py:46 +msgid "&Keymap" +msgstr "" + +#: wxUI/dialogs/configuration.py:51 +#, python-brace-format +msgid "Check for u&pdates when {0} launches" +msgstr "" + +#: wxUI/dialogs/configuration.py:61 +msgid "Proxy &type: " +msgstr "" + +#: wxUI/dialogs/configuration.py:68 +msgid "Proxy s&erver: " +msgstr "" + +#: wxUI/dialogs/configuration.py:74 +msgid "&Port: " +msgstr "" + +#: wxUI/dialogs/configuration.py:80 +msgid "&User: " +msgstr "" + +#: wxUI/dialogs/configuration.py:86 +msgid "P&assword: " +msgstr "" + +#: wxUI/dialogs/configuration.py:98 +msgid "Enable automatic s&peech feedback" +msgstr "" + +#: wxUI/dialogs/configuration.py:100 +msgid "Enable automatic &Braille feedback" +msgstr "" + +#: wxUI/dialogs/configuration.py:108 +msgid "Buffer" +msgstr "" + +#: wxUI/dialogs/configuration.py:108 +msgid "Status" +msgstr "" + +#: wxUI/dialogs/configuration.py:111 +msgid "S&how/hide" +msgstr "" + +#: wxUI/dialogs/configuration.py:112 +msgid "Move &up" +msgstr "" + +#: wxUI/dialogs/configuration.py:113 +msgid "Move &down" +msgstr "" + +#: wxUI/dialogs/configuration.py:123 wxUI/dialogs/configuration.py:188 +#: wxUI/dialogs/configuration.py:191 wxUI/dialogs/configuration.py:196 +msgid "Show" +msgstr "" + +#: wxUI/dialogs/configuration.py:125 wxUI/dialogs/configuration.py:135 +#: wxUI/dialogs/configuration.py:159 wxUI/dialogs/configuration.py:189 +msgid "Hide" +msgstr "" + +#: wxUI/dialogs/configuration.py:133 wxUI/dialogs/configuration.py:157 +msgid "Select a buffer first." +msgstr "" + +#: wxUI/dialogs/configuration.py:136 wxUI/dialogs/configuration.py:160 +msgid "The buffer is hidden, show it first." +msgstr "" + +#: wxUI/dialogs/configuration.py:139 +msgid "The buffer is already at the top of the list." +msgstr "" + +#: wxUI/dialogs/configuration.py:163 +msgid "The buffer is already at the bottom of the list." +msgstr "" + +#: wxUI/dialogs/configuration.py:205 +msgid "&LibreTranslate API URL: " +msgstr "" + +#: wxUI/dialogs/configuration.py:211 +msgid "LibreTranslate API &Key (optional): " +msgstr "" + +#: wxUI/dialogs/configuration.py:217 +msgid "&DeepL API Key: " +msgstr "" + +#: wxUI/dialogs/configuration.py:231 +#, python-brace-format +msgid "{0} preferences" +msgstr "" + +#: wxUI/dialogs/configuration.py:237 wxUI/dialogs/mastodon/configuration.py:144 +msgid "General" +msgstr "" + +#: wxUI/dialogs/configuration.py:242 +msgid "Proxy" +msgstr "" + +#: wxUI/dialogs/configuration.py:246 +msgid "Translation services" +msgstr "" + +#: wxUI/dialogs/configuration.py:251 wxUI/dialogs/mastodon/configuration.py:170 +msgid "&Save" +msgstr "" + +#: wxUI/dialogs/configuration.py:253 +#: wxUI/dialogs/mastodon/communityTimeline.py:27 +#: wxUI/dialogs/mastodon/configuration.py:172 +#: wxUI/dialogs/mastodon/search.py:26 +#: wxUI/dialogs/mastodon/showUserProfile.py:170 +#: wxUI/dialogs/mastodon/updateProfile.py:132 +#: wxUI/dialogs/mastodon/userActions.py:38 +#: wxUI/dialogs/mastodon/userTimeline.py:32 +msgid "&Close" +msgstr "" + +#: wxUI/dialogs/find.py:13 +msgid "Find in current buffer" +msgstr "" + +#: wxUI/dialogs/find.py:14 +msgid "String" +msgstr "" + +#: wxUI/dialogs/find.py:23 wxUI/dialogs/mastodon/showUserProfile.py:33 +msgid "Cancel" +msgstr "" + +#: wxUI/dialogs/templateDialogs.py:8 +msgid "Edit Template" +msgstr "" + +#: wxUI/dialogs/templateDialogs.py:13 +msgid "Edit template" +msgstr "" + +#: wxUI/dialogs/templateDialogs.py:17 +msgid "Available variables" +msgstr "" + +#: wxUI/dialogs/templateDialogs.py:29 +msgid "Restore template" +msgstr "" + +#: wxUI/dialogs/templateDialogs.py:48 +#, python-brace-format +msgid "Restored template to {}." +msgstr "" + +#: wxUI/dialogs/templateDialogs.py:52 +msgid "" +"the template you have specified include variables that do not exists for " +"the object. Please fix the template and try again. For your reference, " +"you can see a list of all available variables in the variables list while" +" editing your template." +msgstr "" + +#: wxUI/dialogs/templateDialogs.py:52 +msgid "Invalid template" +msgstr "" + +#: wxUI/dialogs/urlList.py:6 +msgid "Select URL" +msgstr "" + +#: wxUI/dialogs/mastodon/userActions.py:13 +#: wxUI/dialogs/mastodon/userTimeline.py:13 wxUI/dialogs/userAliasDialogs.py:13 +msgid "&Autocomplete users" +msgstr "" + +#: wxUI/dialogs/userAliasDialogs.py:18 +msgid "Alias" +msgstr "" + +#: wxUI/dialogs/userAliasDialogs.py:41 +msgid "Edit user aliases" +msgstr "" + +#: wxUI/dialogs/mastodon/search.py:19 wxUI/dialogs/userAliasDialogs.py:43 +msgid "Users" +msgstr "" + +#: wxUI/dialogs/userAliasDialogs.py:50 +msgid "Add alias" +msgstr "" + +#: wxUI/dialogs/userAliasDialogs.py:51 +msgid "Adds a new user alias" +msgstr "" + +#: wxUI/dialogs/userAliasDialogs.py:54 +msgid "Edit the currently focused user Alias." +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:26 +#: wxUI/dialogs/mastodon/filters/manage_filters.py:24 +#: wxUI/dialogs/userAliasDialogs.py:57 +msgid "Remove" +msgstr "" + +#: wxUI/dialogs/userAliasDialogs.py:58 +msgid "Remove the currently focused user alias." +msgstr "" + +#: wxUI/dialogs/userAliasDialogs.py:82 +msgid "Are you sure you want to delete this user alias?" +msgstr "" + +#: wxUI/dialogs/userAliasDialogs.py:82 +msgid "Remove user alias" +msgstr "" + +#: wxUI/dialogs/userAliasDialogs.py:93 +msgid "User alias" +msgstr "" + +#: wxUI/dialogs/userList.py:27 +msgid "View profile" +msgstr "" + +#: wxUI/dialogs/mastodon/communityTimeline.py:10 +msgid "Community URL" +msgstr "" + +#: wxUI/dialogs/mastodon/communityTimeline.py:16 +#: wxUI/dialogs/mastodon/userTimeline.py:18 +msgid "Buffer type" +msgstr "" + +#: wxUI/dialogs/mastodon/communityTimeline.py:17 +msgid "&Local timeline" +msgstr "" + +#: wxUI/dialogs/mastodon/communityTimeline.py:18 +msgid "&Federated Timeline" +msgstr "" + +#: wxUI/dialogs/mastodon/communityTimeline.py:25 +#: wxUI/dialogs/mastodon/search.py:24 +#: wxUI/dialogs/mastodon/updateProfile.py:130 +#: wxUI/dialogs/mastodon/userActions.py:36 +#: wxUI/dialogs/mastodon/userTimeline.py:30 +msgid "&OK" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:14 +msgid "User autocompletion settings" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:15 +msgid "" +"Scan acc&ount and add followers and following users to the user " +"autocompletion database" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:16 +msgid "&Manage autocompletion database" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:21 +msgid "&Disable Streaming API endpoints" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:23 +msgid "&Relative timestamps" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:25 +msgid "" +"R&ead preferences from instance (default visibility when publishing and " +"displaying sensitive content)" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:28 +msgid "&Items on each API call" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:34 +msgid "" +"I&nverted buffers: The newest items will be shown at the beginning while " +"the oldest at the end" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:36 +msgid "&Ask confirmation before boosting a post" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:38 +msgid "S&how screen names instead of full names" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:40 +msgid "Hide e&mojis in usernames" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:42 +msgid "" +"&Number of items per buffer to cache in database (0 to disable caching, " +"blank for unlimited)" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:46 +msgid "" +"&Load cache for items in memory (much faster in big datasets but requires" +" more RAM)" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:53 +#, python-brace-format +msgid "Edit template for &posts. Current template: {}" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:55 +#, python-brace-format +msgid "Edit template for c&onversations. Current template: {}" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:57 +#, python-brace-format +msgid "Edit template for p&ersons. Current template: {}" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:65 +msgid "&Volume" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:76 +msgid "S&ession mute" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:78 +msgid "&Output device" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:85 +msgid "&Input device" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:93 +msgid "Sound &pack" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:99 +msgid "Indicate &audio or video in posts with sound" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:101 +msgid "Indicate posts containing i&mages with sound" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:124 +msgid "&Language for OCR" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:149 +msgid "Feedback" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:153 +msgid "Buffers" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:157 +msgid "Templates" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:161 +msgid "Sound" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:165 +msgid "Extras" +msgstr "" + +#: wxUI/dialogs/mastodon/dialogs.py:7 +msgid "Would you like to share this post?" +msgstr "" + +#: wxUI/dialogs/mastodon/dialogs.py:15 +msgid "" +"Do you really want to delete this post? It will be deleted from the " +"instance as well." +msgstr "" + +#: wxUI/dialogs/mastodon/dialogs.py:15 +msgid "Delete" +msgstr "" + +#: wxUI/dialogs/mastodon/dialogs.py:23 +msgid "" +"Are you sure you want to dismiss this notification? If you dismiss a " +"mention notification, it also disappears from your mentions buffer. The " +"post is not going to be deleted from the instance, though." +msgstr "" + +#: wxUI/dialogs/mastodon/dialogs.py:31 +msgid "" +"Do you really want to empty this buffer? It's items will be removed from" +" the list but not from the instance" +msgstr "" + +#: wxUI/dialogs/mastodon/dialogs.py:38 +#, python-brace-format +msgid "This user has no posts. {0} can't create a timeline." +msgstr "" + +#: wxUI/dialogs/mastodon/dialogs.py:43 +#, python-brace-format +msgid "This user has no favorited posts. {0} can't create a timeline." +msgstr "" + +#: wxUI/dialogs/mastodon/dialogs.py:48 +#, python-brace-format +msgid "This user has no followers yet. {0} can't create a timeline." +msgstr "" + +#: wxUI/dialogs/mastodon/dialogs.py:53 +#, python-brace-format +msgid "This user is not following anyone. {0} can't create a timeline." +msgstr "" + +#: wxUI/dialogs/mastodon/dialogs.py:60 +#, python-brace-format +msgid "The focused item has no user in it. {} ca't open a user profile" +msgstr "" + +#: wxUI/dialogs/mastodon/menus.py:13 wxUI/dialogs/mastodon/menus.py:41 +msgid "R&emove from favorites" +msgstr "" + +#: wxUI/dialogs/mastodon/menus.py:15 wxUI/dialogs/mastodon/menus.py:43 +msgid "&Open URL" +msgstr "" + +#: wxUI/dialogs/mastodon/menus.py:17 wxUI/dialogs/mastodon/menus.py:47 +msgid "&Open in instance" +msgstr "" + +#: wxUI/dialogs/mastodon/menus.py:19 wxUI/dialogs/mastodon/menus.py:45 +msgid "&Play audio" +msgstr "" + +#: wxUI/dialogs/mastodon/menus.py:23 wxUI/dialogs/mastodon/menus.py:51 +msgid "&Copy to clipboard" +msgstr "" + +#: wxUI/dialogs/mastodon/menus.py:27 wxUI/dialogs/mastodon/menus.py:55 +msgid "&User actions..." +msgstr "" + +#: wxUI/dialogs/mastodon/menus.py:53 +msgid "&Dismiss" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:20 +#: wxUI/dialogs/mastodon/postDialogs.py:38 +msgid "Attachments" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:24 +msgid "File" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:25 +msgid "Type" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:26 +#: wxUI/dialogs/mastodon/postDialogs.py:141 +msgid "Description" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:28 +msgid "Remove Attachment" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:33 +msgid "Post in the thread" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:40 +msgid "Remove post" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:47 +msgid "&Visibility" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:54 +msgid "Language" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:58 +msgid "A&dd" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:59 +msgid "S&ensitive content" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:64 +msgid "Content warning" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:71 +msgid "Add p&ost" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:75 +msgid "Auto&complete users" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:77 +msgid "Check &spelling" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:79 +msgid "&Translate" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:106 +#, python-brace-format +msgid "Post - {} characters" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:130 +msgid "Image" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:132 +msgid "Video" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:134 +msgid "Audio" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:136 +msgid "Poll" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:141 +msgid "please provide a description" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:148 +msgid "Select the picture to be uploaded" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:148 +msgid "Image files (*.png, *.jpg, *.gif)|*.png; *.jpg; *.gif" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:155 +msgid "Select the video to be uploaded" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:155 +msgid "Video files (*.mp4, *.mov, *.m4v, *.webm)| *.mp4; *.m4v; *.mov; *.webm" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:162 +msgid "Select the audio file to be uploaded" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:162 +msgid "" +"Audio files (*.mp3, *.ogg, *.wav, *.flac, *.opus, *.aac, *.m4a, " +"*.3gp)|*.mp3; *.ogg; *.wav; *.flac; *.opus; *.aac; *.m4a; *.3gp" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:169 +msgid "" +"It is not possible to add more attachments. Please take into account that" +" You can add only a maximum of 4 images, or one audio, video or poll per" +" post. Please remove other attachments before continuing." +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:169 +msgid "Error adding attachment" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:172 +msgid "" +"You can add a poll or media files. In order to add your poll, please " +"remove other attachments first." +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:172 +msgid "Error adding poll" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:177 +#, python-format +msgid "Post - %i characters " +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:200 +msgid "Image description" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:210 +msgid "Privacy" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:214 +msgid "Source" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:222 +msgid "Boosts" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:224 +msgid "View users who boosted this post" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:231 +msgid "View users who favorited this post" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:239 +msgid "Copy link to clipboard" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:241 +#: wxUI/dialogs/mastodon/postDialogs.py:280 +msgid "Check &spelling..." +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:242 +#: wxUI/dialogs/mastodon/postDialogs.py:281 +msgid "&Translate..." +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:243 +#: wxUI/dialogs/mastodon/postDialogs.py:282 +msgid "C&lose" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:294 +msgid "Add a poll" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:298 +msgid "Participation time" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:300 +msgid "5 minutes" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:300 +msgid "30 minutes" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:300 +msgid "1 hour" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:300 +msgid "6 hours" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:300 +msgid "1 day" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:300 +msgid "2 days" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:300 +msgid "3 days" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:300 +msgid "4 days" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:300 +msgid "5 days" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:300 +msgid "6 days" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:300 +msgid "7 days" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:304 +msgid "Choices" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:308 +msgid "Option 1" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:315 +msgid "Option 2" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:322 +msgid "Option 3" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:329 +msgid "Option 4" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:334 +msgid "Allow multiple choices per user" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:337 +msgid "Hide votes count until the poll expires" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:363 +msgid "Please make sure you have provided at least two options for the poll." +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:363 +msgid "Not enough information" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:368 +msgid "Vote in this poll" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:371 +msgid "Options" +msgstr "" + +#: wxUI/dialogs/mastodon/search.py:9 +msgid "Search" +msgstr "" + +#: wxUI/dialogs/mastodon/search.py:18 +msgid "Posts" +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:22 +msgid "Select user" +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:73 +#, python-brace-format +msgid "{}'s Profile" +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:79 +msgid "&Name: " +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:84 +msgid "&URL: " +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:89 +msgid "&Bio: " +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:94 +msgid "&Joined at: " +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:99 +msgid "&Actions" +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:104 +msgid "Header: " +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:112 +msgid "Avatar: " +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:122 +#, python-brace-format +msgid "Field &{} - Label: " +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:129 +msgid "Content: " +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:43 +#: wxUI/dialogs/mastodon/filters/create_filter.py:65 +#: wxUI/dialogs/mastodon/showUserProfile.py:135 +msgid "Yes" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:43 +#: wxUI/dialogs/mastodon/filters/create_filter.py:65 +#: wxUI/dialogs/mastodon/filters/create_filter.py:69 +#: wxUI/dialogs/mastodon/showUserProfile.py:135 +msgid "No" +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:137 +msgid "&Private account: " +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:144 +msgid "&Bot account: " +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:151 +msgid "&Discoverable account: " +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:157 +#, python-brace-format +msgid "{} p&osts. Click to open posts timeline" +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:162 +#, python-brace-format +msgid "{} &following. Click to open Following timeline" +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:166 +#, python-brace-format +msgid "{} fo&llowers. Click to open followers timeline" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:43 +msgid "&Display Name" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:50 +msgid "&Bio" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:58 +msgid "Header" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:71 +msgid "Change &header" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:79 +msgid "Avatar" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:92 +msgid "Change &avatar" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:102 +#, python-brace-format +msgid "Field &{}: Label" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:110 +msgid "Content" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:120 +msgid "&Private account" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:122 +msgid "&Bot account" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:124 +msgid "&Discoverable account" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:167 +msgid "Select header image - max 2MB" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:172 +#: wxUI/dialogs/mastodon/updateProfile.py:194 +msgid "The selected file is larger than 2MB. Do you want to select another file?" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:173 +#: wxUI/dialogs/mastodon/updateProfile.py:195 +msgid "File more than 2MB" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:189 +msgid "Select avatar image - max 2MB" +msgstr "" + +#: wxUI/dialogs/mastodon/userActions.py:19 +msgid "&Follow" +msgstr "" + +#: wxUI/dialogs/mastodon/userActions.py:20 +msgid "U&nfollow" +msgstr "" + +#: wxUI/dialogs/mastodon/userActions.py:22 +msgid "Unmu&te" +msgstr "" + +#: wxUI/dialogs/mastodon/userActions.py:23 +msgid "&Block" +msgstr "" + +#: wxUI/dialogs/mastodon/userActions.py:24 +msgid "Unbl&ock" +msgstr "" + +#: wxUI/dialogs/mastodon/userTimeline.py:9 +#, python-format +msgid "Timeline for %s" +msgstr "" + +#: wxUI/dialogs/mastodon/userTimeline.py:19 +msgid "&Posts" +msgstr "" + +#: wxUI/dialogs/mastodon/userTimeline.py:20 +msgid "&Followers" +msgstr "" + +#: wxUI/dialogs/mastodon/userTimeline.py:21 +msgid "Fo&llowing" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:12 +msgid "Keyword" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:13 +#: wxUI/dialogs/mastodon/filters/create_filter.py:24 +msgid "Whole word" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:19 +msgid "Keyword:" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:25 +#: wxUI/dialogs/mastodon/filters/manage_filters.py:22 +msgid "Add" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:34 +msgid "Palabras clave a filtrar:" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:74 +msgid "New filter" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:78 +msgid "Home timeline" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:79 +msgid "Public statuses" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:81 +msgid "Threads" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:82 +msgid "Profiles" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:86 +msgid "Hide posts" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:87 +msgid "Set a content warning to posts" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:91 +msgid "Hours" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:92 +msgid "Days" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:93 +msgid "Weeks" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:94 +msgid "months" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:97 +msgid "Title:" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:104 +msgid "Apply to:" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:114 +msgid "Action:" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:122 +msgid "Expires in:" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/manage_filters.py:10 +#, fuzzy +msgid "Filters" +msgstr "Последователи" + +#: wxUI/dialogs/mastodon/filters/manage_filters.py:15 +msgid "Title" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/manage_filters.py:16 +msgid "Keywords" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/manage_filters.py:17 +#, fuzzy +msgid "Contexts" +msgstr "Съдържание" + +#: wxUI/dialogs/mastodon/filters/manage_filters.py:19 +msgid "Expires" +msgstr "" + diff --git a/srcantiguo/locales/ca/LC_MESSAGES/twblue.mo b/srcantiguo/locales/ca/LC_MESSAGES/twblue.mo new file mode 100644 index 00000000..94cc8d0a Binary files /dev/null and b/srcantiguo/locales/ca/LC_MESSAGES/twblue.mo differ diff --git a/srcantiguo/locales/ca/LC_MESSAGES/twblue.po b/srcantiguo/locales/ca/LC_MESSAGES/twblue.po new file mode 100644 index 00000000..47fa397d --- /dev/null +++ b/srcantiguo/locales/ca/LC_MESSAGES/twblue.po @@ -0,0 +1,4939 @@ + +msgid "" +msgstr "" +"Project-Id-Version: TW Blue 0.94\n" +"Report-Msgid-Bugs-To: manuel@manuelcortez.net\n" +"POT-Creation-Date: 2025-04-13 01:18+0000\n" +"PO-Revision-Date: 2022-12-20 22:43+0000\n" +"Last-Translator: Anonymous \n" +"Language: ca\n" +"Language-Team: Catalan " +"\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.17.0\n" + +#: languageHandler.py:61 +#, fuzzy +msgctxt "languageName" +msgid "Amharic" +msgstr "Amharic" + +#: languageHandler.py:62 +#, fuzzy +msgctxt "languageName" +msgid "Aragonese" +msgstr "Japonès" + +#: languageHandler.py:63 +#, fuzzy +msgctxt "languageName" +msgid "Spanish" +msgstr "Espanyol" + +#: languageHandler.py:64 +#, fuzzy +msgctxt "languageName" +msgid "Portuguese" +msgstr "Portuguès" + +#: languageHandler.py:65 +#, fuzzy +msgctxt "languageName" +msgid "Russian" +msgstr "Rus" + +#: languageHandler.py:66 +#, fuzzy +msgctxt "languageName" +msgid "italian" +msgstr "Italià" + +#: languageHandler.py:67 +#, fuzzy +msgctxt "languageName" +msgid "Turkey" +msgstr "característica" + +#: languageHandler.py:68 +#, fuzzy +msgctxt "languageName" +msgid "Galician" +msgstr "Gallec" + +#: languageHandler.py:69 +#, fuzzy +msgctxt "languageName" +msgid "Catala" +msgstr "Català" + +#: languageHandler.py:70 +#, fuzzy +msgctxt "languageName" +msgid "Vasque" +msgstr "vasc" + +#: languageHandler.py:71 +#, fuzzy +msgctxt "languageName" +msgid "polish" +msgstr "Polac" + +#: languageHandler.py:72 +#, fuzzy +msgctxt "languageName" +msgid "Arabic" +msgstr "Àrab" + +#: languageHandler.py:73 +#, fuzzy +msgctxt "languageName" +msgid "Nepali" +msgstr "Nepalí" + +#: languageHandler.py:74 +msgctxt "languageName" +msgid "Serbian (Latin)" +msgstr "" + +#: languageHandler.py:75 +#, fuzzy +msgctxt "languageName" +msgid "Japanese" +msgstr "Japonès" + +#: languageHandler.py:99 +msgid "User default" +msgstr "Usuari per defecte" + +#: main.py:105 +#, fuzzy +msgid "https://twblue.mcvsoftware.com/donate" +msgstr "https://twblue.es/donate" + +#: main.py:118 +#, python-brace-format +msgid "" +"{0} is already running. Close the other instance before starting this " +"one. If you're sure that {0} isn't running, try deleting the file at {1}." +" If you're unsure of how to do this, contact the {0} developers." +msgstr "" +"{0} Està en execució. Tanqueu les altres instances avans d'iniciar " +"aquesta. Si esteu segurs que {0} no està en execució, intenteu el·liminar" +" el fitxer a {1}. Si no esteu segurs de com fer-ho, contacta amb els " +"desenvolupadors de {0}" + +#: sound.py:148 +msgid "Playing..." +msgstr "Reproduïnt..." + +#: sound.py:161 +msgid "Stopped." +msgstr "Aturat." + +#: controller/mainController.py:261 +msgid "Ready" +msgstr "Llest." + +#: controller/mainController.py:369 controller/mainController.py:654 +#: controller/mainController.py:673 controller/mainController.py:692 +#: controller/mainController.py:711 +msgid "" +"No session is currently in focus. Focus a session with the next or " +"previous session shortcut." +msgstr "" +"No hi ha cap sessió en el focus. Focalitza una sessió amb les dreceres " +"d'anterior o següent sessió." + +#: controller/mainController.py:373 +msgid "Empty buffer." +msgstr "Buidar buffer." + +#: controller/mainController.py:380 +#, python-brace-format +msgid "{0} not found." +msgstr "{0} no s'ha trobat." + +#: controller/mainController.py:702 controller/mainController.py:721 +#, python-format +msgid "%s, %s of %s" +msgstr "%s, %s de %s" + +#: controller/mainController.py:704 controller/mainController.py:723 +#: controller/mainController.py:751 controller/mainController.py:779 +#, python-format +msgid "%s. Empty" +msgstr "%s. buit" + +#: controller/mainController.py:739 controller/mainController.py:743 +#: controller/mainController.py:767 +#, python-brace-format +msgid "{0}: This account is not logged into Twitter." +msgstr "{0}: No s'ha iniciat sessió a Twitter amb aquest compte" + +#: controller/mainController.py:749 controller/mainController.py:777 +#, python-format +msgid "%s. %s, %s of %s" +msgstr "%s. %s, %s de %s" + +#: controller/mainController.py:771 +#, python-brace-format +msgid "{0}: This account is not logged into twitter." +msgstr "{0}: No s'ha iniciat sessió a Twitter amb aquest compte" + +#: controller/mainController.py:910 controller/mainController.py:926 +msgid "An error happened while trying to connect to the server. Please try later." +msgstr "" +"Ha succeit un error mentre s'intentava conectar amb el servidor. Si us " +"plau, intenteu conectar-vos mes tard." + +#: controller/mainController.py:957 +msgid "The auto-reading of new tweets is enabled for this buffer" +msgstr "La lectura automàtica de tuits per a aquest buffer està activada." + +#: controller/mainController.py:960 +msgid "The auto-reading of new tweets is disabled for this buffer" +msgstr "La lectura automàtica de tuits per a aquest buffer està desactivada." + +#: controller/mainController.py:967 +msgid "Session mute on" +msgstr "Silenci de sessió activat" + +#: controller/mainController.py:970 +msgid "Session mute off" +msgstr "Silenci de sessió desactivat." + +#: controller/mainController.py:979 +msgid "Buffer mute on" +msgstr "Silenci de buffer activat" + +#: controller/mainController.py:982 +msgid "Buffer mute off" +msgstr "Silenci de buffer desactivat" + +#: controller/mainController.py:999 +msgid "Copied" +msgstr "Copiat" + +#: controller/mainController.py:1019 +msgid "Unable to update this buffer." +msgstr "No es pot actualitzar aquest buffer." + +#: controller/mainController.py:1021 +msgid "Updating buffer..." +msgstr "Actualitzant buffer..." + +#: controller/mainController.py:1024 +#, python-brace-format +msgid "{0} items retrieved" +msgstr "{0} elements descarregats." + +#: controller/buffers/mastodon/base.py:137 controller/mainController.py:1028 +#: controller/mastodon/handler.py:98 controller/mastodon/handler.py:241 +#, python-brace-format +msgid "Timeline for {}" +msgstr "Línia temporal per a {}" + +#: controller/buffers/mastodon/users.py:93 controller/mainController.py:1030 +#: controller/mastodon/handler.py:100 controller/mastodon/handler.py:255 +#, python-brace-format +msgid "Followers for {}" +msgstr "Seguidors per a {}" + +#: controller/mainController.py:1032 +#, python-brace-format +msgid "Friends for {}" +msgstr "Amics de {}" + +# | msgid "Followers for {}" +#: controller/buffers/mastodon/users.py:95 controller/mainController.py:1034 +#: controller/mastodon/handler.py:102 controller/mastodon/handler.py:269 +#, fuzzy, python-brace-format +msgid "Following for {}" +msgstr "Seguidors per a {}" + +#: controller/messages.py:18 +#, fuzzy +msgid "Translated" +msgstr "Traduït" + +#: controller/settings.py:60 +#, fuzzy +msgid "System default" +msgstr "Usuari per defecte" + +#: controller/settings.py:60 +msgid "HTTP" +msgstr "" + +#: controller/settings.py:60 +msgid "SOCKS v4" +msgstr "" + +#: controller/settings.py:60 +msgid "SOCKS v4 with DNS support" +msgstr "" + +#: controller/settings.py:60 +msgid "SOCKS v5" +msgstr "" + +#: controller/settings.py:60 +msgid "SOCKS v5 with DNS support" +msgstr "" + +#: controller/userAlias.py:31 +#, fuzzy, python-brace-format +msgid "Edit alias for {}" +msgstr "Llista per {}" + +#: controller/buffers/base/base.py:91 +#: controller/buffers/mastodon/conversations.py:237 +#: controller/buffers/mastodon/search.py:80 +msgid "This action is not supported for this buffer" +msgstr "El buffer actual no suporta aquesta acció" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:70 +#: controller/mastodon/settings.py:194 +msgid "Home" +msgstr "Principal" + +#: controller/buffers/mastodon/base.py:52 +#: controller/buffers/mastodon/community.py:22 +#: controller/mastodon/handler.py:72 controller/mastodon/handler.py:114 +#: controller/mastodon/settings.py:195 +msgid "Local" +msgstr "" + +#: controller/buffers/mastodon/base.py:52 +#: controller/buffers/mastodon/community.py:22 +#: controller/mastodon/handler.py:74 controller/mastodon/settings.py:196 +msgid "Federated" +msgstr "" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:76 +#: controller/mastodon/settings.py:197 +msgid "Mentions" +msgstr "Mencions" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:84 +#: controller/mastodon/settings.py:201 +msgid "Bookmarks" +msgstr "" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:78 +msgid "Direct messages" +msgstr "Missatges directes" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:80 +#: controller/mastodon/settings.py:199 +msgid "Sent" +msgstr "" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:82 +#: controller/mastodon/settings.py:200 wxUI/dialogs/mastodon/postDialogs.py:229 +msgid "Favorites" +msgstr "" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:86 +#: controller/mastodon/settings.py:202 +msgid "Followers" +msgstr "Seguidors" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:88 +#: controller/mastodon/settings.py:203 +#, fuzzy +msgid "Following" +msgstr "&Deixar de seguir" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:92 +#: controller/mastodon/settings.py:204 +msgid "Blocked users" +msgstr "Usuaris bloquejats" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:90 +#: controller/mastodon/settings.py:205 +msgid "Muted users" +msgstr "Usuaris silenciats" + +# | msgid "&Location" +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:94 +#: controller/mastodon/settings.py:206 +#: wxUI/dialogs/mastodon/filters/create_filter.py:80 +#, fuzzy +msgid "Notifications" +msgstr "&Localització" + +#: controller/buffers/mastodon/base.py:58 +#, python-brace-format +msgid "{username}'s timeline" +msgstr "Obrir línia temporal d'{username}" + +#: controller/buffers/mastodon/base.py:60 +#, python-brace-format +msgid "{username}'s followers" +msgstr "Seguidors d'{username}" + +# | msgid "{username}'s followers" +#: controller/buffers/mastodon/base.py:62 +#, fuzzy, python-brace-format +msgid "{username}'s following" +msgstr "Seguidors d'{username}" + +#: controller/buffers/mastodon/base.py:64 +msgid "Unknown buffer" +msgstr "Bbufer desconegut" + +#: controller/buffers/mastodon/base.py:67 +#: controller/buffers/mastodon/base.py:645 wxUI/buffers/mastodon/base.py:24 +#: wxUI/buffers/mastodon/conversationList.py:24 +#: wxUI/buffers/mastodon/notifications.py:22 wxUI/buffers/mastodon/user.py:18 +#: wxUI/dialogs/mastodon/postDialogs.py:5 +#: wxUI/dialogs/mastodon/postDialogs.py:194 wxUI/sysTrayIcon.py:35 +msgid "Post" +msgstr "" + +# | msgid "Write the tweet here" +#: controller/buffers/mastodon/base.py:68 +#: controller/buffers/mastodon/base.py:646 +#, fuzzy +msgid "Write your post here" +msgstr "Escriu el tuit aquí" + +# | msgid "New tweet in {0}" +#: controller/buffers/mastodon/base.py:153 +#, fuzzy, python-brace-format +msgid "New post in {0}" +msgstr "Tuit nou a {0}" + +# | msgid "{0} new tweets in {1}." +#: controller/buffers/mastodon/base.py:159 +#, fuzzy, python-brace-format +msgid "{0} new posts in {1}." +msgstr "{0} Nou twits a {1}" + +#: controller/buffers/mastodon/base.py:198 +#: controller/buffers/mastodon/community.py:90 +#: controller/buffers/mastodon/conversations.py:100 +#: controller/buffers/mastodon/mentions.py:82 +#: controller/buffers/mastodon/users.py:139 +#, python-format +msgid "%s items retrieved" +msgstr "%s elements descarregats" + +#: controller/buffers/mastodon/base.py:216 +#: controller/buffers/mastodon/users.py:206 +msgid "This buffer is not a timeline; it can't be deleted." +msgstr "Aquest buffer no es una liniatemporal; no es pot eliminar." + +# | msgid "Conversation with {0}" +#: controller/buffers/mastodon/base.py:346 +#: controller/buffers/mastodon/base.py:384 +#, fuzzy, python-brace-format +msgid "Conversation with {}" +msgstr "Conversa amb {0}" + +# | msgid "Write the tweet here" +#: controller/buffers/mastodon/base.py:347 +#: controller/buffers/mastodon/base.py:385 +#: controller/buffers/mastodon/conversations.py:181 +#: controller/buffers/mastodon/notifications.py:122 +#: controller/buffers/mastodon/users.py:52 +#, fuzzy +msgid "Write your message here" +msgstr "Escriu el tuit aquí" + +# | msgid "Reply to {arg0}" +#: controller/buffers/mastodon/base.py:349 +#, fuzzy, python-brace-format +msgid "Reply to {}" +msgstr "Respondre a {arg0}" + +# | msgid "Write the tweet here" +#: controller/buffers/mastodon/base.py:350 +#, fuzzy +msgid "Write your reply here" +msgstr "Escriu el tuit aquí" + +#: controller/buffers/mastodon/base.py:412 +#, fuzzy +msgid "This action is not supported on conversations." +msgstr "Aquesta acció no es suportada al bufer" + +#: controller/buffers/mastodon/base.py:477 +msgid "Opening URL..." +msgstr "Obrint URL..." + +#: controller/buffers/mastodon/base.py:490 +msgid "You can delete only your own posts." +msgstr "" + +#: controller/buffers/mastodon/base.py:519 +msgid "Opening item in web browser..." +msgstr "S'està obrint l'element al navegador..." + +#: controller/buffers/mastodon/base.py:527 +#: controller/buffers/mastodon/base.py:547 +msgid "Adding to favorites..." +msgstr "" + +# | msgid "Remove from list" +#: controller/buffers/mastodon/base.py:534 +#: controller/buffers/mastodon/base.py:549 +#, fuzzy +msgid "Removing from favorites..." +msgstr "Eliminar de llista" + +#: controller/buffers/mastodon/base.py:544 +#: controller/buffers/mastodon/base.py:559 +#: controller/buffers/mastodon/base.py:573 +#: controller/buffers/mastodon/conversations.py:213 +msgid "No status found with that ID" +msgstr "No s'ha trobat cap estat amb aquest ID" + +#: controller/buffers/mastodon/base.py:562 +msgid "Adding to bookmarks..." +msgstr "" + +#: controller/buffers/mastodon/base.py:564 +msgid "Removing from bookmarks..." +msgstr "" + +#: controller/buffers/mastodon/base.py:586 +#, python-brace-format +msgid "Picture {0}" +msgstr "Imatge de {0}" + +#: controller/buffers/mastodon/base.py:587 +msgid "Select the picture" +msgstr "Selecciona una imatge." + +#: controller/buffers/mastodon/base.py:610 +msgid "Unable to extract text" +msgstr "No es pot extreure el text." + +#: controller/buffers/mastodon/base.py:612 +msgid "OCR Result" +msgstr "" + +#: controller/buffers/mastodon/base.py:627 +msgid "this poll no longer exists." +msgstr "" + +#: controller/buffers/mastodon/base.py:630 +msgid "This poll has already expired." +msgstr "" + +#: controller/buffers/mastodon/base.py:633 +msgid "You have already voted on this poll." +msgstr "" + +#: controller/buffers/mastodon/base.py:642 +#, fuzzy +msgid "Sending vote..." +msgstr "Recodificant audio..." + +# | msgid "Conversation with {0}" +#: controller/buffers/mastodon/conversations.py:180 +#, fuzzy, python-brace-format +msgid "Reply to conversation with {}" +msgstr "Conversa amb {0}" + +# | msgid "Conversation with {0}" +#: controller/buffers/mastodon/notifications.py:121 +#: controller/buffers/mastodon/users.py:51 +#, fuzzy, python-brace-format +msgid "New conversation with {}" +msgstr "Conversa amb {0}" + +#: controller/buffers/mastodon/notifications.py:151 +msgid "Notification dismissed." +msgstr "" + +# | msgid "There are no coordinates in this tweet" +#: controller/buffers/mastodon/users.py:110 +#, fuzzy +msgid "There are no more items in this buffer." +msgstr "En aquest tuit no hi ha coordenades." + +#: controller/mastodon/handler.py:30 wxUI/dialogs/mastodon/updateProfile.py:35 +#, fuzzy +msgid "Update Profile" +msgstr "&Actualitzar perfil" + +#: controller/mastodon/handler.py:31 wxUI/dialogs/mastodon/search.py:10 +#: wxUI/view.py:19 +msgid "&Search" +msgstr "&Cerca" + +#: controller/mastodon/handler.py:33 wxUI/view.py:22 +msgid "Manage user aliases" +msgstr "" + +#: controller/mastodon/handler.py:35 controller/mastodon/handler.py:59 +#: wxUI/view.py:30 +msgid "&Post" +msgstr "" + +#: controller/mastodon/handler.py:36 wxUI/dialogs/mastodon/menus.py:9 +#: wxUI/dialogs/mastodon/menus.py:37 wxUI/view.py:31 +msgid "Re&ply" +msgstr "&Respondre" + +#: controller/mastodon/handler.py:37 wxUI/dialogs/mastodon/menus.py:7 +#: wxUI/dialogs/mastodon/menus.py:35 wxUI/view.py:32 +msgid "&Boost" +msgstr "" + +# | msgid "&Add to list" +#: controller/mastodon/handler.py:38 wxUI/dialogs/mastodon/menus.py:11 +#: wxUI/dialogs/mastodon/menus.py:39 wxUI/view.py:33 +#, fuzzy +msgid "&Add to favorites" +msgstr "&Afegir a llista" + +# | msgid "Remove from list" +#: controller/mastodon/handler.py:39 +#, fuzzy +msgid "Remove from favorites" +msgstr "Eliminar de llista" + +# | msgid "&Show user" +#: controller/mastodon/handler.py:40 wxUI/dialogs/mastodon/menus.py:21 +#: wxUI/dialogs/mastodon/menus.py:49 wxUI/view.py:35 +#, fuzzy +msgid "&Show post" +msgstr "&Veure usuari." + +#: controller/mastodon/handler.py:41 wxUI/view.py:36 +msgid "View conversa&tion" +msgstr "Veure &conversa" + +#: controller/mastodon/handler.py:42 wxUI/view.py:37 +msgid "Read text in picture" +msgstr "Llegir el text dintre d'una imatge." + +#: controller/mastodon/handler.py:43 wxUI/dialogs/mastodon/menus.py:25 +#: wxUI/view.py:39 +msgid "&Delete" +msgstr "&Eliminar" + +#: controller/mastodon/handler.py:45 wxUI/view.py:43 +msgid "&Actions..." +msgstr "&Accions..." + +#: controller/mastodon/handler.py:46 wxUI/view.py:44 +msgid "&View timeline..." +msgstr "&Veure línia temporal..." + +#: controller/mastodon/handler.py:47 wxUI/view.py:45 +msgid "Direct me&ssage" +msgstr "Missatge directe" + +#: controller/mastodon/handler.py:48 wxUI/view.py:46 +msgid "Add a&lias" +msgstr "" + +#: controller/mastodon/handler.py:51 +#, fuzzy +msgid "Show user profile" +msgstr "&Veure perfil de l'usuari" + +#: controller/mastodon/handler.py:54 +msgid "Create c&ommunity timeline" +msgstr "" + +#: controller/mastodon/handler.py:55 wxUI/view.py:57 +msgid "Create a &filter" +msgstr "Crear un nou &filtre" + +#: controller/mastodon/handler.py:56 wxUI/view.py:58 +msgid "&Manage filters" +msgstr "&gestionar filtres" + +#: controller/mastodon/handler.py:95 +msgid "Timelines" +msgstr "Línies temporals" + +#: controller/mastodon/handler.py:107 +msgid "Searches" +msgstr "Recerques" + +#: controller/mastodon/handler.py:110 controller/mastodon/handler.py:191 +#: controller/mastodon/handler.py:196 +#, python-brace-format +msgid "Search for {}" +msgstr "Cercar per {}" + +#: controller/mastodon/handler.py:111 +msgid "Communities" +msgstr "" + +#: controller/mastodon/handler.py:114 +#, fuzzy +msgid "federated" +msgstr "Obrir línia temporal d'{username}" + +#: controller/mastodon/handler.py:143 +#, python-brace-format +msgid "Conversation with {0}" +msgstr "Conversa amb {0}" + +#: controller/mastodon/handler.py:299 +msgid "Add an user alias" +msgstr "" + +#: controller/mastodon/handler.py:311 +#, python-brace-format +msgid "Alias has been set correctly for {}." +msgstr "" + +#: controller/mastodon/handler.py:342 +#, fuzzy +msgid "Update profile" +msgstr "&Actualitzar perfil" + +#: controller/mastodon/messages.py:115 +#, python-format +msgid "%s - %s of %d characters" +msgstr "%s - %s de %d caracters" + +#: controller/mastodon/messages.py:239 +#, python-brace-format +msgid "Poll with {} options" +msgstr "" + +# | msgid "List for {}" +#: controller/mastodon/messages.py:272 +#, fuzzy, python-brace-format +msgid "Post from {}" +msgstr "Llista per {}" + +#: controller/mastodon/messages.py:276 sessions/mastodon/templates.py:82 +#: wxUI/dialogs/mastodon/postDialogs.py:49 +msgid "Public" +msgstr "Públic" + +# | msgid "Accounts list" +#: controller/mastodon/messages.py:276 sessions/mastodon/templates.py:82 +#: wxUI/dialogs/mastodon/postDialogs.py:49 +#, fuzzy +msgid "Not listed" +msgstr "Llista de comptes" + +# | msgid "Followers" +#: controller/mastodon/messages.py:276 +#, fuzzy +msgid "followers only" +msgstr "Seguidors" + +# | msgid "Direct message" +#: controller/mastodon/messages.py:276 sessions/mastodon/templates.py:82 +#: wxUI/dialogs/mastodon/postDialogs.py:49 +#, fuzzy +msgid "Direct" +msgstr "Missatge directe" + +# | msgid "Remove client" +#: controller/mastodon/messages.py:283 +#, fuzzy +msgid "Remote instance" +msgstr "Esborrar client" + +#: controller/mastodon/messages.py:291 controller/mastodon/messages.py:319 +#, fuzzy +msgid "Unmute conversation" +msgstr "Veure conversa." + +#: controller/mastodon/messages.py:315 wxUI/dialogs/mastodon/postDialogs.py:237 +#, fuzzy +msgid "Mute conversation" +msgstr "Veure conversa." + +# | msgid "Conversation with {0}" +#: controller/mastodon/messages.py:316 +#, fuzzy +msgid "Conversation unmuted." +msgstr "Conversa amb {0}" + +# | msgid "Conversation with {0}" +#: controller/mastodon/messages.py:320 +#, fuzzy +msgid "Conversation muted." +msgstr "Conversa amb {0}" + +#: controller/mastodon/messages.py:331 +msgid "people who boosted this post" +msgstr "" + +#: controller/mastodon/messages.py:336 +msgid "people who favorited this post" +msgstr "" + +#: controller/mastodon/messages.py:342 +#, fuzzy +msgid "Link copied to clipboard." +msgstr "Copiar al portapapers" + +#: controller/mastodon/settings.py:82 +#, python-format +msgid "Account settings for %s" +msgstr "Configuració del compte per a %s" + +#: controller/mastodon/settings.py:92 +#, python-brace-format +msgid "Edit template for posts. Current template: {}" +msgstr "" + +#: controller/mastodon/settings.py:101 +#, python-brace-format +msgid "Edit template for conversations. Current template: {}" +msgstr "" + +#: controller/mastodon/settings.py:110 +#, python-brace-format +msgid "Edit template for persons. Current template: {}" +msgstr "" + +#: controller/mastodon/settings.py:198 +msgid "Direct Messages" +msgstr "missatges directes" + +#: controller/mastodon/filters/create_filter.py:75 +#, fuzzy, python-brace-format +msgid "Update Filter: {}" +msgstr "&Actualitzar perfil" + +#: controller/mastodon/filters/manage_filters.py:57 +#: wxUI/dialogs/mastodon/filters/create_filter.py:90 +msgid "Never" +msgstr "" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:4 +msgid "Audio tweet." +msgstr "Tuit d'audio" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:5 +msgid "User timeline buffer created." +msgstr "S'ha creat el buffer de la linia temporal de l'usuari" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:6 +msgid "Buffer destroied." +msgstr "Buffer eliminat" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:7 +msgid "Direct message received." +msgstr "Missatge directe rebut." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:8 +msgid "Direct message sent." +msgstr "Missatge directe enviat." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:9 +msgid "Error." +msgstr "Error." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:10 +msgid "Tweet liked." +msgstr "Tuit marcat com m'agrada." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:11 +msgid "Likes buffer updated." +msgstr "Buffer de tuits que m'agraden actualitzat" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:12 +msgid "Geotweet." +msgstr "Geotuit" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:13 +msgid "Tweet contains one or more images" +msgstr "El twit contè una o més imatges." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:14 +msgid "Boundary reached." +msgstr "No hi ha més elements" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:15 +msgid "List updated." +msgstr "Llista actualitzada" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:16 +msgid "Too many characters." +msgstr "Massa caracters" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:17 +msgid "Mention received." +msgstr "Menció rebuda" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:18 +msgid "New event." +msgstr "Esdeveniment nou." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:19 +#, python-brace-format +msgid "{0} is ready." +msgstr "{0} està preparat" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:20 +msgid "Mention sent." +msgstr "Menció enviada." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:21 +msgid "Tweet retweeted." +msgstr "Tuit retuitejat." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:22 +msgid "Search buffer updated." +msgstr "Buffer de recerca actualitzat" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:23 +msgid "Tweet received." +msgstr "Tuit rebut." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:24 +msgid "Tweet sent." +msgstr "Tuit enviat." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:25 +msgid "Trending topics buffer updated." +msgstr "Búfer de tendències actualitzat" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:26 +msgid "New tweet in user timeline buffer." +msgstr "Tuit nou a la línia temporal de l'usuari." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:27 +msgid "New follower." +msgstr "Nou seguidor." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:28 +msgid "Volume changed." +msgstr "Volum canviat" + +#: extra/SoundsTutorial/wx_ui.py:8 +msgid "Sounds tutorial" +msgstr "Tutorial de sons" + +#: extra/SoundsTutorial/wx_ui.py:11 +msgid "Press enter to listen to the sound for the selected event" +msgstr "Prem enter per escoltar el so per al esdeveniment seleccionat." + +#: extra/SpellChecker/spellchecker.py:56 +#, python-format +msgid "Misspelled word: %s" +msgstr "Paraula mal escrita: %s" + +#: extra/SpellChecker/wx_ui.py:27 +msgid "Misspelled word" +msgstr "Paraula mal escrita" + +#: extra/SpellChecker/wx_ui.py:32 +msgid "Context" +msgstr "Context" + +#: extra/SpellChecker/wx_ui.py:37 +msgid "Suggestions" +msgstr "Sugeriments" + +#: extra/SpellChecker/wx_ui.py:42 +msgid "&Ignore" +msgstr "&Ignorar" + +#: extra/SpellChecker/wx_ui.py:43 +msgid "I&gnore all" +msgstr "I&gnorar tot" + +#: extra/SpellChecker/wx_ui.py:44 +msgid "&Replace" +msgstr "R&eemplaçar" + +#: extra/SpellChecker/wx_ui.py:45 +msgid "R&eplace all" +msgstr "Reemplaçar t&ots." + +#: extra/SpellChecker/wx_ui.py:46 +msgid "&Add to personal dictionary" +msgstr "A&fegir al diccionari personal" + +#: extra/SpellChecker/wx_ui.py:79 +#, python-brace-format +msgid "" +"An error has occurred. There are no dictionaries available for the " +"selected language in {0}" +msgstr "" +"Hi ha hagut un problema. No hi ha diccionaris disponibles per a l'idioma " +"seleccionat a {0}." + +#: extra/SpellChecker/wx_ui.py:79 +#: extra/autocompletionUsers/mastodon/wx_scan.py:44 +#: wxUI/commonMessageDialogs.py:23 wxUI/commonMessageDialogs.py:36 +#: wxUI/commonMessageDialogs.py:45 wxUI/commonMessageDialogs.py:52 +#: wxUI/commonMessageDialogs.py:55 wxUI/commonMessageDialogs.py:61 +#: wxUI/dialogs/mastodon/dialogs.py:38 wxUI/dialogs/mastodon/dialogs.py:43 +#: wxUI/dialogs/mastodon/dialogs.py:48 wxUI/dialogs/mastodon/dialogs.py:53 +#: wxUI/dialogs/mastodon/dialogs.py:60 +msgid "Error" +msgstr "Error" + +#: extra/SpellChecker/wx_ui.py:82 +msgid "Spell check complete." +msgstr "Comprovació d'ortografia finalitzada" + +#: extra/autocompletionUsers/completion.py:39 +#: extra/autocompletionUsers/completion.py:57 +msgid "You have to start writing" +msgstr "" + +# | msgid "There are no coordinates in this tweet" +#: extra/autocompletionUsers/completion.py:49 +#: extra/autocompletionUsers/completion.py:66 +#, fuzzy +msgid "There are no results in your users database" +msgstr "En aquest tuit no hi ha coordenades." + +#: extra/autocompletionUsers/completion.py:51 +#, fuzzy +msgid "Autocompletion only works for users." +msgstr "&Autocompletar usuaris" + +#: extra/autocompletionUsers/wx_manage.py:9 +#, fuzzy +msgid "Manage Autocompletion database" +msgstr "Gestionar la base de dades d'autocompletar." + +#: extra/autocompletionUsers/wx_manage.py:12 +#, fuzzy, python-brace-format +msgid "Editing {0} users database" +msgstr "Editant la base de dades d'usuaris de {0}." + +#: extra/autocompletionUsers/wx_manage.py:13 +#, fuzzy +msgid "Username" +msgstr "Usuari" + +#: extra/autocompletionUsers/wx_manage.py:13 wxUI/dialogs/configuration.py:108 +msgid "Name" +msgstr "Nom." + +#: extra/autocompletionUsers/wx_manage.py:16 +#, fuzzy +msgid "Add user" +msgstr "Usuari" + +#: extra/autocompletionUsers/wx_manage.py:17 +#, fuzzy +msgid "Remove user" +msgstr "Esborrar usuari." + +#: extra/autocompletionUsers/wx_manage.py:38 +msgid "Twitter username" +msgstr "" + +#: extra/autocompletionUsers/wx_manage.py:38 +msgid "Add user to database" +msgstr "" + +#: extra/autocompletionUsers/wx_manage.py:44 +#, fuzzy +msgid "The user does not exist" +msgstr "Aquest 'usuari no existeix" + +#: extra/autocompletionUsers/wx_manage.py:44 +#, fuzzy +msgid "Error!" +msgstr "Error" + +#: extra/autocompletionUsers/mastodon/scan.py:49 +msgid "" +"Updating database... You can close this window now. A message will tell " +"you when the process finishes." +msgstr "" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:8 +#, fuzzy +msgid "Autocomplete users' settings" +msgstr "&Autocompletar usuaris" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:11 +msgid "Add &followers to database" +msgstr "" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:12 +msgid "Add f&ollowing to database" +msgstr "" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:26 +#, fuzzy +msgid "Updating autocompletion database" +msgstr "Gestionar la base de dades d'autocompletar." + +#: extra/autocompletionUsers/mastodon/wx_scan.py:34 +msgid "" +"This process will retrieve the users you selected from your Mastodon " +"account, and add them to the user autocomplete database. Please note that" +" if there are many users or you have tried to perform this action less " +"than 15 minutes ago, TWBlue may reach a limit in API calls when trying to" +" load the users into the database. If this happens, we will show you an " +"error, in which case you will have to try this process again in a few " +"minutes. If this process ends with no error, you will be redirected back " +"to the account settings dialog. Do you want to continue?" +msgstr "" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:34 +#: wxUI/commonMessageDialogs.py:20 +msgid "Attention" +msgstr "Alerta" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:40 +#, python-brace-format +msgid "TWBlue has imported {} users successfully." +msgstr "" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:40 +#, fuzzy +msgid "Done" +msgstr "Fet!" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:44 +msgid "Error adding users from Mastodon. Please try again in about 15 minutes." +msgstr "" + +#: extra/ocr/OCRSpace.py:7 +msgid "Detect automatically" +msgstr "Detecció automàtica" + +#: extra/ocr/OCRSpace.py:7 +msgid "Danish" +msgstr "Danès" + +#: extra/ocr/OCRSpace.py:7 +msgid "Dutch" +msgstr "olandès" + +#: extra/ocr/OCRSpace.py:7 +msgid "English" +msgstr "Anglès" + +#: extra/ocr/OCRSpace.py:7 +msgid "Finnish" +msgstr "Finès" + +#: extra/ocr/OCRSpace.py:7 +msgid "French" +msgstr "Francès" + +#: extra/ocr/OCRSpace.py:7 +msgid "German" +msgstr "Alemany" + +#: extra/ocr/OCRSpace.py:7 +msgid "Hungarian" +msgstr "Hongarès" + +#: extra/ocr/OCRSpace.py:7 +msgid "Korean" +msgstr "Coreà" + +#: extra/ocr/OCRSpace.py:7 +msgid "Italian" +msgstr "Italià" + +#: extra/ocr/OCRSpace.py:7 +msgid "Japanese" +msgstr "Japonès" + +#: extra/ocr/OCRSpace.py:7 +msgid "Polish" +msgstr "Polac" + +#: extra/ocr/OCRSpace.py:7 +msgid "Portuguese" +msgstr "Portuguès" + +#: extra/ocr/OCRSpace.py:7 +msgid "Russian" +msgstr "Rus" + +#: extra/ocr/OCRSpace.py:7 +msgid "Spanish" +msgstr "Espanyol" + +#: extra/ocr/OCRSpace.py:7 +msgid "Turkish" +msgstr "Turc" + +#: extra/translator/wx_ui.py:25 +msgid "Translate message" +msgstr "Traduir missatge" + +#: extra/translator/wx_ui.py:29 +#, fuzzy +msgid "Translation engine" +msgstr "Traduït" + +#: extra/translator/wx_ui.py:32 +msgid "Target language" +msgstr "Llengua de destinació" + +#: keystrokeEditor/wx_ui.py:8 +msgid "Keystroke editor" +msgstr "Editor de combinacions de teclat" + +#: keystrokeEditor/wx_ui.py:11 +msgid "Select a keystroke to edit" +msgstr "Selecciona una combinació de teclat per editar-la" + +#: keystrokeEditor/wx_ui.py:12 +#: wxUI/dialogs/mastodon/filters/manage_filters.py:18 +#: wxUI/dialogs/mastodon/userActions.py:9 +#: wxUI/dialogs/mastodon/userActions.py:18 +#: wxUI/dialogs/mastodon/userActions.py:19 +msgid "Action" +msgstr "Acció" + +#: keystrokeEditor/wx_ui.py:12 +msgid "Keystroke" +msgstr "Combinació de teclat" + +#: keystrokeEditor/wx_ui.py:17 +#: wxUI/dialogs/mastodon/filters/manage_filters.py:23 +#: wxUI/dialogs/userAliasDialogs.py:53 +msgid "Edit" +msgstr "Editar" + +#: keystrokeEditor/wx_ui.py:19 keystrokeEditor/wx_ui.py:49 +#, fuzzy +msgid "Undefine keystroke" +msgstr "Editant combinació de tecles" + +#: keystrokeEditor/wx_ui.py:20 +msgid "Execute action" +msgstr "Executar acció" + +#: keystrokeEditor/wx_ui.py:21 wxUI/dialogs/userAliasDialogs.py:25 +msgid "Close" +msgstr "Tancar" + +#: keystrokeEditor/wx_ui.py:41 +msgid "Undefined" +msgstr "" + +#: keystrokeEditor/wx_ui.py:49 +#, fuzzy +msgid "Are you sure you want to undefine this keystroke?" +msgstr "Realment vols eliminar aquesta llista?" + +#: keystrokeEditor/wx_ui.py:53 +msgid "Editing keystroke" +msgstr "Editant combinació de tecles" + +#: keystrokeEditor/wx_ui.py:56 +msgid "Control" +msgstr "Control" + +#: keystrokeEditor/wx_ui.py:57 +msgid "Alt" +msgstr "Alt" + +#: keystrokeEditor/wx_ui.py:58 +msgid "Shift" +msgstr "desplassa" + +#: keystrokeEditor/wx_ui.py:59 +msgid "Windows" +msgstr "Finestres" + +#: keystrokeEditor/wx_ui.py:65 +msgid "Key" +msgstr "Tecla" + +#: keystrokeEditor/wx_ui.py:70 wxUI/dialogs/find.py:21 +#: wxUI/dialogs/mastodon/showUserProfile.py:31 +#: wxUI/dialogs/userAliasDialogs.py:23 +msgid "OK" +msgstr "Acceptar" + +#: keystrokeEditor/wx_ui.py:83 +msgid "You need to use the Windows key" +msgstr "Necessites utilitzar la tecla Windows" + +#: keystrokeEditor/wx_ui.py:83 keystrokeEditor/wx_ui.py:86 +msgid "Invalid keystroke" +msgstr "Combinació de teclat invàlida" + +#: keystrokeEditor/wx_ui.py:86 +msgid "You must provide a character for the keystroke" +msgstr "Has de triar una lletra per a la cominació ràpida de teclat" + +#: keystrokeEditor/actions/mastodon.py:3 +msgid "Go up in the current buffer" +msgstr "Va amunt en el bufer actual" + +#: keystrokeEditor/actions/mastodon.py:4 +msgid "Go down in the current buffer" +msgstr "Va avall en el buffer actual" + +#: keystrokeEditor/actions/mastodon.py:5 +msgid "Go to the previous buffer" +msgstr "Anar al buffer anterior" + +#: keystrokeEditor/actions/mastodon.py:6 +msgid "Go to the next buffer" +msgstr "Anar al bufer següent" + +#: keystrokeEditor/actions/mastodon.py:7 +msgid "Focus the next session" +msgstr "Focalitza la sessió següent." + +#: keystrokeEditor/actions/mastodon.py:8 +msgid "Focus the previous session" +msgstr "Focalitza la sessió anterior." + +#: keystrokeEditor/actions/mastodon.py:9 +msgid "Show or hide the GUI" +msgstr "Veure o amagar la GUI" + +# | msgid "Create a new list" +#: keystrokeEditor/actions/mastodon.py:10 +#, fuzzy +msgid "Make a new post" +msgstr "Crear una nova llista" + +#: keystrokeEditor/actions/mastodon.py:11 wxUI/buffers/mastodon/base.py:26 +#: wxUI/buffers/mastodon/conversationList.py:25 +msgid "Reply" +msgstr "Respondre" + +#: keystrokeEditor/actions/mastodon.py:12 wxUI/buffers/mastodon/base.py:25 +#: wxUI/dialogs/mastodon/dialogs.py:7 +msgid "Boost" +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:13 +msgid "Send direct message" +msgstr "Enviar Missatge Directe" + +#: keystrokeEditor/actions/mastodon.py:14 +msgid "Add post to favorites" +msgstr "" + +# | msgid "Remove from list" +#: keystrokeEditor/actions/mastodon.py:15 +#, fuzzy +msgid "Remove post from favorites" +msgstr "Eliminar de llista" + +#: keystrokeEditor/actions/mastodon.py:16 +msgid "Add/remove post from favorites" +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:17 +msgid "Open the user actions dialogue" +msgstr "Obrir el diàleg d'accions d'usuari" + +#: keystrokeEditor/actions/mastodon.py:18 +#, fuzzy +msgid "See user details" +msgstr "Esborrar usuari." + +# | msgid "Show tweet" +#: keystrokeEditor/actions/mastodon.py:19 +#, fuzzy +msgid "Show post" +msgstr "Mostra el tuit" + +#: keystrokeEditor/actions/mastodon.py:20 +msgid "Quit" +msgstr "Sortir" + +#: keystrokeEditor/actions/mastodon.py:21 +msgid "Open user timeline" +msgstr "Obrir línia temporal" + +#: keystrokeEditor/actions/mastodon.py:22 +msgid "Destroy buffer" +msgstr "Elimina el bufer." + +# | msgid "Interact with the currently focused tweet." +#: keystrokeEditor/actions/mastodon.py:23 +#, fuzzy +msgid "Interact with the currently focused post." +msgstr "Interactua amb el tuit seleccionat." + +#: keystrokeEditor/actions/mastodon.py:24 +msgid "Open URL" +msgstr "Obre adreça." + +# | msgid "View in Twitter" +#: keystrokeEditor/actions/mastodon.py:25 +#, fuzzy +msgid "View in browser" +msgstr "Veure a Twitter" + +#: keystrokeEditor/actions/mastodon.py:26 +msgid "Increase volume by 5%" +msgstr "Augmentar Volum 5%" + +#: keystrokeEditor/actions/mastodon.py:27 +msgid "Decrease volume by 5%" +msgstr "Baixar Volum 5%" + +#: keystrokeEditor/actions/mastodon.py:28 +msgid "Jump to the first element of a buffer" +msgstr "Vés al primer element del bufer actual." + +#: keystrokeEditor/actions/mastodon.py:29 +msgid "Jump to the last element of the current buffer" +msgstr "Vés a l'últim element del buffer actual." + +#: keystrokeEditor/actions/mastodon.py:30 +msgid "Jump 20 elements up in the current buffer" +msgstr "Vés 20 elements amunt en el buffer actual." + +#: keystrokeEditor/actions/mastodon.py:31 +msgid "Jump 20 elements down in the current buffer" +msgstr "Vés 20 elements avall en el bufer actual." + +# | msgid "Delete" +#: keystrokeEditor/actions/mastodon.py:33 +#, fuzzy +msgid "Delete post" +msgstr "Eliminar" + +#: keystrokeEditor/actions/mastodon.py:34 +msgid "Empty the current buffer" +msgstr "Buidar el buffer actual" + +#: keystrokeEditor/actions/mastodon.py:35 +msgid "Repeat last item" +msgstr "Repeteix l'últim ítem" + +#: keystrokeEditor/actions/mastodon.py:36 +msgid "Copy to clipboard" +msgstr "Copiar al portapapers" + +#: keystrokeEditor/actions/mastodon.py:39 +msgid "Mute/unmute the active buffer" +msgstr "Activar o desactivar el silenci al buffer actual" + +#: keystrokeEditor/actions/mastodon.py:40 +msgid "Mute/unmute the current session" +msgstr "Activa o desactiva el silenci de la sessió actual" + +#: keystrokeEditor/actions/mastodon.py:41 +msgid "toggle the automatic reading of incoming tweets in the active buffer" +msgstr "Commutar la lectura automàtica de tuits nous per a aquest buffer" + +# | msgid "Search on twitter" +#: keystrokeEditor/actions/mastodon.py:42 +#, fuzzy +msgid "Search on instance" +msgstr "Cerca a Twitter" + +#: keystrokeEditor/actions/mastodon.py:43 +msgid "Find a string in the currently focused buffer" +msgstr "Troba una cadena en el buffer focalitzat." + +#: keystrokeEditor/actions/mastodon.py:44 +msgid "Show the keystroke editor" +msgstr "Mostrar l'editor de combinacions de teclat" + +#: keystrokeEditor/actions/mastodon.py:46 +msgid "load previous items" +msgstr "Carrega elements anteriors" + +#: keystrokeEditor/actions/mastodon.py:48 +msgid "View conversation" +msgstr "Veure conversa." + +#: keystrokeEditor/actions/mastodon.py:49 +msgid "Check and download updates" +msgstr "Cerca i descarrega actualitzacions" + +#: keystrokeEditor/actions/mastodon.py:50 +msgid "Opens the global settings dialogue" +msgstr "Obre el diàleg de configuració global." + +#: keystrokeEditor/actions/mastodon.py:52 +msgid "Opens the account settings dialogue" +msgstr "Obre el diàleg de configuració del compte." + +# | msgid "Try to play an audio file" +#: keystrokeEditor/actions/mastodon.py:53 +#, fuzzy +msgid "Try to play a media file" +msgstr "Provar de reproduir un arxiu d'audio" + +#: keystrokeEditor/actions/mastodon.py:54 +msgid "Updates the buffer and retrieves possible lost items there." +msgstr "Actualitza el buffer i carrega possibles elements perduts." + +#: keystrokeEditor/actions/mastodon.py:55 +msgid "Extracts the text from a picture and displays the result in a dialog." +msgstr "Extreure el text d'una imatge i mostra'l en un diàleg." + +#: keystrokeEditor/actions/mastodon.py:56 +#, fuzzy +msgid "Adds an alias to an user" +msgstr "Selecciona una llista per a afegir a l'usuari" + +#: sessionmanager/sessionManager.py:69 +#, python-brace-format +msgid "{account_name}@{instance} (Mastodon)" +msgstr "" + +#: sessionmanager/wxUI.py:11 +msgid "Session manager" +msgstr "Gestor de sessions" + +#: sessionmanager/wxUI.py:14 +msgid "Accounts list" +msgstr "Llista de comptes" + +#: sessionmanager/wxUI.py:16 +msgid "Account" +msgstr "Compte" + +#: sessionmanager/wxUI.py:20 +msgid "New account" +msgstr "Nou compte" + +#: sessionmanager/wxUI.py:22 sessionmanager/wxUI.py:79 +msgid "Remove account" +msgstr "Esborrar compte." + +#: sessionmanager/wxUI.py:24 +msgid "Global Settings" +msgstr "Configuració global" + +#: sessionmanager/wxUI.py:48 +msgid "You need to configure an account." +msgstr "Necessites configurar un compte" + +#: sessionmanager/wxUI.py:48 +msgid "Account Error" +msgstr "Problema de compte" + +#: sessionmanager/wxUI.py:54 +msgid "Mastodon" +msgstr "" + +#: sessionmanager/wxUI.py:59 +msgid "" +"You will be prompted for your Mastodon data (instance URL, email address " +"and password) so we can authorise TWBlue in your instance. Would you like" +" to authorise your account now?" +msgstr "" + +#: sessionmanager/wxUI.py:59 +msgid "Authorization" +msgstr "Autorització" + +#: sessionmanager/wxUI.py:67 +#, python-format +msgid "Authorized account %d" +msgstr "Compte autoritzat %d" + +#: sessionmanager/wxUI.py:73 +msgid "" +"Your access token is invalid or the authorization has failed. Please try " +"again." +msgstr "" +"El codi d'autorització no és vàlid o el procés d'atorització ha fallat. " +"Si et plau, prova-ho més tard." + +#: sessionmanager/wxUI.py:73 +msgid "Invalid user token" +msgstr "Token d'usuari invàlid" + +#: sessionmanager/wxUI.py:79 +msgid "Do you really want to delete this account?" +msgstr "Realment vols eliminar aquest compte?" + +#: sessions/base.py:125 +#, python-brace-format +msgid "" +"An exception occurred while saving the {app} database. It will be deleted" +" and rebuilt automatically. If this error persists, send the error log to" +" the {app} developers." +msgstr "" + +#: sessions/base.py:165 +#, python-brace-format +msgid "" +"An exception occurred while loading the {app} database. It will be " +"deleted and rebuilt automatically. If this error persists, send the error" +" log to the {app} developers." +msgstr "" + +# | msgid "dddd, MMMM D, YYYY H:m:s" +#: sessions/mastodon/compose.py:15 sessions/mastodon/compose.py:61 +#, fuzzy +msgid "dddd, MMMM D, YYYY H:m" +msgstr "dddd, MMMM D, YYYY H:m:s" + +# | msgid "{0}. Quoted tweet from @{1}: {2}" +#: sessions/mastodon/compose.py:17 sessions/mastodon/templates.py:74 +#: sessions/mastodon/templates.py:75 +#, fuzzy, python-brace-format +msgid "Boosted from @{}: {}" +msgstr "{0}. Tuit citat de @{1}: {2}" + +#: sessions/mastodon/compose.py:22 sessions/mastodon/compose.py:81 +#: sessions/mastodon/templates.py:81 sessions/mastodon/templates.py:176 +#, python-brace-format +msgid "hidden by filter {}" +msgstr "" + +#: sessions/mastodon/compose.py:36 sessions/mastodon/templates.py:28 +msgid "dddd, MMMM D, YYYY H:m:s" +msgstr "dddd, MMMM D, YYYY H:m:s" + +# | msgid "" +# | "%s (@%s). %s followers, %s friends, %s tweets. Last tweeted %s. Joined " +# | "Twitter %s" +#: sessions/mastodon/compose.py:38 +#, fuzzy, python-format +msgid "%s (@%s). %s followers, %s following, %s posts. Joined %s" +msgstr "" +"%s (@%s). %s seguidors, %s amics, %s tuits. Últim tuit %s. Es va unir a " +"Twitter %s" + +#: sessions/mastodon/compose.py:49 +#, python-brace-format +msgid "Last message from {}: {}" +msgstr "" + +# | msgid "{username}'s followers" +#: sessions/mastodon/compose.py:64 +#, fuzzy, python-brace-format +msgid "{username} has posted: {status}" +msgstr "Seguidors d'{username}" + +# | msgid "{username}'s followers" +#: sessions/mastodon/compose.py:66 +#, fuzzy, python-brace-format +msgid "{username} has mentioned you: {status}" +msgstr "Seguidors d'{username}" + +#: sessions/mastodon/compose.py:68 +#, python-brace-format +msgid "{username} has boosted: {status}" +msgstr "" + +#: sessions/mastodon/compose.py:70 +#, python-brace-format +msgid "{username} has added to favorites: {status}" +msgstr "" + +# | msgid "{username}'s followers" +#: sessions/mastodon/compose.py:72 +#, fuzzy, python-brace-format +msgid "{username} has followed you." +msgstr "Seguidors d'{username}" + +# | msgid "{username}'s followers" +#: sessions/mastodon/compose.py:74 +#, fuzzy, python-brace-format +msgid "{username} has joined the instance." +msgstr "Seguidors d'{username}" + +#: sessions/mastodon/compose.py:76 sessions/mastodon/templates.py:171 +#, python-brace-format +msgid "A poll in which you have voted has expired: {status}" +msgstr "" + +# | msgid "{username}'s followers" +#: sessions/mastodon/compose.py:78 +#, fuzzy, python-brace-format +msgid "{username} wants to follow you." +msgstr "Seguidors d'{username}" + +#: sessions/mastodon/session.py:69 +msgid "Please enter your instance URL." +msgstr "" + +#: sessions/mastodon/session.py:69 +msgid "Mastodon instance" +msgstr "" + +#: sessions/mastodon/session.py:80 +msgid "" +"We could not connect to your mastodon instance. Please verify that the " +"domain exists and the instance is accessible via a web browser." +msgstr "" + +# | msgid "&Report an error" +#: sessions/mastodon/session.py:80 +#, fuzzy +msgid "Instance error" +msgstr "&Reportar un problema" + +#: sessions/mastodon/session.py:85 +msgid "Enter the verification code" +msgstr "" + +# | msgid "Authorization" +#: sessions/mastodon/session.py:85 +#, fuzzy +msgid "PIN code authorization" +msgstr "Autorització" + +#: sessions/mastodon/session.py:94 +msgid "" +"We could not authorice your mastodon account to be used in TWBlue. This " +"might be caused due to an incorrect verification code. Please try to add " +"the session again." +msgstr "" + +# | msgid "Authorization" +#: sessions/mastodon/session.py:94 +#, fuzzy +msgid "Authorization error" +msgstr "Autorització" + +#: sessions/mastodon/session.py:215 +#, python-format +msgid "%s succeeded." +msgstr "%s amb èxit" + +#: sessions/mastodon/templates.py:18 +msgid "$display_name, $text $image_descriptions $date. $source" +msgstr "" + +#: sessions/mastodon/templates.py:19 +msgid "Dm to $recipient_display_name, $text $date" +msgstr "" + +#: sessions/mastodon/templates.py:20 +msgid "" +"$display_name (@$screen_name). $followers followers, $following " +"following, $posts posts. Joined $created_at." +msgstr "" + +#: sessions/mastodon/templates.py:21 +msgid "$display_name $text, $date" +msgstr "" + +#: sessions/mastodon/templates.py:34 +#, python-brace-format +msgid "Content warning: {}" +msgstr "" + +#: sessions/mastodon/templates.py:45 +#, fuzzy, python-brace-format +msgid "Media description: {}" +msgstr "Descripció de la imatge" + +# | msgid "Followers" +#: sessions/mastodon/templates.py:82 wxUI/dialogs/mastodon/postDialogs.py:49 +#, fuzzy +msgid "Followers only" +msgstr "Seguidors" + +#: sessions/mastodon/templates.py:94 +#, fuzzy +msgid "Pinned." +msgstr "Copiat" + +#: sessions/mastodon/templates.py:157 +#, python-brace-format +msgid "has posted: {status}" +msgstr "" + +#: sessions/mastodon/templates.py:159 +#, python-brace-format +msgid "has mentioned you: {status}" +msgstr "" + +#: sessions/mastodon/templates.py:161 +#, python-brace-format +msgid "has boosted: {status}" +msgstr "" + +#: sessions/mastodon/templates.py:163 +#, python-brace-format +msgid "has added to favorites: {status}" +msgstr "" + +#: sessions/mastodon/templates.py:165 +#, python-brace-format +msgid "has updated a status: {status}" +msgstr "" + +# | msgid "{0} is following you." +#: sessions/mastodon/templates.py:167 +#, fuzzy +msgid "has followed you." +msgstr "{0} et segueix" + +# | msgid "Remove client" +#: sessions/mastodon/templates.py:169 +#, fuzzy +msgid "has joined the instance." +msgstr "Esborrar client" + +# | msgid "{0} is following you." +#: sessions/mastodon/templates.py:173 +#, fuzzy +msgid "wants to follow you." +msgstr "{0} et segueix" + +#: update/utils.py:29 +#, python-format +msgid "%d day, " +msgstr "%d dia, " + +#: update/utils.py:31 +#, python-format +msgid "%d days, " +msgstr "%d dies, " + +#: update/utils.py:33 +#, python-format +msgid "%d hour, " +msgstr "%d hora, " + +#: update/utils.py:35 +#, python-format +msgid "%d hours, " +msgstr "%d hores, " + +#: update/utils.py:37 +#, python-format +msgid "%d minute, " +msgstr "%d minut, " + +#: update/utils.py:39 +#, python-format +msgid "%d minutes, " +msgstr "%d minuts, " + +#: update/utils.py:41 +#, python-format +msgid "%s second" +msgstr "%s segon" + +#: update/utils.py:43 +#, python-format +msgid "%s seconds" +msgstr "%s segons" + +#: update/wxUpdater.py:11 +#, python-format +msgid "" +"There's a new %s version available, released on %s. Would you like to " +"download it now?\n" +"\n" +" %s version: %s\n" +"\n" +"Changes:\n" +"%s" +msgstr "" +"Hi ha una nova versió de %s disponible. T'agradaria descaregar-la ara?\n" +"\n" +" %s versió: %s\n" +"\n" +"Canvis:\n" +"%s" + +# | msgid "" +# | "There's a new %s version available, released on %s. Would you like to " +# | "download it now?\n" +# | "\n" +# | " %s version: %s\n" +# | "Changes:\n" +# | "%s" +#: update/wxUpdater.py:14 +#, fuzzy, python-format +msgid "" +"There's a new %s version available, released on %s. Updates are not " +"automatic in Windows 7, so you would need to visit TWBlue's download " +"website to get the latest version.\n" +"\n" +" %s version: %s\n" +"\n" +"Changes:\n" +"%s" +msgstr "" +"Hi ha una nova versió de %s disponible. T'agradaria descaregar-la ara?\n" +"\n" +" %s versió: %s\n" +"\n" +"Canvis:\n" +"%s" + +#: update/wxUpdater.py:16 +#, python-format +msgid "New version for %s" +msgstr "Nova versió de %s" + +#: update/wxUpdater.py:23 +msgid "Download in Progress" +msgstr "Descàrrega en progrés" + +#: update/wxUpdater.py:23 +msgid "Downloading the new version..." +msgstr "Descarregant la nova versió" + +#: update/wxUpdater.py:33 +#, python-format +msgid "Updating... %s of %s" +msgstr "Actualitzant... %s de %s" + +#: update/wxUpdater.py:36 +msgid "" +"The update has been downloaded and installed successfully. Press OK to " +"continue." +msgstr "" +"L'actualització s'ha descarregat i instal·lat correctament. Prem Acceptar" +" per continuar." + +#: update/wxUpdater.py:36 +msgid "Done!" +msgstr "Fet!" + +#: wxUI/commonMessageDialogs.py:6 +#, python-brace-format +msgid "Do you really want to close {0}?" +msgstr "Estàs segur que vols tancar {0}?" + +#: wxUI/commonMessageDialogs.py:6 +msgid "Exit" +msgstr "Sortir" + +#: wxUI/commonMessageDialogs.py:10 +#, python-brace-format +msgid " {0} must be restarted for these changes to take effect." +msgstr " {0} S'ha de reiniciar perquè els canvis tinguin efecte." + +#: wxUI/commonMessageDialogs.py:10 +#, python-brace-format +msgid "Restart {0} " +msgstr "Reiniciar {0} " + +#: wxUI/commonMessageDialogs.py:13 +msgid "" +"Are you sure you want to delete this user from the database? This user " +"will not appear in autocomplete results anymore." +msgstr "" +"Estàs segur de que vols eliminar aquest usuari de la base de dades? " +"l'usuari no apareixerà més als resultats d'autocompletar." + +#: wxUI/commonMessageDialogs.py:13 +msgid "Confirm" +msgstr "Confirma" + +#: wxUI/commonMessageDialogs.py:16 +msgid "" +"Do you really want to empty this buffer? It's items will be removed from" +" the list but not from Twitter" +msgstr "" +"Estàs segur de que vols buidar aquest buffer? Els tuits seràn eliminats " +"de la llista, però no de Twitter." + +#: wxUI/commonMessageDialogs.py:16 wxUI/dialogs/mastodon/dialogs.py:31 +msgid "Empty buffer" +msgstr "Buidar buffer" + +#: wxUI/commonMessageDialogs.py:20 +msgid "Do you really want to destroy this buffer?" +msgstr "Realment vols eliminar aquest buffer?" + +#: wxUI/commonMessageDialogs.py:23 +msgid "That user does not exist" +msgstr "Aquest 'usuari no existeix" + +#: wxUI/commonMessageDialogs.py:26 +msgid "A timeline for this user already exists. You can't open another" +msgstr "Ja hi ha una línia temporal per aquest usuari. No pots obrirne una altra." + +#: wxUI/commonMessageDialogs.py:26 +msgid "Existing timeline" +msgstr "Linea temporal existent" + +#: wxUI/commonMessageDialogs.py:29 +#, python-brace-format +msgid "" +"If you like {0} we need your help to keep it going. Help us by donating " +"to the project. This will help us pay for the server, the domain and some" +" other things to ensure that {0} will be actively maintained. Your " +"donation will give us the means to continue the development of {0}, and " +"to keep {0} free. Would you like to donate now?" +msgstr "" +"Si t'agrada {0}, necessitem la teva col·laboració perquè continui " +"funcionant, ens pots ajudar donant una quantitat al projecte. Això ens " +"ajudarà a pagar el servidor, el domini i altres aspectes que asseguraran " +"un manteniment més actiu de {0}. La teva donació ens empeny a continuar " +"el desenvolupament de {0}, i per fent que {0} sigui gratuit. Vols fer una" +" donació ara?" + +#: wxUI/commonMessageDialogs.py:29 +msgid "We need your help" +msgstr "Necessitem la teva ajuda" + +#: wxUI/commonMessageDialogs.py:33 wxUI/dialogs/mastodon/postDialogs.py:207 +msgid "Information" +msgstr "Informació" + +#: wxUI/commonMessageDialogs.py:36 +msgid "The configuration file is invalid." +msgstr "" + +#: wxUI/commonMessageDialogs.py:39 +#, python-brace-format +msgid "" +"{0} quit unexpectedly the last time it was run. If the problem persists, " +"please report it to the {0} developers." +msgstr "" +"{0} Es va tancar inesperadament l'ultim cop que es va executar. Si el " +"problema persisteix, si us plau contacta amb els desenvolupadors de {0}." + +#: wxUI/commonMessageDialogs.py:39 +msgid "Warning" +msgstr "Avís" + +#: wxUI/commonMessageDialogs.py:45 +#, python-brace-format +msgid "Sorry, you can't update while running {} from source." +msgstr "" + +#: wxUI/commonMessageDialogs.py:49 +msgid "the provided instance is invalid. Please try again." +msgstr "" + +#: wxUI/commonMessageDialogs.py:49 +#, fuzzy +msgid "Invalid instance" +msgstr "Combinació de teclat invàlida" + +#: wxUI/commonMessageDialogs.py:52 +msgid "" +"TWBlue was unable to add or update the filter with the specified " +"settings. Please try again." +msgstr "" + +#: wxUI/commonMessageDialogs.py:55 +msgid "" +"TWBlue was unable to load your filters from the instance. Please try " +"again." +msgstr "" + +#: wxUI/commonMessageDialogs.py:58 +#, fuzzy +msgid "Do you really want to delete this filter ?" +msgstr "Realment vols eliminar aquest compte?" + +#: wxUI/commonMessageDialogs.py:58 +#, fuzzy +msgid "Delete filter" +msgstr "Crear un nou &filtre" + +#: wxUI/commonMessageDialogs.py:61 +msgid "TWBlue was unable to remove the filter you specified. Please try again." +msgstr "" + +#: wxUI/sysTrayIcon.py:36 wxUI/view.py:25 +msgid "&Global settings" +msgstr "&Configuració global" + +#: wxUI/sysTrayIcon.py:37 wxUI/view.py:24 +msgid "Account se&ttings" +msgstr "&Configuració del compte" + +#: wxUI/sysTrayIcon.py:39 +msgid "&Show / hide" +msgstr "&Veure/ amagar" + +#: wxUI/sysTrayIcon.py:40 wxUI/view.py:74 +msgid "&Documentation" +msgstr "&Documentació" + +#: wxUI/sysTrayIcon.py:41 +msgid "Check for &updates" +msgstr "&Cercar actualitzacions" + +#: wxUI/sysTrayIcon.py:42 +msgid "&Exit" +msgstr "&Sortir" + +#: wxUI/view.py:16 +msgid "&Manage accounts" +msgstr "&gestionar compte" + +#: wxUI/view.py:17 +msgid "&Update profile" +msgstr "&Actualitzar perfil" + +#: wxUI/view.py:18 +msgid "&Hide window" +msgstr "&Amagar finestra" + +#: wxUI/view.py:20 +msgid "&Lists manager" +msgstr "&Gestor de llistes" + +#: wxUI/view.py:23 +msgid "&Edit keystrokes" +msgstr "&Editar combinacions de tecles" + +#: wxUI/view.py:26 +msgid "E&xit" +msgstr "&Sortir" + +# | msgid "Remove from list" +#: wxUI/view.py:34 +#, fuzzy +msgid "&Remove from favorites" +msgstr "Eliminar de llista" + +#: wxUI/view.py:47 +msgid "&Add to list" +msgstr "&Afegir a llista" + +#: wxUI/view.py:48 +msgid "R&emove from list" +msgstr "&Eliminar de llista" + +#: wxUI/view.py:49 +msgid "Show user &profile" +msgstr "&Veure perfil de l'usuari" + +#: wxUI/view.py:50 +msgid "V&iew likes" +msgstr "&Veure tuits que agraden" + +#: wxUI/view.py:54 +msgid "&Update buffer" +msgstr "&Actualitzar buffer" + +#: wxUI/dialogs/mastodon/communityTimeline.py:9 wxUI/view.py:55 +msgid "Create community timeline" +msgstr "" + +#: wxUI/view.py:56 +msgid "New &trending topics buffer..." +msgstr "Nou &bufer de tendències" + +#: wxUI/view.py:59 +msgid "Find a string in the currently focused buffer..." +msgstr "Troba una cadena en el buffer focalitzat..." + +#: wxUI/view.py:60 +msgid "&Load previous items" +msgstr "&carregar twits més antics" + +#: wxUI/dialogs/mastodon/userActions.py:21 wxUI/view.py:62 +msgid "&Mute" +msgstr "&Silenciar" + +#: wxUI/view.py:63 +msgid "&Autoread" +msgstr "&lectura automàtica" + +#: wxUI/view.py:64 +msgid "&Clear buffer" +msgstr "&Netejar buffer" + +#: wxUI/view.py:65 +msgid "&Destroy" +msgstr "&elimina" + +#: wxUI/view.py:69 +msgid "&Seek back 5 seconds" +msgstr "enrere 5 se&gons" + +#: wxUI/view.py:70 +msgid "&Seek forward 5 seconds" +msgstr "avan&çar 5 segons" + +#: wxUI/view.py:75 +msgid "Sounds &tutorial" +msgstr "&Tutorial de sons" + +#: wxUI/view.py:76 +msgid "&What's new in this version?" +msgstr "&Què hi ha de nou en aquesta versió?" + +#: wxUI/view.py:77 +msgid "&Check for updates" +msgstr "&Cercar actualitzacions" + +#: wxUI/view.py:78 +msgid "&Report an error" +msgstr "&Reportar un problema" + +#: wxUI/view.py:79 +#, python-brace-format +msgid "{0}'s &website" +msgstr "&Pàgina web de {0} " + +#: wxUI/view.py:80 +msgid "Get soundpacks for TWBlue" +msgstr "Obtenir pacs de sons per TWBlue." + +#: wxUI/view.py:81 +#, python-brace-format +msgid "About &{0}" +msgstr "Sobre &{0}" + +#: wxUI/view.py:84 +msgid "&Application" +msgstr "&Aplicació" + +#: wxUI/view.py:85 +msgid "&Tweet" +msgstr "&Tuit" + +#: wxUI/dialogs/mastodon/userActions.py:10 wxUI/view.py:86 +msgid "&User" +msgstr "&Usuari" + +#: wxUI/view.py:87 +msgid "&Buffer" +msgstr "&Bufer" + +#: wxUI/view.py:88 +msgid "&Audio" +msgstr "&Audio" + +#: wxUI/view.py:89 +msgid "&Help" +msgstr "&Ajuda" + +#: wxUI/view.py:175 +msgid "Address" +msgstr "Adreça" + +#: wxUI/view.py:206 +#, python-brace-format +msgid "Your {0} version is up to date" +msgstr "La teva {0} versió ja està actualitzada." + +#: wxUI/view.py:206 +msgid "Update" +msgstr "Actualitzar" + +#: wxUI/buffers/panels.py:12 wxUI/buffers/panels.py:20 +msgid "Login" +msgstr "inicia la sessió" + +#: wxUI/buffers/panels.py:14 +msgid "Log in automatically" +msgstr "Iniciar sessió automàticament" + +#: wxUI/buffers/panels.py:22 +msgid "Logout" +msgstr "tanca la sessió" + +#: wxUI/buffers/mastodon/base.py:11 +#: wxUI/buffers/mastodon/conversationList.py:11 wxUI/buffers/mastodon/user.py:8 +#: wxUI/dialogs/mastodon/userTimeline.py:10 wxUI/dialogs/userAliasDialogs.py:14 +msgid "User" +msgstr "Usuari" + +#: wxUI/buffers/mastodon/base.py:11 +#: wxUI/buffers/mastodon/conversationList.py:11 +#: wxUI/buffers/mastodon/notifications.py:11 +#: wxUI/dialogs/mastodon/postDialogs.py:37 +#: wxUI/dialogs/mastodon/postDialogs.py:272 +msgid "Text" +msgstr "Text" + +#: wxUI/buffers/mastodon/base.py:11 +#: wxUI/buffers/mastodon/conversationList.py:11 +#: wxUI/buffers/mastodon/notifications.py:11 +#: wxUI/dialogs/mastodon/postDialogs.py:216 +msgid "Date" +msgstr "data" + +#: wxUI/buffers/mastodon/base.py:11 +#: wxUI/buffers/mastodon/conversationList.py:11 +msgid "Client" +msgstr "Client" + +#: wxUI/buffers/mastodon/base.py:27 +msgid "Favorite" +msgstr "" + +#: wxUI/buffers/mastodon/base.py:28 +msgid "Bookmark" +msgstr "" + +#: wxUI/buffers/mastodon/base.py:29 +msgid "Direct message" +msgstr "Missatge directe" + +#: wxUI/buffers/mastodon/notifications.py:23 +#: wxUI/dialogs/mastodon/dialogs.py:23 +msgid "Dismiss" +msgstr "" + +#: wxUI/buffers/mastodon/user.py:19 wxUI/dialogs/userAliasDialogs.py:48 +#, fuzzy +msgid "Actions" +msgstr "Acció" + +# | msgid "Direct Messages" +#: wxUI/buffers/mastodon/user.py:20 +#, fuzzy +msgid "Message" +msgstr "missatges directes" + +#: wxUI/dialogs/configuration.py:15 +#, fuzzy +msgid "&Language" +msgstr "Idioma" + +#: wxUI/dialogs/configuration.py:22 +#, fuzzy, python-brace-format +msgid "&Ask before exiting {0}" +msgstr "Preguntar abans de sortir de {0}" + +#: wxUI/dialogs/configuration.py:24 +#, fuzzy +msgid "&Disable Streaming functions" +msgstr "Desactivar les funcions de streaming" + +#: wxUI/dialogs/configuration.py:27 +#, fuzzy +msgid "&Buffer update interval, in minutes" +msgstr "actualització del bufer, en minuts" + +#: wxUI/dialogs/configuration.py:33 +#, fuzzy, python-brace-format +msgid "Pla&y a sound when {0} launches" +msgstr "Reprodueix un so quan {0} s'inicii." + +#: wxUI/dialogs/configuration.py:35 +#, fuzzy, python-brace-format +msgid "Sp&eak a message when {0} launches" +msgstr "verbalitza un missatge quan {0} s'inicii." + +#: wxUI/dialogs/configuration.py:37 +#, fuzzy +msgid "&Use invisible interface's keyboard shortcuts while GUI is visible" +msgstr "" +"Utilitzar les combinacions de tecles de la interfície invisible mentre la" +" guia està visible." + +#: wxUI/dialogs/configuration.py:39 +#, fuzzy +msgid "A&ctivate Sapi5 when any other screen reader is not being run" +msgstr "Activar Sapi5 quan no hi ha un altre lector de pantalla funcionant" + +#: wxUI/dialogs/configuration.py:41 +#, fuzzy +msgid "&Hide GUI on launch" +msgstr "Amagar interfaç gràfica a l'iniciar." + +#: wxUI/dialogs/configuration.py:43 +msgid "&Read long posts in GUI" +msgstr "" + +#: wxUI/dialogs/configuration.py:46 +#, fuzzy +msgid "&Keymap" +msgstr "Mapa de teclat" + +#: wxUI/dialogs/configuration.py:51 +#, fuzzy, python-brace-format +msgid "Check for u&pdates when {0} launches" +msgstr "Comprobar actualitzacións quan {0} s'inicii" + +#: wxUI/dialogs/configuration.py:61 +#, fuzzy +msgid "Proxy &type: " +msgstr "Tipus de proxi." + +#: wxUI/dialogs/configuration.py:68 +#, fuzzy +msgid "Proxy s&erver: " +msgstr "Servidor proxi: " + +#: wxUI/dialogs/configuration.py:74 +#, fuzzy +msgid "&Port: " +msgstr "Port: " + +#: wxUI/dialogs/configuration.py:80 +#, fuzzy +msgid "&User: " +msgstr "Usuari: " + +#: wxUI/dialogs/configuration.py:86 +#, fuzzy +msgid "P&assword: " +msgstr "Contrasenya: " + +#: wxUI/dialogs/configuration.py:98 +#, fuzzy +msgid "Enable automatic s&peech feedback" +msgstr "Activar missatges parlats" + +#: wxUI/dialogs/configuration.py:100 +#, fuzzy +msgid "Enable automatic &Braille feedback" +msgstr "Activar missatges en braille" + +#: wxUI/dialogs/configuration.py:108 +msgid "Buffer" +msgstr "Bufer" + +#: wxUI/dialogs/configuration.py:108 +msgid "Status" +msgstr "Estat" + +#: wxUI/dialogs/configuration.py:111 +#, fuzzy +msgid "S&how/hide" +msgstr "Mostra/amaga" + +#: wxUI/dialogs/configuration.py:112 +#, fuzzy +msgid "Move &up" +msgstr "Moure amunt" + +#: wxUI/dialogs/configuration.py:113 +#, fuzzy +msgid "Move &down" +msgstr "Moure avall" + +#: wxUI/dialogs/configuration.py:123 wxUI/dialogs/configuration.py:188 +#: wxUI/dialogs/configuration.py:191 wxUI/dialogs/configuration.py:196 +msgid "Show" +msgstr "Mostra" + +#: wxUI/dialogs/configuration.py:125 wxUI/dialogs/configuration.py:135 +#: wxUI/dialogs/configuration.py:159 wxUI/dialogs/configuration.py:189 +msgid "Hide" +msgstr "Amaga" + +#: wxUI/dialogs/configuration.py:133 wxUI/dialogs/configuration.py:157 +msgid "Select a buffer first." +msgstr "Primer has de seleccionar un buffer." + +#: wxUI/dialogs/configuration.py:136 wxUI/dialogs/configuration.py:160 +msgid "The buffer is hidden, show it first." +msgstr "El buffer està amagat, primer l'has de mostrar." + +#: wxUI/dialogs/configuration.py:139 +msgid "The buffer is already at the top of the list." +msgstr "El buffer ja és al capdamunt de la llista." + +#: wxUI/dialogs/configuration.py:163 +msgid "The buffer is already at the bottom of the list." +msgstr "El buffer ja es al capdavall de la llista." + +#: wxUI/dialogs/configuration.py:205 +msgid "&LibreTranslate API URL: " +msgstr "" + +#: wxUI/dialogs/configuration.py:211 +msgid "LibreTranslate API &Key (optional): " +msgstr "" + +#: wxUI/dialogs/configuration.py:217 +msgid "&DeepL API Key: " +msgstr "" + +#: wxUI/dialogs/configuration.py:231 +#, python-brace-format +msgid "{0} preferences" +msgstr "Preferències de {0} " + +#: wxUI/dialogs/configuration.py:237 wxUI/dialogs/mastodon/configuration.py:144 +msgid "General" +msgstr "General" + +#: wxUI/dialogs/configuration.py:242 +msgid "Proxy" +msgstr "Proxi" + +#: wxUI/dialogs/configuration.py:246 +#, fuzzy +msgid "Translation services" +msgstr "Traduït" + +#: wxUI/dialogs/configuration.py:251 wxUI/dialogs/mastodon/configuration.py:170 +#, fuzzy +msgid "&Save" +msgstr "Desar" + +#: wxUI/dialogs/configuration.py:253 +#: wxUI/dialogs/mastodon/communityTimeline.py:27 +#: wxUI/dialogs/mastodon/configuration.py:172 +#: wxUI/dialogs/mastodon/search.py:26 +#: wxUI/dialogs/mastodon/showUserProfile.py:170 +#: wxUI/dialogs/mastodon/updateProfile.py:132 +#: wxUI/dialogs/mastodon/userActions.py:38 +#: wxUI/dialogs/mastodon/userTimeline.py:32 +msgid "&Close" +msgstr "&Tancar" + +#: wxUI/dialogs/find.py:13 +msgid "Find in current buffer" +msgstr "Troba en el buffer actual." + +#: wxUI/dialogs/find.py:14 +msgid "String" +msgstr "cadena" + +#: wxUI/dialogs/find.py:23 wxUI/dialogs/mastodon/showUserProfile.py:33 +msgid "Cancel" +msgstr "Cancel·lar" + +#: wxUI/dialogs/templateDialogs.py:8 +msgid "Edit Template" +msgstr "" + +#: wxUI/dialogs/templateDialogs.py:13 +msgid "Edit template" +msgstr "" + +#: wxUI/dialogs/templateDialogs.py:17 +#, fuzzy +msgid "Available variables" +msgstr "No disponible" + +#: wxUI/dialogs/templateDialogs.py:29 +msgid "Restore template" +msgstr "" + +#: wxUI/dialogs/templateDialogs.py:48 +#, python-brace-format +msgid "Restored template to {}." +msgstr "" + +#: wxUI/dialogs/templateDialogs.py:52 +msgid "" +"the template you have specified include variables that do not exists for " +"the object. Please fix the template and try again. For your reference, " +"you can see a list of all available variables in the variables list while" +" editing your template." +msgstr "" + +#: wxUI/dialogs/templateDialogs.py:52 +#, fuzzy +msgid "Invalid template" +msgstr "Combinació de teclat invàlida" + +#: wxUI/dialogs/urlList.py:6 +msgid "Select URL" +msgstr "Selecciona adreça" + +#: wxUI/dialogs/mastodon/userActions.py:13 +#: wxUI/dialogs/mastodon/userTimeline.py:13 wxUI/dialogs/userAliasDialogs.py:13 +msgid "&Autocomplete users" +msgstr "&Autocompletar usuaris." + +#: wxUI/dialogs/userAliasDialogs.py:18 +#, fuzzy +msgid "Alias" +msgstr "Sempre" + +#: wxUI/dialogs/userAliasDialogs.py:41 +#, fuzzy +msgid "Edit user aliases" +msgstr "Editant la base de dades d'usuaris de {0}." + +#: wxUI/dialogs/mastodon/search.py:19 wxUI/dialogs/userAliasDialogs.py:43 +msgid "Users" +msgstr "Usuaris" + +#: wxUI/dialogs/userAliasDialogs.py:50 +#, fuzzy +msgid "Add alias" +msgstr "Afegir a llista" + +#: wxUI/dialogs/userAliasDialogs.py:51 +msgid "Adds a new user alias" +msgstr "" + +#: wxUI/dialogs/userAliasDialogs.py:54 +#, fuzzy +msgid "Edit the currently focused user Alias." +msgstr "Interactua amb el tuit seleccionat." + +#: wxUI/dialogs/mastodon/filters/create_filter.py:26 +#: wxUI/dialogs/mastodon/filters/manage_filters.py:24 +#: wxUI/dialogs/userAliasDialogs.py:57 +msgid "Remove" +msgstr "Esborrar" + +#: wxUI/dialogs/userAliasDialogs.py:58 +#, fuzzy +msgid "Remove the currently focused user alias." +msgstr "Troba una cadena en el buffer focalitzat..." + +#: wxUI/dialogs/userAliasDialogs.py:82 +#, fuzzy +msgid "Are you sure you want to delete this user alias?" +msgstr "Realment vols eliminar aquesta llista?" + +#: wxUI/dialogs/userAliasDialogs.py:82 +#, fuzzy +msgid "Remove user alias" +msgstr "Esborrar usuari." + +#: wxUI/dialogs/userAliasDialogs.py:93 +#, fuzzy +msgid "User alias" +msgstr "Detalls de l'usuari" + +#: wxUI/dialogs/userList.py:27 +#, fuzzy +msgid "View profile" +msgstr "&Actualitzar perfil" + +#: wxUI/dialogs/mastodon/communityTimeline.py:10 +#, fuzzy +msgid "Community URL" +msgstr "Control" + +#: wxUI/dialogs/mastodon/communityTimeline.py:16 +#: wxUI/dialogs/mastodon/userTimeline.py:18 +msgid "Buffer type" +msgstr "Tipus de bufer." + +#: wxUI/dialogs/mastodon/communityTimeline.py:17 +#, fuzzy +msgid "&Local timeline" +msgstr "Línies temporals" + +#: wxUI/dialogs/mastodon/communityTimeline.py:18 +#, fuzzy +msgid "&Federated Timeline" +msgstr "Obrir línia temporal d'{username}" + +#: wxUI/dialogs/mastodon/communityTimeline.py:25 +#: wxUI/dialogs/mastodon/search.py:24 +#: wxUI/dialogs/mastodon/updateProfile.py:130 +#: wxUI/dialogs/mastodon/userActions.py:36 +#: wxUI/dialogs/mastodon/userTimeline.py:30 +msgid "&OK" +msgstr "&Acceptar" + +#: wxUI/dialogs/mastodon/configuration.py:14 +#, fuzzy +msgid "User autocompletion settings" +msgstr "Configuració d'autocompletat..." + +#: wxUI/dialogs/mastodon/configuration.py:15 +msgid "" +"Scan acc&ount and add followers and following users to the user " +"autocompletion database" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:16 +#, fuzzy +msgid "&Manage autocompletion database" +msgstr "Gestionar la base de dades d'autocompletar." + +#: wxUI/dialogs/mastodon/configuration.py:21 +#, fuzzy +msgid "&Disable Streaming API endpoints" +msgstr "Desactivar les funcions de streaming" + +#: wxUI/dialogs/mastodon/configuration.py:23 +#, fuzzy +msgid "&Relative timestamps" +msgstr "Temps relatius" + +#: wxUI/dialogs/mastodon/configuration.py:25 +msgid "" +"R&ead preferences from instance (default visibility when publishing and " +"displaying sensitive content)" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:28 +#, fuzzy +msgid "&Items on each API call" +msgstr "Elements per cada trucada a la API" + +# | msgid "" +# | "Inverted buffers: The newest tweets will be shown at the beginning while +# " +# | "the oldest at the end" +#: wxUI/dialogs/mastodon/configuration.py:34 +#, fuzzy +msgid "" +"I&nverted buffers: The newest items will be shown at the beginning while " +"the oldest at the end" +msgstr "" +"Buffers invertits: els nous tuits es mostraràn al inici de les llistes y " +"els antics al final" + +#: wxUI/dialogs/mastodon/configuration.py:36 +msgid "&Ask confirmation before boosting a post" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:38 +#, fuzzy +msgid "S&how screen names instead of full names" +msgstr "Mostrar el nom de pantalla dins del nom complert." + +#: wxUI/dialogs/mastodon/configuration.py:40 +msgid "Hide e&mojis in usernames" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:42 +#, fuzzy +msgid "" +"&Number of items per buffer to cache in database (0 to disable caching, " +"blank for unlimited)" +msgstr "" +"Nombre d'elements per bufer que s'emmagatzemaran a la base de dades (0 " +"per deshabilitar l'emagatzematge, en blanc per a ilimitat)." + +#: wxUI/dialogs/mastodon/configuration.py:46 +msgid "" +"&Load cache for items in memory (much faster in big datasets but requires" +" more RAM)" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:53 +#, python-brace-format +msgid "Edit template for &posts. Current template: {}" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:55 +#, python-brace-format +msgid "Edit template for c&onversations. Current template: {}" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:57 +#, python-brace-format +msgid "Edit template for p&ersons. Current template: {}" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:65 +#, fuzzy +msgid "&Volume" +msgstr "Volum." + +#: wxUI/dialogs/mastodon/configuration.py:76 +#, fuzzy +msgid "S&ession mute" +msgstr "Silenci de sessió" + +#: wxUI/dialogs/mastodon/configuration.py:78 +#, fuzzy +msgid "&Output device" +msgstr "Dispositiu de sortida" + +#: wxUI/dialogs/mastodon/configuration.py:85 +#, fuzzy +msgid "&Input device" +msgstr "Dispositiu d'entrada" + +#: wxUI/dialogs/mastodon/configuration.py:93 +#, fuzzy +msgid "Sound &pack" +msgstr "Paquet de sons" + +# | msgid "Indicate audio tweets with sound" +#: wxUI/dialogs/mastodon/configuration.py:99 +#, fuzzy +msgid "Indicate &audio or video in posts with sound" +msgstr "Indica un twit d'audio mitjançant un só." + +# | msgid "Indicate tweets containing images with sound" +#: wxUI/dialogs/mastodon/configuration.py:101 +#, fuzzy +msgid "Indicate posts containing i&mages with sound" +msgstr "Indica els twits que continguin imatges amb un só." + +#: wxUI/dialogs/mastodon/configuration.py:124 +#, fuzzy +msgid "&Language for OCR" +msgstr "Idioma de l'OCR" + +#: wxUI/dialogs/mastodon/configuration.py:149 +msgid "Feedback" +msgstr "Retroalimentació" + +#: wxUI/dialogs/mastodon/configuration.py:153 +msgid "Buffers" +msgstr "Buffers" + +#: wxUI/dialogs/mastodon/configuration.py:157 +msgid "Templates" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:161 +msgid "Sound" +msgstr "So" + +#: wxUI/dialogs/mastodon/configuration.py:165 +msgid "Extras" +msgstr "Extres." + +# | msgid "Would you like to add a comment to this tweet?" +#: wxUI/dialogs/mastodon/dialogs.py:7 +#, fuzzy +msgid "Would you like to share this post?" +msgstr "T'agradaria afegirun comentari a aquest tuit?" + +# | msgid "" +# | "Do you really want to delete this tweet? It will be deleted from Twitter +# " +# | "as well." +#: wxUI/dialogs/mastodon/dialogs.py:15 +#, fuzzy +msgid "" +"Do you really want to delete this post? It will be deleted from the " +"instance as well." +msgstr "Estàs segur que vols eliminar aquest tuit? també s'eliminarà de Twitter." + +#: wxUI/dialogs/mastodon/dialogs.py:15 +msgid "Delete" +msgstr "Eliminar" + +#: wxUI/dialogs/mastodon/dialogs.py:23 +msgid "" +"Are you sure you want to dismiss this notification? If you dismiss a " +"mention notification, it also disappears from your mentions buffer. The " +"post is not going to be deleted from the instance, though." +msgstr "" + +# | msgid "" +# | "Do you really want to empty this buffer? It's items will be removed from +# " +# | "the list but not from Twitter" +#: wxUI/dialogs/mastodon/dialogs.py:31 +#, fuzzy +msgid "" +"Do you really want to empty this buffer? It's items will be removed from" +" the list but not from the instance" +msgstr "" +"Estàs segur de que vols buidar aquest buffer? Els tuits seràn eliminats " +"de la llista, però no de Twitter." + +# | msgid "This user has no tweets. {0} can't create a timeline." +#: wxUI/dialogs/mastodon/dialogs.py:38 +#, fuzzy, python-brace-format +msgid "This user has no posts. {0} can't create a timeline." +msgstr "Aquest usuari no té tuits. {0} no pot crear la seva línia temporal." + +# | msgid "This user has no favorited tweets. {0} can't create a timeline." +#: wxUI/dialogs/mastodon/dialogs.py:43 +#, fuzzy, python-brace-format +msgid "This user has no favorited posts. {0} can't create a timeline." +msgstr "" +"Aquest usuari no té tuits favorits. {0} no pot crear la seva línia " +"temporal." + +# | msgid "This user has no followers. {0} can't create a timeline." +#: wxUI/dialogs/mastodon/dialogs.py:48 +#, fuzzy, python-brace-format +msgid "This user has no followers yet. {0} can't create a timeline." +msgstr "Aquest usuari no té seguidors, {0} no pot crear la línia temporal." + +# | msgid "This user has no followers. {0} can't create a timeline." +#: wxUI/dialogs/mastodon/dialogs.py:53 +#, fuzzy, python-brace-format +msgid "This user is not following anyone. {0} can't create a timeline." +msgstr "Aquest usuari no té seguidors, {0} no pot crear la línia temporal." + +#: wxUI/dialogs/mastodon/dialogs.py:60 +#, python-brace-format +msgid "The focused item has no user in it. {} ca't open a user profile" +msgstr "" + +# | msgid "R&emove from list" +#: wxUI/dialogs/mastodon/menus.py:13 wxUI/dialogs/mastodon/menus.py:41 +#, fuzzy +msgid "R&emove from favorites" +msgstr "&Eliminar de llista" + +#: wxUI/dialogs/mastodon/menus.py:15 wxUI/dialogs/mastodon/menus.py:43 +msgid "&Open URL" +msgstr "&Obrir URL..." + +# | msgid "Search on twitter" +#: wxUI/dialogs/mastodon/menus.py:17 wxUI/dialogs/mastodon/menus.py:47 +#, fuzzy +msgid "&Open in instance" +msgstr "Cerca a Twitter" + +#: wxUI/dialogs/mastodon/menus.py:19 wxUI/dialogs/mastodon/menus.py:45 +msgid "&Play audio" +msgstr "&Reproduir audio" + +#: wxUI/dialogs/mastodon/menus.py:23 wxUI/dialogs/mastodon/menus.py:51 +msgid "&Copy to clipboard" +msgstr "&Copiar al portapapers" + +#: wxUI/dialogs/mastodon/menus.py:27 wxUI/dialogs/mastodon/menus.py:55 +msgid "&User actions..." +msgstr "&accions d'usuari..." + +#: wxUI/dialogs/mastodon/menus.py:53 +msgid "&Dismiss" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:20 +#: wxUI/dialogs/mastodon/postDialogs.py:38 +msgid "Attachments" +msgstr "Adjunts" + +#: wxUI/dialogs/mastodon/postDialogs.py:24 +msgid "File" +msgstr "Fitxer" + +#: wxUI/dialogs/mastodon/postDialogs.py:25 +msgid "Type" +msgstr "Tipus" + +#: wxUI/dialogs/mastodon/postDialogs.py:26 +#: wxUI/dialogs/mastodon/postDialogs.py:141 +msgid "Description" +msgstr "Descripció" + +# | msgid "Remove client" +#: wxUI/dialogs/mastodon/postDialogs.py:28 +#, fuzzy +msgid "Remove Attachment" +msgstr "Esborrar client" + +#: wxUI/dialogs/mastodon/postDialogs.py:33 +msgid "Post in the thread" +msgstr "" + +# | msgid "Remove from list" +#: wxUI/dialogs/mastodon/postDialogs.py:40 +#, fuzzy +msgid "Remove post" +msgstr "Eliminar de llista" + +#: wxUI/dialogs/mastodon/postDialogs.py:47 +msgid "&Visibility" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:54 +#, fuzzy +msgid "Language" +msgstr "Idioma" + +#: wxUI/dialogs/mastodon/postDialogs.py:58 +msgid "A&dd" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:59 +msgid "S&ensitive content" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:64 +msgid "Content warning" +msgstr "" + +# | msgid "Add to list" +#: wxUI/dialogs/mastodon/postDialogs.py:71 +#, fuzzy +msgid "Add p&ost" +msgstr "Afegir a llista" + +#: wxUI/dialogs/mastodon/postDialogs.py:75 +msgid "Auto&complete users" +msgstr "&Autocompletar usuaris" + +# | msgid "Check &spelling..." +#: wxUI/dialogs/mastodon/postDialogs.py:77 +#, fuzzy +msgid "Check &spelling" +msgstr "Comprova &l'ortografia." + +#: wxUI/dialogs/mastodon/postDialogs.py:79 +#, fuzzy +msgid "&Translate" +msgstr "Traduït" + +# | msgid "Tweet - %i characters " +#: wxUI/dialogs/mastodon/postDialogs.py:106 +#, fuzzy, python-brace-format +msgid "Post - {} characters" +msgstr "Tuit - %i caràcters" + +#: wxUI/dialogs/mastodon/postDialogs.py:130 +msgid "Image" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:132 +#, fuzzy +msgid "Video" +msgstr "Amaga" + +# | msgid "&Audio" +#: wxUI/dialogs/mastodon/postDialogs.py:134 +#, fuzzy +msgid "Audio" +msgstr "&Audio" + +#: wxUI/dialogs/mastodon/postDialogs.py:136 +msgid "Poll" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:141 +msgid "please provide a description" +msgstr "Si et plau, proveeix d'una descripció" + +#: wxUI/dialogs/mastodon/postDialogs.py:148 +msgid "Select the picture to be uploaded" +msgstr "Selecciona la fotografia per carregar." + +#: wxUI/dialogs/mastodon/postDialogs.py:148 +msgid "Image files (*.png, *.jpg, *.gif)|*.png; *.jpg; *.gif" +msgstr "Fitxers d'imatge (*.png, *.jpg, *.gif)|*.png; *.jpg; *.gif" + +#: wxUI/dialogs/mastodon/postDialogs.py:155 +#, fuzzy +msgid "Select the video to be uploaded" +msgstr "Selecciona la fotografia per carregar." + +# | msgid "Audio Files (*.mp3, *.ogg, *.wav)|*.mp3; *.ogg; *.wav" +#: wxUI/dialogs/mastodon/postDialogs.py:155 +#, fuzzy +msgid "Video files (*.mp4, *.mov, *.m4v, *.webm)| *.mp4; *.m4v; *.mov; *.webm" +msgstr "Arxius d'audio (*.mp3, *.ogg, *.wav)|*.mp3; *.ogg; *.wav" + +#: wxUI/dialogs/mastodon/postDialogs.py:162 +msgid "Select the audio file to be uploaded" +msgstr "Selecciona el fitxer d'audio que vols carregar" + +#: wxUI/dialogs/mastodon/postDialogs.py:162 +msgid "" +"Audio files (*.mp3, *.ogg, *.wav, *.flac, *.opus, *.aac, *.m4a, " +"*.3gp)|*.mp3; *.ogg; *.wav; *.flac; *.opus; *.aac; *.m4a; *.3gp" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:169 +msgid "" +"It is not possible to add more attachments. Please take into account that" +" You can add only a maximum of 4 images, or one audio, video or poll per" +" post. Please remove other attachments before continuing." +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:169 +#, fuzzy +msgid "Error adding attachment" +msgstr "Afegir adjunts" + +#: wxUI/dialogs/mastodon/postDialogs.py:172 +msgid "" +"You can add a poll or media files. In order to add your poll, please " +"remove other attachments first." +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:172 +#, fuzzy +msgid "Error adding poll" +msgstr "Afegir adjunts" + +# | msgid "Tweet - %i characters " +#: wxUI/dialogs/mastodon/postDialogs.py:177 +#, fuzzy, python-format +msgid "Post - %i characters " +msgstr "Tuit - %i caràcters" + +#: wxUI/dialogs/mastodon/postDialogs.py:200 +msgid "Image description" +msgstr "Descripció de la imatge" + +# | msgid "Private" +#: wxUI/dialogs/mastodon/postDialogs.py:210 +#, fuzzy +msgid "Privacy" +msgstr "Privat" + +#: wxUI/dialogs/mastodon/postDialogs.py:214 +#, fuzzy +msgid "Source" +msgstr "Font: " + +#: wxUI/dialogs/mastodon/postDialogs.py:222 +msgid "Boosts" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:224 +msgid "View users who boosted this post" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:231 +msgid "View users who favorited this post" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:239 +#, fuzzy +msgid "Copy link to clipboard" +msgstr "Copiar al portapapers" + +#: wxUI/dialogs/mastodon/postDialogs.py:241 +#: wxUI/dialogs/mastodon/postDialogs.py:280 +msgid "Check &spelling..." +msgstr "Comprova &l'ortografia." + +#: wxUI/dialogs/mastodon/postDialogs.py:242 +#: wxUI/dialogs/mastodon/postDialogs.py:281 +msgid "&Translate..." +msgstr "&Traduir..." + +#: wxUI/dialogs/mastodon/postDialogs.py:243 +#: wxUI/dialogs/mastodon/postDialogs.py:282 +msgid "C&lose" +msgstr "&Tancar" + +#: wxUI/dialogs/mastodon/postDialogs.py:294 +msgid "Add a poll" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:298 +msgid "Participation time" +msgstr "" + +# | msgid "%d minutes, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "5 minutes" +msgstr "%d minuts, " + +# | msgid "%d minutes, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "30 minutes" +msgstr "%d minuts, " + +# | msgid "%d hour, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "1 hour" +msgstr "%d hora, " + +# | msgid "%d hours, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "6 hours" +msgstr "%d hores, " + +# | msgid "%d day, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "1 day" +msgstr "%d dia, " + +# | msgid "%d days, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "2 days" +msgstr "%d dies, " + +# | msgid "%d days, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "3 days" +msgstr "%d dies, " + +# | msgid "%d days, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "4 days" +msgstr "%d dies, " + +# | msgid "%d days, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "5 days" +msgstr "%d dies, " + +# | msgid "%d days, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "6 days" +msgstr "%d dies, " + +# | msgid "%d days, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "7 days" +msgstr "%d dies, " + +#: wxUI/dialogs/mastodon/postDialogs.py:304 +msgid "Choices" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:308 +msgid "Option 1" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:315 +msgid "Option 2" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:322 +msgid "Option 3" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:329 +msgid "Option 4" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:334 +msgid "Allow multiple choices per user" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:337 +msgid "Hide votes count until the poll expires" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:363 +msgid "Please make sure you have provided at least two options for the poll." +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:363 +#, fuzzy +msgid "Not enough information" +msgstr "Informació" + +#: wxUI/dialogs/mastodon/postDialogs.py:368 +msgid "Vote in this poll" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:371 +#, fuzzy +msgid "Options" +msgstr "Acció" + +# | msgid "&Search" +#: wxUI/dialogs/mastodon/search.py:9 +#, fuzzy +msgid "Search" +msgstr "&Cerca" + +#: wxUI/dialogs/mastodon/search.py:18 +msgid "Posts" +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:22 +#, fuzzy +msgid "Select user" +msgstr "Selecciona adreça" + +#: wxUI/dialogs/mastodon/showUserProfile.py:73 +#, fuzzy, python-brace-format +msgid "{}'s Profile" +msgstr "&Actualitzar perfil" + +#: wxUI/dialogs/mastodon/showUserProfile.py:79 +#, fuzzy +msgid "&Name: " +msgstr "Nom." + +#: wxUI/dialogs/mastodon/showUserProfile.py:84 +#, fuzzy +msgid "&URL: " +msgstr "Usuari: " + +#: wxUI/dialogs/mastodon/showUserProfile.py:89 +msgid "&Bio: " +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:94 +msgid "&Joined at: " +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:99 +#, fuzzy +msgid "&Actions" +msgstr "Acció" + +#: wxUI/dialogs/mastodon/showUserProfile.py:104 +#, fuzzy +msgid "Header: " +msgstr "Amaga" + +#: wxUI/dialogs/mastodon/showUserProfile.py:112 +msgid "Avatar: " +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:122 +#, python-brace-format +msgid "Field &{} - Label: " +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:129 +#, fuzzy +msgid "Content: " +msgstr "Context" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:43 +#: wxUI/dialogs/mastodon/filters/create_filter.py:65 +#: wxUI/dialogs/mastodon/showUserProfile.py:135 +msgid "Yes" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:43 +#: wxUI/dialogs/mastodon/filters/create_filter.py:65 +#: wxUI/dialogs/mastodon/filters/create_filter.py:69 +#: wxUI/dialogs/mastodon/showUserProfile.py:135 +msgid "No" +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:137 +#, fuzzy +msgid "&Private account: " +msgstr "Esborrar compte." + +#: wxUI/dialogs/mastodon/showUserProfile.py:144 +#, fuzzy +msgid "&Bot account: " +msgstr "Compte" + +#: wxUI/dialogs/mastodon/showUserProfile.py:151 +#, fuzzy +msgid "&Discoverable account: " +msgstr "Esborrar compte." + +#: wxUI/dialogs/mastodon/showUserProfile.py:157 +#, python-brace-format +msgid "{} p&osts. Click to open posts timeline" +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:162 +#, python-brace-format +msgid "{} &following. Click to open Following timeline" +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:166 +#, python-brace-format +msgid "{} fo&llowers. Click to open followers timeline" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:43 +msgid "&Display Name" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:50 +#, fuzzy +msgid "&Bio" +msgstr "&Bloquejar" + +#: wxUI/dialogs/mastodon/updateProfile.py:58 +#, fuzzy +msgid "Header" +msgstr "Amaga" + +#: wxUI/dialogs/mastodon/updateProfile.py:71 +#, fuzzy +msgid "Change &header" +msgstr "Amaga" + +#: wxUI/dialogs/mastodon/updateProfile.py:79 +msgid "Avatar" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:92 +msgid "Change &avatar" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:102 +#, python-brace-format +msgid "Field &{}: Label" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:110 +#, fuzzy +msgid "Content" +msgstr "Context" + +#: wxUI/dialogs/mastodon/updateProfile.py:120 +#, fuzzy +msgid "&Private account" +msgstr "Esborrar compte." + +#: wxUI/dialogs/mastodon/updateProfile.py:122 +#, fuzzy +msgid "&Bot account" +msgstr "Compte" + +#: wxUI/dialogs/mastodon/updateProfile.py:124 +#, fuzzy +msgid "&Discoverable account" +msgstr "Esborrar compte." + +#: wxUI/dialogs/mastodon/updateProfile.py:167 +msgid "Select header image - max 2MB" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:172 +#: wxUI/dialogs/mastodon/updateProfile.py:194 +msgid "The selected file is larger than 2MB. Do you want to select another file?" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:173 +#: wxUI/dialogs/mastodon/updateProfile.py:195 +msgid "File more than 2MB" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:189 +msgid "Select avatar image - max 2MB" +msgstr "" + +#: wxUI/dialogs/mastodon/userActions.py:19 +msgid "&Follow" +msgstr "&Seguir" + +#: wxUI/dialogs/mastodon/userActions.py:20 +msgid "U&nfollow" +msgstr "&Deixar de seguir" + +#: wxUI/dialogs/mastodon/userActions.py:22 +msgid "Unmu&te" +msgstr "&Dessilenciar" + +#: wxUI/dialogs/mastodon/userActions.py:23 +msgid "&Block" +msgstr "&Bloquejar" + +#: wxUI/dialogs/mastodon/userActions.py:24 +msgid "Unbl&ock" +msgstr "&Desbloquejar" + +#: wxUI/dialogs/mastodon/userTimeline.py:9 +#, python-format +msgid "Timeline for %s" +msgstr "Línia temporal de %s" + +#: wxUI/dialogs/mastodon/userTimeline.py:19 +msgid "&Posts" +msgstr "" + +#: wxUI/dialogs/mastodon/userTimeline.py:20 +msgid "&Followers" +msgstr "&Seguidors" + +#: wxUI/dialogs/mastodon/userTimeline.py:21 +#, fuzzy +msgid "Fo&llowing" +msgstr "&Deixar de seguir" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:12 +#, fuzzy +msgid "Keyword" +msgstr "Tecla" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:13 +#: wxUI/dialogs/mastodon/filters/create_filter.py:24 +msgid "Whole word" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:19 +msgid "Keyword:" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:25 +#: wxUI/dialogs/mastodon/filters/manage_filters.py:22 +#, fuzzy +msgid "Add" +msgstr "Adreça" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:34 +msgid "Palabras clave a filtrar:" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:74 +#, fuzzy +msgid "New filter" +msgstr "&gestionar filtres" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:78 +#, fuzzy +msgid "Home timeline" +msgstr "Línies temporals" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:79 +msgid "Public statuses" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:81 +#, fuzzy +msgid "Threads" +msgstr "Llest." + +#: wxUI/dialogs/mastodon/filters/create_filter.py:82 +#, fuzzy +msgid "Profiles" +msgstr "&Actualitzar perfil" + +# | msgid "Delete" +#: wxUI/dialogs/mastodon/filters/create_filter.py:86 +#, fuzzy +msgid "Hide posts" +msgstr "Eliminar" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:87 +msgid "Set a content warning to posts" +msgstr "" + +# | msgid "%d hours, " +#: wxUI/dialogs/mastodon/filters/create_filter.py:91 +#, fuzzy +msgid "Hours" +msgstr "%d hores, " + +# | msgid "%d days, " +#: wxUI/dialogs/mastodon/filters/create_filter.py:92 +#, fuzzy +msgid "Days" +msgstr "%d dies, " + +#: wxUI/dialogs/mastodon/filters/create_filter.py:93 +msgid "Weeks" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:94 +msgid "months" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:97 +#, fuzzy +msgid "Title:" +msgstr "Fitxer" + +# | msgid "Reply to {arg0}" +#: wxUI/dialogs/mastodon/filters/create_filter.py:104 +#, fuzzy +msgid "Apply to:" +msgstr "Respondre a {arg0}" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:114 +#, fuzzy +msgid "Action:" +msgstr "Acció" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:122 +msgid "Expires in:" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/manage_filters.py:10 +#, fuzzy +msgid "Filters" +msgstr "Fitxer" + +#: wxUI/dialogs/mastodon/filters/manage_filters.py:15 +#, fuzzy +msgid "Title" +msgstr "Fitxer" + +#: wxUI/dialogs/mastodon/filters/manage_filters.py:16 +msgid "Keywords" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/manage_filters.py:17 +#, fuzzy +msgid "Contexts" +msgstr "Context" + +#: wxUI/dialogs/mastodon/filters/manage_filters.py:19 +#, fuzzy +msgid "Expires" +msgstr "Extres." + +#~ msgid "There are no results for the coordinates in this tweet" +#~ msgstr "No hi ha resultats per a les coordenades d'aquest tuit." + +#~ msgid "This list is already opened" +#~ msgstr "Aquesta llista ja està oberta." + +# | msgid "Timeline for {}" +#~ msgid "Timelines for {}" +#~ msgstr "Línia temporal per a {}" + +#~ msgid "{account_name} (Mastodon)" +#~ msgstr "" + +#~ msgid "URL of mastodon instance:" +#~ msgstr "" + +# | msgid "View &address" +#~ msgid "Email address:" +#~ msgstr "Veure &Adreça" + +# | msgid "Password: " +#~ msgid "Password:" +#~ msgstr "Contrasenya: " + +# | msgid "Item" +#~ msgid "&Item" +#~ msgstr "Element" + +#~ msgid "Visibility" +#~ msgstr "" + +#~ msgid "Sensitive content" +#~ msgstr "" + +#~ msgid "Allow multiple votes per user" +#~ msgstr "" + +#~ msgid "{username} has mentionned you: {status}" +#~ msgstr "" + +#~ msgid "has mentionned you: {status}" +#~ msgstr "" + +#~ msgid "Likes for {}" +#~ msgstr "Tuits que agraden a {}" + +#~ msgid "Trending topics for %s" +#~ msgstr "Tendències de %s" + +#~ msgid "Select user" +#~ msgstr "Selecciona l'usuari" + +#~ msgid "Sent direct messages" +#~ msgstr "Missatges directes enviats" + +#~ msgid "Sent tweets" +#~ msgstr "Tuits enviats" + +#~ msgid "Likes" +#~ msgstr "Tuits que m'agraden." + +#~ msgid "Friends" +#~ msgstr "Amics" + +#~ msgid "{username}'s likes" +#~ msgstr "likes de l'{username}" + +#~ msgid "{username}'s friends" +#~ msgstr "Amics d'{username}" + +#~ msgid "Tweet" +#~ msgstr "Tuit" + +#~ msgid "Write the tweet here" +#~ msgstr "Escriu el tuit aquí" + +#~ msgid "New tweet in {0}" +#~ msgstr "Tuit nou a {0}" + +#~ msgid "{0} new tweets in {1}." +#~ msgstr "{0} Nou twits a {1}" + +#~ msgid "Reply to {arg0}" +#~ msgstr "Respondre a {arg0}" + +#~ msgid "Reply to %s" +#~ msgstr "Respondre a %s" + +#~ msgid "Direct message to %s" +#~ msgstr "Missatge directe a %s" + +#~ msgid "New direct message" +#~ msgstr "Nou missatge directe" + +#~ msgid "This action is not supported on protected accounts." +#~ msgstr "Aquesta acció no es suportada al bufer" + +#~ msgid "Quote" +#~ msgstr "citar" + +#~ msgid "Add your comment to the tweet" +#~ msgstr "Afegeix el teu comentari al tuit" + +#~ msgid "User details" +#~ msgstr "Detalls de l'usuari" + +#~ msgid "MMM D, YYYY. H:m" +#~ msgstr "D, MMM, YYYY. H:m" + +#~ msgid "There are no coordinates in this tweet" +#~ msgstr "En aquest tuit no hi ha coordenades." + +#~ msgid "Error decoding coordinates. Try again later." +#~ msgstr "Error decodificant les coordenades. Si et plau, prova-ho més tard." + +#~ msgid "Invalid buffer" +#~ msgstr "Bufer invàlid." + +#~ msgid "{0} new direct messages." +#~ msgstr "{0} Missatges directes Nous." + +#~ msgid "This action is not supported in the buffer yet." +#~ msgstr "Aquesta acció no es suportada al bufer" + +#~ msgid "" +#~ "Getting more items cannot be done " +#~ "in this buffer. Use the direct " +#~ "messages buffer instead." +#~ msgstr "" +#~ "No s'hi han pogut obtener un o " +#~ "més elements en aquest bufer. Si " +#~ "us plau, utilitzeu el bufer de " +#~ "missatges directes enviats en el seu " +#~ "lloc." + +#~ msgid "Mention" +#~ msgstr "Menció" + +#~ msgid "Mention to %s" +#~ msgstr "Mencionar a %s" + +#~ msgid "{0} new followers." +#~ msgstr "{0} seguidors Nous." + +#~ msgid "This action is not supported in the buffer, yet." +#~ msgstr "Aquesta acció no es suportada al bufer." + +#~ msgid "&Retweet" +#~ msgstr "&Retuit" + +#~ msgid "&Like" +#~ msgstr "&m'agrada" + +#~ msgid "&Unlike" +#~ msgstr "&Ja no m'agrada" + +#~ msgid "View &address" +#~ msgstr "Veure &Adreça" + +#~ msgid "&View lists" +#~ msgstr "&Veure llistes" + +# | msgid "V&iew likes" +#~ msgid "View likes" +#~ msgstr "&Veure tuits que agraden" + +#~ msgid "Likes timelines" +#~ msgstr "Línies temporals de tuits que m'agraden" + +#~ msgid "Followers timelines" +#~ msgstr "Línies temporals de seguidors." + +#~ msgid "Following timelines" +#~ msgstr "Línies temporals de seguidors." + +#~ msgid "Lists" +#~ msgstr "Llistes" + +#~ msgid "List for {}" +#~ msgstr "Llista per {}" + +#~ msgid "Filters cannot be applied on this buffer" +#~ msgstr "No es poden aplicar filtres a aquest bufer" + +#~ msgid "View item" +#~ msgstr "&Veure Element" + +#~ msgid "Ask" +#~ msgstr "Pregunta" + +#~ msgid "Retweet without comments" +#~ msgstr "Retuiteja sense comentaris" + +#~ msgid "Retweet with comments" +#~ msgstr "Retuiteja amb comentaris" + +#~ msgid "Edit template for tweets. Current template: {}" +#~ msgstr "" + +#~ msgid "Edit template for direct messages. Current template: {}" +#~ msgstr "" + +#~ msgid "Edit template for sent direct messages. Current template: {}" +#~ msgstr "" + +#~ msgid "User has been suspended" +#~ msgstr "L'usuari ha estat suspès" + +#~ msgid "Information for %s" +#~ msgstr "informació per a %s" + +#~ msgid "Discarded" +#~ msgstr "Descartat" + +#~ msgid "Username: @%s\n" +#~ msgstr "Nom d'usuari: @%s\n" + +#~ msgid "Name: %s\n" +#~ msgstr "Nom: %s\n" + +#~ msgid "Location: %s\n" +#~ msgstr "Localització: %s\n" + +#~ msgid "URL: %s\n" +#~ msgstr "URL: %s\n" + +#~ msgid "Bio: %s\n" +#~ msgstr "Descripció: %s\n" + +#~ msgid "Yes" +#~ msgstr "Sí" + +#~ msgid "No" +#~ msgstr "No" + +#~ msgid "Protected: %s\n" +#~ msgstr "Protegit: %s\n" + +#~ msgid "Relationship: " +#~ msgstr "" + +#~ msgid "You follow {0}. " +#~ msgstr "Ja segueixes a {0}. " + +#~ msgid "{0} is following you." +#~ msgstr "{0} et segueix" + +#~ msgid "" +#~ "Followers: %s\n" +#~ " Friends: %s\n" +#~ msgstr "" +#~ "Seguidors: %s\n" +#~ " Amics: %s\n" + +#~ msgid "Verified: %s\n" +#~ msgstr "Verificat: %s\n" + +#~ msgid "Tweets: %s\n" +#~ msgstr "Tuits: %s\n" + +#~ msgid "Likes: %s" +#~ msgstr "m'agraden" + +#~ msgid "You can't ignore direct messages" +#~ msgstr "No pots ignorar els missatges directes." + +#~ msgid "Attaching..." +#~ msgstr "Adjuntant..." + +#~ msgid "Pause" +#~ msgstr "Pausa" + +#~ msgid "&Resume" +#~ msgstr "&Continúa" + +#~ msgid "Resume" +#~ msgstr "Continúa" + +#~ msgid "&Pause" +#~ msgstr "&Pausa" + +#~ msgid "&Stop" +#~ msgstr "&Aturar" + +#~ msgid "Recording" +#~ msgstr "Grabant" + +#~ msgid "Stopped" +#~ msgstr "Aturat" + +#~ msgid "&Record" +#~ msgstr "&Grabar" + +#~ msgid "&Play" +#~ msgstr "&Reproduir" + +#~ msgid "Recoding audio..." +#~ msgstr "Recodificant audio..." + +#~ msgid "Error in file upload: {0}" +#~ msgstr "Error al carregar el fitxer: {0}" + +#~ msgid "Transferred" +#~ msgstr "Transferit" + +#~ msgid "Total file size" +#~ msgstr "Mida total del fitxer" + +#~ msgid "Transfer rate" +#~ msgstr "Velocitat de transferencia" + +#~ msgid "Time left" +#~ msgstr "Temps restant" + +#~ msgid "Attach audio" +#~ msgstr "Adjuntar audio" + +#~ msgid "&Add an existing file" +#~ msgstr "&Afegir un fitxer existent" + +#~ msgid "&Discard" +#~ msgstr "&Descartar" + +#~ msgid "Upload to" +#~ msgstr "carregar a:" + +#~ msgid "Attach" +#~ msgstr "Adjuntar" + +#~ msgid "&Cancel" +#~ msgstr "&Cancel·lar" + +#~ msgid "Audio Files (*.mp3, *.ogg, *.wav)|*.mp3; *.ogg; *.wav" +#~ msgstr "Arxius d'audio (*.mp3, *.ogg, *.wav)|*.mp3; *.ogg; *.wav" + +#~ msgid "You have to start writing" +#~ msgstr "Has de començar a escriure." + +#~ msgid "There are no results in your users database" +#~ msgstr "No hi ha resultats a la teva base de dades d'usuaris." + +#~ msgid "Autocompletion only works for users." +#~ msgstr "l'autocompletat només funciona per a usuaris." + +#~ msgid "" +#~ "Updating database... You can close this" +#~ " window now. A message will tell " +#~ "you when the process finishes." +#~ msgstr "" +#~ "Actualitzant la base de dades... Pots" +#~ " tancar aquesta finestra, un nissatge " +#~ "t'avisarà quan el procés hagi acabat." + +#~ msgid "Manage Autocompletion database" +#~ msgstr "Gestionar la base de dades d'autocompletar." + +#~ msgid "Editing {0} users database" +#~ msgstr "Editant la base de dades d'usuaris de {0}." + +#~ msgid "Username" +#~ msgstr "Nom d'usuari." + +#~ msgid "Add user" +#~ msgstr "Afegir usuari." + +#~ msgid "Remove user" +#~ msgstr "Esborrar usuari." + +#~ msgid "Twitter username" +#~ msgstr "Nom d'usuari de Twitter." + +#~ msgid "Add user to database" +#~ msgstr "Afegir usuari a la base de dades." + +#~ msgid "The user does not exist" +#~ msgstr "L'usuari no existeix" + +#~ msgid "Error!" +#~ msgstr "Error!" + +#~ msgid "Autocomplete users' settings" +#~ msgstr "Configuració d'autocompletar usuaris" + +#~ msgid "Add followers to database" +#~ msgstr "" + +#~ msgid "Add friends to database" +#~ msgstr "Afegir usuari a la base de dades." + +#~ msgid "Updating autocompletion database" +#~ msgstr "Gestionar la base de dades d'autocompletar." + +#~ msgid "" +#~ "This process will retrieve the users " +#~ "you selected from Twitter, and add " +#~ "them to the user autocomplete database." +#~ " Please note that if there are " +#~ "many users or you have tried to" +#~ " perform this action less than 15 " +#~ "minutes ago, TWBlue may reach a " +#~ "limit in Twitter API calls when " +#~ "trying to load the users into the" +#~ " database. If this happens, we will" +#~ " show you an error, in which " +#~ "case you will have to try this " +#~ "process again in a few minutes. If" +#~ " this process ends with no error, " +#~ "you will be redirected back to the" +#~ " account settings dialog. Do you want" +#~ " to continue?" +#~ msgstr "" + +#~ msgid "TWBlue has imported {} users successfully." +#~ msgstr "" + +#~ msgid "Done" +#~ msgstr "Fet" + +#~ msgid "Error adding users from Twitter. Please try again in about 15 minutes." +#~ msgstr "" + +#~ msgid "New tweet" +#~ msgstr "Tuit nou" + +#~ msgid "Retweet" +#~ msgstr "Retuit" + +#~ msgid "Like a tweet" +#~ msgstr "t'agrada el tuit." + +#~ msgid "Like/unlike a tweet" +#~ msgstr "t'agrada/ja no t'agrada el twit" + +#~ msgid "Unlike a tweet" +#~ msgstr "Ja no t'agrada el tuit." + +#~ msgid "See user details" +#~ msgstr "Veure detalls de l'usuari" + +#~ msgid "Show tweet" +#~ msgstr "Mostra el tuit" + +#~ msgid "Interact with the currently focused tweet." +#~ msgstr "Interactua amb el tuit seleccionat." + +#~ msgid "View in Twitter" +#~ msgstr "Veure a Twitter" + +#~ msgid "Edit profile" +#~ msgstr "Editar perfil" + +#~ msgid "Delete a tweet or direct message" +#~ msgstr "Elimina un tuit o missatge directe." + +#~ msgid "Add to list" +#~ msgstr "Afegir a llista" + +#~ msgid "Remove from list" +#~ msgstr "Eliminar de llista" + +#~ msgid "Search on twitter" +#~ msgstr "Cerca a Twitter" + +#~ msgid "Show lists for a specified user" +#~ msgstr "Veure llistes de l'usuari especificat" + +#~ msgid "Get geolocation" +#~ msgstr "Obtenir la geolocalització" + +#~ msgid "Display the tweet's geolocation in a dialog" +#~ msgstr "Mostra en un diàleg la localització geográfica del tuit." + +#~ msgid "Create a trending topics buffer" +#~ msgstr "Crear un buffer de tendències" + +#~ msgid "" +#~ "Opens the list manager, which allows " +#~ "you to create, edit, delete and " +#~ "open lists in buffers." +#~ msgstr "" +#~ "Obre el gestor de llistes, que et" +#~ " permetrà crear, editar, eliminar i " +#~ "obrir llistes en buffers." + +#~ msgid "Opens the list manager" +#~ msgstr "obre el gestor de llistes" + +#~ msgid "{account_name} (Twitter)" +#~ msgstr "" + +# | msgid "View in Twitter" +#~ msgid "Twitter" +#~ msgstr "Veure a Twitter" + +#~ msgid "" +#~ "The request to authorize your Twitter" +#~ " account will be opened in your " +#~ "browser. You only need to do this" +#~ " once. Would you like to continue?" +#~ msgstr "" +#~ "La sol·licitud per autoritzar el teu " +#~ "compte de twitter sobrirà en el " +#~ "teu navegador. Només has de fer " +#~ "això una vegada. Vols continuar?" + +#~ msgid "" +#~ "TWBlue is unable to authenticate the " +#~ "account for {} in Twitter. It " +#~ "might be due to an invalid or " +#~ "expired token, revoqued access to the" +#~ " application, or after an account " +#~ "reactivation. Please remove the account " +#~ "manually from your Twitter sessions in" +#~ " order to stop seeing this message." +#~ msgstr "" + +#~ msgid "Authentication error for session {}" +#~ msgstr "" + +#~ msgid "Dm to %s " +#~ msgstr "dm a %s" + +#~ msgid "{0}. Quoted tweet from @{1}: {2}" +#~ msgstr "{0}. Tuit citat de @{1}: {2}" + +#~ msgid "Unavailable" +#~ msgstr "No disponible" + +#~ msgid "" +#~ "%s (@%s). %s followers, %s friends, " +#~ "%s tweets. Last tweeted %s. Joined " +#~ "Twitter %s" +#~ msgstr "" +#~ "%s (@%s). %s seguidors, %s amics, " +#~ "%s tuits. Últim tuit %s. Es va " +#~ "unir a Twitter %s" + +#~ msgid "No description available" +#~ msgstr "No hi ha descripció disponible" + +#~ msgid "private" +#~ msgstr "Privat" + +#~ msgid "public" +#~ msgstr "Públic" + +#~ msgid "Enter your PIN code here" +#~ msgstr "Introdueix el PIN aqui" + +#~ msgid "Authorising account..." +#~ msgstr "Autoritzant el compte..." + +#~ msgid "" +#~ "We could not authorice your Twitter " +#~ "account to be used in TWBlue. This" +#~ " might be caused due to an " +#~ "incorrect verification code. Please try " +#~ "to add the session again." +#~ msgstr "" + +#~ msgid "%s failed. Reason: %s" +#~ msgstr "%s ha fallat. Raó: %s" + +#~ msgid "Deleted account" +#~ msgstr "Nou compte" + +#~ msgid "$sender_display_name, $text $date" +#~ msgstr "" + +#~ msgid "" +#~ "$display_name (@$screen_name). $followers followers," +#~ " $following following, $tweets tweets. " +#~ "Joined Twitter $created_at." +#~ msgstr "" + +#~ msgid "Image description: {}." +#~ msgstr "Descripció de la imatge" + +#~ msgid "RT @{}: {} Quote from @{}: {}" +#~ msgstr "{0}. Tuit citat de @{1}: {2}" + +# | msgid "{0}. Quoted tweet from @{1}: {2}" +#~ msgid "RT @{}: {}" +#~ msgstr "{0}. Tuit citat de @{1}: {2}" + +# | msgid "{0}. Quoted tweet from @{1}: {2}" +#~ msgid "{} Quote from @{}: {}" +#~ msgstr "{0}. Tuit citat de @{1}: {2}" + +#~ msgid "Sorry, you are not authorised to see this status." +#~ msgstr "Ho sentim, no estas autoritzat per veure aquest estat" + +#~ msgid "Error {0}" +#~ msgstr "Codi d'error {0}" + +#~ msgid "{user_1}, {user_2} and {all_users} more: {text}" +#~ msgstr "" + +#~ msgid "" +#~ "This retweet is over 140 characters. " +#~ "Would you like to post it as " +#~ "a mention to the poster with your" +#~ " comments and a link to the " +#~ "original tweet?" +#~ msgstr "" +#~ "Aquest tuit excedeix els 140 caracters." +#~ " Vols publicar-lo com una menció " +#~ "a l'usuari original amb els teus " +#~ "comentaris i un enllaç al twit " +#~ "original?" + +#~ msgid "Would you like to add a comment to this tweet?" +#~ msgstr "T'agradaria afegirun comentari a aquest tuit?" + +#~ msgid "" +#~ "Do you really want to delete this" +#~ " tweet? It will be deleted from " +#~ "Twitter as well." +#~ msgstr "" +#~ "Estàs segur que vols eliminar aquest" +#~ " tuit? també s'eliminarà de Twitter." + +#~ msgid "Enter the name of the client : " +#~ msgstr "Introdueix el nom del client : " + +#~ msgid "Add client" +#~ msgstr "Afegir client" + +#~ msgid "This user has no tweets, so you can't open a timeline for them." +#~ msgstr "" +#~ "Aquest usuari no té tuits, per " +#~ "tant no pots obrir-ne una línia" +#~ " temporal." + +#~ msgid "" +#~ "This is a protected Twitter user, " +#~ "which means you can't open a " +#~ "timeline using the Streaming API. The" +#~ " user's tweets will not update due" +#~ " to a twitter policy. Do you " +#~ "want to continue?" +#~ msgstr "" +#~ "Aquest usuari està protegit, per tant" +#~ " no es pot obrir la seva línia" +#~ " temporal utilitzant l'API de streaming." +#~ " Els tuits de l'usuari no " +#~ "s'actualitzaran degut a la política de" +#~ " Twitter. Vols continuar?" + +#~ msgid "" +#~ "This is a protected user account, " +#~ "you need to follow this user to" +#~ " view their tweets or likes." +#~ msgstr "" +#~ "El compte d'aquest usuari està protegit," +#~ " necessites seguir-lo per veure els" +#~ " seus tuits o els tuits que li" +#~ " agraden." + +#~ msgid "This user has no tweets. {0} can't create a timeline." +#~ msgstr "Aquest usuari no té tuits. {0} no pot crear la seva línia temporal." + +#~ msgid "This user has no favorited tweets. {0} can't create a timeline." +#~ msgstr "" +#~ "Aquest usuari no té tuits favorits. " +#~ "{0} no pot crear la seva línia " +#~ "temporal." + +#~ msgid "This user has no followers. {0} can't create a timeline." +#~ msgstr "Aquest usuari no té seguidors, {0} no pot crear la línia temporal." + +#~ msgid "This user has no friends. {0} can't create a timeline." +#~ msgstr "Aquest usuari no té amics, {0} no pot crear la línia temporal." + +#~ msgid "Geolocation data: {0}" +#~ msgstr "Dades geográfiques: {0}. " + +#~ msgid "Geo data for this tweet" +#~ msgstr "Dades geogràfiques en aquest tuit." + +#~ msgid "You have been blocked from viewing this content" +#~ msgstr "Vosté ha estat bloquejat per veure aquest contingut." + +#~ msgid "" +#~ "You have been blocked from viewing " +#~ "someone's content. In order to avoid " +#~ "conflicts with the full session, TWBlue" +#~ " will remove the affected timeline." +#~ msgstr "" +#~ "Vostè ha estat bloquejat per veure " +#~ "alguns continguts. A la petició hi " +#~ "ha confictes que afecten completament a" +#~ " la sessió. TWBlue eliminarà el fil" +#~ " temporal afectat." + +#~ msgid "" +#~ "TWBlue cannot load this timeline because" +#~ " the user has been suspended from " +#~ "Twitter." +#~ msgstr "" +#~ "TWBlue no pot carregar aquest time-" +#~ "line ja que l'usuari ha estat " +#~ "suspès de twitter." + +#~ msgid "Do you really want to delete this filter?" +#~ msgstr "Realment vols eliminar aquest filtre?" + +#~ msgid "This filter already exists. Please use a different title" +#~ msgstr "Aquest filtre ja existeix. Si us plau, utilitzeu un altre titol." + +#~ msgid "&Show direct message" +#~ msgstr "&Mostrar missatge directe" + +#~ msgid "&Show event" +#~ msgstr "&Veure esdeveniment." + +#~ msgid "Direct &message" +#~ msgstr "Missatge &directe" + +#~ msgid "&Show user" +#~ msgstr "&Veure usuari." + +#~ msgid "Search topic" +#~ msgstr "Cerca missatge" + +#~ msgid "&Tweet about this trend" +#~ msgstr "Tuit sobre aquesta tendència." + +#~ msgid "&Show item" +#~ msgstr "Mostrar item." + +#~ msgid "Update &profile" +#~ msgstr "&Actualitzar perfil" + +#~ msgid "Event" +#~ msgstr "Esdeveniment" + +#~ msgid "Remove event" +#~ msgstr "Eliminar esdeveniment" + +#~ msgid "Trending topic" +#~ msgstr "Trending topic" + +#~ msgid "Tweet about this trend" +#~ msgstr "Tuit sobre aquesta tendència" + +#~ msgid "" +#~ "Scan account and add friends and " +#~ "followers to the user autocompletion " +#~ "database" +#~ msgstr "" + +#~ msgid "" +#~ "Inverted buffers: The newest tweets will" +#~ " be shown at the beginning while " +#~ "the oldest at the end" +#~ msgstr "" +#~ "Buffers invertits: els nous tuits es " +#~ "mostraràn al inici de les llistes " +#~ "y els antics al final" + +#~ msgid "Retweet mode" +#~ msgstr "Mode de Retuit" + +#~ msgid "" +#~ "Load cache for tweets in memory " +#~ "(much faster in big datasets but " +#~ "requires more RAM)" +#~ msgstr "" + +#~ msgid "Ignored clients" +#~ msgstr "Clients ignorats" + +#~ msgid "Remove client" +#~ msgstr "Esborrar client" + +#~ msgid "Indicate audio tweets with sound" +#~ msgstr "Indica un twit d'audio mitjançant un só." + +#~ msgid "Indicate geotweets with sound" +#~ msgstr "Indica un GeoTwit amb un só." + +#~ msgid "Indicate tweets containing images with sound" +#~ msgstr "Indica els twits que continguin imatges amb un só." + +#~ msgid "API Key for SndUp" +#~ msgstr "Clau API per SndUp." + +#~ msgid "Create a filter for this buffer" +#~ msgstr "Crear un filtre per aquest bufer" + +#~ msgid "Filter title" +#~ msgstr "Titol del filtre." + +#~ msgid "Filter by word" +#~ msgstr "Filtrar per paraula" + +#~ msgid "Ignore tweets wich contain the following word" +#~ msgstr "Ignorar els twits amb la següent paraula" + +#~ msgid "Ignore tweets without the following word" +#~ msgstr "Ignorar els twits que no contenguin la següent paraula" + +#~ msgid "word" +#~ msgstr "paraula" + +#~ msgid "Allow retweets" +#~ msgstr "Permetre retwits" + +#~ msgid "Allow quoted tweets" +#~ msgstr "Permetre twits citats" + +#~ msgid "Allow replies" +#~ msgstr "Permetre respostes" + +#~ msgid "Use this term as a regular expression" +#~ msgstr "utilizar aquest termini com una expresió regular." + +#~ msgid "Filter by language" +#~ msgstr "filtrar per idioma" + +#~ msgid "Load tweets in the following languages" +#~ msgstr "carregar els twits amb els següents idiomes" + +#~ msgid "Ignore tweets in the following languages" +#~ msgstr "Ignorar els twits amb els següents idiomes" + +#~ msgid "Don't filter by language" +#~ msgstr "No filtrar per idioma" + +#~ msgid "Supported languages" +#~ msgstr "Idiomes soporrtats" + +#~ msgid "Add selected language to filter" +#~ msgstr "Afegir l'idioma seleccionat a filtrar" + +#~ msgid "Selected languages" +#~ msgstr "Idiomes seleccionats" + +#~ msgid "You must define a name for the filter before creating it." +#~ msgstr "" + +#~ msgid "Missing filter name" +#~ msgstr "" + +#~ msgid "Manage filters" +#~ msgstr "Gestionar filtresGestionar compte" + +#~ msgid "Filters" +#~ msgstr "Filtres" + +#~ msgid "Filter" +#~ msgstr "Filtre" + +#~ msgid "Lists manager" +#~ msgstr "Gestor de llistes" + +#~ msgid "List" +#~ msgstr "Llista" + +#~ msgid "Owner" +#~ msgstr "Propietari" + +#~ msgid "Members" +#~ msgstr "Membres" + +#~ msgid "mode" +#~ msgstr "Manera" + +#~ msgid "Create a new list" +#~ msgstr "Crear una nova llista" + +#~ msgid "Open in buffer" +#~ msgstr "Obrir en buffer" + +#~ msgid "Viewing lists for %s" +#~ msgstr "Veient les llistes de %s" + +#~ msgid "Subscribe" +#~ msgstr "suscriures" + +#~ msgid "Unsubscribe" +#~ msgstr "dessuscriures" + +#~ msgid "Name (20 characters maximun)" +#~ msgstr "Nom (màxim vint caràcters)" + +#~ msgid "Mode" +#~ msgstr "Manera" + +#~ msgid "Private" +#~ msgstr "Privat" + +#~ msgid "Editing the list %s" +#~ msgstr "Editant la llista %s" + +#~ msgid "Select a list to add the user" +#~ msgstr "Selecciona una llista per a afegir a l'usuari" + +#~ msgid "Add" +#~ msgstr "Afegir" + +#~ msgid "Select a list to remove the user" +#~ msgstr "Selecciona una llista per esborrar a l'usuari" + +#~ msgid "Do you really want to delete this list?" +#~ msgstr "Realment vols eliminar aquesta llista?" + +#~ msgid "Search on Twitter" +#~ msgstr "Cerca a Twitter" + +#~ msgid "Tweets" +#~ msgstr "Tuits" + +#~ msgid "&Language for results: " +#~ msgstr "&idioma dels resultats: " + +#~ msgid "any" +#~ msgstr "algun" + +#~ msgid "Results &type: " +#~ msgstr "&Tipus de resultats: " + +#~ msgid "Mixed" +#~ msgstr "Barrejat" + +#~ msgid "Recent" +#~ msgstr "Recent" + +#~ msgid "Popular" +#~ msgstr "Popular" + +#~ msgid "Details" +#~ msgstr "Detalls" + +#~ msgid "&Go to URL" +#~ msgstr "&Anar a l'adreça" + +#~ msgid "View trending topics" +#~ msgstr "Veure les noves tendències." + +#~ msgid "Trending topics by" +#~ msgstr "Trending topics per" + +#~ msgid "Country" +#~ msgstr "País" + +#~ msgid "City" +#~ msgstr "Ciutat" + +#~ msgid "&Location" +#~ msgstr "&Localització" + +#~ msgid "Update your profile" +#~ msgstr "Actualitzar el teu perfil" + +#~ msgid "&Name (50 characters maximum)" +#~ msgstr "&Nom (màxim 50 caràcters)" + +#~ msgid "&Website" +#~ msgstr "&Lloc web" + +#~ msgid "&Bio (160 characters maximum)" +#~ msgstr "&Biografia (màxim 160 caràcters)" + +#~ msgid "Upload a &picture" +#~ msgstr "Carregar una &fotografia" + +#~ msgid "Upload a picture" +#~ msgstr "Carregar una fotografia" + +#~ msgid "Discard image" +#~ msgstr "Descartar imatge" + +#~ msgid "&Report as spam" +#~ msgstr "&Reportar com a spam" + +#~ msgid "&Ignore tweets from this client" +#~ msgstr "&Ignorar tuits d'aquest client" + +#~ msgid "&Tweets" +#~ msgstr "&Tuits" + +#~ msgid "&Likes" +#~ msgstr "&Tuits que m'agraden." + +#~ msgid "F&riends" +#~ msgstr "&Amics" + +#~ msgid "Delete attachment" +#~ msgstr "esborrar l'adjunt" + +#~ msgid "Added Tweets" +#~ msgstr "Tuits enviats" + +#~ msgid "Delete tweet" +#~ msgstr "Tuits enviats" + +#~ msgid "A&dd..." +#~ msgstr "" + +#~ msgid "Add t&weet" +#~ msgstr "t'agrada el tuit." + +#~ msgid "&Attach audio..." +#~ msgstr "&Adjuntar audio..." + +#~ msgid "Sen&d" +#~ msgstr "&enviar" + +#~ msgid "Video files (*.mp4)|*.mp4" +#~ msgstr "" + +#~ msgid "" +#~ "It is not possible to add more " +#~ "attachments. Please make sure your tweet" +#~ " complies with Twitter'S attachment rules." +#~ " You can add only one video or" +#~ " GIF in every tweet, and a " +#~ "maximum of 4 photos." +#~ msgstr "" + +#~ msgid "&Mention to all" +#~ msgstr "&Mencionar a tothom" + +#~ msgid "&Recipient" +#~ msgstr "&Destinatari" + +#~ msgid "Tweet - %i characters " +#~ msgstr "Tuit - %i caràcters" + +#~ msgid "Retweets: " +#~ msgstr "Retuit." + +#~ msgid "Likes: " +#~ msgstr "Tuits que m'agraden: " + +#~ msgid "View" +#~ msgstr "veure" + +#~ msgid "Item" +#~ msgstr "Element" + +#~ msgid "&Expand URL" +#~ msgstr "&Expandir adreça" + +#~ msgid "Participation time (in days)" +#~ msgstr "" + +#~ msgid "&Open in Twitter" +#~ msgstr "&Obrir a Twitter" + +#~ msgid "&Show tweet" +#~ msgstr "&Veure tuit" + +#~ msgid "Translated" +#~ msgstr "Traduït" + +#~ msgid "Afrikaans" +#~ msgstr "Africà" + +#~ msgid "Albanian" +#~ msgstr "Albanès" + +#~ msgid "Amharic" +#~ msgstr "Amharic" + +#~ msgid "Arabic" +#~ msgstr "Àrab" + +#~ msgid "Armenian" +#~ msgstr "Armeni" + +#~ msgid "Azerbaijani" +#~ msgstr "Acerbajà" + +#~ msgid "Basque" +#~ msgstr "vasc" + +#~ msgid "Belarusian" +#~ msgstr "Bielorús" + +#~ msgid "Bengali" +#~ msgstr "Bengali" + +#~ msgid "Bihari" +#~ msgstr "Bihari" + +#~ msgid "Bulgarian" +#~ msgstr "Bùlgar" + +#~ msgid "Burmese" +#~ msgstr "Birmà" + +#~ msgid "Catalan" +#~ msgstr "Català" + +#~ msgid "Cherokee" +#~ msgstr "Cheroqui" + +#~ msgid "Chinese" +#~ msgstr "xinès" + +#~ msgid "Chinese_simplified" +#~ msgstr "xinèss simplificat" + +#~ msgid "Chinese_traditional" +#~ msgstr "xinés tradicional" + +#~ msgid "Croatian" +#~ msgstr "Croat" + +#~ msgid "Czech" +#~ msgstr "Txec" + +#~ msgid "Dhivehi" +#~ msgstr "Dhivehi" + +#~ msgid "Esperanto" +#~ msgstr "Esperanto" + +#~ msgid "Estonian" +#~ msgstr "Estonià" + +#~ msgid "Filipino" +#~ msgstr "Filipí" + +#~ msgid "Galician" +#~ msgstr "Gallec" + +#~ msgid "Georgian" +#~ msgstr "Georgià" + +#~ msgid "Greek" +#~ msgstr "Grec" + +#~ msgid "Guarani" +#~ msgstr "Guaraní" + +#~ msgid "Gujarati" +#~ msgstr "Guiaratí" + +#~ msgid "Hebrew" +#~ msgstr "Hebreu" + +#~ msgid "Hindi" +#~ msgstr "Hindi" + +#~ msgid "Icelandic" +#~ msgstr "Islandès" + +#~ msgid "Indonesian" +#~ msgstr "Indonesi" + +#~ msgid "Inuktitut" +#~ msgstr "Inuktitut" + +#~ msgid "Irish" +#~ msgstr "Irlandès" + +#~ msgid "Kannada" +#~ msgstr "Canarès" + +#~ msgid "Kazakh" +#~ msgstr "Kazakh" + +#~ msgid "Khmer" +#~ msgstr "Camboià" + +#~ msgid "Kurdish" +#~ msgstr "Kurd" + +#~ msgid "Kyrgyz" +#~ msgstr "Kirguís" + +#~ msgid "Laothian" +#~ msgstr "Lao" + +#~ msgid "Latvian" +#~ msgstr "Letó" + +#~ msgid "Lithuanian" +#~ msgstr "Lituà" + +#~ msgid "Macedonian" +#~ msgstr "Macedoni" + +#~ msgid "Malay" +#~ msgstr "Malai" + +#~ msgid "Malayalam" +#~ msgstr "Malayalam" + +#~ msgid "Maltese" +#~ msgstr "Maltès" + +#~ msgid "Marathi" +#~ msgstr "Maratí" + +#~ msgid "Mongolian" +#~ msgstr "Mongol" + +#~ msgid "Nepali" +#~ msgstr "Nepalí" + +#~ msgid "Norwegian" +#~ msgstr "Noruec" + +#~ msgid "Oriya" +#~ msgstr "Oriia" + +#~ msgid "Pashto" +#~ msgstr "Pastú" + +#~ msgid "Persian" +#~ msgstr "Persa" + +#~ msgid "Punjabi" +#~ msgstr "Paniabí" + +#~ msgid "Romanian" +#~ msgstr "Romanè" + +#~ msgid "Sanskrit" +#~ msgstr "Sànstrit" + +#~ msgid "Serbian" +#~ msgstr "Serbi" + +#~ msgid "Sindhi" +#~ msgstr "Sindhi" + +#~ msgid "Sinhalese" +#~ msgstr "Cingalès" + +#~ msgid "Slovak" +#~ msgstr "Eslovac" + +#~ msgid "Slovenian" +#~ msgstr "Esloveni" + +#~ msgid "Swahili" +#~ msgstr "Suahili" + +#~ msgid "Swedish" +#~ msgstr "Suec" + +#~ msgid "Tajik" +#~ msgstr "Tajik" + +#~ msgid "Tamil" +#~ msgstr "Tamil" + +#~ msgid "Tagalog" +#~ msgstr "Tagal" + +#~ msgid "Telugu" +#~ msgstr "Telugú" + +#~ msgid "Thai" +#~ msgstr "Tailandès" + +#~ msgid "Tibetan" +#~ msgstr "tibetà" + +#~ msgid "Ukrainian" +#~ msgstr "Ucranià" + +#~ msgid "Urdu" +#~ msgstr "Urdu" + +#~ msgid "Uzbek" +#~ msgstr "Uzbec" + +#~ msgid "Uighur" +#~ msgstr "Uigur" + +#~ msgid "Vietnamese" +#~ msgstr "Vietnamita" + +#~ msgid "Welsh" +#~ msgstr "Galès" + +#~ msgid "Yiddish" +#~ msgstr "Yiddish" + +#~ msgid "" +#~ "TWBlue has detected that you're running" +#~ " windows 10 and has changed the " +#~ "default keymap to the Windows 10 " +#~ "keymap. It means that some keyboard " +#~ "shorcuts could be different. Please " +#~ "check the keystroke editor by pressing" +#~ " Alt+Win+K to see all available " +#~ "keystrokes for this keymap." +#~ msgstr "" +#~ "TWBlue ha detectat que s'està executant" +#~ " Windows 10 i ha cambiat el " +#~ "mapa de tecles per defecte al mapa" +#~ " de tecles Windows 10." + +#~ msgid "Boosts: " +#~ msgstr "" + +#~ msgid "Favorites: " +#~ msgstr "" + +#~ msgid "Date: " +#~ msgstr "Data:" + +#~ msgid "Community for {}" +#~ msgstr "" + +#~ msgid "Run {0} at Windows startup" +#~ msgstr "executar {0} quan Windows inicii" + +#~ msgid "Use Codeofdusk's longtweet handlers (may decrease client performance)" +#~ msgstr "" +#~ "Lectura completa de tuits llargs (Pot" +#~ " disminuir la velocitat del funcionament" +#~ " del client)." + +#~ msgid "Remember state for mention all and long tweet" +#~ msgstr "Recordar l'estat de menció a tots en els twits llargs" + +#~ msgid "Bio: " +#~ msgstr "" + +#~ msgid "Joined at: " +#~ msgstr "" + +#~ msgid "Field {} - Label: " +#~ msgstr "" + +#~ msgid "{} posts. Click to open posts timeline" +#~ msgstr "" + +#~ msgid "{} following. Click to open Following timeline" +#~ msgstr "" + +#~ msgid "{} followers. Click to open followers timeline" +#~ msgstr "" + +#~ msgid "Display Name" +#~ msgstr "" + +#~ msgid "Bio" +#~ msgstr "" + +#~ msgid "Change header" +#~ msgstr "" + +#~ msgid "Change avatar" +#~ msgstr "" + +#~ msgid "Field {}: Label" +#~ msgstr "" + +#~ msgid "Add following to database" +#~ msgstr "" + +#~ msgid "Read long posts in GUI" +#~ msgstr "" + +#~ msgid "LibreTranslate API URL: " +#~ msgstr "" + +#~ msgid "LibreTranslate API Key (optional): " +#~ msgstr "" + +#~ msgid "DeepL API Key: " +#~ msgstr "" + +#~ msgid "" +#~ "Scan account and add followers and " +#~ "following users to the user " +#~ "autocompletion database" +#~ msgstr "" + +#~ msgid "" +#~ "Read preferences from instance (default " +#~ "visibility when publishing and displaying " +#~ "sensitive content)" +#~ msgstr "" + +#~ msgid "Ask confirmation before boosting a post" +#~ msgstr "" + +#~ msgid "hide emojis in usernames" +#~ msgstr "" + +#~ msgid "" +#~ "Load cache for items in memory " +#~ "(much faster in big datasets but " +#~ "requires more RAM)" +#~ msgstr "" + diff --git a/srcantiguo/locales/da/LC_MESSAGES/twblue.mo b/srcantiguo/locales/da/LC_MESSAGES/twblue.mo new file mode 100644 index 00000000..ea87ac07 Binary files /dev/null and b/srcantiguo/locales/da/LC_MESSAGES/twblue.mo differ diff --git a/srcantiguo/locales/da/LC_MESSAGES/twblue.po b/srcantiguo/locales/da/LC_MESSAGES/twblue.po new file mode 100644 index 00000000..e59ea3e0 --- /dev/null +++ b/srcantiguo/locales/da/LC_MESSAGES/twblue.po @@ -0,0 +1,4945 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2019 ORGANIZATION +# FIRST AUTHOR , 2019. +# +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: manuel@manuelcortez.net\n" +"POT-Creation-Date: 2025-04-13 01:18+0000\n" +"PO-Revision-Date: 2022-12-20 22:42+0000\n" +"Last-Translator: Anonymous \n" +"Language: da\n" +"Language-Team: Danish " +"\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.17.0\n" + +#: languageHandler.py:61 +#, fuzzy +msgctxt "languageName" +msgid "Amharic" +msgstr "Amharisk" + +#: languageHandler.py:62 +#, fuzzy +msgctxt "languageName" +msgid "Aragonese" +msgstr "Japansk" + +#: languageHandler.py:63 +#, fuzzy +msgctxt "languageName" +msgid "Spanish" +msgstr "Spansk" + +#: languageHandler.py:64 +#, fuzzy +msgctxt "languageName" +msgid "Portuguese" +msgstr "Portugisisk" + +#: languageHandler.py:65 +#, fuzzy +msgctxt "languageName" +msgid "Russian" +msgstr "Russisk" + +#: languageHandler.py:66 +#, fuzzy +msgctxt "languageName" +msgid "italian" +msgstr "Italiensk" + +#: languageHandler.py:67 +#, fuzzy +msgctxt "languageName" +msgid "Turkey" +msgstr "funktion" + +#: languageHandler.py:68 +#, fuzzy +msgctxt "languageName" +msgid "Galician" +msgstr "Galicisk" + +#: languageHandler.py:69 +#, fuzzy +msgctxt "languageName" +msgid "Catala" +msgstr "Catalansk" + +#: languageHandler.py:70 +#, fuzzy +msgctxt "languageName" +msgid "Vasque" +msgstr "Baskisk " + +#: languageHandler.py:71 +#, fuzzy +msgctxt "languageName" +msgid "polish" +msgstr "Polsk" + +#: languageHandler.py:72 +#, fuzzy +msgctxt "languageName" +msgid "Arabic" +msgstr "Arabisk" + +#: languageHandler.py:73 +#, fuzzy +msgctxt "languageName" +msgid "Nepali" +msgstr "Nepalesisk" + +#: languageHandler.py:74 +msgctxt "languageName" +msgid "Serbian (Latin)" +msgstr "" + +#: languageHandler.py:75 +#, fuzzy +msgctxt "languageName" +msgid "Japanese" +msgstr "Japansk" + +#: languageHandler.py:99 +msgid "User default" +msgstr "Brugerstandard" + +#: main.py:105 +#, fuzzy +msgid "https://twblue.mcvsoftware.com/donate" +msgstr "https://twblue.es/donate" + +#: main.py:118 +#, python-brace-format +msgid "" +"{0} is already running. Close the other instance before starting this " +"one. If you're sure that {0} isn't running, try deleting the file at {1}." +" If you're unsure of how to do this, contact the {0} developers." +msgstr "" +"{0} kører allerede. Luk det kørende program, før du starter en anden. " +"Hvis du er sikker på at {0} ikke kører, skal du prøve at slette filen " +"under {1}. Hvis du ikke er sikker på, hvordan du gør dette, skal du " +"kontakte udviklerne af {0}." + +#: sound.py:148 +msgid "Playing..." +msgstr "Afspiller." + +#: sound.py:161 +msgid "Stopped." +msgstr "Stoppet." + +#: controller/mainController.py:261 +msgid "Ready" +msgstr "Klar" + +#: controller/mainController.py:369 controller/mainController.py:654 +#: controller/mainController.py:673 controller/mainController.py:692 +#: controller/mainController.py:711 +msgid "" +"No session is currently in focus. Focus a session with the next or " +"previous session shortcut." +msgstr "" +"Ingen session er på nuværende tidspunkt i fokus. Skift fokus til en aktiv" +" session ved brug af tastaturgenvejen der skifter mellem forrige og næste" +" session" + +#: controller/mainController.py:373 +msgid "Empty buffer." +msgstr "Tøm buffer" + +#: controller/mainController.py:380 +#, python-brace-format +msgid "{0} not found." +msgstr "{0} ikke fundet." + +#: controller/mainController.py:702 controller/mainController.py:721 +#, python-format +msgid "%s, %s of %s" +msgstr "%s, %s af %s" + +#: controller/mainController.py:704 controller/mainController.py:723 +#: controller/mainController.py:751 controller/mainController.py:779 +#, python-format +msgid "%s. Empty" +msgstr "%s. Tom" + +#: controller/mainController.py:739 controller/mainController.py:743 +#: controller/mainController.py:767 +#, python-brace-format +msgid "{0}: This account is not logged into Twitter." +msgstr "{0}: Denne konto er ikke logget ind på Twitter." + +#: controller/mainController.py:749 controller/mainController.py:777 +#, python-format +msgid "%s. %s, %s of %s" +msgstr "%s. %s, %s af %s" + +#: controller/mainController.py:771 +#, python-brace-format +msgid "{0}: This account is not logged into twitter." +msgstr "{0}: Denne konto er ikke logget ind på Twitter." + +#: controller/mainController.py:910 controller/mainController.py:926 +msgid "An error happened while trying to connect to the server. Please try later." +msgstr "" +"Der opstod en fejl under forsøg på at oprette forbindelse til serveren. " +"Prøv venligst senere." + +#: controller/mainController.py:957 +msgid "The auto-reading of new tweets is enabled for this buffer" +msgstr "Auto-læsning af ny tweets er aktiveret for denne buffer" + +#: controller/mainController.py:960 +msgid "The auto-reading of new tweets is disabled for this buffer" +msgstr "Auto-læsning af ny tweets er deaktiveret for denne buffer" + +#: controller/mainController.py:967 +msgid "Session mute on" +msgstr "Session dæmpning slået til" + +#: controller/mainController.py:970 +msgid "Session mute off" +msgstr "Session dæmpning slået fra" + +#: controller/mainController.py:979 +msgid "Buffer mute on" +msgstr "Buffer dæmpning slået til" + +#: controller/mainController.py:982 +msgid "Buffer mute off" +msgstr "Buffer dæmpning slået fra" + +#: controller/mainController.py:999 +msgid "Copied" +msgstr "Kopieret" + +#: controller/mainController.py:1019 +msgid "Unable to update this buffer." +msgstr "Ikke i stand til at opdatere denne buffer." + +#: controller/mainController.py:1021 +msgid "Updating buffer..." +msgstr "Opdaterer buffer…" + +#: controller/mainController.py:1024 +#, python-brace-format +msgid "{0} items retrieved" +msgstr "{0} emner hentet" + +#: controller/buffers/mastodon/base.py:137 controller/mainController.py:1028 +#: controller/mastodon/handler.py:98 controller/mastodon/handler.py:241 +#, python-brace-format +msgid "Timeline for {}" +msgstr "Tidslinje for {}" + +#: controller/buffers/mastodon/users.py:93 controller/mainController.py:1030 +#: controller/mastodon/handler.py:100 controller/mastodon/handler.py:255 +#, python-brace-format +msgid "Followers for {}" +msgstr "Følgere for {}" + +#: controller/mainController.py:1032 +#, python-brace-format +msgid "Friends for {}" +msgstr "Venner for {}" + +# | msgid "Followers for {}" +#: controller/buffers/mastodon/users.py:95 controller/mainController.py:1034 +#: controller/mastodon/handler.py:102 controller/mastodon/handler.py:269 +#, fuzzy, python-brace-format +msgid "Following for {}" +msgstr "Følgere for {}" + +#: controller/messages.py:18 +#, fuzzy +msgid "Translated" +msgstr "Oversat" + +#: controller/settings.py:60 +#, fuzzy +msgid "System default" +msgstr "Brugerstandard" + +#: controller/settings.py:60 +msgid "HTTP" +msgstr "" + +#: controller/settings.py:60 +msgid "SOCKS v4" +msgstr "" + +#: controller/settings.py:60 +msgid "SOCKS v4 with DNS support" +msgstr "" + +#: controller/settings.py:60 +msgid "SOCKS v5" +msgstr "" + +#: controller/settings.py:60 +msgid "SOCKS v5 with DNS support" +msgstr "" + +#: controller/userAlias.py:31 +#, fuzzy, python-brace-format +msgid "Edit alias for {}" +msgstr "Liste for {}" + +#: controller/buffers/base/base.py:91 +#: controller/buffers/mastodon/conversations.py:237 +#: controller/buffers/mastodon/search.py:80 +msgid "This action is not supported for this buffer" +msgstr "Denne handling understøttes ikke for denne buffer" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:70 +#: controller/mastodon/settings.py:194 +msgid "Home" +msgstr "Hjem" + +#: controller/buffers/mastodon/base.py:52 +#: controller/buffers/mastodon/community.py:22 +#: controller/mastodon/handler.py:72 controller/mastodon/handler.py:114 +#: controller/mastodon/settings.py:195 +msgid "Local" +msgstr "" + +#: controller/buffers/mastodon/base.py:52 +#: controller/buffers/mastodon/community.py:22 +#: controller/mastodon/handler.py:74 controller/mastodon/settings.py:196 +msgid "Federated" +msgstr "" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:76 +#: controller/mastodon/settings.py:197 +msgid "Mentions" +msgstr "Omtale" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:84 +#: controller/mastodon/settings.py:201 +msgid "Bookmarks" +msgstr "" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:78 +msgid "Direct messages" +msgstr "Direkte beskeder" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:80 +#: controller/mastodon/settings.py:199 +msgid "Sent" +msgstr "" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:82 +#: controller/mastodon/settings.py:200 wxUI/dialogs/mastodon/postDialogs.py:229 +msgid "Favorites" +msgstr "" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:86 +#: controller/mastodon/settings.py:202 +msgid "Followers" +msgstr "Følgere" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:88 +#: controller/mastodon/settings.py:203 +#, fuzzy +msgid "Following" +msgstr "&Stop med at følge" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:92 +#: controller/mastodon/settings.py:204 +msgid "Blocked users" +msgstr "Blokerede brugere" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:90 +#: controller/mastodon/settings.py:205 +msgid "Muted users" +msgstr "Dæmpede brugere" + +# | msgid "&Location" +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:94 +#: controller/mastodon/settings.py:206 +#: wxUI/dialogs/mastodon/filters/create_filter.py:80 +#, fuzzy +msgid "Notifications" +msgstr "&Lokalitet" + +#: controller/buffers/mastodon/base.py:58 +#, python-brace-format +msgid "{username}'s timeline" +msgstr "{username}s tidslinje" + +#: controller/buffers/mastodon/base.py:60 +#, python-brace-format +msgid "{username}'s followers" +msgstr "{username}s følgere" + +# | msgid "{username}'s followers" +#: controller/buffers/mastodon/base.py:62 +#, fuzzy, python-brace-format +msgid "{username}'s following" +msgstr "{username}s følgere" + +#: controller/buffers/mastodon/base.py:64 +msgid "Unknown buffer" +msgstr "Ukendt buffer" + +#: controller/buffers/mastodon/base.py:67 +#: controller/buffers/mastodon/base.py:645 wxUI/buffers/mastodon/base.py:24 +#: wxUI/buffers/mastodon/conversationList.py:24 +#: wxUI/buffers/mastodon/notifications.py:22 wxUI/buffers/mastodon/user.py:18 +#: wxUI/dialogs/mastodon/postDialogs.py:5 +#: wxUI/dialogs/mastodon/postDialogs.py:194 wxUI/sysTrayIcon.py:35 +msgid "Post" +msgstr "" + +# | msgid "Write the tweet here" +#: controller/buffers/mastodon/base.py:68 +#: controller/buffers/mastodon/base.py:646 +#, fuzzy +msgid "Write your post here" +msgstr "Skriv et tweet her" + +# | msgid "New tweet in {0}" +#: controller/buffers/mastodon/base.py:153 +#, fuzzy, python-brace-format +msgid "New post in {0}" +msgstr "Nyt Tweet i {0}" + +# | msgid "{0} new tweets in {1}." +#: controller/buffers/mastodon/base.py:159 +#, fuzzy, python-brace-format +msgid "{0} new posts in {1}." +msgstr "{0} nye tweets i {1}." + +#: controller/buffers/mastodon/base.py:198 +#: controller/buffers/mastodon/community.py:90 +#: controller/buffers/mastodon/conversations.py:100 +#: controller/buffers/mastodon/mentions.py:82 +#: controller/buffers/mastodon/users.py:139 +#, python-format +msgid "%s items retrieved" +msgstr "%s elementer hentet" + +#: controller/buffers/mastodon/base.py:216 +#: controller/buffers/mastodon/users.py:206 +msgid "This buffer is not a timeline; it can't be deleted." +msgstr "Denne buffer er ikke en tidslinje; Den kan ikke slettes." + +# | msgid "Conversation with {0}" +#: controller/buffers/mastodon/base.py:346 +#: controller/buffers/mastodon/base.py:384 +#, fuzzy, python-brace-format +msgid "Conversation with {}" +msgstr "Samtale med {0}" + +# | msgid "Write the tweet here" +#: controller/buffers/mastodon/base.py:347 +#: controller/buffers/mastodon/base.py:385 +#: controller/buffers/mastodon/conversations.py:181 +#: controller/buffers/mastodon/notifications.py:122 +#: controller/buffers/mastodon/users.py:52 +#, fuzzy +msgid "Write your message here" +msgstr "Skriv et tweet her" + +# | msgid "Reply to {arg0}" +#: controller/buffers/mastodon/base.py:349 +#, fuzzy, python-brace-format +msgid "Reply to {}" +msgstr "Svare {arg0}" + +# | msgid "Write the tweet here" +#: controller/buffers/mastodon/base.py:350 +#, fuzzy +msgid "Write your reply here" +msgstr "Skriv et tweet her" + +#: controller/buffers/mastodon/base.py:412 +#, fuzzy +msgid "This action is not supported on conversations." +msgstr "Denne handling understøttes ikke for denne buffer." + +#: controller/buffers/mastodon/base.py:477 +msgid "Opening URL..." +msgstr "Åbner URL…" + +#: controller/buffers/mastodon/base.py:490 +msgid "You can delete only your own posts." +msgstr "" + +#: controller/buffers/mastodon/base.py:519 +msgid "Opening item in web browser..." +msgstr "Åbner emne i webbrowser..." + +#: controller/buffers/mastodon/base.py:527 +#: controller/buffers/mastodon/base.py:547 +msgid "Adding to favorites..." +msgstr "" + +# | msgid "Remove from list" +#: controller/buffers/mastodon/base.py:534 +#: controller/buffers/mastodon/base.py:549 +#, fuzzy +msgid "Removing from favorites..." +msgstr "Fjern fra liste" + +#: controller/buffers/mastodon/base.py:544 +#: controller/buffers/mastodon/base.py:559 +#: controller/buffers/mastodon/base.py:573 +#: controller/buffers/mastodon/conversations.py:213 +msgid "No status found with that ID" +msgstr "Ingen status fundet med det ID" + +#: controller/buffers/mastodon/base.py:562 +msgid "Adding to bookmarks..." +msgstr "" + +#: controller/buffers/mastodon/base.py:564 +msgid "Removing from bookmarks..." +msgstr "" + +#: controller/buffers/mastodon/base.py:586 +#, python-brace-format +msgid "Picture {0}" +msgstr "Billede {0}" + +#: controller/buffers/mastodon/base.py:587 +msgid "Select the picture" +msgstr "Vælg billedet" + +#: controller/buffers/mastodon/base.py:610 +msgid "Unable to extract text" +msgstr "Ikke i stand til at genkende tekst" + +#: controller/buffers/mastodon/base.py:612 +msgid "OCR Result" +msgstr "" + +#: controller/buffers/mastodon/base.py:627 +msgid "this poll no longer exists." +msgstr "" + +#: controller/buffers/mastodon/base.py:630 +msgid "This poll has already expired." +msgstr "" + +#: controller/buffers/mastodon/base.py:633 +msgid "You have already voted on this poll." +msgstr "" + +#: controller/buffers/mastodon/base.py:642 +#, fuzzy +msgid "Sending vote..." +msgstr "Genkoder lyd..." + +# | msgid "Conversation with {0}" +#: controller/buffers/mastodon/conversations.py:180 +#, fuzzy, python-brace-format +msgid "Reply to conversation with {}" +msgstr "Samtale med {0}" + +# | msgid "Conversation with {0}" +#: controller/buffers/mastodon/notifications.py:121 +#: controller/buffers/mastodon/users.py:51 +#, fuzzy, python-brace-format +msgid "New conversation with {}" +msgstr "Samtale med {0}" + +#: controller/buffers/mastodon/notifications.py:151 +msgid "Notification dismissed." +msgstr "" + +# | msgid "There are no coordinates in this tweet" +#: controller/buffers/mastodon/users.py:110 +#, fuzzy +msgid "There are no more items in this buffer." +msgstr "Der er ingen koordinater i denne tweet" + +#: controller/mastodon/handler.py:30 wxUI/dialogs/mastodon/updateProfile.py:35 +#, fuzzy +msgid "Update Profile" +msgstr "&Opdater profil" + +#: controller/mastodon/handler.py:31 wxUI/dialogs/mastodon/search.py:10 +#: wxUI/view.py:19 +msgid "&Search" +msgstr "&Søg" + +#: controller/mastodon/handler.py:33 wxUI/view.py:22 +msgid "Manage user aliases" +msgstr "" + +#: controller/mastodon/handler.py:35 controller/mastodon/handler.py:59 +#: wxUI/view.py:30 +msgid "&Post" +msgstr "" + +#: controller/mastodon/handler.py:36 wxUI/dialogs/mastodon/menus.py:9 +#: wxUI/dialogs/mastodon/menus.py:37 wxUI/view.py:31 +msgid "Re&ply" +msgstr "&Svar" + +#: controller/mastodon/handler.py:37 wxUI/dialogs/mastodon/menus.py:7 +#: wxUI/dialogs/mastodon/menus.py:35 wxUI/view.py:32 +msgid "&Boost" +msgstr "" + +# | msgid "&Add to list" +#: controller/mastodon/handler.py:38 wxUI/dialogs/mastodon/menus.py:11 +#: wxUI/dialogs/mastodon/menus.py:39 wxUI/view.py:33 +#, fuzzy +msgid "&Add to favorites" +msgstr "&Tilføj til liste" + +# | msgid "Remove from list" +#: controller/mastodon/handler.py:39 +#, fuzzy +msgid "Remove from favorites" +msgstr "Fjern fra liste" + +# | msgid "&Show user" +#: controller/mastodon/handler.py:40 wxUI/dialogs/mastodon/menus.py:21 +#: wxUI/dialogs/mastodon/menus.py:49 wxUI/view.py:35 +#, fuzzy +msgid "&Show post" +msgstr "Vis &bruger" + +#: controller/mastodon/handler.py:41 wxUI/view.py:36 +msgid "View conversa&tion" +msgstr "Vis sa&&tale" + +#: controller/mastodon/handler.py:42 wxUI/view.py:37 +msgid "Read text in picture" +msgstr "Læs tekst på billedet" + +#: controller/mastodon/handler.py:43 wxUI/dialogs/mastodon/menus.py:25 +#: wxUI/view.py:39 +msgid "&Delete" +msgstr "&Slet" + +#: controller/mastodon/handler.py:45 wxUI/view.py:43 +msgid "&Actions..." +msgstr "&Handlinger..." + +#: controller/mastodon/handler.py:46 wxUI/view.py:44 +msgid "&View timeline..." +msgstr "&Vis tidslinje..." + +#: controller/mastodon/handler.py:47 wxUI/view.py:45 +msgid "Direct me&ssage" +msgstr "Direkte &besked" + +#: controller/mastodon/handler.py:48 wxUI/view.py:46 +msgid "Add a&lias" +msgstr "" + +#: controller/mastodon/handler.py:51 +#, fuzzy +msgid "Show user profile" +msgstr "Vis bruger&profil" + +#: controller/mastodon/handler.py:54 +msgid "Create c&ommunity timeline" +msgstr "" + +#: controller/mastodon/handler.py:55 wxUI/view.py:57 +msgid "Create a &filter" +msgstr "Opret et nyt &filter" + +#: controller/mastodon/handler.py:56 wxUI/view.py:58 +msgid "&Manage filters" +msgstr "&Administrer filtre" + +#: controller/mastodon/handler.py:95 +msgid "Timelines" +msgstr "Tidslinjer" + +#: controller/mastodon/handler.py:107 +msgid "Searches" +msgstr "Søgninger" + +#: controller/mastodon/handler.py:110 controller/mastodon/handler.py:191 +#: controller/mastodon/handler.py:196 +#, python-brace-format +msgid "Search for {}" +msgstr "Søg efter {}" + +#: controller/mastodon/handler.py:111 +msgid "Communities" +msgstr "" + +#: controller/mastodon/handler.py:114 +#, fuzzy +msgid "federated" +msgstr "{username}s tidslinje" + +#: controller/mastodon/handler.py:143 +#, python-brace-format +msgid "Conversation with {0}" +msgstr "Samtale med {0}" + +#: controller/mastodon/handler.py:299 +msgid "Add an user alias" +msgstr "" + +#: controller/mastodon/handler.py:311 +#, python-brace-format +msgid "Alias has been set correctly for {}." +msgstr "" + +#: controller/mastodon/handler.py:342 +#, fuzzy +msgid "Update profile" +msgstr "&Opdater profil" + +#: controller/mastodon/messages.py:115 +#, python-format +msgid "%s - %s of %d characters" +msgstr "%s - %s af %d tegn" + +#: controller/mastodon/messages.py:239 +#, python-brace-format +msgid "Poll with {} options" +msgstr "" + +# | msgid "List for {}" +#: controller/mastodon/messages.py:272 +#, fuzzy, python-brace-format +msgid "Post from {}" +msgstr "Liste for {}" + +#: controller/mastodon/messages.py:276 sessions/mastodon/templates.py:82 +#: wxUI/dialogs/mastodon/postDialogs.py:49 +msgid "Public" +msgstr "Offentlig" + +# | msgid "Accounts list" +#: controller/mastodon/messages.py:276 sessions/mastodon/templates.py:82 +#: wxUI/dialogs/mastodon/postDialogs.py:49 +#, fuzzy +msgid "Not listed" +msgstr "Konti liste" + +# | msgid "Followers" +#: controller/mastodon/messages.py:276 +#, fuzzy +msgid "followers only" +msgstr "Følgere" + +# | msgid "Direct message" +#: controller/mastodon/messages.py:276 sessions/mastodon/templates.py:82 +#: wxUI/dialogs/mastodon/postDialogs.py:49 +#, fuzzy +msgid "Direct" +msgstr "Direkte besked" + +# | msgid "Remove client" +#: controller/mastodon/messages.py:283 +#, fuzzy +msgid "Remote instance" +msgstr "Fjern klient" + +#: controller/mastodon/messages.py:291 controller/mastodon/messages.py:319 +#, fuzzy +msgid "Unmute conversation" +msgstr "Se samtale" + +#: controller/mastodon/messages.py:315 wxUI/dialogs/mastodon/postDialogs.py:237 +#, fuzzy +msgid "Mute conversation" +msgstr "Se samtale" + +# | msgid "Conversation with {0}" +#: controller/mastodon/messages.py:316 +#, fuzzy +msgid "Conversation unmuted." +msgstr "Samtale med {0}" + +# | msgid "Conversation with {0}" +#: controller/mastodon/messages.py:320 +#, fuzzy +msgid "Conversation muted." +msgstr "Samtale med {0}" + +#: controller/mastodon/messages.py:331 +msgid "people who boosted this post" +msgstr "" + +#: controller/mastodon/messages.py:336 +msgid "people who favorited this post" +msgstr "" + +#: controller/mastodon/messages.py:342 +#, fuzzy +msgid "Link copied to clipboard." +msgstr "Kopiér til udklipsholder" + +#: controller/mastodon/settings.py:82 +#, python-format +msgid "Account settings for %s" +msgstr "Kontoindstillinger for %s" + +#: controller/mastodon/settings.py:92 +#, python-brace-format +msgid "Edit template for posts. Current template: {}" +msgstr "" + +#: controller/mastodon/settings.py:101 +#, python-brace-format +msgid "Edit template for conversations. Current template: {}" +msgstr "" + +#: controller/mastodon/settings.py:110 +#, python-brace-format +msgid "Edit template for persons. Current template: {}" +msgstr "" + +#: controller/mastodon/settings.py:198 +msgid "Direct Messages" +msgstr "Direkte Beskeder" + +#: controller/mastodon/filters/create_filter.py:75 +#, fuzzy, python-brace-format +msgid "Update Filter: {}" +msgstr "&Opdater profil" + +#: controller/mastodon/filters/manage_filters.py:57 +#: wxUI/dialogs/mastodon/filters/create_filter.py:90 +msgid "Never" +msgstr "" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:4 +msgid "Audio tweet." +msgstr "Lyd tweet." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:5 +msgid "User timeline buffer created." +msgstr "Bruger tidslinjebuffer oprettet." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:6 +msgid "Buffer destroied." +msgstr "Buffer slettet." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:7 +msgid "Direct message received." +msgstr "Direkte besked modtaget." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:8 +msgid "Direct message sent." +msgstr "Direkte besked sendt." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:9 +msgid "Error." +msgstr "Fejl." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:10 +msgid "Tweet liked." +msgstr "Synes godt om tweet." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:11 +msgid "Likes buffer updated." +msgstr "Buffer synes godt om opdateret." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:12 +msgid "Geotweet." +msgstr "Geotweet." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:13 +msgid "Tweet contains one or more images" +msgstr "Tweet indeholder et eller flere billeder" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:14 +msgid "Boundary reached." +msgstr "Grænse nået." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:15 +msgid "List updated." +msgstr "Liste opdateret." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:16 +msgid "Too many characters." +msgstr "For mange tegn." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:17 +msgid "Mention received." +msgstr "Omtale modtaget." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:18 +msgid "New event." +msgstr "Nyt begivenhed." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:19 +#, python-brace-format +msgid "{0} is ready." +msgstr "{0} er klar." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:20 +msgid "Mention sent." +msgstr "Omtale sendt." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:21 +msgid "Tweet retweeted." +msgstr "Tweet retweetet." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:22 +msgid "Search buffer updated." +msgstr "Søgebuffer opdateret." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:23 +msgid "Tweet received." +msgstr "Tweet modtaget." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:24 +msgid "Tweet sent." +msgstr "Tweet sendt." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:25 +msgid "Trending topics buffer updated." +msgstr "Trending emner buffer opdateret." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:26 +msgid "New tweet in user timeline buffer." +msgstr "Ny tweet i bruger tidslinje buffer." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:27 +msgid "New follower." +msgstr "Ny følger." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:28 +msgid "Volume changed." +msgstr "Lydstyrke ændret." + +#: extra/SoundsTutorial/wx_ui.py:8 +msgid "Sounds tutorial" +msgstr "Hør lyde" + +#: extra/SoundsTutorial/wx_ui.py:11 +msgid "Press enter to listen to the sound for the selected event" +msgstr "Tryk på enter for at lytte til lyden for den valgte begivenhed" + +#: extra/SpellChecker/spellchecker.py:56 +#, python-format +msgid "Misspelled word: %s" +msgstr "Fejlstavede ord: %s" + +#: extra/SpellChecker/wx_ui.py:27 +msgid "Misspelled word" +msgstr "Fejlstavet ord" + +#: extra/SpellChecker/wx_ui.py:32 +msgid "Context" +msgstr "Kontekst" + +#: extra/SpellChecker/wx_ui.py:37 +msgid "Suggestions" +msgstr "Forslag" + +#: extra/SpellChecker/wx_ui.py:42 +msgid "&Ignore" +msgstr "&Ignorér" + +#: extra/SpellChecker/wx_ui.py:43 +msgid "I&gnore all" +msgstr "&Ignorér alle" + +#: extra/SpellChecker/wx_ui.py:44 +msgid "&Replace" +msgstr "&Erstat" + +#: extra/SpellChecker/wx_ui.py:45 +msgid "R&eplace all" +msgstr "E&rstat alle" + +#: extra/SpellChecker/wx_ui.py:46 +msgid "&Add to personal dictionary" +msgstr "&Tilføj til personlig ordbog" + +#: extra/SpellChecker/wx_ui.py:79 +#, python-brace-format +msgid "" +"An error has occurred. There are no dictionaries available for the " +"selected language in {0}" +msgstr "Der opstod en fejl. Der findes ingen ordbøger til det valgte sprog på {0}" + +#: extra/SpellChecker/wx_ui.py:79 +#: extra/autocompletionUsers/mastodon/wx_scan.py:44 +#: wxUI/commonMessageDialogs.py:23 wxUI/commonMessageDialogs.py:36 +#: wxUI/commonMessageDialogs.py:45 wxUI/commonMessageDialogs.py:52 +#: wxUI/commonMessageDialogs.py:55 wxUI/commonMessageDialogs.py:61 +#: wxUI/dialogs/mastodon/dialogs.py:38 wxUI/dialogs/mastodon/dialogs.py:43 +#: wxUI/dialogs/mastodon/dialogs.py:48 wxUI/dialogs/mastodon/dialogs.py:53 +#: wxUI/dialogs/mastodon/dialogs.py:60 +msgid "Error" +msgstr "Fejl" + +#: extra/SpellChecker/wx_ui.py:82 +msgid "Spell check complete." +msgstr "Stavekontrol gennemført." + +#: extra/autocompletionUsers/completion.py:39 +#: extra/autocompletionUsers/completion.py:57 +msgid "You have to start writing" +msgstr "" + +# | msgid "There are no coordinates in this tweet" +#: extra/autocompletionUsers/completion.py:49 +#: extra/autocompletionUsers/completion.py:66 +#, fuzzy +msgid "There are no results in your users database" +msgstr "Der er ingen koordinater i denne tweet" + +#: extra/autocompletionUsers/completion.py:51 +#, fuzzy +msgid "Autocompletion only works for users." +msgstr "Auto&fuldfør brugere" + +#: extra/autocompletionUsers/wx_manage.py:9 +#, fuzzy +msgid "Manage Autocompletion database" +msgstr "Administrer autofuldførelsesdatabase" + +#: extra/autocompletionUsers/wx_manage.py:12 +#, fuzzy, python-brace-format +msgid "Editing {0} users database" +msgstr "Redigerer {0} brugers database" + +#: extra/autocompletionUsers/wx_manage.py:13 +#, fuzzy +msgid "Username" +msgstr "Bruger" + +#: extra/autocompletionUsers/wx_manage.py:13 wxUI/dialogs/configuration.py:108 +msgid "Name" +msgstr "Navn" + +#: extra/autocompletionUsers/wx_manage.py:16 +#, fuzzy +msgid "Add user" +msgstr "Bruger" + +#: extra/autocompletionUsers/wx_manage.py:17 +#, fuzzy +msgid "Remove user" +msgstr "Fjern bruger" + +#: extra/autocompletionUsers/wx_manage.py:38 +msgid "Twitter username" +msgstr "" + +#: extra/autocompletionUsers/wx_manage.py:38 +msgid "Add user to database" +msgstr "" + +#: extra/autocompletionUsers/wx_manage.py:44 +#, fuzzy +msgid "The user does not exist" +msgstr "Denne bruger eksisterer ikke" + +#: extra/autocompletionUsers/wx_manage.py:44 +#, fuzzy +msgid "Error!" +msgstr "Fejl" + +#: extra/autocompletionUsers/mastodon/scan.py:49 +msgid "" +"Updating database... You can close this window now. A message will tell " +"you when the process finishes." +msgstr "" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:8 +#, fuzzy +msgid "Autocomplete users' settings" +msgstr "Auto&fuldfør brugere" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:11 +msgid "Add &followers to database" +msgstr "" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:12 +msgid "Add f&ollowing to database" +msgstr "" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:26 +#, fuzzy +msgid "Updating autocompletion database" +msgstr "Administrer autofuldførelsesdatabase" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:34 +msgid "" +"This process will retrieve the users you selected from your Mastodon " +"account, and add them to the user autocomplete database. Please note that" +" if there are many users or you have tried to perform this action less " +"than 15 minutes ago, TWBlue may reach a limit in API calls when trying to" +" load the users into the database. If this happens, we will show you an " +"error, in which case you will have to try this process again in a few " +"minutes. If this process ends with no error, you will be redirected back " +"to the account settings dialog. Do you want to continue?" +msgstr "" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:34 +#: wxUI/commonMessageDialogs.py:20 +msgid "Attention" +msgstr "Bemærk" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:40 +#, python-brace-format +msgid "TWBlue has imported {} users successfully." +msgstr "" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:40 +#, fuzzy +msgid "Done" +msgstr "Færdig!" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:44 +msgid "Error adding users from Mastodon. Please try again in about 15 minutes." +msgstr "" + +#: extra/ocr/OCRSpace.py:7 +msgid "Detect automatically" +msgstr "Opdag automatisk" + +#: extra/ocr/OCRSpace.py:7 +msgid "Danish" +msgstr "Dansk" + +#: extra/ocr/OCRSpace.py:7 +msgid "Dutch" +msgstr "Hollandsk" + +#: extra/ocr/OCRSpace.py:7 +msgid "English" +msgstr "Engelsk" + +#: extra/ocr/OCRSpace.py:7 +msgid "Finnish" +msgstr "Finsk" + +#: extra/ocr/OCRSpace.py:7 +msgid "French" +msgstr "Fransk" + +#: extra/ocr/OCRSpace.py:7 +msgid "German" +msgstr "Tysk" + +#: extra/ocr/OCRSpace.py:7 +msgid "Hungarian" +msgstr "Ungarsk" + +#: extra/ocr/OCRSpace.py:7 +msgid "Korean" +msgstr "Koreansk" + +#: extra/ocr/OCRSpace.py:7 +msgid "Italian" +msgstr "Italiensk" + +#: extra/ocr/OCRSpace.py:7 +msgid "Japanese" +msgstr "Japansk" + +#: extra/ocr/OCRSpace.py:7 +msgid "Polish" +msgstr "Polsk" + +#: extra/ocr/OCRSpace.py:7 +msgid "Portuguese" +msgstr "Portugisisk" + +#: extra/ocr/OCRSpace.py:7 +msgid "Russian" +msgstr "Russisk" + +#: extra/ocr/OCRSpace.py:7 +msgid "Spanish" +msgstr "Spansk" + +#: extra/ocr/OCRSpace.py:7 +msgid "Turkish" +msgstr "Tyrkisk" + +#: extra/translator/wx_ui.py:25 +msgid "Translate message" +msgstr "Oversæt besked" + +#: extra/translator/wx_ui.py:29 +#, fuzzy +msgid "Translation engine" +msgstr "Oversat" + +#: extra/translator/wx_ui.py:32 +msgid "Target language" +msgstr "Målsprog" + +#: keystrokeEditor/wx_ui.py:8 +msgid "Keystroke editor" +msgstr "Tastetrykredigering" + +#: keystrokeEditor/wx_ui.py:11 +msgid "Select a keystroke to edit" +msgstr "Vælg et tastetryk for at redigere" + +#: keystrokeEditor/wx_ui.py:12 +#: wxUI/dialogs/mastodon/filters/manage_filters.py:18 +#: wxUI/dialogs/mastodon/userActions.py:9 +#: wxUI/dialogs/mastodon/userActions.py:18 +#: wxUI/dialogs/mastodon/userActions.py:19 +msgid "Action" +msgstr "Handling" + +#: keystrokeEditor/wx_ui.py:12 +msgid "Keystroke" +msgstr "tastetryk" + +#: keystrokeEditor/wx_ui.py:17 +#: wxUI/dialogs/mastodon/filters/manage_filters.py:23 +#: wxUI/dialogs/userAliasDialogs.py:53 +msgid "Edit" +msgstr "Rediger" + +#: keystrokeEditor/wx_ui.py:19 keystrokeEditor/wx_ui.py:49 +#, fuzzy +msgid "Undefine keystroke" +msgstr "Redigerer tastetryk" + +#: keystrokeEditor/wx_ui.py:20 +msgid "Execute action" +msgstr "Kør handling" + +#: keystrokeEditor/wx_ui.py:21 wxUI/dialogs/userAliasDialogs.py:25 +msgid "Close" +msgstr "Luk" + +#: keystrokeEditor/wx_ui.py:41 +msgid "Undefined" +msgstr "" + +#: keystrokeEditor/wx_ui.py:49 +#, fuzzy +msgid "Are you sure you want to undefine this keystroke?" +msgstr "Er du sikker på, at du vil slette denne liste ?" + +#: keystrokeEditor/wx_ui.py:53 +msgid "Editing keystroke" +msgstr "Redigerer tastetryk" + +#: keystrokeEditor/wx_ui.py:56 +msgid "Control" +msgstr "Kontrol" + +#: keystrokeEditor/wx_ui.py:57 +msgid "Alt" +msgstr "Alt" + +#: keystrokeEditor/wx_ui.py:58 +msgid "Shift" +msgstr "Skift" + +#: keystrokeEditor/wx_ui.py:59 +msgid "Windows" +msgstr "Windows" + +#: keystrokeEditor/wx_ui.py:65 +msgid "Key" +msgstr "Tast" + +#: keystrokeEditor/wx_ui.py:70 wxUI/dialogs/find.py:21 +#: wxUI/dialogs/mastodon/showUserProfile.py:31 +#: wxUI/dialogs/userAliasDialogs.py:23 +msgid "OK" +msgstr "OK" + +#: keystrokeEditor/wx_ui.py:83 +msgid "You need to use the Windows key" +msgstr "Du skal bruge Windows-tasten" + +#: keystrokeEditor/wx_ui.py:83 keystrokeEditor/wx_ui.py:86 +msgid "Invalid keystroke" +msgstr "Ugyldigt tastetryk" + +#: keystrokeEditor/wx_ui.py:86 +msgid "You must provide a character for the keystroke" +msgstr "Du skal angive et tegn til tastetrykket" + +#: keystrokeEditor/actions/mastodon.py:3 +msgid "Go up in the current buffer" +msgstr "Gå op i den aktuelle buffer" + +#: keystrokeEditor/actions/mastodon.py:4 +msgid "Go down in the current buffer" +msgstr "Gå ned i den aktuelle buffer" + +#: keystrokeEditor/actions/mastodon.py:5 +msgid "Go to the previous buffer" +msgstr "Gå til den forrige buffer" + +#: keystrokeEditor/actions/mastodon.py:6 +msgid "Go to the next buffer" +msgstr "Gå til den næste buffer" + +#: keystrokeEditor/actions/mastodon.py:7 +msgid "Focus the next session" +msgstr "Bring fokus til næste session" + +#: keystrokeEditor/actions/mastodon.py:8 +msgid "Focus the previous session" +msgstr "Bring fokus til forrige session" + +#: keystrokeEditor/actions/mastodon.py:9 +msgid "Show or hide the GUI" +msgstr "Vis eller skjul brugergrænsefladen" + +# | msgid "Create a new list" +#: keystrokeEditor/actions/mastodon.py:10 +#, fuzzy +msgid "Make a new post" +msgstr "Opret en ny liste" + +#: keystrokeEditor/actions/mastodon.py:11 wxUI/buffers/mastodon/base.py:26 +#: wxUI/buffers/mastodon/conversationList.py:25 +msgid "Reply" +msgstr "Svar" + +#: keystrokeEditor/actions/mastodon.py:12 wxUI/buffers/mastodon/base.py:25 +#: wxUI/dialogs/mastodon/dialogs.py:7 +msgid "Boost" +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:13 +msgid "Send direct message" +msgstr "Send direkte besked" + +#: keystrokeEditor/actions/mastodon.py:14 +msgid "Add post to favorites" +msgstr "" + +# | msgid "Remove from list" +#: keystrokeEditor/actions/mastodon.py:15 +#, fuzzy +msgid "Remove post from favorites" +msgstr "Fjern fra liste" + +#: keystrokeEditor/actions/mastodon.py:16 +msgid "Add/remove post from favorites" +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:17 +msgid "Open the user actions dialogue" +msgstr "Åbn dialogboksen Brugerhandlinger" + +#: keystrokeEditor/actions/mastodon.py:18 +#, fuzzy +msgid "See user details" +msgstr "Fjern bruger" + +# | msgid "Show tweet" +#: keystrokeEditor/actions/mastodon.py:19 +#, fuzzy +msgid "Show post" +msgstr "Vis tweet" + +#: keystrokeEditor/actions/mastodon.py:20 +msgid "Quit" +msgstr "Afslut" + +#: keystrokeEditor/actions/mastodon.py:21 +msgid "Open user timeline" +msgstr "Åbn brugerens tidslinje" + +#: keystrokeEditor/actions/mastodon.py:22 +msgid "Destroy buffer" +msgstr "Ødelæg buffer" + +# | msgid "Interact with the currently focused tweet." +#: keystrokeEditor/actions/mastodon.py:23 +#, fuzzy +msgid "Interact with the currently focused post." +msgstr "Interager med den aktuelt fokuserede tweet." + +#: keystrokeEditor/actions/mastodon.py:24 +msgid "Open URL" +msgstr "Åbn URL" + +# | msgid "View in Twitter" +#: keystrokeEditor/actions/mastodon.py:25 +#, fuzzy +msgid "View in browser" +msgstr "vis på Twitter" + +#: keystrokeEditor/actions/mastodon.py:26 +msgid "Increase volume by 5%" +msgstr "Forøg lydstyrke med 5%" + +#: keystrokeEditor/actions/mastodon.py:27 +msgid "Decrease volume by 5%" +msgstr "Formindsk lydstyrke med 5%" + +#: keystrokeEditor/actions/mastodon.py:28 +msgid "Jump to the first element of a buffer" +msgstr "Hop til det første element i en buffer" + +#: keystrokeEditor/actions/mastodon.py:29 +msgid "Jump to the last element of the current buffer" +msgstr "Hop til det sidste element i den aktuelle buffer" + +#: keystrokeEditor/actions/mastodon.py:30 +msgid "Jump 20 elements up in the current buffer" +msgstr "Spring 20 elementer op i den aktuelle buffer" + +#: keystrokeEditor/actions/mastodon.py:31 +msgid "Jump 20 elements down in the current buffer" +msgstr "Spring 20 elementer ned i den aktuelle buffer" + +# | msgid "Delete" +#: keystrokeEditor/actions/mastodon.py:33 +#, fuzzy +msgid "Delete post" +msgstr "Slet" + +#: keystrokeEditor/actions/mastodon.py:34 +msgid "Empty the current buffer" +msgstr "Tøm den aktuelle buffer" + +#: keystrokeEditor/actions/mastodon.py:35 +msgid "Repeat last item" +msgstr "Gentag sidste emne" + +#: keystrokeEditor/actions/mastodon.py:36 +msgid "Copy to clipboard" +msgstr "Kopiér til udklipsholder" + +#: keystrokeEditor/actions/mastodon.py:39 +msgid "Mute/unmute the active buffer" +msgstr "Slå dæmpning til eller fra på den aktuelle buffer" + +#: keystrokeEditor/actions/mastodon.py:40 +msgid "Mute/unmute the current session" +msgstr "Slå dæmpning til eller fra på den aktuelle session" + +#: keystrokeEditor/actions/mastodon.py:41 +msgid "toggle the automatic reading of incoming tweets in the active buffer" +msgstr "" +"Slå automatisk læsning af indkommende tweets til og fra for den aktive " +"buffer" + +# | msgid "Search on twitter" +#: keystrokeEditor/actions/mastodon.py:42 +#, fuzzy +msgid "Search on instance" +msgstr "Søg på twitter" + +#: keystrokeEditor/actions/mastodon.py:43 +msgid "Find a string in the currently focused buffer" +msgstr "Find en streng i den aktuelt fokuserede buffer" + +#: keystrokeEditor/actions/mastodon.py:44 +msgid "Show the keystroke editor" +msgstr "Vis tastetrykredigering" + +#: keystrokeEditor/actions/mastodon.py:46 +msgid "load previous items" +msgstr "Indlæs tidligere elementer" + +#: keystrokeEditor/actions/mastodon.py:48 +msgid "View conversation" +msgstr "Se samtale" + +#: keystrokeEditor/actions/mastodon.py:49 +msgid "Check and download updates" +msgstr "Tjek og download opdateringer" + +#: keystrokeEditor/actions/mastodon.py:50 +msgid "Opens the global settings dialogue" +msgstr "Åbner dialogen med globale indstillinger" + +#: keystrokeEditor/actions/mastodon.py:52 +msgid "Opens the account settings dialogue" +msgstr "Åbner dialogen med kontoindstillinger" + +# | msgid "Try to play an audio file" +#: keystrokeEditor/actions/mastodon.py:53 +#, fuzzy +msgid "Try to play a media file" +msgstr "Forsøg at afspille en lydfil" + +#: keystrokeEditor/actions/mastodon.py:54 +msgid "Updates the buffer and retrieves possible lost items there." +msgstr "Opdaterer bufferen og henter mulige tabte emner der." + +#: keystrokeEditor/actions/mastodon.py:55 +msgid "Extracts the text from a picture and displays the result in a dialog." +msgstr "Uddrager teksten fra et billede og viser resultatet i en dialog." + +#: keystrokeEditor/actions/mastodon.py:56 +#, fuzzy +msgid "Adds an alias to an user" +msgstr "Vælg en liste for at tilføje brugeren" + +#: sessionmanager/sessionManager.py:69 +#, python-brace-format +msgid "{account_name}@{instance} (Mastodon)" +msgstr "" + +#: sessionmanager/wxUI.py:11 +msgid "Session manager" +msgstr "Sessionmanager" + +#: sessionmanager/wxUI.py:14 +msgid "Accounts list" +msgstr "Konti liste" + +#: sessionmanager/wxUI.py:16 +msgid "Account" +msgstr "Konto" + +#: sessionmanager/wxUI.py:20 +msgid "New account" +msgstr "Ny konto" + +#: sessionmanager/wxUI.py:22 sessionmanager/wxUI.py:79 +msgid "Remove account" +msgstr "Fjern konto" + +#: sessionmanager/wxUI.py:24 +msgid "Global Settings" +msgstr "Globale Indstillinger" + +#: sessionmanager/wxUI.py:48 +msgid "You need to configure an account." +msgstr "Du skal konfigurere en konto." + +#: sessionmanager/wxUI.py:48 +msgid "Account Error" +msgstr "Kontofejl" + +#: sessionmanager/wxUI.py:54 +msgid "Mastodon" +msgstr "" + +#: sessionmanager/wxUI.py:59 +msgid "" +"You will be prompted for your Mastodon data (instance URL, email address " +"and password) so we can authorise TWBlue in your instance. Would you like" +" to authorise your account now?" +msgstr "" + +#: sessionmanager/wxUI.py:59 +msgid "Authorization" +msgstr "Godkendelse" + +#: sessionmanager/wxUI.py:67 +#, python-format +msgid "Authorized account %d" +msgstr "Autoriseret konto %d" + +#: sessionmanager/wxUI.py:73 +msgid "" +"Your access token is invalid or the authorization has failed. Please try " +"again." +msgstr "Dit adgangstoken er ugyldigt, eller godkendelsen er mislykket. Prøv igen." + +#: sessionmanager/wxUI.py:73 +msgid "Invalid user token" +msgstr "Ugyldigt brugertoken" + +#: sessionmanager/wxUI.py:79 +msgid "Do you really want to delete this account?" +msgstr "Vil du slette denne konto?" + +#: sessions/base.py:125 +#, python-brace-format +msgid "" +"An exception occurred while saving the {app} database. It will be deleted" +" and rebuilt automatically. If this error persists, send the error log to" +" the {app} developers." +msgstr "" + +#: sessions/base.py:165 +#, python-brace-format +msgid "" +"An exception occurred while loading the {app} database. It will be " +"deleted and rebuilt automatically. If this error persists, send the error" +" log to the {app} developers." +msgstr "" + +# | msgid "dddd, MMMM D, YYYY H:m:s" +#: sessions/mastodon/compose.py:15 sessions/mastodon/compose.py:61 +#, fuzzy +msgid "dddd, MMMM D, YYYY H:m" +msgstr "dddd, MMMM D, YYYY H:m:s" + +# | msgid "{0}. Quoted tweet from @{1}: {2}" +#: sessions/mastodon/compose.py:17 sessions/mastodon/templates.py:74 +#: sessions/mastodon/templates.py:75 +#, fuzzy, python-brace-format +msgid "Boosted from @{}: {}" +msgstr "{0}. Citeret tweet fra @{1}: {2}" + +#: sessions/mastodon/compose.py:22 sessions/mastodon/compose.py:81 +#: sessions/mastodon/templates.py:81 sessions/mastodon/templates.py:176 +#, python-brace-format +msgid "hidden by filter {}" +msgstr "" + +#: sessions/mastodon/compose.py:36 sessions/mastodon/templates.py:28 +msgid "dddd, MMMM D, YYYY H:m:s" +msgstr "dddd, MMMM D, YYYY H:m:s" + +# | msgid "" +# | "%s (@%s). %s followers, %s friends, %s tweets. Last tweeted %s. Joined " +# | "Twitter %s" +#: sessions/mastodon/compose.py:38 +#, fuzzy, python-format +msgid "%s (@%s). %s followers, %s following, %s posts. Joined %s" +msgstr "" +"%s (@%s). %s følgere, %s venner, %s tweets. Sidst tweetedt %s. Tilmeldt " +"Twitter %s" + +#: sessions/mastodon/compose.py:49 +#, python-brace-format +msgid "Last message from {}: {}" +msgstr "" + +# | msgid "{username}'s followers" +#: sessions/mastodon/compose.py:64 +#, fuzzy, python-brace-format +msgid "{username} has posted: {status}" +msgstr "{username}s følgere" + +# | msgid "{username}'s followers" +#: sessions/mastodon/compose.py:66 +#, fuzzy, python-brace-format +msgid "{username} has mentioned you: {status}" +msgstr "{username}s følgere" + +#: sessions/mastodon/compose.py:68 +#, python-brace-format +msgid "{username} has boosted: {status}" +msgstr "" + +#: sessions/mastodon/compose.py:70 +#, python-brace-format +msgid "{username} has added to favorites: {status}" +msgstr "" + +# | msgid "{username}'s followers" +#: sessions/mastodon/compose.py:72 +#, fuzzy, python-brace-format +msgid "{username} has followed you." +msgstr "{username}s følgere" + +# | msgid "{username}'s followers" +#: sessions/mastodon/compose.py:74 +#, fuzzy, python-brace-format +msgid "{username} has joined the instance." +msgstr "{username}s følgere" + +#: sessions/mastodon/compose.py:76 sessions/mastodon/templates.py:171 +#, python-brace-format +msgid "A poll in which you have voted has expired: {status}" +msgstr "" + +# | msgid "{username}'s followers" +#: sessions/mastodon/compose.py:78 +#, fuzzy, python-brace-format +msgid "{username} wants to follow you." +msgstr "{username}s følgere" + +#: sessions/mastodon/session.py:69 +msgid "Please enter your instance URL." +msgstr "" + +#: sessions/mastodon/session.py:69 +msgid "Mastodon instance" +msgstr "" + +#: sessions/mastodon/session.py:80 +msgid "" +"We could not connect to your mastodon instance. Please verify that the " +"domain exists and the instance is accessible via a web browser." +msgstr "" + +# | msgid "&Report an error" +#: sessions/mastodon/session.py:80 +#, fuzzy +msgid "Instance error" +msgstr "&Rapporter en fejl" + +#: sessions/mastodon/session.py:85 +msgid "Enter the verification code" +msgstr "" + +# | msgid "Authorization" +#: sessions/mastodon/session.py:85 +#, fuzzy +msgid "PIN code authorization" +msgstr "Godkendelse" + +#: sessions/mastodon/session.py:94 +msgid "" +"We could not authorice your mastodon account to be used in TWBlue. This " +"might be caused due to an incorrect verification code. Please try to add " +"the session again." +msgstr "" + +# | msgid "Authorization" +#: sessions/mastodon/session.py:94 +#, fuzzy +msgid "Authorization error" +msgstr "Godkendelse" + +#: sessions/mastodon/session.py:215 +#, python-format +msgid "%s succeeded." +msgstr "%s lykkedes." + +#: sessions/mastodon/templates.py:18 +msgid "$display_name, $text $image_descriptions $date. $source" +msgstr "" + +#: sessions/mastodon/templates.py:19 +msgid "Dm to $recipient_display_name, $text $date" +msgstr "" + +#: sessions/mastodon/templates.py:20 +msgid "" +"$display_name (@$screen_name). $followers followers, $following " +"following, $posts posts. Joined $created_at." +msgstr "" + +#: sessions/mastodon/templates.py:21 +msgid "$display_name $text, $date" +msgstr "" + +#: sessions/mastodon/templates.py:34 +#, python-brace-format +msgid "Content warning: {}" +msgstr "" + +#: sessions/mastodon/templates.py:45 +#, fuzzy, python-brace-format +msgid "Media description: {}" +msgstr "Billedbeskrivelse" + +# | msgid "Followers" +#: sessions/mastodon/templates.py:82 wxUI/dialogs/mastodon/postDialogs.py:49 +#, fuzzy +msgid "Followers only" +msgstr "Følgere" + +#: sessions/mastodon/templates.py:94 +#, fuzzy +msgid "Pinned." +msgstr "Kopieret" + +#: sessions/mastodon/templates.py:157 +#, python-brace-format +msgid "has posted: {status}" +msgstr "" + +#: sessions/mastodon/templates.py:159 +#, python-brace-format +msgid "has mentioned you: {status}" +msgstr "" + +#: sessions/mastodon/templates.py:161 +#, python-brace-format +msgid "has boosted: {status}" +msgstr "" + +#: sessions/mastodon/templates.py:163 +#, python-brace-format +msgid "has added to favorites: {status}" +msgstr "" + +#: sessions/mastodon/templates.py:165 +#, python-brace-format +msgid "has updated a status: {status}" +msgstr "" + +# | msgid "{0} is following you." +#: sessions/mastodon/templates.py:167 +#, fuzzy +msgid "has followed you." +msgstr "{0} følger dig." + +# | msgid "Remove client" +#: sessions/mastodon/templates.py:169 +#, fuzzy +msgid "has joined the instance." +msgstr "Fjern klient" + +# | msgid "{0} is following you." +#: sessions/mastodon/templates.py:173 +#, fuzzy +msgid "wants to follow you." +msgstr "{0} følger dig." + +#: update/utils.py:29 +#, python-format +msgid "%d day, " +msgstr "%d dag, " + +#: update/utils.py:31 +#, python-format +msgid "%d days, " +msgstr "%d dage, " + +#: update/utils.py:33 +#, python-format +msgid "%d hour, " +msgstr "%d time, " + +#: update/utils.py:35 +#, python-format +msgid "%d hours, " +msgstr "%d timer, " + +#: update/utils.py:37 +#, python-format +msgid "%d minute, " +msgstr "%d minut, " + +#: update/utils.py:39 +#, python-format +msgid "%d minutes, " +msgstr "%d minutter, " + +#: update/utils.py:41 +#, python-format +msgid "%s second" +msgstr "%s sekund" + +#: update/utils.py:43 +#, python-format +msgid "%s seconds" +msgstr "%s sekunder" + +#: update/wxUpdater.py:11 +#, python-format +msgid "" +"There's a new %s version available, released on %s. Would you like to " +"download it now?\n" +"\n" +" %s version: %s\n" +"\n" +"Changes:\n" +"%s" +msgstr "" +"Der er en ny %s version tilgængelig, udgivet den %s. Vil du hente den nu?" +"\n" +"\n" +" %s version: %s\n" +"\n" +"Ændringer:\n" +"%s" + +# | msgid "" +# | "There's a new %s version available, released on %s. Would you like to " +# | "download it now?\n" +# | "\n" +# | " %s version: %s\n" +# | "Changes:\n" +# | "%s" +#: update/wxUpdater.py:14 +#, fuzzy, python-format +msgid "" +"There's a new %s version available, released on %s. Updates are not " +"automatic in Windows 7, so you would need to visit TWBlue's download " +"website to get the latest version.\n" +"\n" +" %s version: %s\n" +"\n" +"Changes:\n" +"%s" +msgstr "" +"Der er en ny %s version tilgængelig, udgivet den %s. Vil du hente den nu?" +"\n" +"\n" +" %s version: %s\n" +"\n" +"Ændringer:\n" +"%s" + +#: update/wxUpdater.py:16 +#, python-format +msgid "New version for %s" +msgstr "Ny version for %s" + +#: update/wxUpdater.py:23 +msgid "Download in Progress" +msgstr "Download i gang" + +#: update/wxUpdater.py:23 +msgid "Downloading the new version..." +msgstr "Henter den nye version..." + +#: update/wxUpdater.py:33 +#, python-format +msgid "Updating... %s of %s" +msgstr "Opdaterer... %s af %s" + +#: update/wxUpdater.py:36 +msgid "" +"The update has been downloaded and installed successfully. Press OK to " +"continue." +msgstr "" +"Opdateringen er blevet downloadet og installeret med succes. Tryk på OK " +"for at fortsætte." + +#: update/wxUpdater.py:36 +msgid "Done!" +msgstr "Færdig!" + +#: wxUI/commonMessageDialogs.py:6 +#, python-brace-format +msgid "Do you really want to close {0}?" +msgstr "Vil du virkelig lukke {0}?" + +#: wxUI/commonMessageDialogs.py:6 +msgid "Exit" +msgstr "Afslut" + +#: wxUI/commonMessageDialogs.py:10 +#, python-brace-format +msgid " {0} must be restarted for these changes to take effect." +msgstr "{0} skal genstartes for at disse ændringer træder i kraft." + +#: wxUI/commonMessageDialogs.py:10 +#, python-brace-format +msgid "Restart {0} " +msgstr "Genstart {0}" + +#: wxUI/commonMessageDialogs.py:13 +msgid "" +"Are you sure you want to delete this user from the database? This user " +"will not appear in autocomplete results anymore." +msgstr "" +"Er du sikker på, at du vil slette denne bruger fra databasen? Denne " +"bruger vil ikke længere blive vist i autofuldførende resultater." + +#: wxUI/commonMessageDialogs.py:13 +msgid "Confirm" +msgstr "Bekræft" + +#: wxUI/commonMessageDialogs.py:16 +msgid "" +"Do you really want to empty this buffer? It's items will be removed from" +" the list but not from Twitter" +msgstr "" +"Vil du virkelig tømme denne buffer? Bufferens emner vil blive fjernet fra" +" listen, men ikke fra Twitter" + +#: wxUI/commonMessageDialogs.py:16 wxUI/dialogs/mastodon/dialogs.py:31 +msgid "Empty buffer" +msgstr "Tøm buffer" + +#: wxUI/commonMessageDialogs.py:20 +msgid "Do you really want to destroy this buffer?" +msgstr "Vil du virkelig ødelægge denne buffer?" + +#: wxUI/commonMessageDialogs.py:23 +msgid "That user does not exist" +msgstr "Denne bruger eksisterer ikke" + +#: wxUI/commonMessageDialogs.py:26 +msgid "A timeline for this user already exists. You can't open another" +msgstr "" +"En tidslinje for denne bruger eksisterer allerede. Du kan ikke åbne en " +"anden." + +#: wxUI/commonMessageDialogs.py:26 +msgid "Existing timeline" +msgstr "Eksisterende tidslinje" + +#: wxUI/commonMessageDialogs.py:29 +#, python-brace-format +msgid "" +"If you like {0} we need your help to keep it going. Help us by donating " +"to the project. This will help us pay for the server, the domain and some" +" other things to ensure that {0} will be actively maintained. Your " +"donation will give us the means to continue the development of {0}, and " +"to keep {0} free. Would you like to donate now?" +msgstr "" +"Hvis du kan lide {0}, har vi brug for din hjælp til at holde projektet i " +"gang. Hjælp os ved at donere til projektet. Dette vil hjælpe os med at " +"betale for serveren, domænet og nogle andre ting for at sikre, at {0} " +"bliver aktivt vedligeholdt. Din donation vil give os midler til at " +"fortsætte udviklingen af {0} og sikre, at {0} forbliver gratis. Vil du " +"gerne donere nu?" + +#: wxUI/commonMessageDialogs.py:29 +msgid "We need your help" +msgstr "Vi har brug for din hjælp" + +#: wxUI/commonMessageDialogs.py:33 wxUI/dialogs/mastodon/postDialogs.py:207 +msgid "Information" +msgstr "Information" + +#: wxUI/commonMessageDialogs.py:36 +msgid "The configuration file is invalid." +msgstr "" + +#: wxUI/commonMessageDialogs.py:39 +#, python-brace-format +msgid "" +"{0} quit unexpectedly the last time it was run. If the problem persists, " +"please report it to the {0} developers." +msgstr "" +"{0} afsluttede uventet sidste gang, programmet blev kørt. Hvis problemet " +"fortsætter, skal du rapportere det til udviklerne af {0}." + +#: wxUI/commonMessageDialogs.py:39 +msgid "Warning" +msgstr "Advarsel" + +#: wxUI/commonMessageDialogs.py:45 +#, python-brace-format +msgid "Sorry, you can't update while running {} from source." +msgstr "" + +#: wxUI/commonMessageDialogs.py:49 +msgid "the provided instance is invalid. Please try again." +msgstr "" + +#: wxUI/commonMessageDialogs.py:49 +#, fuzzy +msgid "Invalid instance" +msgstr "Ugyldigt tastetryk" + +#: wxUI/commonMessageDialogs.py:52 +msgid "" +"TWBlue was unable to add or update the filter with the specified " +"settings. Please try again." +msgstr "" + +#: wxUI/commonMessageDialogs.py:55 +msgid "" +"TWBlue was unable to load your filters from the instance. Please try " +"again." +msgstr "" + +#: wxUI/commonMessageDialogs.py:58 +#, fuzzy +msgid "Do you really want to delete this filter ?" +msgstr "Vil du slette denne konto?" + +#: wxUI/commonMessageDialogs.py:58 +#, fuzzy +msgid "Delete filter" +msgstr "Opret et nyt &filter" + +#: wxUI/commonMessageDialogs.py:61 +msgid "TWBlue was unable to remove the filter you specified. Please try again." +msgstr "" + +#: wxUI/sysTrayIcon.py:36 wxUI/view.py:25 +msgid "&Global settings" +msgstr "&Globale indstillinger" + +#: wxUI/sysTrayIcon.py:37 wxUI/view.py:24 +msgid "Account se&ttings" +msgstr "&Kontoindstillinger" + +#: wxUI/sysTrayIcon.py:39 +msgid "&Show / hide" +msgstr "vis/skjul" + +#: wxUI/sysTrayIcon.py:40 wxUI/view.py:74 +msgid "&Documentation" +msgstr "&Dokumentation" + +#: wxUI/sysTrayIcon.py:41 +msgid "Check for &updates" +msgstr "&Søg efter opdateringer" + +#: wxUI/sysTrayIcon.py:42 +msgid "&Exit" +msgstr "&Afslut" + +#: wxUI/view.py:16 +msgid "&Manage accounts" +msgstr "&Kontihåndtering" + +#: wxUI/view.py:17 +msgid "&Update profile" +msgstr "&Opdater profil" + +#: wxUI/view.py:18 +msgid "&Hide window" +msgstr "&Skjul vindue" + +#: wxUI/view.py:20 +msgid "&Lists manager" +msgstr "&Listemanager" + +#: wxUI/view.py:23 +msgid "&Edit keystrokes" +msgstr "&Rediger tastetryk" + +#: wxUI/view.py:26 +msgid "E&xit" +msgstr "&Afslut" + +# | msgid "Remove from list" +#: wxUI/view.py:34 +#, fuzzy +msgid "&Remove from favorites" +msgstr "Fjern fra liste" + +#: wxUI/view.py:47 +msgid "&Add to list" +msgstr "&Tilføj til liste" + +#: wxUI/view.py:48 +msgid "R&emove from list" +msgstr "&Fjern fra liste" + +#: wxUI/view.py:49 +msgid "Show user &profile" +msgstr "Vis bruger&profil" + +#: wxUI/view.py:50 +msgid "V&iew likes" +msgstr "V&is synes godt om" + +#: wxUI/view.py:54 +msgid "&Update buffer" +msgstr "&Opdater buffer" + +#: wxUI/dialogs/mastodon/communityTimeline.py:9 wxUI/view.py:55 +msgid "Create community timeline" +msgstr "" + +#: wxUI/view.py:56 +msgid "New &trending topics buffer..." +msgstr "Ny &trending emner buffer..." + +#: wxUI/view.py:59 +msgid "Find a string in the currently focused buffer..." +msgstr "Find en streng i den aktuelt fokuserede buffer..." + +#: wxUI/view.py:60 +msgid "&Load previous items" +msgstr "&Indlæs tidligere emner" + +#: wxUI/dialogs/mastodon/userActions.py:21 wxUI/view.py:62 +msgid "&Mute" +msgstr "&Dæmp" + +#: wxUI/view.py:63 +msgid "&Autoread" +msgstr "&Automatisk læsning" + +#: wxUI/view.py:64 +msgid "&Clear buffer" +msgstr "&Ryd buffer" + +#: wxUI/view.py:65 +msgid "&Destroy" +msgstr "&Ødelæg" + +#: wxUI/view.py:69 +msgid "&Seek back 5 seconds" +msgstr "&Søg tilbage 5 sekunder" + +#: wxUI/view.py:70 +msgid "&Seek forward 5 seconds" +msgstr "&Søg fremad 5 sekunder" + +#: wxUI/view.py:75 +msgid "Sounds &tutorial" +msgstr "&Hør lyde" + +#: wxUI/view.py:76 +msgid "&What's new in this version?" +msgstr "&Hvad er nyt i denne version?" + +#: wxUI/view.py:77 +msgid "&Check for updates" +msgstr "&Søg efter opdateringer" + +#: wxUI/view.py:78 +msgid "&Report an error" +msgstr "&Rapporter en fejl" + +#: wxUI/view.py:79 +#, python-brace-format +msgid "{0}'s &website" +msgstr "{0}s &websted" + +#: wxUI/view.py:80 +msgid "Get soundpacks for TWBlue" +msgstr "Hent lydpakker til TWBlue" + +#: wxUI/view.py:81 +#, python-brace-format +msgid "About &{0}" +msgstr "&Om {0}" + +#: wxUI/view.py:84 +msgid "&Application" +msgstr "&Applikation" + +#: wxUI/view.py:85 +msgid "&Tweet" +msgstr "&Tweet" + +#: wxUI/dialogs/mastodon/userActions.py:10 wxUI/view.py:86 +msgid "&User" +msgstr "&Bruger" + +#: wxUI/view.py:87 +msgid "&Buffer" +msgstr "&Buffer" + +#: wxUI/view.py:88 +msgid "&Audio" +msgstr "&Lyd" + +#: wxUI/view.py:89 +msgid "&Help" +msgstr "&Hjælp" + +#: wxUI/view.py:175 +msgid "Address" +msgstr "Adresse" + +#: wxUI/view.py:206 +#, python-brace-format +msgid "Your {0} version is up to date" +msgstr "Din {0} version er opdateret" + +#: wxUI/view.py:206 +msgid "Update" +msgstr "Opdatér" + +#: wxUI/buffers/panels.py:12 wxUI/buffers/panels.py:20 +msgid "Login" +msgstr "Log ind" + +#: wxUI/buffers/panels.py:14 +msgid "Log in automatically" +msgstr "Log ind automatisk" + +#: wxUI/buffers/panels.py:22 +msgid "Logout" +msgstr "Log ud" + +#: wxUI/buffers/mastodon/base.py:11 +#: wxUI/buffers/mastodon/conversationList.py:11 wxUI/buffers/mastodon/user.py:8 +#: wxUI/dialogs/mastodon/userTimeline.py:10 wxUI/dialogs/userAliasDialogs.py:14 +msgid "User" +msgstr "Bruger" + +#: wxUI/buffers/mastodon/base.py:11 +#: wxUI/buffers/mastodon/conversationList.py:11 +#: wxUI/buffers/mastodon/notifications.py:11 +#: wxUI/dialogs/mastodon/postDialogs.py:37 +#: wxUI/dialogs/mastodon/postDialogs.py:272 +msgid "Text" +msgstr "Tekst" + +#: wxUI/buffers/mastodon/base.py:11 +#: wxUI/buffers/mastodon/conversationList.py:11 +#: wxUI/buffers/mastodon/notifications.py:11 +#: wxUI/dialogs/mastodon/postDialogs.py:216 +msgid "Date" +msgstr "Dato" + +#: wxUI/buffers/mastodon/base.py:11 +#: wxUI/buffers/mastodon/conversationList.py:11 +msgid "Client" +msgstr "Klient" + +#: wxUI/buffers/mastodon/base.py:27 +msgid "Favorite" +msgstr "" + +#: wxUI/buffers/mastodon/base.py:28 +msgid "Bookmark" +msgstr "" + +#: wxUI/buffers/mastodon/base.py:29 +msgid "Direct message" +msgstr "Direkte besked" + +#: wxUI/buffers/mastodon/notifications.py:23 +#: wxUI/dialogs/mastodon/dialogs.py:23 +msgid "Dismiss" +msgstr "" + +#: wxUI/buffers/mastodon/user.py:19 wxUI/dialogs/userAliasDialogs.py:48 +#, fuzzy +msgid "Actions" +msgstr "Handling" + +# | msgid "Direct Messages" +#: wxUI/buffers/mastodon/user.py:20 +#, fuzzy +msgid "Message" +msgstr "Direkte Beskeder" + +#: wxUI/dialogs/configuration.py:15 +#, fuzzy +msgid "&Language" +msgstr "Sprog" + +#: wxUI/dialogs/configuration.py:22 +#, fuzzy, python-brace-format +msgid "&Ask before exiting {0}" +msgstr "Spørg før du afslutter {0}" + +#: wxUI/dialogs/configuration.py:24 +#, fuzzy +msgid "&Disable Streaming functions" +msgstr "Deaktivér streaming-funktionalitet" + +#: wxUI/dialogs/configuration.py:27 +#, fuzzy +msgid "&Buffer update interval, in minutes" +msgstr "Buffer-opdateringsinterval, i minutter" + +#: wxUI/dialogs/configuration.py:33 +#, fuzzy, python-brace-format +msgid "Pla&y a sound when {0} launches" +msgstr "Afspil en lyd, når {0} starter" + +#: wxUI/dialogs/configuration.py:35 +#, fuzzy, python-brace-format +msgid "Sp&eak a message when {0} launches" +msgstr "Sig en besked, når {0} starter" + +#: wxUI/dialogs/configuration.py:37 +#, fuzzy +msgid "&Use invisible interface's keyboard shortcuts while GUI is visible" +msgstr "" +"Brug tastaturgenveje for den usynlige grænseflade, mens " +"brugergrænsefladen er synlig" + +#: wxUI/dialogs/configuration.py:39 +#, fuzzy +msgid "A&ctivate Sapi5 when any other screen reader is not being run" +msgstr "Aktivér Sapi5, når en anden skærmlæser ikke køres" + +#: wxUI/dialogs/configuration.py:41 +#, fuzzy +msgid "&Hide GUI on launch" +msgstr "Skjul brugergrænsefladen ved opstart" + +#: wxUI/dialogs/configuration.py:43 +msgid "&Read long posts in GUI" +msgstr "" + +#: wxUI/dialogs/configuration.py:46 +#, fuzzy +msgid "&Keymap" +msgstr "Sæt af tastaturkommandoer" + +#: wxUI/dialogs/configuration.py:51 +#, fuzzy, python-brace-format +msgid "Check for u&pdates when {0} launches" +msgstr "Søg efter opdateringer, når {0} starter" + +#: wxUI/dialogs/configuration.py:61 +#, fuzzy +msgid "Proxy &type: " +msgstr "Proxy- type:" + +#: wxUI/dialogs/configuration.py:68 +#, fuzzy +msgid "Proxy s&erver: " +msgstr "Proxyserver:" + +#: wxUI/dialogs/configuration.py:74 +#, fuzzy +msgid "&Port: " +msgstr "Port:" + +#: wxUI/dialogs/configuration.py:80 +#, fuzzy +msgid "&User: " +msgstr "Bruger:" + +#: wxUI/dialogs/configuration.py:86 +#, fuzzy +msgid "P&assword: " +msgstr "Adgangskode:" + +#: wxUI/dialogs/configuration.py:98 +#, fuzzy +msgid "Enable automatic s&peech feedback" +msgstr "Aktivér automatisk talefeedback" + +#: wxUI/dialogs/configuration.py:100 +#, fuzzy +msgid "Enable automatic &Braille feedback" +msgstr "Aktiver automatisk punktfeedback" + +#: wxUI/dialogs/configuration.py:108 +msgid "Buffer" +msgstr "Buffer" + +#: wxUI/dialogs/configuration.py:108 +msgid "Status" +msgstr "Status" + +#: wxUI/dialogs/configuration.py:111 +#, fuzzy +msgid "S&how/hide" +msgstr "Vis/skjul" + +#: wxUI/dialogs/configuration.py:112 +#, fuzzy +msgid "Move &up" +msgstr "Flyt op" + +#: wxUI/dialogs/configuration.py:113 +#, fuzzy +msgid "Move &down" +msgstr "Flyt ned" + +#: wxUI/dialogs/configuration.py:123 wxUI/dialogs/configuration.py:188 +#: wxUI/dialogs/configuration.py:191 wxUI/dialogs/configuration.py:196 +msgid "Show" +msgstr "Vis" + +#: wxUI/dialogs/configuration.py:125 wxUI/dialogs/configuration.py:135 +#: wxUI/dialogs/configuration.py:159 wxUI/dialogs/configuration.py:189 +msgid "Hide" +msgstr "Skjul" + +#: wxUI/dialogs/configuration.py:133 wxUI/dialogs/configuration.py:157 +msgid "Select a buffer first." +msgstr "Vælg først en buffer." + +#: wxUI/dialogs/configuration.py:136 wxUI/dialogs/configuration.py:160 +msgid "The buffer is hidden, show it first." +msgstr "Bufferen er skjult, vis den først." + +#: wxUI/dialogs/configuration.py:139 +msgid "The buffer is already at the top of the list." +msgstr "Bufferen er allerede øverst på listen." + +#: wxUI/dialogs/configuration.py:163 +msgid "The buffer is already at the bottom of the list." +msgstr "Bufferen er allerede nederst på listen." + +#: wxUI/dialogs/configuration.py:205 +msgid "&LibreTranslate API URL: " +msgstr "" + +#: wxUI/dialogs/configuration.py:211 +msgid "LibreTranslate API &Key (optional): " +msgstr "" + +#: wxUI/dialogs/configuration.py:217 +msgid "&DeepL API Key: " +msgstr "" + +#: wxUI/dialogs/configuration.py:231 +#, python-brace-format +msgid "{0} preferences" +msgstr "{0} indstillinger" + +#: wxUI/dialogs/configuration.py:237 wxUI/dialogs/mastodon/configuration.py:144 +msgid "General" +msgstr "Generelt" + +#: wxUI/dialogs/configuration.py:242 +msgid "Proxy" +msgstr "Proxy" + +#: wxUI/dialogs/configuration.py:246 +#, fuzzy +msgid "Translation services" +msgstr "Oversat" + +#: wxUI/dialogs/configuration.py:251 wxUI/dialogs/mastodon/configuration.py:170 +#, fuzzy +msgid "&Save" +msgstr "Gem" + +#: wxUI/dialogs/configuration.py:253 +#: wxUI/dialogs/mastodon/communityTimeline.py:27 +#: wxUI/dialogs/mastodon/configuration.py:172 +#: wxUI/dialogs/mastodon/search.py:26 +#: wxUI/dialogs/mastodon/showUserProfile.py:170 +#: wxUI/dialogs/mastodon/updateProfile.py:132 +#: wxUI/dialogs/mastodon/userActions.py:38 +#: wxUI/dialogs/mastodon/userTimeline.py:32 +msgid "&Close" +msgstr "&Luk" + +#: wxUI/dialogs/find.py:13 +msgid "Find in current buffer" +msgstr "Find i den aktuelle buffer" + +#: wxUI/dialogs/find.py:14 +msgid "String" +msgstr "Streng" + +#: wxUI/dialogs/find.py:23 wxUI/dialogs/mastodon/showUserProfile.py:33 +msgid "Cancel" +msgstr "Annuller" + +#: wxUI/dialogs/templateDialogs.py:8 +msgid "Edit Template" +msgstr "" + +#: wxUI/dialogs/templateDialogs.py:13 +msgid "Edit template" +msgstr "" + +#: wxUI/dialogs/templateDialogs.py:17 +#, fuzzy +msgid "Available variables" +msgstr "Utilgængelig" + +#: wxUI/dialogs/templateDialogs.py:29 +msgid "Restore template" +msgstr "" + +#: wxUI/dialogs/templateDialogs.py:48 +#, python-brace-format +msgid "Restored template to {}." +msgstr "" + +#: wxUI/dialogs/templateDialogs.py:52 +msgid "" +"the template you have specified include variables that do not exists for " +"the object. Please fix the template and try again. For your reference, " +"you can see a list of all available variables in the variables list while" +" editing your template." +msgstr "" + +#: wxUI/dialogs/templateDialogs.py:52 +#, fuzzy +msgid "Invalid template" +msgstr "Ugyldigt tastetryk" + +#: wxUI/dialogs/urlList.py:6 +msgid "Select URL" +msgstr "Vælg URL" + +#: wxUI/dialogs/mastodon/userActions.py:13 +#: wxUI/dialogs/mastodon/userTimeline.py:13 wxUI/dialogs/userAliasDialogs.py:13 +msgid "&Autocomplete users" +msgstr "&Autofuldfør brugere" + +#: wxUI/dialogs/userAliasDialogs.py:18 +#, fuzzy +msgid "Alias" +msgstr "altid" + +#: wxUI/dialogs/userAliasDialogs.py:41 +#, fuzzy +msgid "Edit user aliases" +msgstr "Redigerer {0} brugers database" + +#: wxUI/dialogs/mastodon/search.py:19 wxUI/dialogs/userAliasDialogs.py:43 +msgid "Users" +msgstr "Brugere" + +#: wxUI/dialogs/userAliasDialogs.py:50 +#, fuzzy +msgid "Add alias" +msgstr "Tilføj til liste" + +#: wxUI/dialogs/userAliasDialogs.py:51 +msgid "Adds a new user alias" +msgstr "" + +#: wxUI/dialogs/userAliasDialogs.py:54 +#, fuzzy +msgid "Edit the currently focused user Alias." +msgstr "Interager med den aktuelt fokuserede tweet." + +#: wxUI/dialogs/mastodon/filters/create_filter.py:26 +#: wxUI/dialogs/mastodon/filters/manage_filters.py:24 +#: wxUI/dialogs/userAliasDialogs.py:57 +msgid "Remove" +msgstr "Fjern" + +#: wxUI/dialogs/userAliasDialogs.py:58 +#, fuzzy +msgid "Remove the currently focused user alias." +msgstr "Find en streng i den aktuelt fokuserede buffer..." + +#: wxUI/dialogs/userAliasDialogs.py:82 +#, fuzzy +msgid "Are you sure you want to delete this user alias?" +msgstr "Er du sikker på, at du vil slette denne liste ?" + +#: wxUI/dialogs/userAliasDialogs.py:82 +#, fuzzy +msgid "Remove user alias" +msgstr "Fjern bruger" + +#: wxUI/dialogs/userAliasDialogs.py:93 +#, fuzzy +msgid "User alias" +msgstr "Brugerdetaljer" + +#: wxUI/dialogs/userList.py:27 +#, fuzzy +msgid "View profile" +msgstr "&Opdater profil" + +#: wxUI/dialogs/mastodon/communityTimeline.py:10 +#, fuzzy +msgid "Community URL" +msgstr "Kontrol" + +#: wxUI/dialogs/mastodon/communityTimeline.py:16 +#: wxUI/dialogs/mastodon/userTimeline.py:18 +msgid "Buffer type" +msgstr "Buffertype" + +#: wxUI/dialogs/mastodon/communityTimeline.py:17 +#, fuzzy +msgid "&Local timeline" +msgstr "Tidslinjer" + +#: wxUI/dialogs/mastodon/communityTimeline.py:18 +#, fuzzy +msgid "&Federated Timeline" +msgstr "{username}s tidslinje" + +#: wxUI/dialogs/mastodon/communityTimeline.py:25 +#: wxUI/dialogs/mastodon/search.py:24 +#: wxUI/dialogs/mastodon/updateProfile.py:130 +#: wxUI/dialogs/mastodon/userActions.py:36 +#: wxUI/dialogs/mastodon/userTimeline.py:30 +msgid "&OK" +msgstr "&OK" + +#: wxUI/dialogs/mastodon/configuration.py:14 +#, fuzzy +msgid "User autocompletion settings" +msgstr "Autofuldførelsesindstillinger..." + +#: wxUI/dialogs/mastodon/configuration.py:15 +msgid "" +"Scan acc&ount and add followers and following users to the user " +"autocompletion database" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:16 +#, fuzzy +msgid "&Manage autocompletion database" +msgstr "Administrer autofuldførelsesdatabase" + +#: wxUI/dialogs/mastodon/configuration.py:21 +#, fuzzy +msgid "&Disable Streaming API endpoints" +msgstr "Deaktivér streaming-funktionalitet" + +#: wxUI/dialogs/mastodon/configuration.py:23 +#, fuzzy +msgid "&Relative timestamps" +msgstr "Relative tidsstempler" + +#: wxUI/dialogs/mastodon/configuration.py:25 +msgid "" +"R&ead preferences from instance (default visibility when publishing and " +"displaying sensitive content)" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:28 +#, fuzzy +msgid "&Items on each API call" +msgstr "Emner ved hvert API-opkald" + +# | msgid "" +# | "Inverted buffers: The newest tweets will be shown at the beginning while +# " +# | "the oldest at the end" +#: wxUI/dialogs/mastodon/configuration.py:34 +#, fuzzy +msgid "" +"I&nverted buffers: The newest items will be shown at the beginning while " +"the oldest at the end" +msgstr "" +"Inverterede buffere: De nyeste tweets vil blive vist i toppen, mens de " +"ældste vises i bunden" + +#: wxUI/dialogs/mastodon/configuration.py:36 +msgid "&Ask confirmation before boosting a post" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:38 +#, fuzzy +msgid "S&how screen names instead of full names" +msgstr "Vis skærmnavne i stedet for fulde navne" + +#: wxUI/dialogs/mastodon/configuration.py:40 +msgid "Hide e&mojis in usernames" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:42 +#, fuzzy +msgid "" +"&Number of items per buffer to cache in database (0 to disable caching, " +"blank for unlimited)" +msgstr "" +"Antal emner pr. Buffer til cache i databasen (0 for at deaktivere " +"caching, blank for ubegrænset)" + +#: wxUI/dialogs/mastodon/configuration.py:46 +msgid "" +"&Load cache for items in memory (much faster in big datasets but requires" +" more RAM)" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:53 +#, python-brace-format +msgid "Edit template for &posts. Current template: {}" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:55 +#, python-brace-format +msgid "Edit template for c&onversations. Current template: {}" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:57 +#, python-brace-format +msgid "Edit template for p&ersons. Current template: {}" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:65 +#, fuzzy +msgid "&Volume" +msgstr "Lydstyrke" + +#: wxUI/dialogs/mastodon/configuration.py:76 +#, fuzzy +msgid "S&ession mute" +msgstr "Sessiondæmpning" + +#: wxUI/dialogs/mastodon/configuration.py:78 +#, fuzzy +msgid "&Output device" +msgstr "Output- enhed" + +#: wxUI/dialogs/mastodon/configuration.py:85 +#, fuzzy +msgid "&Input device" +msgstr "Input- enhed" + +#: wxUI/dialogs/mastodon/configuration.py:93 +#, fuzzy +msgid "Sound &pack" +msgstr "Lydpakke" + +# | msgid "Indicate audio tweets with sound" +#: wxUI/dialogs/mastodon/configuration.py:99 +#, fuzzy +msgid "Indicate &audio or video in posts with sound" +msgstr "Angiv lydtweets med en lyd" + +# | msgid "Indicate tweets containing images with sound" +#: wxUI/dialogs/mastodon/configuration.py:101 +#, fuzzy +msgid "Indicate posts containing i&mages with sound" +msgstr "Angiv tweets der indeholder billeder med en lyd" + +#: wxUI/dialogs/mastodon/configuration.py:124 +#, fuzzy +msgid "&Language for OCR" +msgstr "Sprog til tekstgenkendelse" + +#: wxUI/dialogs/mastodon/configuration.py:149 +msgid "Feedback" +msgstr "Feedback" + +#: wxUI/dialogs/mastodon/configuration.py:153 +msgid "Buffers" +msgstr "Buffere" + +#: wxUI/dialogs/mastodon/configuration.py:157 +msgid "Templates" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:161 +msgid "Sound" +msgstr "Lyd" + +#: wxUI/dialogs/mastodon/configuration.py:165 +msgid "Extras" +msgstr "Ekstra" + +# | msgid "Would you like to add a comment to this tweet?" +#: wxUI/dialogs/mastodon/dialogs.py:7 +#, fuzzy +msgid "Would you like to share this post?" +msgstr "Vil du gerne tilføje en kommentar til dette tweet?" + +# | msgid "" +# | "Do you really want to delete this tweet? It will be deleted from Twitter +# " +# | "as well." +#: wxUI/dialogs/mastodon/dialogs.py:15 +#, fuzzy +msgid "" +"Do you really want to delete this post? It will be deleted from the " +"instance as well." +msgstr "Vil du virkelig slette dette tweet? Den bliver også slettet fra Twitter." + +#: wxUI/dialogs/mastodon/dialogs.py:15 +msgid "Delete" +msgstr "Slet" + +#: wxUI/dialogs/mastodon/dialogs.py:23 +msgid "" +"Are you sure you want to dismiss this notification? If you dismiss a " +"mention notification, it also disappears from your mentions buffer. The " +"post is not going to be deleted from the instance, though." +msgstr "" + +# | msgid "" +# | "Do you really want to empty this buffer? It's items will be removed from +# " +# | "the list but not from Twitter" +#: wxUI/dialogs/mastodon/dialogs.py:31 +#, fuzzy +msgid "" +"Do you really want to empty this buffer? It's items will be removed from" +" the list but not from the instance" +msgstr "" +"Vil du virkelig tømme denne buffer? Bufferens emner vil blive fjernet fra" +" listen, men ikke fra Twitter" + +# | msgid "This user has no tweets. {0} can't create a timeline." +#: wxUI/dialogs/mastodon/dialogs.py:38 +#, fuzzy, python-brace-format +msgid "This user has no posts. {0} can't create a timeline." +msgstr "Denne bruger har ingen tweets. {0} kan ikke oprette en tidslinje." + +# | msgid "This user has no favorited tweets. {0} can't create a timeline." +#: wxUI/dialogs/mastodon/dialogs.py:43 +#, fuzzy, python-brace-format +msgid "This user has no favorited posts. {0} can't create a timeline." +msgstr "" +"Denne bruger har ingen foretrukne tweets. {0} kan ikke oprette en " +"tidslinje." + +# | msgid "This user has no followers. {0} can't create a timeline." +#: wxUI/dialogs/mastodon/dialogs.py:48 +#, fuzzy, python-brace-format +msgid "This user has no followers yet. {0} can't create a timeline." +msgstr "Denne bruger har ingen følgere. {0} kan ikke oprette en tidslinje." + +# | msgid "This user has no followers. {0} can't create a timeline." +#: wxUI/dialogs/mastodon/dialogs.py:53 +#, fuzzy, python-brace-format +msgid "This user is not following anyone. {0} can't create a timeline." +msgstr "Denne bruger har ingen følgere. {0} kan ikke oprette en tidslinje." + +#: wxUI/dialogs/mastodon/dialogs.py:60 +#, python-brace-format +msgid "The focused item has no user in it. {} ca't open a user profile" +msgstr "" + +# | msgid "R&emove from list" +#: wxUI/dialogs/mastodon/menus.py:13 wxUI/dialogs/mastodon/menus.py:41 +#, fuzzy +msgid "R&emove from favorites" +msgstr "&Fjern fra liste" + +#: wxUI/dialogs/mastodon/menus.py:15 wxUI/dialogs/mastodon/menus.py:43 +msgid "&Open URL" +msgstr "Åbn &URL" + +# | msgid "Search on twitter" +#: wxUI/dialogs/mastodon/menus.py:17 wxUI/dialogs/mastodon/menus.py:47 +#, fuzzy +msgid "&Open in instance" +msgstr "Søg på twitter" + +#: wxUI/dialogs/mastodon/menus.py:19 wxUI/dialogs/mastodon/menus.py:45 +msgid "&Play audio" +msgstr "&Afspil lyd" + +#: wxUI/dialogs/mastodon/menus.py:23 wxUI/dialogs/mastodon/menus.py:51 +msgid "&Copy to clipboard" +msgstr "&Kopiér til udklipsholder" + +#: wxUI/dialogs/mastodon/menus.py:27 wxUI/dialogs/mastodon/menus.py:55 +msgid "&User actions..." +msgstr "&Brugerhandlinger…" + +#: wxUI/dialogs/mastodon/menus.py:53 +msgid "&Dismiss" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:20 +#: wxUI/dialogs/mastodon/postDialogs.py:38 +msgid "Attachments" +msgstr "Bilag" + +#: wxUI/dialogs/mastodon/postDialogs.py:24 +msgid "File" +msgstr "Fil" + +#: wxUI/dialogs/mastodon/postDialogs.py:25 +msgid "Type" +msgstr "Type" + +#: wxUI/dialogs/mastodon/postDialogs.py:26 +#: wxUI/dialogs/mastodon/postDialogs.py:141 +msgid "Description" +msgstr "beskrivelse" + +# | msgid "Remove client" +#: wxUI/dialogs/mastodon/postDialogs.py:28 +#, fuzzy +msgid "Remove Attachment" +msgstr "Fjern klient" + +#: wxUI/dialogs/mastodon/postDialogs.py:33 +msgid "Post in the thread" +msgstr "" + +# | msgid "Remove from list" +#: wxUI/dialogs/mastodon/postDialogs.py:40 +#, fuzzy +msgid "Remove post" +msgstr "Fjern fra liste" + +#: wxUI/dialogs/mastodon/postDialogs.py:47 +msgid "&Visibility" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:54 +#, fuzzy +msgid "Language" +msgstr "Sprog" + +#: wxUI/dialogs/mastodon/postDialogs.py:58 +msgid "A&dd" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:59 +msgid "S&ensitive content" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:64 +msgid "Content warning" +msgstr "" + +# | msgid "Add to list" +#: wxUI/dialogs/mastodon/postDialogs.py:71 +#, fuzzy +msgid "Add p&ost" +msgstr "Tilføj til liste" + +#: wxUI/dialogs/mastodon/postDialogs.py:75 +msgid "Auto&complete users" +msgstr "Auto&fuldfør brugere" + +# | msgid "Check &spelling..." +#: wxUI/dialogs/mastodon/postDialogs.py:77 +#, fuzzy +msgid "Check &spelling" +msgstr "Kontroller &stavning…" + +#: wxUI/dialogs/mastodon/postDialogs.py:79 +#, fuzzy +msgid "&Translate" +msgstr "Oversat" + +# | msgid "Tweet - %i characters " +#: wxUI/dialogs/mastodon/postDialogs.py:106 +#, fuzzy, python-brace-format +msgid "Post - {} characters" +msgstr "Tweet - %i tegn" + +#: wxUI/dialogs/mastodon/postDialogs.py:130 +msgid "Image" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:132 +#, fuzzy +msgid "Video" +msgstr "Skjul" + +# | msgid "&Audio" +#: wxUI/dialogs/mastodon/postDialogs.py:134 +#, fuzzy +msgid "Audio" +msgstr "&Lyd" + +#: wxUI/dialogs/mastodon/postDialogs.py:136 +msgid "Poll" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:141 +msgid "please provide a description" +msgstr "Giv en kort beskrivelse" + +#: wxUI/dialogs/mastodon/postDialogs.py:148 +msgid "Select the picture to be uploaded" +msgstr "Vælg det billede, der skal uploades" + +#: wxUI/dialogs/mastodon/postDialogs.py:148 +msgid "Image files (*.png, *.jpg, *.gif)|*.png; *.jpg; *.gif" +msgstr "Billedfiler (*.png, *.jpg, *.gif)|*.png; *.jpg; *.gif" + +#: wxUI/dialogs/mastodon/postDialogs.py:155 +#, fuzzy +msgid "Select the video to be uploaded" +msgstr "Vælg det billede, der skal uploades" + +# | msgid "Audio Files (*.mp3, *.ogg, *.wav)|*.mp3; *.ogg; *.wav" +#: wxUI/dialogs/mastodon/postDialogs.py:155 +#, fuzzy +msgid "Video files (*.mp4, *.mov, *.m4v, *.webm)| *.mp4; *.m4v; *.mov; *.webm" +msgstr "Lydfiler (*.mp3, *.ogg, *.wav)|*.mp3; *.ogg; *.wav" + +#: wxUI/dialogs/mastodon/postDialogs.py:162 +msgid "Select the audio file to be uploaded" +msgstr "Vælg den lydfil, der skal uploades" + +#: wxUI/dialogs/mastodon/postDialogs.py:162 +msgid "" +"Audio files (*.mp3, *.ogg, *.wav, *.flac, *.opus, *.aac, *.m4a, " +"*.3gp)|*.mp3; *.ogg; *.wav; *.flac; *.opus; *.aac; *.m4a; *.3gp" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:169 +msgid "" +"It is not possible to add more attachments. Please take into account that" +" You can add only a maximum of 4 images, or one audio, video or poll per" +" post. Please remove other attachments before continuing." +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:169 +#, fuzzy +msgid "Error adding attachment" +msgstr "Tilføj et bilag" + +#: wxUI/dialogs/mastodon/postDialogs.py:172 +msgid "" +"You can add a poll or media files. In order to add your poll, please " +"remove other attachments first." +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:172 +#, fuzzy +msgid "Error adding poll" +msgstr "Tilføj et bilag" + +# | msgid "Tweet - %i characters " +#: wxUI/dialogs/mastodon/postDialogs.py:177 +#, fuzzy, python-format +msgid "Post - %i characters " +msgstr "Tweet - %i tegn" + +#: wxUI/dialogs/mastodon/postDialogs.py:200 +msgid "Image description" +msgstr "Billedbeskrivelse" + +# | msgid "Private" +#: wxUI/dialogs/mastodon/postDialogs.py:210 +#, fuzzy +msgid "Privacy" +msgstr "Privat" + +#: wxUI/dialogs/mastodon/postDialogs.py:214 +#, fuzzy +msgid "Source" +msgstr "Kilde:" + +#: wxUI/dialogs/mastodon/postDialogs.py:222 +msgid "Boosts" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:224 +msgid "View users who boosted this post" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:231 +msgid "View users who favorited this post" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:239 +#, fuzzy +msgid "Copy link to clipboard" +msgstr "Kopiér til udklipsholder" + +#: wxUI/dialogs/mastodon/postDialogs.py:241 +#: wxUI/dialogs/mastodon/postDialogs.py:280 +msgid "Check &spelling..." +msgstr "Kontroller &stavning…" + +#: wxUI/dialogs/mastodon/postDialogs.py:242 +#: wxUI/dialogs/mastodon/postDialogs.py:281 +msgid "&Translate..." +msgstr "&Oversæt…" + +#: wxUI/dialogs/mastodon/postDialogs.py:243 +#: wxUI/dialogs/mastodon/postDialogs.py:282 +msgid "C&lose" +msgstr "&Luk" + +#: wxUI/dialogs/mastodon/postDialogs.py:294 +msgid "Add a poll" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:298 +msgid "Participation time" +msgstr "" + +# | msgid "%d minutes, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "5 minutes" +msgstr "%d minutter, " + +# | msgid "%d minutes, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "30 minutes" +msgstr "%d minutter, " + +# | msgid "%d hour, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "1 hour" +msgstr "%d time, " + +# | msgid "%d hours, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "6 hours" +msgstr "%d timer, " + +# | msgid "%d day, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "1 day" +msgstr "%d dag, " + +# | msgid "%d days, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "2 days" +msgstr "%d dage, " + +# | msgid "%d days, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "3 days" +msgstr "%d dage, " + +# | msgid "%d days, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "4 days" +msgstr "%d dage, " + +# | msgid "%d days, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "5 days" +msgstr "%d dage, " + +# | msgid "%d days, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "6 days" +msgstr "%d dage, " + +# | msgid "%d days, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "7 days" +msgstr "%d dage, " + +#: wxUI/dialogs/mastodon/postDialogs.py:304 +msgid "Choices" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:308 +msgid "Option 1" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:315 +msgid "Option 2" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:322 +msgid "Option 3" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:329 +msgid "Option 4" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:334 +msgid "Allow multiple choices per user" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:337 +msgid "Hide votes count until the poll expires" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:363 +msgid "Please make sure you have provided at least two options for the poll." +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:363 +#, fuzzy +msgid "Not enough information" +msgstr "Information" + +#: wxUI/dialogs/mastodon/postDialogs.py:368 +msgid "Vote in this poll" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:371 +#, fuzzy +msgid "Options" +msgstr "Handling" + +# | msgid "&Search" +#: wxUI/dialogs/mastodon/search.py:9 +#, fuzzy +msgid "Search" +msgstr "&Søg" + +#: wxUI/dialogs/mastodon/search.py:18 +msgid "Posts" +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:22 +#, fuzzy +msgid "Select user" +msgstr "Vælg URL" + +#: wxUI/dialogs/mastodon/showUserProfile.py:73 +#, fuzzy, python-brace-format +msgid "{}'s Profile" +msgstr "&Opdater profil" + +#: wxUI/dialogs/mastodon/showUserProfile.py:79 +#, fuzzy +msgid "&Name: " +msgstr "Navn" + +#: wxUI/dialogs/mastodon/showUserProfile.py:84 +#, fuzzy +msgid "&URL: " +msgstr "Bruger:" + +#: wxUI/dialogs/mastodon/showUserProfile.py:89 +msgid "&Bio: " +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:94 +msgid "&Joined at: " +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:99 +#, fuzzy +msgid "&Actions" +msgstr "Handling" + +#: wxUI/dialogs/mastodon/showUserProfile.py:104 +#, fuzzy +msgid "Header: " +msgstr "Skjul" + +#: wxUI/dialogs/mastodon/showUserProfile.py:112 +msgid "Avatar: " +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:122 +#, python-brace-format +msgid "Field &{} - Label: " +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:129 +#, fuzzy +msgid "Content: " +msgstr "Kontekst" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:43 +#: wxUI/dialogs/mastodon/filters/create_filter.py:65 +#: wxUI/dialogs/mastodon/showUserProfile.py:135 +msgid "Yes" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:43 +#: wxUI/dialogs/mastodon/filters/create_filter.py:65 +#: wxUI/dialogs/mastodon/filters/create_filter.py:69 +#: wxUI/dialogs/mastodon/showUserProfile.py:135 +msgid "No" +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:137 +#, fuzzy +msgid "&Private account: " +msgstr "Fjern konto" + +#: wxUI/dialogs/mastodon/showUserProfile.py:144 +#, fuzzy +msgid "&Bot account: " +msgstr "Konto" + +#: wxUI/dialogs/mastodon/showUserProfile.py:151 +#, fuzzy +msgid "&Discoverable account: " +msgstr "Fjern konto" + +#: wxUI/dialogs/mastodon/showUserProfile.py:157 +#, python-brace-format +msgid "{} p&osts. Click to open posts timeline" +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:162 +#, python-brace-format +msgid "{} &following. Click to open Following timeline" +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:166 +#, python-brace-format +msgid "{} fo&llowers. Click to open followers timeline" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:43 +msgid "&Display Name" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:50 +#, fuzzy +msgid "&Bio" +msgstr "&Blokér" + +#: wxUI/dialogs/mastodon/updateProfile.py:58 +#, fuzzy +msgid "Header" +msgstr "Skjul" + +#: wxUI/dialogs/mastodon/updateProfile.py:71 +#, fuzzy +msgid "Change &header" +msgstr "Skjul" + +#: wxUI/dialogs/mastodon/updateProfile.py:79 +msgid "Avatar" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:92 +msgid "Change &avatar" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:102 +#, python-brace-format +msgid "Field &{}: Label" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:110 +#, fuzzy +msgid "Content" +msgstr "Kontekst" + +#: wxUI/dialogs/mastodon/updateProfile.py:120 +#, fuzzy +msgid "&Private account" +msgstr "Fjern konto" + +#: wxUI/dialogs/mastodon/updateProfile.py:122 +#, fuzzy +msgid "&Bot account" +msgstr "Konto" + +#: wxUI/dialogs/mastodon/updateProfile.py:124 +#, fuzzy +msgid "&Discoverable account" +msgstr "Fjern konto" + +#: wxUI/dialogs/mastodon/updateProfile.py:167 +msgid "Select header image - max 2MB" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:172 +#: wxUI/dialogs/mastodon/updateProfile.py:194 +msgid "The selected file is larger than 2MB. Do you want to select another file?" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:173 +#: wxUI/dialogs/mastodon/updateProfile.py:195 +msgid "File more than 2MB" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:189 +msgid "Select avatar image - max 2MB" +msgstr "" + +#: wxUI/dialogs/mastodon/userActions.py:19 +msgid "&Follow" +msgstr "&Følg" + +#: wxUI/dialogs/mastodon/userActions.py:20 +msgid "U&nfollow" +msgstr "&Stop med at følge" + +#: wxUI/dialogs/mastodon/userActions.py:22 +msgid "Unmu&te" +msgstr "&Dæmp ikke" + +#: wxUI/dialogs/mastodon/userActions.py:23 +msgid "&Block" +msgstr "&Blokér" + +#: wxUI/dialogs/mastodon/userActions.py:24 +msgid "Unbl&ock" +msgstr "&Fjern blokering" + +#: wxUI/dialogs/mastodon/userTimeline.py:9 +#, python-format +msgid "Timeline for %s" +msgstr "Tidslinje for %s" + +#: wxUI/dialogs/mastodon/userTimeline.py:19 +msgid "&Posts" +msgstr "" + +#: wxUI/dialogs/mastodon/userTimeline.py:20 +msgid "&Followers" +msgstr "&Følgere" + +#: wxUI/dialogs/mastodon/userTimeline.py:21 +#, fuzzy +msgid "Fo&llowing" +msgstr "&Stop med at følge" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:12 +#, fuzzy +msgid "Keyword" +msgstr "Tast" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:13 +#: wxUI/dialogs/mastodon/filters/create_filter.py:24 +msgid "Whole word" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:19 +msgid "Keyword:" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:25 +#: wxUI/dialogs/mastodon/filters/manage_filters.py:22 +#, fuzzy +msgid "Add" +msgstr "Adresse" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:34 +msgid "Palabras clave a filtrar:" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:74 +#, fuzzy +msgid "New filter" +msgstr "&Administrer filtre" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:78 +#, fuzzy +msgid "Home timeline" +msgstr "Tidslinjer" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:79 +msgid "Public statuses" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:81 +#, fuzzy +msgid "Threads" +msgstr "Klar" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:82 +#, fuzzy +msgid "Profiles" +msgstr "&Opdater profil" + +# | msgid "Delete" +#: wxUI/dialogs/mastodon/filters/create_filter.py:86 +#, fuzzy +msgid "Hide posts" +msgstr "Slet" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:87 +msgid "Set a content warning to posts" +msgstr "" + +# | msgid "%d hours, " +#: wxUI/dialogs/mastodon/filters/create_filter.py:91 +#, fuzzy +msgid "Hours" +msgstr "%d timer, " + +# | msgid "%d days, " +#: wxUI/dialogs/mastodon/filters/create_filter.py:92 +#, fuzzy +msgid "Days" +msgstr "%d dage, " + +#: wxUI/dialogs/mastodon/filters/create_filter.py:93 +msgid "Weeks" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:94 +msgid "months" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:97 +#, fuzzy +msgid "Title:" +msgstr "Fil" + +# | msgid "Reply to {arg0}" +#: wxUI/dialogs/mastodon/filters/create_filter.py:104 +#, fuzzy +msgid "Apply to:" +msgstr "Svare {arg0}" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:114 +#, fuzzy +msgid "Action:" +msgstr "Handling" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:122 +msgid "Expires in:" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/manage_filters.py:10 +#, fuzzy +msgid "Filters" +msgstr "Fil" + +#: wxUI/dialogs/mastodon/filters/manage_filters.py:15 +#, fuzzy +msgid "Title" +msgstr "Fil" + +#: wxUI/dialogs/mastodon/filters/manage_filters.py:16 +msgid "Keywords" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/manage_filters.py:17 +#, fuzzy +msgid "Contexts" +msgstr "Kontekst" + +#: wxUI/dialogs/mastodon/filters/manage_filters.py:19 +#, fuzzy +msgid "Expires" +msgstr "Ekstra" + +#~ msgid "There are no results for the coordinates in this tweet" +#~ msgstr "Der er ingen resultater for koordinaterne i denne tweet" + +#~ msgid "This list is already opened" +#~ msgstr "Denne liste er allerede åbnet" + +# | msgid "Timeline for {}" +#~ msgid "Timelines for {}" +#~ msgstr "Tidslinje for {}" + +#~ msgid "{account_name} (Mastodon)" +#~ msgstr "" + +#~ msgid "URL of mastodon instance:" +#~ msgstr "" + +# | msgid "View &address" +#~ msgid "Email address:" +#~ msgstr "Vis &adresse" + +# | msgid "Password: " +#~ msgid "Password:" +#~ msgstr "Adgangskode:" + +# | msgid "Item" +#~ msgid "&Item" +#~ msgstr "Emne" + +#~ msgid "Visibility" +#~ msgstr "" + +#~ msgid "Sensitive content" +#~ msgstr "" + +#~ msgid "Allow multiple votes per user" +#~ msgstr "" + +#~ msgid "{username} has mentionned you: {status}" +#~ msgstr "" + +#~ msgid "has mentionned you: {status}" +#~ msgstr "" + +#~ msgid "Likes for {}" +#~ msgstr "Synes godt om for {}" + +#~ msgid "Trending topics for %s" +#~ msgstr "Trends for {}" + +#~ msgid "Select user" +#~ msgstr "Vælg bruger" + +#~ msgid "Sent direct messages" +#~ msgstr "Sendte direkte beskeder" + +#~ msgid "Sent tweets" +#~ msgstr "Sendte tweets" + +#~ msgid "Likes" +#~ msgstr "Synes godt om" + +#~ msgid "Friends" +#~ msgstr "Venner" + +#~ msgid "{username}'s likes" +#~ msgstr "{username}s synes godt om" + +#~ msgid "{username}'s friends" +#~ msgstr "{username}s venner" + +#~ msgid "Tweet" +#~ msgstr "Tweet" + +#~ msgid "Write the tweet here" +#~ msgstr "Skriv et tweet her" + +#~ msgid "New tweet in {0}" +#~ msgstr "Nyt Tweet i {0}" + +#~ msgid "{0} new tweets in {1}." +#~ msgstr "{0} nye tweets i {1}." + +#~ msgid "Reply to {arg0}" +#~ msgstr "Svare {arg0}" + +#~ msgid "Reply to %s" +#~ msgstr "Svar %s" + +#~ msgid "Direct message to %s" +#~ msgstr "Direkte besked til %s" + +#~ msgid "New direct message" +#~ msgstr "Ny direkte besked" + +#~ msgid "This action is not supported on protected accounts." +#~ msgstr "Denne handling understøttes ikke for denne buffer." + +#~ msgid "Quote" +#~ msgstr "Citat" + +#~ msgid "Add your comment to the tweet" +#~ msgstr "tilføj din kommentar til dette tweet" + +#~ msgid "User details" +#~ msgstr "Brugerdetaljer" + +#~ msgid "MMM D, YYYY. H:m" +#~ msgstr "MMM D, YYYY. H:m" + +#~ msgid "There are no coordinates in this tweet" +#~ msgstr "Der er ingen koordinater i denne tweet" + +#~ msgid "Error decoding coordinates. Try again later." +#~ msgstr "Fejl under afkodning af koordinater. Prøv igen senere." + +#~ msgid "Invalid buffer" +#~ msgstr "Ugyldig buffer" + +#~ msgid "{0} new direct messages." +#~ msgstr "{0] nye direkte beskeder." + +#~ msgid "This action is not supported in the buffer yet." +#~ msgstr "Denne handling understøttes ikke for denne buffer." + +#~ msgid "" +#~ "Getting more items cannot be done " +#~ "in this buffer. Use the direct " +#~ "messages buffer instead." +#~ msgstr "" +#~ "Der kan ikke hentes flere emner " +#~ "ind i denne buffer. brug bufferen " +#~ "til direkte beskeder i stedet." + +#~ msgid "Mention" +#~ msgstr "Omtale" + +#~ msgid "Mention to %s" +#~ msgstr "Omtale til %s" + +#~ msgid "{0} new followers." +#~ msgstr "{0} nye følgere." + +#~ msgid "This action is not supported in the buffer, yet." +#~ msgstr "Denne handling understøttes ikke for denne buffer." + +#~ msgid "&Retweet" +#~ msgstr "&Retweet" + +#~ msgid "&Like" +#~ msgstr "S&ynes godt om" + +#~ msgid "&Unlike" +#~ msgstr "Fjern Synes &godt om" + +#~ msgid "View &address" +#~ msgstr "Vis &adresse" + +#~ msgid "&View lists" +#~ msgstr "&Vis lister" + +# | msgid "V&iew likes" +#~ msgid "View likes" +#~ msgstr "V&is synes godt om" + +#~ msgid "Likes timelines" +#~ msgstr "Tidslinjer for synes godt om" + +#~ msgid "Followers timelines" +#~ msgstr "Tidslinjer for følgere" + +#~ msgid "Following timelines" +#~ msgstr "Tidslinjer for følgere" + +#~ msgid "Lists" +#~ msgstr "Lister" + +#~ msgid "List for {}" +#~ msgstr "Liste for {}" + +#~ msgid "Filters cannot be applied on this buffer" +#~ msgstr "Filtre understøttes ikke for denne buffer" + +#~ msgid "View item" +#~ msgstr "Vis element" + +#~ msgid "Ask" +#~ msgstr "Spørg" + +#~ msgid "Retweet without comments" +#~ msgstr "Retweet uden kommentar" + +#~ msgid "Retweet with comments" +#~ msgstr "Retweet med en kommentar" + +#~ msgid "Edit template for tweets. Current template: {}" +#~ msgstr "" + +#~ msgid "Edit template for direct messages. Current template: {}" +#~ msgstr "" + +#~ msgid "Edit template for sent direct messages. Current template: {}" +#~ msgstr "" + +#~ msgid "User has been suspended" +#~ msgstr "Brugeren er suspenderet" + +#~ msgid "Information for %s" +#~ msgstr "Information om %s" + +#~ msgid "Discarded" +#~ msgstr "Kasseret" + +#~ msgid "Username: @%s\n" +#~ msgstr "Brugernavn: @%s\n" + +#~ msgid "Name: %s\n" +#~ msgstr "Navn: %s\n" + +#~ msgid "Location: %s\n" +#~ msgstr "Lokalitet: %s\n" + +#~ msgid "URL: %s\n" +#~ msgstr "URL: %s\n" + +#~ msgid "Bio: %s\n" +#~ msgstr "Bio: %s\n" + +#~ msgid "Yes" +#~ msgstr "Ja" + +#~ msgid "No" +#~ msgstr "Nej" + +#~ msgid "Protected: %s\n" +#~ msgstr "Beskyttet: %s\n" + +#~ msgid "Relationship: " +#~ msgstr "" + +#~ msgid "You follow {0}. " +#~ msgstr "Du følger {0}. " + +#~ msgid "{0} is following you." +#~ msgstr "{0} følger dig." + +#~ msgid "" +#~ "Followers: %s\n" +#~ " Friends: %s\n" +#~ msgstr "" +#~ "Følgere: %s\n" +#~ " Venner: %s\n" + +#~ msgid "Verified: %s\n" +#~ msgstr "Verificeret:%s\n" + +#~ msgid "Tweets: %s\n" +#~ msgstr "Tweets: %s\n" + +#~ msgid "Likes: %s" +#~ msgstr "Synes godt om: %s" + +#~ msgid "You can't ignore direct messages" +#~ msgstr "Du kan ikke ignorere direkte beskeder" + +#~ msgid "Attaching..." +#~ msgstr "Vedhæfter…" + +#~ msgid "Pause" +#~ msgstr "Pause" + +#~ msgid "&Resume" +#~ msgstr "&Genoptag" + +#~ msgid "Resume" +#~ msgstr "Genoptag" + +#~ msgid "&Pause" +#~ msgstr "&Pause" + +#~ msgid "&Stop" +#~ msgstr "&Stop" + +#~ msgid "Recording" +#~ msgstr "Optager" + +#~ msgid "Stopped" +#~ msgstr "Stoppet" + +#~ msgid "&Record" +#~ msgstr "&Optag" + +#~ msgid "&Play" +#~ msgstr "&Afspil" + +#~ msgid "Recoding audio..." +#~ msgstr "Genkoder lyd..." + +#~ msgid "Error in file upload: {0}" +#~ msgstr "Fejl under upload af fil: {0}" + +#~ msgid "Transferred" +#~ msgstr "Overført" + +#~ msgid "Total file size" +#~ msgstr "Total filstørrelse" + +#~ msgid "Transfer rate" +#~ msgstr "Overførselshastighed" + +#~ msgid "Time left" +#~ msgstr "Tid tilbage" + +#~ msgid "Attach audio" +#~ msgstr "Vedhæft lyd" + +#~ msgid "&Add an existing file" +#~ msgstr "&Tilføj en eksisterende fil" + +#~ msgid "&Discard" +#~ msgstr "&Kassér" + +#~ msgid "Upload to" +#~ msgstr "Overfør til" + +#~ msgid "Attach" +#~ msgstr "Vedhæft" + +#~ msgid "&Cancel" +#~ msgstr "&Annuller" + +#~ msgid "Audio Files (*.mp3, *.ogg, *.wav)|*.mp3; *.ogg; *.wav" +#~ msgstr "Lydfiler (*.mp3, *.ogg, *.wav)|*.mp3; *.ogg; *.wav" + +#~ msgid "You have to start writing" +#~ msgstr "Du skal begynde at skrive" + +#~ msgid "There are no results in your users database" +#~ msgstr "Der er ingen resultater i din bruger database" + +#~ msgid "Autocompletion only works for users." +#~ msgstr "Autofuldførelse fungerer kun for brugere." + +#~ msgid "" +#~ "Updating database... You can close this" +#~ " window now. A message will tell " +#~ "you when the process finishes." +#~ msgstr "" +#~ "Opdaterer database... Du kan lukke dette" +#~ " vindue nu. En meddelelse vil " +#~ "fortælle dig, hvornår processen er " +#~ "færdig." + +#~ msgid "Manage Autocompletion database" +#~ msgstr "Administrer autofuldførelsesdatabase" + +#~ msgid "Editing {0} users database" +#~ msgstr "Redigerer {0} brugers database" + +#~ msgid "Username" +#~ msgstr "Brugernavn" + +#~ msgid "Add user" +#~ msgstr "Tilføj bruger" + +#~ msgid "Remove user" +#~ msgstr "Fjern bruger" + +#~ msgid "Twitter username" +#~ msgstr "Twitter brugernavn" + +#~ msgid "Add user to database" +#~ msgstr "Tilføj bruger til database" + +#~ msgid "The user does not exist" +#~ msgstr "Denne bruger eksisterer ikke" + +#~ msgid "Error!" +#~ msgstr "Fejl!" + +#~ msgid "Autocomplete users' settings" +#~ msgstr "Indstillinger for autofuldførelse af brugere" + +#~ msgid "Add followers to database" +#~ msgstr "" + +#~ msgid "Add friends to database" +#~ msgstr "Tilføj bruger til database" + +#~ msgid "Updating autocompletion database" +#~ msgstr "Administrer autofuldførelsesdatabase" + +#~ msgid "" +#~ "This process will retrieve the users " +#~ "you selected from Twitter, and add " +#~ "them to the user autocomplete database." +#~ " Please note that if there are " +#~ "many users or you have tried to" +#~ " perform this action less than 15 " +#~ "minutes ago, TWBlue may reach a " +#~ "limit in Twitter API calls when " +#~ "trying to load the users into the" +#~ " database. If this happens, we will" +#~ " show you an error, in which " +#~ "case you will have to try this " +#~ "process again in a few minutes. If" +#~ " this process ends with no error, " +#~ "you will be redirected back to the" +#~ " account settings dialog. Do you want" +#~ " to continue?" +#~ msgstr "" + +#~ msgid "TWBlue has imported {} users successfully." +#~ msgstr "" + +#~ msgid "Done" +#~ msgstr "Færdig" + +#~ msgid "Error adding users from Twitter. Please try again in about 15 minutes." +#~ msgstr "" + +#~ msgid "New tweet" +#~ msgstr "Nyt Tweet" + +#~ msgid "Retweet" +#~ msgstr "Retweet" + +#~ msgid "Like a tweet" +#~ msgstr "Synes godt om en tweet" + +#~ msgid "Like/unlike a tweet" +#~ msgstr "Synes godt om/synes ikke godt om en tweet" + +#~ msgid "Unlike a tweet" +#~ msgstr "Synes ikke godt om en tweet" + +#~ msgid "See user details" +#~ msgstr "Se brugerdetaljer" + +#~ msgid "Show tweet" +#~ msgstr "Vis tweet" + +#~ msgid "Interact with the currently focused tweet." +#~ msgstr "Interager med den aktuelt fokuserede tweet." + +#~ msgid "View in Twitter" +#~ msgstr "vis på Twitter" + +#~ msgid "Edit profile" +#~ msgstr "Redigér profil" + +#~ msgid "Delete a tweet or direct message" +#~ msgstr "Slet et tweet eller en direkte besked" + +#~ msgid "Add to list" +#~ msgstr "Tilføj til liste" + +#~ msgid "Remove from list" +#~ msgstr "Fjern fra liste" + +#~ msgid "Search on twitter" +#~ msgstr "Søg på twitter" + +#~ msgid "Show lists for a specified user" +#~ msgstr "Vis tilhørende lister for en bestemt bruger" + +#~ msgid "Get geolocation" +#~ msgstr "Få geolokalitet" + +#~ msgid "Display the tweet's geolocation in a dialog" +#~ msgstr "Vis tweetens geolokalitet i en dialog" + +#~ msgid "Create a trending topics buffer" +#~ msgstr "Opret en buffer med trending emner" + +#~ msgid "" +#~ "Opens the list manager, which allows " +#~ "you to create, edit, delete and " +#~ "open lists in buffers." +#~ msgstr "" +#~ "Åbner listemanageren, som giver dig " +#~ "mulighed for at oprette, redigere, " +#~ "slette og åbne lister i buffere." + +#~ msgid "Opens the list manager" +#~ msgstr "Åbner listemanageren" + +#~ msgid "{account_name} (Twitter)" +#~ msgstr "" + +# | msgid "View in Twitter" +#~ msgid "Twitter" +#~ msgstr "vis på Twitter" + +#~ msgid "" +#~ "The request to authorize your Twitter" +#~ " account will be opened in your " +#~ "browser. You only need to do this" +#~ " once. Would you like to continue?" +#~ msgstr "" +#~ "Anmodningen om at godkende din " +#~ "Twitter-konto åbnes i din browser. Du" +#~ " behøver kun at gøre dette en " +#~ "gang. Vil du fortsætte?" + +#~ msgid "" +#~ "TWBlue is unable to authenticate the " +#~ "account for {} in Twitter. It " +#~ "might be due to an invalid or " +#~ "expired token, revoqued access to the" +#~ " application, or after an account " +#~ "reactivation. Please remove the account " +#~ "manually from your Twitter sessions in" +#~ " order to stop seeing this message." +#~ msgstr "" + +#~ msgid "Authentication error for session {}" +#~ msgstr "" + +#~ msgid "Dm to %s " +#~ msgstr "DB til %s " + +#~ msgid "{0}. Quoted tweet from @{1}: {2}" +#~ msgstr "{0}. Citeret tweet fra @{1}: {2}" + +#~ msgid "Unavailable" +#~ msgstr "Utilgængelig" + +#~ msgid "" +#~ "%s (@%s). %s followers, %s friends, " +#~ "%s tweets. Last tweeted %s. Joined " +#~ "Twitter %s" +#~ msgstr "" +#~ "%s (@%s). %s følgere, %s venner, " +#~ "%s tweets. Sidst tweetedt %s. Tilmeldt" +#~ " Twitter %s" + +#~ msgid "No description available" +#~ msgstr "Ingen beskrivelse tilgængelig" + +#~ msgid "private" +#~ msgstr "privat" + +#~ msgid "public" +#~ msgstr "offentlig" + +#~ msgid "Enter your PIN code here" +#~ msgstr "Indtast din PIN-kode her" + +#~ msgid "Authorising account..." +#~ msgstr "Godkender konto..." + +#~ msgid "" +#~ "We could not authorice your Twitter " +#~ "account to be used in TWBlue. This" +#~ " might be caused due to an " +#~ "incorrect verification code. Please try " +#~ "to add the session again." +#~ msgstr "" + +#~ msgid "%s failed. Reason: %s" +#~ msgstr "%s mislykkedes. Grund: %s" + +#~ msgid "Deleted account" +#~ msgstr "Ny konto" + +#~ msgid "$sender_display_name, $text $date" +#~ msgstr "" + +#~ msgid "" +#~ "$display_name (@$screen_name). $followers followers," +#~ " $following following, $tweets tweets. " +#~ "Joined Twitter $created_at." +#~ msgstr "" + +#~ msgid "Image description: {}." +#~ msgstr "Billedbeskrivelse" + +#~ msgid "RT @{}: {} Quote from @{}: {}" +#~ msgstr "{0}. Citeret tweet fra @{1}: {2}" + +# | msgid "{0}. Quoted tweet from @{1}: {2}" +#~ msgid "RT @{}: {}" +#~ msgstr "{0}. Citeret tweet fra @{1}: {2}" + +# | msgid "{0}. Quoted tweet from @{1}: {2}" +#~ msgid "{} Quote from @{}: {}" +#~ msgstr "{0}. Citeret tweet fra @{1}: {2}" + +#~ msgid "Sorry, you are not authorised to see this status." +#~ msgstr "Beklager, du har ikke tilladelse til at se denne status." + +#~ msgid "Error {0}" +#~ msgstr "Fejlkode {0}" + +#~ msgid "{user_1}, {user_2} and {all_users} more: {text}" +#~ msgstr "" + +#~ msgid "" +#~ "This retweet is over 140 characters. " +#~ "Would you like to post it as " +#~ "a mention to the poster with your" +#~ " comments and a link to the " +#~ "original tweet?" +#~ msgstr "" +#~ "Dette retweet er over 140 tegn. " +#~ "Vil du sende det som en omtale " +#~ "til den oprindelige sender med dine " +#~ "kommentarer og et link til det " +#~ "oprindelige tweet?" + +#~ msgid "Would you like to add a comment to this tweet?" +#~ msgstr "Vil du gerne tilføje en kommentar til dette tweet?" + +#~ msgid "" +#~ "Do you really want to delete this" +#~ " tweet? It will be deleted from " +#~ "Twitter as well." +#~ msgstr "" +#~ "Vil du virkelig slette dette tweet? " +#~ "Den bliver også slettet fra Twitter." + +#~ msgid "Enter the name of the client : " +#~ msgstr "Indtast klientens navn:" + +#~ msgid "Add client" +#~ msgstr "Tilføj klient" + +#~ msgid "This user has no tweets, so you can't open a timeline for them." +#~ msgstr "" +#~ "Denne bruger har ingen tweets, så " +#~ "du kan ikke åbne en tidslinje for" +#~ " dem." + +#~ msgid "" +#~ "This is a protected Twitter user, " +#~ "which means you can't open a " +#~ "timeline using the Streaming API. The" +#~ " user's tweets will not update due" +#~ " to a twitter policy. Do you " +#~ "want to continue?" +#~ msgstr "" +#~ "Dette er en beskyttet Twitter-bruger," +#~ " hvilket betyder, at du ikke kan " +#~ "åbne en tidslinje ved hjælp af " +#~ "Streaming API. Brugerens tweets opdateres " +#~ "ikke på grund af en Twitter-" +#~ "politik. Vil du fortsætte?" + +#~ msgid "" +#~ "This is a protected user account, " +#~ "you need to follow this user to" +#~ " view their tweets or likes." +#~ msgstr "" +#~ "Dette er en beskyttet brugerkonto, du" +#~ " skal følge denne bruger for at " +#~ "se deres tweets eller synes godt " +#~ "om." + +#~ msgid "This user has no tweets. {0} can't create a timeline." +#~ msgstr "Denne bruger har ingen tweets. {0} kan ikke oprette en tidslinje." + +#~ msgid "This user has no favorited tweets. {0} can't create a timeline." +#~ msgstr "" +#~ "Denne bruger har ingen foretrukne " +#~ "tweets. {0} kan ikke oprette en " +#~ "tidslinje." + +#~ msgid "This user has no followers. {0} can't create a timeline." +#~ msgstr "Denne bruger har ingen følgere. {0} kan ikke oprette en tidslinje." + +#~ msgid "This user has no friends. {0} can't create a timeline." +#~ msgstr "Denne bruger har ingen venner. {0} kan ikke oprette en tidslinje." + +#~ msgid "Geolocation data: {0}" +#~ msgstr "Data for geolokalitet: {0}" + +#~ msgid "Geo data for this tweet" +#~ msgstr "Geo data for denne tweet" + +#~ msgid "You have been blocked from viewing this content" +#~ msgstr "Du er blevet blokeret for at se dette indhold" + +#~ msgid "" +#~ "You have been blocked from viewing " +#~ "someone's content. In order to avoid " +#~ "conflicts with the full session, TWBlue" +#~ " will remove the affected timeline." +#~ msgstr "" +#~ "Du er blevet blokeret fra at se" +#~ " en persons indhold. For at undgå " +#~ "konflikter med den fulde session fjerner" +#~ " TWBlue den berørte tidslinje." + +#~ msgid "" +#~ "TWBlue cannot load this timeline because" +#~ " the user has been suspended from " +#~ "Twitter." +#~ msgstr "" +#~ "TWBlue kan ikke indlæse denne tidslinje," +#~ " fordi brugeren er blevet suspenderet " +#~ "fra Twitter." + +#~ msgid "Do you really want to delete this filter?" +#~ msgstr "Er du sikker på, at du vil slette dette filter?" + +#~ msgid "This filter already exists. Please use a different title" +#~ msgstr "Dette filter findes allerede. Benyt venligst en anden titel." + +#~ msgid "&Show direct message" +#~ msgstr "&Vis direkte besked" + +#~ msgid "&Show event" +#~ msgstr "&Vis begivenhed" + +#~ msgid "Direct &message" +#~ msgstr "Direkte &besked" + +#~ msgid "&Show user" +#~ msgstr "Vis &bruger" + +#~ msgid "Search topic" +#~ msgstr "Søg emne" + +#~ msgid "&Tweet about this trend" +#~ msgstr "&Tweet om denne trend" + +#~ msgid "&Show item" +#~ msgstr "&Vis emne" + +#~ msgid "Update &profile" +#~ msgstr "Opdater &profil" + +#~ msgid "Event" +#~ msgstr "Begivenhed" + +#~ msgid "Remove event" +#~ msgstr "Fjern Begivenhed" + +#~ msgid "Trending topic" +#~ msgstr "Trending emne" + +#~ msgid "Tweet about this trend" +#~ msgstr "Tweet om denne trend" + +#~ msgid "" +#~ "Scan account and add friends and " +#~ "followers to the user autocompletion " +#~ "database" +#~ msgstr "" + +#~ msgid "" +#~ "Inverted buffers: The newest tweets will" +#~ " be shown at the beginning while " +#~ "the oldest at the end" +#~ msgstr "" +#~ "Inverterede buffere: De nyeste tweets " +#~ "vil blive vist i toppen, mens de" +#~ " ældste vises i bunden" + +#~ msgid "Retweet mode" +#~ msgstr "Retweet-tilstand" + +#~ msgid "" +#~ "Load cache for tweets in memory " +#~ "(much faster in big datasets but " +#~ "requires more RAM)" +#~ msgstr "" + +#~ msgid "Ignored clients" +#~ msgstr "Ignorerede klienter" + +#~ msgid "Remove client" +#~ msgstr "Fjern klient" + +#~ msgid "Indicate audio tweets with sound" +#~ msgstr "Angiv lydtweets med en lyd" + +#~ msgid "Indicate geotweets with sound" +#~ msgstr "Angiv geotweets med en lyd" + +#~ msgid "Indicate tweets containing images with sound" +#~ msgstr "Angiv tweets der indeholder billeder med en lyd" + +#~ msgid "API Key for SndUp" +#~ msgstr "API-nøgle til SndUp" + +#~ msgid "Create a filter for this buffer" +#~ msgstr "Opret et filter for denne buffer" + +#~ msgid "Filter title" +#~ msgstr "Filtrér titel" + +#~ msgid "Filter by word" +#~ msgstr "Filtrér efter ord" + +#~ msgid "Ignore tweets wich contain the following word" +#~ msgstr "Ignorer tweets der indeholder følgende ord" + +#~ msgid "Ignore tweets without the following word" +#~ msgstr "Ignorer tweets uden følgende ord" + +#~ msgid "word" +#~ msgstr "ord" + +#~ msgid "Allow retweets" +#~ msgstr "Tillad retweets" + +#~ msgid "Allow quoted tweets" +#~ msgstr "Tillad citerede tweets" + +#~ msgid "Allow replies" +#~ msgstr "Tillad svar" + +#~ msgid "Use this term as a regular expression" +#~ msgstr "Brug dette udtryk som et regulært udtryk" + +#~ msgid "Filter by language" +#~ msgstr "Filtrer efter sprog" + +#~ msgid "Load tweets in the following languages" +#~ msgstr "Indlæs tweets i de følgende sprog" + +#~ msgid "Ignore tweets in the following languages" +#~ msgstr "Ignorer tweets i de følgende sprog" + +#~ msgid "Don't filter by language" +#~ msgstr "Filtrér ikke efter sprog" + +#~ msgid "Supported languages" +#~ msgstr "Understøttede sprog" + +#~ msgid "Add selected language to filter" +#~ msgstr "Tilføj valge sprog til filter" + +#~ msgid "Selected languages" +#~ msgstr "Valgte sprog" + +#~ msgid "You must define a name for the filter before creating it." +#~ msgstr "" + +#~ msgid "Missing filter name" +#~ msgstr "" + +#~ msgid "Manage filters" +#~ msgstr "Administrer filtre" + +#~ msgid "Filters" +#~ msgstr "Filtre" + +#~ msgid "Filter" +#~ msgstr "Filter" + +#~ msgid "Lists manager" +#~ msgstr "Listemanager" + +#~ msgid "List" +#~ msgstr "Liste" + +#~ msgid "Owner" +#~ msgstr "Ejer" + +#~ msgid "Members" +#~ msgstr "Medlemmer" + +#~ msgid "mode" +#~ msgstr "tilstand" + +#~ msgid "Create a new list" +#~ msgstr "Opret en ny liste" + +#~ msgid "Open in buffer" +#~ msgstr "Åbn i buffer" + +#~ msgid "Viewing lists for %s" +#~ msgstr "Viser lister for %s" + +#~ msgid "Subscribe" +#~ msgstr "Tilmeld" + +#~ msgid "Unsubscribe" +#~ msgstr "Afmeld" + +#~ msgid "Name (20 characters maximun)" +#~ msgstr "Navn (maks. 20 tegn)" + +#~ msgid "Mode" +#~ msgstr "Tilstand" + +#~ msgid "Private" +#~ msgstr "Privat" + +#~ msgid "Editing the list %s" +#~ msgstr "Redigerer listen %s" + +#~ msgid "Select a list to add the user" +#~ msgstr "Vælg en liste for at tilføje brugeren" + +#~ msgid "Add" +#~ msgstr "Tilføj" + +#~ msgid "Select a list to remove the user" +#~ msgstr "Vælg en liste for at fjerne brugeren" + +#~ msgid "Do you really want to delete this list?" +#~ msgstr "Er du sikker på, at du vil slette denne liste ?" + +#~ msgid "Search on Twitter" +#~ msgstr "Søg på Twitter" + +#~ msgid "Tweets" +#~ msgstr "Tweets" + +#~ msgid "&Language for results: " +#~ msgstr "&Sprog for resultater:" + +#~ msgid "any" +#~ msgstr "alle" + +#~ msgid "Results &type: " +#~ msgstr "Resultat&typer: " + +#~ msgid "Mixed" +#~ msgstr "Blandet" + +#~ msgid "Recent" +#~ msgstr "Seneste" + +#~ msgid "Popular" +#~ msgstr "Populær" + +#~ msgid "Details" +#~ msgstr "Detaljer" + +#~ msgid "&Go to URL" +#~ msgstr "&Gå til URL" + +#~ msgid "View trending topics" +#~ msgstr "Se trending emner" + +#~ msgid "Trending topics by" +#~ msgstr "Trends for" + +#~ msgid "Country" +#~ msgstr "Land" + +#~ msgid "City" +#~ msgstr "By" + +#~ msgid "&Location" +#~ msgstr "&Lokalitet" + +#~ msgid "Update your profile" +#~ msgstr "Opdater din profil" + +#~ msgid "&Name (50 characters maximum)" +#~ msgstr "&Navn (50 tegn max)" + +#~ msgid "&Website" +#~ msgstr "&Webside" + +#~ msgid "&Bio (160 characters maximum)" +#~ msgstr "&Bio (maks. 160 tegn)" + +#~ msgid "Upload a &picture" +#~ msgstr "Upload et &billede" + +#~ msgid "Upload a picture" +#~ msgstr "Upload et billede" + +#~ msgid "Discard image" +#~ msgstr "Kassér billede" + +#~ msgid "&Report as spam" +#~ msgstr "&Rapporter som spam" + +#~ msgid "&Ignore tweets from this client" +#~ msgstr "&Ignorer tweets fra denne klient" + +#~ msgid "&Tweets" +#~ msgstr "&Tweets" + +#~ msgid "&Likes" +#~ msgstr "&Synes godt om" + +#~ msgid "F&riends" +#~ msgstr "&Venner" + +#~ msgid "Delete attachment" +#~ msgstr "Fjern bilag" + +#~ msgid "Added Tweets" +#~ msgstr "Sendte tweets" + +#~ msgid "Delete tweet" +#~ msgstr "Sendte tweets" + +#~ msgid "A&dd..." +#~ msgstr "" + +#~ msgid "Add t&weet" +#~ msgstr "Synes godt om en tweet" + +#~ msgid "&Attach audio..." +#~ msgstr "&Vedhæft lyd..." + +#~ msgid "Sen&d" +#~ msgstr "Sen&d" + +#~ msgid "Video files (*.mp4)|*.mp4" +#~ msgstr "" + +#~ msgid "" +#~ "It is not possible to add more " +#~ "attachments. Please make sure your tweet" +#~ " complies with Twitter'S attachment rules." +#~ " You can add only one video or" +#~ " GIF in every tweet, and a " +#~ "maximum of 4 photos." +#~ msgstr "" + +#~ msgid "&Mention to all" +#~ msgstr "&Omtal alle" + +#~ msgid "&Recipient" +#~ msgstr "&Modtager" + +#~ msgid "Tweet - %i characters " +#~ msgstr "Tweet - %i tegn" + +#~ msgid "Retweets: " +#~ msgstr "retweets:" + +#~ msgid "Likes: " +#~ msgstr "Synes godt om:" + +#~ msgid "View" +#~ msgstr "Vis" + +#~ msgid "Item" +#~ msgstr "Emne" + +#~ msgid "&Expand URL" +#~ msgstr "&Udvid URL" + +#~ msgid "Participation time (in days)" +#~ msgstr "" + +#~ msgid "&Open in Twitter" +#~ msgstr "&Åbn i Twitter" + +#~ msgid "&Show tweet" +#~ msgstr "&Vis tweet" + +#~ msgid "Translated" +#~ msgstr "Oversat" + +#~ msgid "Afrikaans" +#~ msgstr "Afrikaans" + +#~ msgid "Albanian" +#~ msgstr "Albansk" + +#~ msgid "Amharic" +#~ msgstr "Amharisk" + +#~ msgid "Arabic" +#~ msgstr "Arabisk" + +#~ msgid "Armenian" +#~ msgstr "Armensk" + +#~ msgid "Azerbaijani" +#~ msgstr "Azerbaijansk" + +#~ msgid "Basque" +#~ msgstr "Baskisk " + +#~ msgid "Belarusian" +#~ msgstr "Hviderussisk " + +#~ msgid "Bengali" +#~ msgstr "Bengali" + +#~ msgid "Bihari" +#~ msgstr "Bihari" + +#~ msgid "Bulgarian" +#~ msgstr "Bulgarsk" + +#~ msgid "Burmese" +#~ msgstr "Burmesisk" + +#~ msgid "Catalan" +#~ msgstr "Catalansk" + +#~ msgid "Cherokee" +#~ msgstr "Cherokee" + +#~ msgid "Chinese" +#~ msgstr "Kinesisk" + +#~ msgid "Chinese_simplified" +#~ msgstr "Kinesisk (Forenklet)" + +#~ msgid "Chinese_traditional" +#~ msgstr "Kinesisk (Traditionelt)" + +#~ msgid "Croatian" +#~ msgstr "Kroatisk" + +#~ msgid "Czech" +#~ msgstr "Tjekkisk" + +#~ msgid "Dhivehi" +#~ msgstr "Dhivehi" + +#~ msgid "Esperanto" +#~ msgstr "Esperanto" + +#~ msgid "Estonian" +#~ msgstr "Estisk" + +#~ msgid "Filipino" +#~ msgstr "Filippinsk" + +#~ msgid "Galician" +#~ msgstr "Galicisk" + +#~ msgid "Georgian" +#~ msgstr "Georgisk" + +#~ msgid "Greek" +#~ msgstr "Græsk" + +#~ msgid "Guarani" +#~ msgstr "Guaraní" + +#~ msgid "Gujarati" +#~ msgstr "Gujarati" + +#~ msgid "Hebrew" +#~ msgstr "Hebraisk" + +#~ msgid "Hindi" +#~ msgstr "Hindi" + +#~ msgid "Icelandic" +#~ msgstr "Islandsk" + +#~ msgid "Indonesian" +#~ msgstr "Indonesisk" + +#~ msgid "Inuktitut" +#~ msgstr "Inuktitut" + +#~ msgid "Irish" +#~ msgstr "Irsk" + +#~ msgid "Kannada" +#~ msgstr "Kannada" + +#~ msgid "Kazakh" +#~ msgstr "Kasakhisk" + +#~ msgid "Khmer" +#~ msgstr "Khmer" + +#~ msgid "Kurdish" +#~ msgstr "Kurdisk" + +#~ msgid "Kyrgyz" +#~ msgstr "Kirgisisk" + +#~ msgid "Laothian" +#~ msgstr "Laotisk" + +#~ msgid "Latvian" +#~ msgstr "Lettisk" + +#~ msgid "Lithuanian" +#~ msgstr "Litauisk" + +#~ msgid "Macedonian" +#~ msgstr "Makedonsk" + +#~ msgid "Malay" +#~ msgstr "Malaysisk" + +#~ msgid "Malayalam" +#~ msgstr "Malayalam" + +#~ msgid "Maltese" +#~ msgstr "Maltesisk" + +#~ msgid "Marathi" +#~ msgstr "Marathi" + +#~ msgid "Mongolian" +#~ msgstr "Mongolsk" + +#~ msgid "Nepali" +#~ msgstr "Nepalesisk" + +#~ msgid "Norwegian" +#~ msgstr "Norsk" + +#~ msgid "Oriya" +#~ msgstr "Oriya" + +#~ msgid "Pashto" +#~ msgstr "Pashto" + +#~ msgid "Persian" +#~ msgstr "Persisk" + +#~ msgid "Punjabi" +#~ msgstr "Panjabi" + +#~ msgid "Romanian" +#~ msgstr "Rumænsk" + +#~ msgid "Sanskrit" +#~ msgstr "Sanskrit" + +#~ msgid "Serbian" +#~ msgstr "Serbisk" + +#~ msgid "Sindhi" +#~ msgstr "Sindhi" + +#~ msgid "Sinhalese" +#~ msgstr "Sinhalesisk" + +#~ msgid "Slovak" +#~ msgstr "Slovakisk" + +#~ msgid "Slovenian" +#~ msgstr "Slovensk" + +#~ msgid "Swahili" +#~ msgstr "Swahili" + +#~ msgid "Swedish" +#~ msgstr "Svensk" + +#~ msgid "Tajik" +#~ msgstr "Tadsjikisk" + +#~ msgid "Tamil" +#~ msgstr "Tamil" + +#~ msgid "Tagalog" +#~ msgstr "Tagalog" + +#~ msgid "Telugu" +#~ msgstr "Telugu" + +#~ msgid "Thai" +#~ msgstr "Thaisk" + +#~ msgid "Tibetan" +#~ msgstr "Tibetansk" + +#~ msgid "Ukrainian" +#~ msgstr "Ukrainsk" + +#~ msgid "Urdu" +#~ msgstr "Urdu" + +#~ msgid "Uzbek" +#~ msgstr "Usbekisk" + +#~ msgid "Uighur" +#~ msgstr "Uighur" + +#~ msgid "Vietnamese" +#~ msgstr "Vietnamesisk" + +#~ msgid "Welsh" +#~ msgstr "Walisisk" + +#~ msgid "Yiddish" +#~ msgstr "Jiddisch" + +#~ msgid "" +#~ "TWBlue has detected that you're running" +#~ " windows 10 and has changed the " +#~ "default keymap to the Windows 10 " +#~ "keymap. It means that some keyboard " +#~ "shorcuts could be different. Please " +#~ "check the keystroke editor by pressing" +#~ " Alt+Win+K to see all available " +#~ "keystrokes for this keymap." +#~ msgstr "" +#~ "TWBlue har opdaget, at du kører " +#~ "Windows 10 og har skiftet " +#~ "standardtastaturkommandoerne til Windows 10 " +#~ "keymap. Det betyder, at nogle " +#~ "tastaturgenveje kan være forskellige. Tjek " +#~ "venligst de tilgængelige tastetryk ved " +#~ "at trykke på ALT+WIN+K for at se" +#~ " alle tilgængelige tastetryk for dette " +#~ "sæt af tastaturgenveje." + +#~ msgid "Boosts: " +#~ msgstr "" + +#~ msgid "Favorites: " +#~ msgstr "" + +#~ msgid "Date: " +#~ msgstr "Dato: " + +#~ msgid "Community for {}" +#~ msgstr "" + +#~ msgid "Run {0} at Windows startup" +#~ msgstr "Kør {0} når Windows starter" + +#~ msgid "Use Codeofdusk's longtweet handlers (may decrease client performance)" +#~ msgstr "Brug Codeofdusks longtweet handlers (kan reducere klientens ydeevne)" + +#~ msgid "Remember state for mention all and long tweet" +#~ msgstr "Husk indstilling for \"omtal alle\" og \"lang tweet\"" + +#~ msgid "Bio: " +#~ msgstr "" + +#~ msgid "Joined at: " +#~ msgstr "" + +#~ msgid "Field {} - Label: " +#~ msgstr "" + +#~ msgid "{} posts. Click to open posts timeline" +#~ msgstr "" + +#~ msgid "{} following. Click to open Following timeline" +#~ msgstr "" + +#~ msgid "{} followers. Click to open followers timeline" +#~ msgstr "" + +#~ msgid "Display Name" +#~ msgstr "" + +#~ msgid "Bio" +#~ msgstr "" + +#~ msgid "Change header" +#~ msgstr "" + +#~ msgid "Change avatar" +#~ msgstr "" + +#~ msgid "Field {}: Label" +#~ msgstr "" + +#~ msgid "Add following to database" +#~ msgstr "" + +#~ msgid "Read long posts in GUI" +#~ msgstr "" + +#~ msgid "LibreTranslate API URL: " +#~ msgstr "" + +#~ msgid "LibreTranslate API Key (optional): " +#~ msgstr "" + +#~ msgid "DeepL API Key: " +#~ msgstr "" + +#~ msgid "" +#~ "Scan account and add followers and " +#~ "following users to the user " +#~ "autocompletion database" +#~ msgstr "" + +#~ msgid "" +#~ "Read preferences from instance (default " +#~ "visibility when publishing and displaying " +#~ "sensitive content)" +#~ msgstr "" + +#~ msgid "Ask confirmation before boosting a post" +#~ msgstr "" + +#~ msgid "hide emojis in usernames" +#~ msgstr "" + +#~ msgid "" +#~ "Load cache for items in memory " +#~ "(much faster in big datasets but " +#~ "requires more RAM)" +#~ msgstr "" + diff --git a/srcantiguo/locales/de/LC_MESSAGES/twblue.mo b/srcantiguo/locales/de/LC_MESSAGES/twblue.mo new file mode 100644 index 00000000..16a1250b Binary files /dev/null and b/srcantiguo/locales/de/LC_MESSAGES/twblue.mo differ diff --git a/srcantiguo/locales/de/LC_MESSAGES/twblue.po b/srcantiguo/locales/de/LC_MESSAGES/twblue.po new file mode 100644 index 00000000..7c10e8a7 --- /dev/null +++ b/srcantiguo/locales/de/LC_MESSAGES/twblue.po @@ -0,0 +1,4819 @@ +# Steffen Schultz , 2022, 2023. +msgid "" +msgstr "" +"Project-Id-Version: TW Blue 0.80\n" +"Report-Msgid-Bugs-To: manuel@manuelcortez.net\n" +"POT-Creation-Date: 2025-04-13 01:18+0000\n" +"PO-Revision-Date: 2023-01-14 15:40+0000\n" +"Last-Translator: Steffen Schultz \n" +"Language: de\n" +"Language-Team: German " +"\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.17.0\n" + +#: languageHandler.py:61 +msgctxt "languageName" +msgid "Amharic" +msgstr "Amharisch" + +#: languageHandler.py:62 +msgctxt "languageName" +msgid "Aragonese" +msgstr "Aragonesisch" + +#: languageHandler.py:63 +msgctxt "languageName" +msgid "Spanish" +msgstr "Spanisch" + +#: languageHandler.py:64 +msgctxt "languageName" +msgid "Portuguese" +msgstr "Portugiesisch" + +#: languageHandler.py:65 +msgctxt "languageName" +msgid "Russian" +msgstr "Russisch" + +#: languageHandler.py:66 +msgctxt "languageName" +msgid "italian" +msgstr "Italienisch" + +#: languageHandler.py:67 +msgctxt "languageName" +msgid "Turkey" +msgstr "Türkisch" + +#: languageHandler.py:68 +msgctxt "languageName" +msgid "Galician" +msgstr "Galizisch" + +#: languageHandler.py:69 +msgctxt "languageName" +msgid "Catala" +msgstr "Katalanisch" + +#: languageHandler.py:70 +msgctxt "languageName" +msgid "Vasque" +msgstr "Baskisch" + +#: languageHandler.py:71 +msgctxt "languageName" +msgid "polish" +msgstr "Polnisch" + +#: languageHandler.py:72 +msgctxt "languageName" +msgid "Arabic" +msgstr "Arabisch" + +#: languageHandler.py:73 +msgctxt "languageName" +msgid "Nepali" +msgstr "Nepalesisch" + +#: languageHandler.py:74 +msgctxt "languageName" +msgid "Serbian (Latin)" +msgstr "Serbisch (Latein)" + +#: languageHandler.py:75 +msgctxt "languageName" +msgid "Japanese" +msgstr "Japanisch" + +#: languageHandler.py:99 +msgid "User default" +msgstr "Benutzerstandard" + +#: main.py:105 +#, fuzzy +msgid "https://twblue.mcvsoftware.com/donate" +msgstr "https://twblue.es/donate" + +#: main.py:118 +#, python-brace-format +msgid "" +"{0} is already running. Close the other instance before starting this " +"one. If you're sure that {0} isn't running, try deleting the file at {1}." +" If you're unsure of how to do this, contact the {0} developers." +msgstr "" +"{0} läuft bereits. Beende die laufende Instanz, bevor du diese hier " +"ausführst. Falls du dir sicher bist, dass {0} nicht ausgeführt wird, " +"versuche, die Datei unter {1} zu löschen. Bei Problemen wende dich an die" +" {0}-Entwickler." + +#: sound.py:148 +msgid "Playing..." +msgstr "Abspielen..." + +#: sound.py:161 +msgid "Stopped." +msgstr "Angehalten." + +#: controller/mainController.py:261 +msgid "Ready" +msgstr "Bereit" + +#: controller/mainController.py:369 controller/mainController.py:654 +#: controller/mainController.py:673 controller/mainController.py:692 +#: controller/mainController.py:711 +msgid "" +"No session is currently in focus. Focus a session with the next or " +"previous session shortcut." +msgstr "" +"Derzeit ist keine Sitzung im Fokus. Bitte benutze die Tastenkombinationen" +" vorherige und nächste Sitzung, um eine Sitzung zu fokussieren." + +#: controller/mainController.py:373 +msgid "Empty buffer." +msgstr "Leere Ansicht." + +#: controller/mainController.py:380 +#, python-brace-format +msgid "{0} not found." +msgstr "{0} nicht gefunden." + +#: controller/mainController.py:702 controller/mainController.py:721 +#, python-format +msgid "%s, %s of %s" +msgstr "%s, %s von %s" + +#: controller/mainController.py:704 controller/mainController.py:723 +#: controller/mainController.py:751 controller/mainController.py:779 +#, python-format +msgid "%s. Empty" +msgstr "%s. Leer" + +#: controller/mainController.py:739 controller/mainController.py:743 +#: controller/mainController.py:767 +#, python-brace-format +msgid "{0}: This account is not logged into Twitter." +msgstr "{0}: Dieser Account ist nicht bei Twitter eingeloggt." + +#: controller/mainController.py:749 controller/mainController.py:777 +#, python-format +msgid "%s. %s, %s of %s" +msgstr "%s. %s, %s von %s" + +#: controller/mainController.py:771 +#, python-brace-format +msgid "{0}: This account is not logged into twitter." +msgstr "{0}: Dieser Account ist nicht bei Twitter eingeloggt." + +#: controller/mainController.py:910 controller/mainController.py:926 +msgid "An error happened while trying to connect to the server. Please try later." +msgstr "" +"Bei der Verbindung zum Server ist ein Fehler aufgetreten. Bitte versuche " +"es später erneut." + +#: controller/mainController.py:957 +msgid "The auto-reading of new tweets is enabled for this buffer" +msgstr "Das automatische Vorlesen von Tweets ist für diese Ansicht aktiv." + +#: controller/mainController.py:960 +msgid "The auto-reading of new tweets is disabled for this buffer" +msgstr "Das automatische Vorlesen von Tweets ist für diese Ansicht deaktiviert." + +#: controller/mainController.py:967 +msgid "Session mute on" +msgstr "Sitzung stummgeschaltet" + +#: controller/mainController.py:970 +msgid "Session mute off" +msgstr "Sitzung nicht stummgeschaltet" + +#: controller/mainController.py:979 +msgid "Buffer mute on" +msgstr "Stummschaltung ein" + +#: controller/mainController.py:982 +msgid "Buffer mute off" +msgstr "Stummschaltung aus" + +#: controller/mainController.py:999 +msgid "Copied" +msgstr "Kopiert" + +#: controller/mainController.py:1019 +msgid "Unable to update this buffer." +msgstr "Ansicht kann nicht aktualisiert werden." + +#: controller/mainController.py:1021 +msgid "Updating buffer..." +msgstr "Aktualisiere Ansicht..." + +#: controller/mainController.py:1024 +#, python-brace-format +msgid "{0} items retrieved" +msgstr "{0} Einträge abgerufen" + +#: controller/buffers/mastodon/base.py:137 controller/mainController.py:1028 +#: controller/mastodon/handler.py:98 controller/mastodon/handler.py:241 +#, python-brace-format +msgid "Timeline for {}" +msgstr "Zeitleiste für {}" + +#: controller/buffers/mastodon/users.py:93 controller/mainController.py:1030 +#: controller/mastodon/handler.py:100 controller/mastodon/handler.py:255 +#, python-brace-format +msgid "Followers for {}" +msgstr "Folger von {}" + +#: controller/mainController.py:1032 +#, python-brace-format +msgid "Friends for {}" +msgstr "Freunde von {}" + +#: controller/buffers/mastodon/users.py:95 controller/mainController.py:1034 +#: controller/mastodon/handler.py:102 controller/mastodon/handler.py:269 +#, python-brace-format +msgid "Following for {}" +msgstr "Folger von {}" + +#: controller/messages.py:18 +#, fuzzy +msgid "Translated" +msgstr "Überse&tzen" + +#: controller/settings.py:60 +msgid "System default" +msgstr "Systemstandard" + +#: controller/settings.py:60 +msgid "HTTP" +msgstr "HTTP" + +#: controller/settings.py:60 +msgid "SOCKS v4" +msgstr "SOCKS v4" + +#: controller/settings.py:60 +msgid "SOCKS v4 with DNS support" +msgstr "SOCKS v4 mit DNS-Unterstützung" + +#: controller/settings.py:60 +msgid "SOCKS v5" +msgstr "SOCKS v5" + +#: controller/settings.py:60 +msgid "SOCKS v5 with DNS support" +msgstr "SOCKS v5 mit DNS-Unterstützung" + +#: controller/userAlias.py:31 +#, python-brace-format +msgid "Edit alias for {}" +msgstr "Alias für {} bearbeiten" + +#: controller/buffers/base/base.py:91 +#: controller/buffers/mastodon/conversations.py:237 +#: controller/buffers/mastodon/search.py:80 +msgid "This action is not supported for this buffer" +msgstr "Diese Aktion ist in dieser Ansicht nicht verfügbar." + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:70 +#: controller/mastodon/settings.py:194 +msgid "Home" +msgstr "Start" + +#: controller/buffers/mastodon/base.py:52 +#: controller/buffers/mastodon/community.py:22 +#: controller/mastodon/handler.py:72 controller/mastodon/handler.py:114 +#: controller/mastodon/settings.py:195 +msgid "Local" +msgstr "Lokal" + +#: controller/buffers/mastodon/base.py:52 +#: controller/buffers/mastodon/community.py:22 +#: controller/mastodon/handler.py:74 controller/mastodon/settings.py:196 +msgid "Federated" +msgstr "Föderiert" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:76 +#: controller/mastodon/settings.py:197 +msgid "Mentions" +msgstr "Erwähnungen" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:84 +#: controller/mastodon/settings.py:201 +msgid "Bookmarks" +msgstr "Lesezeichen" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:78 +msgid "Direct messages" +msgstr "Direktnachrichten" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:80 +#: controller/mastodon/settings.py:199 +msgid "Sent" +msgstr "Gesendet" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:82 +#: controller/mastodon/settings.py:200 wxUI/dialogs/mastodon/postDialogs.py:229 +msgid "Favorites" +msgstr "Favoriten" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:86 +#: controller/mastodon/settings.py:202 +msgid "Followers" +msgstr "Folger" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:88 +#: controller/mastodon/settings.py:203 +msgid "Following" +msgstr "Folge ich" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:92 +#: controller/mastodon/settings.py:204 +msgid "Blocked users" +msgstr "Blockierte Benutzer" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:90 +#: controller/mastodon/settings.py:205 +msgid "Muted users" +msgstr "Stummgeschaltete Benutzer" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:94 +#: controller/mastodon/settings.py:206 +#: wxUI/dialogs/mastodon/filters/create_filter.py:80 +msgid "Notifications" +msgstr "Benachrichtigungen" + +#: controller/buffers/mastodon/base.py:58 +#, python-brace-format +msgid "{username}'s timeline" +msgstr "{username}s Zeitleiste" + +#: controller/buffers/mastodon/base.py:60 +#, python-brace-format +msgid "{username}'s followers" +msgstr "{username}s Folger" + +#: controller/buffers/mastodon/base.py:62 +#, python-brace-format +msgid "{username}'s following" +msgstr "{username} folgt" + +#: controller/buffers/mastodon/base.py:64 +msgid "Unknown buffer" +msgstr "Unbekannte Ansicht" + +#: controller/buffers/mastodon/base.py:67 +#: controller/buffers/mastodon/base.py:645 wxUI/buffers/mastodon/base.py:24 +#: wxUI/buffers/mastodon/conversationList.py:24 +#: wxUI/buffers/mastodon/notifications.py:22 wxUI/buffers/mastodon/user.py:18 +#: wxUI/dialogs/mastodon/postDialogs.py:5 +#: wxUI/dialogs/mastodon/postDialogs.py:194 wxUI/sysTrayIcon.py:35 +msgid "Post" +msgstr "Beitrag" + +#: controller/buffers/mastodon/base.py:68 +#: controller/buffers/mastodon/base.py:646 +msgid "Write your post here" +msgstr "Gib deinen Beitrag hier ein" + +#: controller/buffers/mastodon/base.py:153 +#, python-brace-format +msgid "New post in {0}" +msgstr "Neuer Beitrag in {0}" + +#: controller/buffers/mastodon/base.py:159 +#, python-brace-format +msgid "{0} new posts in {1}." +msgstr "{0} neue Beiträge in {1}." + +#: controller/buffers/mastodon/base.py:198 +#: controller/buffers/mastodon/community.py:90 +#: controller/buffers/mastodon/conversations.py:100 +#: controller/buffers/mastodon/mentions.py:82 +#: controller/buffers/mastodon/users.py:139 +#, python-format +msgid "%s items retrieved" +msgstr "%s Einträge abgerufen" + +#: controller/buffers/mastodon/base.py:216 +#: controller/buffers/mastodon/users.py:206 +msgid "This buffer is not a timeline; it can't be deleted." +msgstr "Diese Ansicht ist keine Zeitleiste und kann nicht gelöscht werden." + +#: controller/buffers/mastodon/base.py:346 +#: controller/buffers/mastodon/base.py:384 +#, python-brace-format +msgid "Conversation with {}" +msgstr "Unterhaltung mit {}" + +#: controller/buffers/mastodon/base.py:347 +#: controller/buffers/mastodon/base.py:385 +#: controller/buffers/mastodon/conversations.py:181 +#: controller/buffers/mastodon/notifications.py:122 +#: controller/buffers/mastodon/users.py:52 +msgid "Write your message here" +msgstr "Gib deine Nachricht hier ein" + +#: controller/buffers/mastodon/base.py:349 +#, python-brace-format +msgid "Reply to {}" +msgstr "Antwort an {}" + +#: controller/buffers/mastodon/base.py:350 +msgid "Write your reply here" +msgstr "Gib deine Antwort hier ein" + +#: controller/buffers/mastodon/base.py:412 +#, fuzzy +msgid "This action is not supported on conversations." +msgstr "Diese Aktion wird für Unterhaltungsbeiträge nicht unterstützt." + +#: controller/buffers/mastodon/base.py:477 +msgid "Opening URL..." +msgstr "URL wird geöffnet..." + +#: controller/buffers/mastodon/base.py:490 +msgid "You can delete only your own posts." +msgstr "Du kannst nur deine eigenen Beiträge löschen." + +#: controller/buffers/mastodon/base.py:519 +msgid "Opening item in web browser..." +msgstr "Eintrag wird im Browser geöffnet..." + +#: controller/buffers/mastodon/base.py:527 +#: controller/buffers/mastodon/base.py:547 +msgid "Adding to favorites..." +msgstr "Wird den Favoriten hinzugefügt..." + +#: controller/buffers/mastodon/base.py:534 +#: controller/buffers/mastodon/base.py:549 +msgid "Removing from favorites..." +msgstr "Wird aus Favoriten entfernt..." + +#: controller/buffers/mastodon/base.py:544 +#: controller/buffers/mastodon/base.py:559 +#: controller/buffers/mastodon/base.py:573 +#: controller/buffers/mastodon/conversations.py:213 +msgid "No status found with that ID" +msgstr "Kein Status mit dieser ID gefunden." + +#: controller/buffers/mastodon/base.py:562 +msgid "Adding to bookmarks..." +msgstr "Wird den Lesezeichen hinzugefügt..." + +#: controller/buffers/mastodon/base.py:564 +msgid "Removing from bookmarks..." +msgstr "Wird aus Lesezeichen entfernt..." + +#: controller/buffers/mastodon/base.py:586 +#, python-brace-format +msgid "Picture {0}" +msgstr "Bild {0}" + +#: controller/buffers/mastodon/base.py:587 +msgid "Select the picture" +msgstr "Wähle das Bild" + +#: controller/buffers/mastodon/base.py:610 +msgid "Unable to extract text" +msgstr "Kann keinen Text extrahieren" + +#: controller/buffers/mastodon/base.py:612 +msgid "OCR Result" +msgstr "" + +#: controller/buffers/mastodon/base.py:627 +msgid "this poll no longer exists." +msgstr "" + +#: controller/buffers/mastodon/base.py:630 +msgid "This poll has already expired." +msgstr "" + +#: controller/buffers/mastodon/base.py:633 +msgid "You have already voted on this poll." +msgstr "" + +#: controller/buffers/mastodon/base.py:642 +#, fuzzy +msgid "Sending vote..." +msgstr "Wird den Favoriten hinzugefügt..." + +#: controller/buffers/mastodon/conversations.py:180 +#, python-brace-format +msgid "Reply to conversation with {}" +msgstr "Antwort auf Unterhaltung mit {}" + +#: controller/buffers/mastodon/notifications.py:121 +#: controller/buffers/mastodon/users.py:51 +#, python-brace-format +msgid "New conversation with {}" +msgstr "Neue Unterhaltung mit {}" + +#: controller/buffers/mastodon/notifications.py:151 +msgid "Notification dismissed." +msgstr "Benachrichtigung verworfen." + +#: controller/buffers/mastodon/users.py:110 +msgid "There are no more items in this buffer." +msgstr "Keine weiteren Einträge in dieser Ansicht." + +#: controller/mastodon/handler.py:30 wxUI/dialogs/mastodon/updateProfile.py:35 +#, fuzzy +msgid "Update Profile" +msgstr "Profil akt&ualisieren" + +#: controller/mastodon/handler.py:31 wxUI/dialogs/mastodon/search.py:10 +#: wxUI/view.py:19 +msgid "&Search" +msgstr "&Suche" + +#: controller/mastodon/handler.py:33 wxUI/view.py:22 +msgid "Manage user aliases" +msgstr "Benutzer-Aliase verwalten" + +#: controller/mastodon/handler.py:35 controller/mastodon/handler.py:59 +#: wxUI/view.py:30 +msgid "&Post" +msgstr "&Beitrag" + +#: controller/mastodon/handler.py:36 wxUI/dialogs/mastodon/menus.py:9 +#: wxUI/dialogs/mastodon/menus.py:37 wxUI/view.py:31 +msgid "Re&ply" +msgstr "Ant&worten" + +#: controller/mastodon/handler.py:37 wxUI/dialogs/mastodon/menus.py:7 +#: wxUI/dialogs/mastodon/menus.py:35 wxUI/view.py:32 +msgid "&Boost" +msgstr "&Teilen" + +#: controller/mastodon/handler.py:38 wxUI/dialogs/mastodon/menus.py:11 +#: wxUI/dialogs/mastodon/menus.py:39 wxUI/view.py:33 +msgid "&Add to favorites" +msgstr "Zu F&avoriten hinzufügen" + +#: controller/mastodon/handler.py:39 +msgid "Remove from favorites" +msgstr "Aus Favoriten entfernen" + +#: controller/mastodon/handler.py:40 wxUI/dialogs/mastodon/menus.py:21 +#: wxUI/dialogs/mastodon/menus.py:49 wxUI/view.py:35 +msgid "&Show post" +msgstr "Beitrag &zeigen" + +#: controller/mastodon/handler.py:41 wxUI/view.py:36 +msgid "View conversa&tion" +msgstr "Konversa&tion anzeigen" + +#: controller/mastodon/handler.py:42 wxUI/view.py:37 +msgid "Read text in picture" +msgstr "Text in Bild lesen" + +#: controller/mastodon/handler.py:43 wxUI/dialogs/mastodon/menus.py:25 +#: wxUI/view.py:39 +msgid "&Delete" +msgstr "Löschen" + +#: controller/mastodon/handler.py:45 wxUI/view.py:43 +msgid "&Actions..." +msgstr "&Aktionen..." + +#: controller/mastodon/handler.py:46 wxUI/view.py:44 +msgid "&View timeline..." +msgstr "&Zeitleiste anzeigen" + +#: controller/mastodon/handler.py:47 wxUI/view.py:45 +msgid "Direct me&ssage" +msgstr "&Direktnachricht" + +#: controller/mastodon/handler.py:48 wxUI/view.py:46 +msgid "Add a&lias" +msgstr "A&lias hinzufügen" + +#: controller/mastodon/handler.py:51 +#, fuzzy +msgid "Show user profile" +msgstr "Benutzer&profil anzeigen" + +#: controller/mastodon/handler.py:54 +msgid "Create c&ommunity timeline" +msgstr "" + +#: controller/mastodon/handler.py:55 wxUI/view.py:57 +msgid "Create a &filter" +msgstr "Erstelle einen &Filter" + +#: controller/mastodon/handler.py:56 wxUI/view.py:58 +msgid "&Manage filters" +msgstr "Filter &verwalten" + +#: controller/mastodon/handler.py:95 +msgid "Timelines" +msgstr "Zeitleisten" + +#: controller/mastodon/handler.py:107 +msgid "Searches" +msgstr "Suchen" + +#: controller/mastodon/handler.py:110 controller/mastodon/handler.py:191 +#: controller/mastodon/handler.py:196 +#, python-brace-format +msgid "Search for {}" +msgstr "Suche nach {}" + +#: controller/mastodon/handler.py:111 +msgid "Communities" +msgstr "" + +#: controller/mastodon/handler.py:114 +#, fuzzy +msgid "federated" +msgstr "Föderiert" + +#: controller/mastodon/handler.py:143 +#, python-brace-format +msgid "Conversation with {0}" +msgstr "Unterhaltung mit {0}" + +#: controller/mastodon/handler.py:299 +msgid "Add an user alias" +msgstr "Benutzer-Alias hinzufügen" + +#: controller/mastodon/handler.py:311 +#, python-brace-format +msgid "Alias has been set correctly for {}." +msgstr "Alias korrekt festgelegt für {}." + +#: controller/mastodon/handler.py:342 +#, fuzzy +msgid "Update profile" +msgstr "Profil akt&ualisieren" + +#: controller/mastodon/messages.py:115 +#, python-format +msgid "%s - %s of %d characters" +msgstr "%s - %s von %d Zeichen" + +#: controller/mastodon/messages.py:239 +#, python-brace-format +msgid "Poll with {} options" +msgstr "Umfrage mit {} Optionen" + +#: controller/mastodon/messages.py:272 +#, python-brace-format +msgid "Post from {}" +msgstr "Beitrag von {}" + +#: controller/mastodon/messages.py:276 sessions/mastodon/templates.py:82 +#: wxUI/dialogs/mastodon/postDialogs.py:49 +msgid "Public" +msgstr "Öffentlich" + +#: controller/mastodon/messages.py:276 sessions/mastodon/templates.py:82 +#: wxUI/dialogs/mastodon/postDialogs.py:49 +msgid "Not listed" +msgstr "Nicht gelistet" + +#: controller/mastodon/messages.py:276 +msgid "followers only" +msgstr "Nur Folger" + +#: controller/mastodon/messages.py:276 sessions/mastodon/templates.py:82 +#: wxUI/dialogs/mastodon/postDialogs.py:49 +msgid "Direct" +msgstr "Direkt" + +#: controller/mastodon/messages.py:283 +msgid "Remote instance" +msgstr "Entfernte Instanz" + +#: controller/mastodon/messages.py:291 controller/mastodon/messages.py:319 +#, fuzzy +msgid "Unmute conversation" +msgstr "Konversation anzeigen" + +#: controller/mastodon/messages.py:315 wxUI/dialogs/mastodon/postDialogs.py:237 +#, fuzzy +msgid "Mute conversation" +msgstr "Konversation anzeigen" + +#: controller/mastodon/messages.py:316 +#, fuzzy +msgid "Conversation unmuted." +msgstr "Unterhaltung mit {}" + +#: controller/mastodon/messages.py:320 +#, fuzzy +msgid "Conversation muted." +msgstr "Unterhaltung mit {}" + +#: controller/mastodon/messages.py:331 +msgid "people who boosted this post" +msgstr "" + +#: controller/mastodon/messages.py:336 +msgid "people who favorited this post" +msgstr "" + +#: controller/mastodon/messages.py:342 +msgid "Link copied to clipboard." +msgstr "Link in Zwischenablage kopiert." + +#: controller/mastodon/settings.py:82 +#, python-format +msgid "Account settings for %s" +msgstr "Account-Einstellungen für %s" + +#: controller/mastodon/settings.py:92 +#, python-brace-format +msgid "Edit template for posts. Current template: {}" +msgstr "Vorlage für Beiträge bearbeiten. Aktuelle Vorlage: {}" + +#: controller/mastodon/settings.py:101 +#, python-brace-format +msgid "Edit template for conversations. Current template: {}" +msgstr "Vorlage für Unterhaltungen bearbeiten. Aktuelle Vorlage: {}" + +#: controller/mastodon/settings.py:110 +#, python-brace-format +msgid "Edit template for persons. Current template: {}" +msgstr "Vorlage für Personen bearbeiten. Aktuelle Vorlage: {}" + +#: controller/mastodon/settings.py:198 +msgid "Direct Messages" +msgstr "Direktnachrichten" + +#: controller/mastodon/filters/create_filter.py:75 +#, fuzzy, python-brace-format +msgid "Update Filter: {}" +msgstr "Profil akt&ualisieren" + +#: controller/mastodon/filters/manage_filters.py:57 +#: wxUI/dialogs/mastodon/filters/create_filter.py:90 +msgid "Never" +msgstr "" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:4 +msgid "Audio tweet." +msgstr "Audio-Tweet" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:5 +msgid "User timeline buffer created." +msgstr "Benutzerzeitleiste erstellt." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:6 +msgid "Buffer destroied." +msgstr "Ansicht gelöscht." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:7 +msgid "Direct message received." +msgstr "Direktnachricht empfangen." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:8 +msgid "Direct message sent." +msgstr "Direktnachricht gesendet." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:9 +msgid "Error." +msgstr "Fehler." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:10 +msgid "Tweet liked." +msgstr "\"Gefällt mir\" hinzugefügt." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:11 +msgid "Likes buffer updated." +msgstr "Likes-Ansicht aktualisiert." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:12 +msgid "Geotweet." +msgstr "Geo-Tweet." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:13 +msgid "Tweet contains one or more images" +msgstr "Tweet enthält ein oder mehr Bilder" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:14 +msgid "Boundary reached." +msgstr "Listenende erreicht." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:15 +msgid "List updated." +msgstr "Liste aktualisiert." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:16 +msgid "Too many characters." +msgstr "Zu viele Zeichen." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:17 +msgid "Mention received." +msgstr "Erwähnung empfangen." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:18 +msgid "New event." +msgstr "Neues Ereignis." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:19 +#, python-brace-format +msgid "{0} is ready." +msgstr "{0} ist bereit." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:20 +msgid "Mention sent." +msgstr "Erwähnung gesendet." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:21 +msgid "Tweet retweeted." +msgstr "Tweet retweetet." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:22 +msgid "Search buffer updated." +msgstr "Suchansicht aktualisiert." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:23 +msgid "Tweet received." +msgstr "Tweet empfangen." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:24 +msgid "Tweet sent." +msgstr "Tweet gesendet." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:25 +msgid "Trending topics buffer updated." +msgstr "Trends aktualisiert." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:26 +msgid "New tweet in user timeline buffer." +msgstr "Neuer Tweet in Benutzerzeitleiste." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:27 +msgid "New follower." +msgstr "Neuer Follower." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:28 +msgid "Volume changed." +msgstr "Lautstärke geändert." + +#: extra/SoundsTutorial/wx_ui.py:8 +msgid "Sounds tutorial" +msgstr "Sounds erlernen" + +#: extra/SoundsTutorial/wx_ui.py:11 +msgid "Press enter to listen to the sound for the selected event" +msgstr "Drücke Enter, um den Sound für das gewählte Element anzuhören." + +#: extra/SpellChecker/spellchecker.py:56 +#, python-format +msgid "Misspelled word: %s" +msgstr "Falsch geschriebenes Wort: %s" + +#: extra/SpellChecker/wx_ui.py:27 +msgid "Misspelled word" +msgstr "Falsch geschriebenes Wort" + +#: extra/SpellChecker/wx_ui.py:32 +msgid "Context" +msgstr "Kontext" + +#: extra/SpellChecker/wx_ui.py:37 +msgid "Suggestions" +msgstr "Vorschläge" + +#: extra/SpellChecker/wx_ui.py:42 +msgid "&Ignore" +msgstr "&Ignorieren" + +#: extra/SpellChecker/wx_ui.py:43 +msgid "I&gnore all" +msgstr "Alle i&gnorieren" + +#: extra/SpellChecker/wx_ui.py:44 +msgid "&Replace" +msgstr "E&rsetzen" + +#: extra/SpellChecker/wx_ui.py:45 +msgid "R&eplace all" +msgstr "Alle &ersetzen" + +#: extra/SpellChecker/wx_ui.py:46 +msgid "&Add to personal dictionary" +msgstr "Zum persönlichen Wörterbuch &hinzufügen" + +#: extra/SpellChecker/wx_ui.py:79 +#, python-brace-format +msgid "" +"An error has occurred. There are no dictionaries available for the " +"selected language in {0}" +msgstr "" +"Es ist ein Fehler aufgetreten. Für die gewählte Sprache existieren keine " +"Wörterbücher in {0}" + +#: extra/SpellChecker/wx_ui.py:79 +#: extra/autocompletionUsers/mastodon/wx_scan.py:44 +#: wxUI/commonMessageDialogs.py:23 wxUI/commonMessageDialogs.py:36 +#: wxUI/commonMessageDialogs.py:45 wxUI/commonMessageDialogs.py:52 +#: wxUI/commonMessageDialogs.py:55 wxUI/commonMessageDialogs.py:61 +#: wxUI/dialogs/mastodon/dialogs.py:38 wxUI/dialogs/mastodon/dialogs.py:43 +#: wxUI/dialogs/mastodon/dialogs.py:48 wxUI/dialogs/mastodon/dialogs.py:53 +#: wxUI/dialogs/mastodon/dialogs.py:60 +msgid "Error" +msgstr "Fehler" + +#: extra/SpellChecker/wx_ui.py:82 +msgid "Spell check complete." +msgstr "Rechtschreibprüfung abgeschlossen." + +#: extra/autocompletionUsers/completion.py:39 +#: extra/autocompletionUsers/completion.py:57 +msgid "You have to start writing" +msgstr "" + +#: extra/autocompletionUsers/completion.py:49 +#: extra/autocompletionUsers/completion.py:66 +#, fuzzy +msgid "There are no results in your users database" +msgstr "Keine weiteren Einträge in dieser Ansicht." + +#: extra/autocompletionUsers/completion.py:51 +#, fuzzy +msgid "Autocompletion only works for users." +msgstr "Auto-&Vervollständigung der Benutzer" + +#: extra/autocompletionUsers/wx_manage.py:9 +#, fuzzy +msgid "Manage Autocompletion database" +msgstr "Auto-Vervollständigungsdatenbank verwalten" + +#: extra/autocompletionUsers/wx_manage.py:12 +#, fuzzy, python-brace-format +msgid "Editing {0} users database" +msgstr "Benutzer-Aliase bearbeiten" + +#: extra/autocompletionUsers/wx_manage.py:13 +#, fuzzy +msgid "Username" +msgstr "Benutzer" + +#: extra/autocompletionUsers/wx_manage.py:13 wxUI/dialogs/configuration.py:108 +msgid "Name" +msgstr "Name" + +#: extra/autocompletionUsers/wx_manage.py:16 +#, fuzzy +msgid "Add user" +msgstr "Benutzer" + +#: extra/autocompletionUsers/wx_manage.py:17 +#, fuzzy +msgid "Remove user" +msgstr "Benutzer-Alias entfernen" + +#: extra/autocompletionUsers/wx_manage.py:38 +msgid "Twitter username" +msgstr "" + +#: extra/autocompletionUsers/wx_manage.py:38 +#, fuzzy +msgid "Add user to database" +msgstr "Benutzer-Alias hinzufügen" + +#: extra/autocompletionUsers/wx_manage.py:44 +#, fuzzy +msgid "The user does not exist" +msgstr "Dieser Benutzer existiert nicht." + +#: extra/autocompletionUsers/wx_manage.py:44 +#, fuzzy +msgid "Error!" +msgstr "Fehler" + +#: extra/autocompletionUsers/mastodon/scan.py:49 +msgid "" +"Updating database... You can close this window now. A message will tell " +"you when the process finishes." +msgstr "" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:8 +#, fuzzy +msgid "Autocomplete users' settings" +msgstr "Auto-&Vervollständigung der Benutzer" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:11 +#, fuzzy +msgid "Add &followers to database" +msgstr "Benutzer-Alias hinzufügen" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:12 +#, fuzzy +msgid "Add f&ollowing to database" +msgstr "Benutzer-Alias hinzufügen" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:26 +#, fuzzy +msgid "Updating autocompletion database" +msgstr "Auto-Vervollständigungsdatenbank verwalten" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:34 +msgid "" +"This process will retrieve the users you selected from your Mastodon " +"account, and add them to the user autocomplete database. Please note that" +" if there are many users or you have tried to perform this action less " +"than 15 minutes ago, TWBlue may reach a limit in API calls when trying to" +" load the users into the database. If this happens, we will show you an " +"error, in which case you will have to try this process again in a few " +"minutes. If this process ends with no error, you will be redirected back " +"to the account settings dialog. Do you want to continue?" +msgstr "" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:34 +#: wxUI/commonMessageDialogs.py:20 +msgid "Attention" +msgstr "Achtung" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:40 +#, python-brace-format +msgid "TWBlue has imported {} users successfully." +msgstr "" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:40 +#, fuzzy +msgid "Done" +msgstr "Fertig!" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:44 +msgid "Error adding users from Mastodon. Please try again in about 15 minutes." +msgstr "" + +#: extra/ocr/OCRSpace.py:7 +msgid "Detect automatically" +msgstr "Automatisch erkennen" + +#: extra/ocr/OCRSpace.py:7 +msgid "Danish" +msgstr "Dänisch" + +#: extra/ocr/OCRSpace.py:7 +msgid "Dutch" +msgstr "Niederländisch" + +#: extra/ocr/OCRSpace.py:7 +msgid "English" +msgstr "Englisch" + +#: extra/ocr/OCRSpace.py:7 +msgid "Finnish" +msgstr "Finnisch" + +#: extra/ocr/OCRSpace.py:7 +msgid "French" +msgstr "Französisch" + +#: extra/ocr/OCRSpace.py:7 +msgid "German" +msgstr "Deutsch" + +#: extra/ocr/OCRSpace.py:7 +msgid "Hungarian" +msgstr "Ungarisch" + +#: extra/ocr/OCRSpace.py:7 +msgid "Korean" +msgstr "Koreanisch" + +#: extra/ocr/OCRSpace.py:7 +msgid "Italian" +msgstr "Italienisch" + +#: extra/ocr/OCRSpace.py:7 +msgid "Japanese" +msgstr "Japanisch" + +#: extra/ocr/OCRSpace.py:7 +msgid "Polish" +msgstr "Polnisch" + +#: extra/ocr/OCRSpace.py:7 +msgid "Portuguese" +msgstr "Portugiesisch" + +#: extra/ocr/OCRSpace.py:7 +msgid "Russian" +msgstr "Russisch" + +#: extra/ocr/OCRSpace.py:7 +msgid "Spanish" +msgstr "Spanisch" + +#: extra/ocr/OCRSpace.py:7 +msgid "Turkish" +msgstr "Türkisch" + +#: extra/translator/wx_ui.py:25 +msgid "Translate message" +msgstr "Nachricht übersetzen" + +#: extra/translator/wx_ui.py:29 +#, fuzzy +msgid "Translation engine" +msgstr "Überse&tzen" + +#: extra/translator/wx_ui.py:32 +msgid "Target language" +msgstr "Zielsprache" + +#: keystrokeEditor/wx_ui.py:8 +msgid "Keystroke editor" +msgstr "Tastenkombinations-Editor" + +#: keystrokeEditor/wx_ui.py:11 +msgid "Select a keystroke to edit" +msgstr "Wähle eine Tastenkombination zum Bearbeiten." + +#: keystrokeEditor/wx_ui.py:12 +#: wxUI/dialogs/mastodon/filters/manage_filters.py:18 +#: wxUI/dialogs/mastodon/userActions.py:9 +#: wxUI/dialogs/mastodon/userActions.py:18 +#: wxUI/dialogs/mastodon/userActions.py:19 +msgid "Action" +msgstr "Aktion" + +#: keystrokeEditor/wx_ui.py:12 +msgid "Keystroke" +msgstr "Tastenkombination" + +#: keystrokeEditor/wx_ui.py:17 +#: wxUI/dialogs/mastodon/filters/manage_filters.py:23 +#: wxUI/dialogs/userAliasDialogs.py:53 +msgid "Edit" +msgstr "Bearbeiten" + +#: keystrokeEditor/wx_ui.py:19 keystrokeEditor/wx_ui.py:49 +msgid "Undefine keystroke" +msgstr "Tastenkombination entfernen" + +#: keystrokeEditor/wx_ui.py:20 +msgid "Execute action" +msgstr "Aktion ausführen" + +#: keystrokeEditor/wx_ui.py:21 wxUI/dialogs/userAliasDialogs.py:25 +msgid "Close" +msgstr "Schließen" + +#: keystrokeEditor/wx_ui.py:41 +msgid "Undefined" +msgstr "Nicht definiert" + +#: keystrokeEditor/wx_ui.py:49 +msgid "Are you sure you want to undefine this keystroke?" +msgstr "Möchtest du diese Tastenkombination wirklich entfernen?" + +#: keystrokeEditor/wx_ui.py:53 +msgid "Editing keystroke" +msgstr "Bearbeite Tastenkombination" + +#: keystrokeEditor/wx_ui.py:56 +msgid "Control" +msgstr "STRG" + +#: keystrokeEditor/wx_ui.py:57 +msgid "Alt" +msgstr "Alt" + +#: keystrokeEditor/wx_ui.py:58 +msgid "Shift" +msgstr "Umschalt" + +#: keystrokeEditor/wx_ui.py:59 +msgid "Windows" +msgstr "Windows" + +#: keystrokeEditor/wx_ui.py:65 +msgid "Key" +msgstr "Taste" + +#: keystrokeEditor/wx_ui.py:70 wxUI/dialogs/find.py:21 +#: wxUI/dialogs/mastodon/showUserProfile.py:31 +#: wxUI/dialogs/userAliasDialogs.py:23 +msgid "OK" +msgstr "OK" + +#: keystrokeEditor/wx_ui.py:83 +msgid "You need to use the Windows key" +msgstr "Du musst die Windows-Taste verwenden." + +#: keystrokeEditor/wx_ui.py:83 keystrokeEditor/wx_ui.py:86 +msgid "Invalid keystroke" +msgstr "Ungültige Tastenkombination" + +#: keystrokeEditor/wx_ui.py:86 +msgid "You must provide a character for the keystroke" +msgstr "Du musst ein Zeichen für die Tastenkombination angeben." + +#: keystrokeEditor/actions/mastodon.py:3 +msgid "Go up in the current buffer" +msgstr "In der aktiven Ansicht aufwärts gehen" + +#: keystrokeEditor/actions/mastodon.py:4 +msgid "Go down in the current buffer" +msgstr "In der aktiven Ansicht abwärts gehen" + +#: keystrokeEditor/actions/mastodon.py:5 +msgid "Go to the previous buffer" +msgstr "Zur vorherigen Ansicht" + +#: keystrokeEditor/actions/mastodon.py:6 +msgid "Go to the next buffer" +msgstr "Zur nächsten Ansicht" + +#: keystrokeEditor/actions/mastodon.py:7 +msgid "Focus the next session" +msgstr "Nächste Sitzung fokussieren" + +#: keystrokeEditor/actions/mastodon.py:8 +msgid "Focus the previous session" +msgstr "Vorherige Sitzung fokussieren" + +#: keystrokeEditor/actions/mastodon.py:9 +msgid "Show or hide the GUI" +msgstr "GUI zeigen/verbergen" + +#: keystrokeEditor/actions/mastodon.py:10 +msgid "Make a new post" +msgstr "Neuen Beitrag verfassen" + +#: keystrokeEditor/actions/mastodon.py:11 wxUI/buffers/mastodon/base.py:26 +#: wxUI/buffers/mastodon/conversationList.py:25 +msgid "Reply" +msgstr "Antwort" + +#: keystrokeEditor/actions/mastodon.py:12 wxUI/buffers/mastodon/base.py:25 +#: wxUI/dialogs/mastodon/dialogs.py:7 +msgid "Boost" +msgstr "Teilen" + +#: keystrokeEditor/actions/mastodon.py:13 +msgid "Send direct message" +msgstr "Direktnachricht senden" + +#: keystrokeEditor/actions/mastodon.py:14 +msgid "Add post to favorites" +msgstr "Beitrag favorisieren" + +#: keystrokeEditor/actions/mastodon.py:15 +msgid "Remove post from favorites" +msgstr "Beitrag aus Favoriten entfernen" + +#: keystrokeEditor/actions/mastodon.py:16 +msgid "Add/remove post from favorites" +msgstr "Beitrag zu Favoriten hinzufügen/entfernen" + +#: keystrokeEditor/actions/mastodon.py:17 +msgid "Open the user actions dialogue" +msgstr "Aktionen-Dialog öffnen" + +#: keystrokeEditor/actions/mastodon.py:18 +#, fuzzy +msgid "See user details" +msgstr "Benutzer-Alias entfernen" + +#: keystrokeEditor/actions/mastodon.py:19 +msgid "Show post" +msgstr "Beitrag zeigen" + +#: keystrokeEditor/actions/mastodon.py:20 +msgid "Quit" +msgstr "Beenden" + +#: keystrokeEditor/actions/mastodon.py:21 +msgid "Open user timeline" +msgstr "Benutzerzeitleiste öffnen" + +#: keystrokeEditor/actions/mastodon.py:22 +msgid "Destroy buffer" +msgstr "Ansicht löschen" + +#: keystrokeEditor/actions/mastodon.py:23 +msgid "Interact with the currently focused post." +msgstr "Interagiert mit dem momentan fokussierten Beitrag." + +#: keystrokeEditor/actions/mastodon.py:24 +msgid "Open URL" +msgstr "URL öffnen" + +#: keystrokeEditor/actions/mastodon.py:25 +msgid "View in browser" +msgstr "Im Browser anzeigen" + +#: keystrokeEditor/actions/mastodon.py:26 +msgid "Increase volume by 5%" +msgstr "Lautstärke um 5% erhöhen" + +#: keystrokeEditor/actions/mastodon.py:27 +msgid "Decrease volume by 5%" +msgstr "Lautstärke um 5% verringern" + +#: keystrokeEditor/actions/mastodon.py:28 +msgid "Jump to the first element of a buffer" +msgstr "Zum ersten Eintrag einer Ansicht" + +#: keystrokeEditor/actions/mastodon.py:29 +msgid "Jump to the last element of the current buffer" +msgstr "Zum letzten Eintrag der gewählten Ansicht" + +#: keystrokeEditor/actions/mastodon.py:30 +msgid "Jump 20 elements up in the current buffer" +msgstr "20 Elemente in der gewählten Ansicht nach oben springen" + +#: keystrokeEditor/actions/mastodon.py:31 +msgid "Jump 20 elements down in the current buffer" +msgstr "20 Elemente in der gewählten Ansicht nach unten springen" + +#: keystrokeEditor/actions/mastodon.py:33 +msgid "Delete post" +msgstr "Beitrag löschen" + +#: keystrokeEditor/actions/mastodon.py:34 +msgid "Empty the current buffer" +msgstr "Aktuelle Ansicht leeren" + +#: keystrokeEditor/actions/mastodon.py:35 +msgid "Repeat last item" +msgstr "Letzten Eintrag wiederholen" + +#: keystrokeEditor/actions/mastodon.py:36 +msgid "Copy to clipboard" +msgstr "In Zwischenablage kopieren" + +#: keystrokeEditor/actions/mastodon.py:39 +msgid "Mute/unmute the active buffer" +msgstr "Aktive Ansicht stummschalten" + +#: keystrokeEditor/actions/mastodon.py:40 +msgid "Mute/unmute the current session" +msgstr "Aktiven Account global stummschalten" + +#: keystrokeEditor/actions/mastodon.py:41 +msgid "toggle the automatic reading of incoming tweets in the active buffer" +msgstr "" +"Schaltet das automatische Vorlesen neuer Tweets in der aktuellen Ansicht " +"um" + +#: keystrokeEditor/actions/mastodon.py:42 +msgid "Search on instance" +msgstr "Auf Instanz suchen" + +#: keystrokeEditor/actions/mastodon.py:43 +msgid "Find a string in the currently focused buffer" +msgstr "Eine Zeichenkette in der momentan fokussierten Ansicht suchen" + +#: keystrokeEditor/actions/mastodon.py:44 +msgid "Show the keystroke editor" +msgstr "Öffnet den Tastenkombinations-Editor" + +#: keystrokeEditor/actions/mastodon.py:46 +msgid "load previous items" +msgstr "Vorhergehende Einträge laden" + +#: keystrokeEditor/actions/mastodon.py:48 +msgid "View conversation" +msgstr "Konversation anzeigen" + +#: keystrokeEditor/actions/mastodon.py:49 +msgid "Check and download updates" +msgstr "Updates suchen und herunterladen" + +#: keystrokeEditor/actions/mastodon.py:50 +msgid "Opens the global settings dialogue" +msgstr "Öffnet die globalen Einstellungen" + +#: keystrokeEditor/actions/mastodon.py:52 +msgid "Opens the account settings dialogue" +msgstr "Öffnet die Account-Einstellungen" + +#: keystrokeEditor/actions/mastodon.py:53 +msgid "Try to play a media file" +msgstr "Versuche eine Mediendatei abzuspielen" + +#: keystrokeEditor/actions/mastodon.py:54 +msgid "Updates the buffer and retrieves possible lost items there." +msgstr "" +"Aktualisiert die Ansicht und stellt ggf. darin verlohrene Einträge wieder" +" her." + +#: keystrokeEditor/actions/mastodon.py:55 +msgid "Extracts the text from a picture and displays the result in a dialog." +msgstr "Extrahiert Text aus einem Bild und zeigt ihn in einem Dialog an." + +#: keystrokeEditor/actions/mastodon.py:56 +msgid "Adds an alias to an user" +msgstr "Erstellt einen Alias für einen Benutzer" + +#: sessionmanager/sessionManager.py:69 +#, fuzzy, python-brace-format +msgid "{account_name}@{instance} (Mastodon)" +msgstr "{account_name} (Mastodon)" + +#: sessionmanager/wxUI.py:11 +msgid "Session manager" +msgstr "Sitzungsverwaltung" + +#: sessionmanager/wxUI.py:14 +msgid "Accounts list" +msgstr "Account-Liste" + +#: sessionmanager/wxUI.py:16 +msgid "Account" +msgstr "Account" + +#: sessionmanager/wxUI.py:20 +msgid "New account" +msgstr "Neuer Account" + +#: sessionmanager/wxUI.py:22 sessionmanager/wxUI.py:79 +msgid "Remove account" +msgstr "Account entfernen" + +#: sessionmanager/wxUI.py:24 +msgid "Global Settings" +msgstr "Globale Einstellungen" + +#: sessionmanager/wxUI.py:48 +msgid "You need to configure an account." +msgstr "Du musst einen Account konfigurieren." + +#: sessionmanager/wxUI.py:48 +msgid "Account Error" +msgstr "Account-Fehler" + +#: sessionmanager/wxUI.py:54 +msgid "Mastodon" +msgstr "Mastodon" + +#: sessionmanager/wxUI.py:59 +msgid "" +"You will be prompted for your Mastodon data (instance URL, email address " +"and password) so we can authorise TWBlue in your instance. Would you like" +" to authorise your account now?" +msgstr "" +"Du wirst nach deinen Mastodon-Daten gefragt (URL der Instanz, E-Mail-" +"Adresse und Passwort), damit TWBlue für den Zugriff auf deine Instanz " +"berechtigt ist. Möchtest du deinen Account jetzt autorisieren?" + +#: sessionmanager/wxUI.py:59 +msgid "Authorization" +msgstr "Autorisierung" + +#: sessionmanager/wxUI.py:67 +#, python-format +msgid "Authorized account %d" +msgstr "Autorisierter Account %d" + +#: sessionmanager/wxUI.py:73 +msgid "" +"Your access token is invalid or the authorization has failed. Please try " +"again." +msgstr "" +"Dein Zugriffs-Token ist ungültig oder die Authorisierung fehlgeschlagen. " +"Bitte versuche es erneut." + +#: sessionmanager/wxUI.py:73 +msgid "Invalid user token" +msgstr "Ungültiger Benutzer-Token" + +#: sessionmanager/wxUI.py:79 +msgid "Do you really want to delete this account?" +msgstr "Möchtest du diesen Account wirklich löschen?" + +#: sessions/base.py:125 +#, python-brace-format +msgid "" +"An exception occurred while saving the {app} database. It will be deleted" +" and rebuilt automatically. If this error persists, send the error log to" +" the {app} developers." +msgstr "" +"Beim Speichern der {app}-Datenbank ist ein Ausnahmefehler aufgetreten. " +"Sie wird daher gelöscht und neu erstellt. Sollte das Problem weiterhin " +"bestehen, sende das Fehlerprotokoll an die {app}-Entwickler." + +#: sessions/base.py:165 +#, python-brace-format +msgid "" +"An exception occurred while loading the {app} database. It will be " +"deleted and rebuilt automatically. If this error persists, send the error" +" log to the {app} developers." +msgstr "" +"Beim Laden der {app}-Datenbank ist ein Ausnahmefehler aufgetreten. Sie " +"wird daher gelöscht und neu erstellt. Sollte das Problem weiterhin " +"bestehen, sende das Fehlerprotokoll an die {app}-Entwickler." + +#: sessions/mastodon/compose.py:15 sessions/mastodon/compose.py:61 +msgid "dddd, MMMM D, YYYY H:m" +msgstr "dddd, D. MMMM YYYY, H:m" + +#: sessions/mastodon/compose.py:17 sessions/mastodon/templates.py:74 +#: sessions/mastodon/templates.py:75 +#, python-brace-format +msgid "Boosted from @{}: {}" +msgstr "Geteilt von @{}: {}" + +#: sessions/mastodon/compose.py:22 sessions/mastodon/compose.py:81 +#: sessions/mastodon/templates.py:81 sessions/mastodon/templates.py:176 +#, python-brace-format +msgid "hidden by filter {}" +msgstr "" + +#: sessions/mastodon/compose.py:36 sessions/mastodon/templates.py:28 +msgid "dddd, MMMM D, YYYY H:m:s" +msgstr "dddd, D. MMMM YYYY, H:m:s" + +#: sessions/mastodon/compose.py:38 +#, python-format +msgid "%s (@%s). %s followers, %s following, %s posts. Joined %s" +msgstr "%s (@%s). %s Folger, folgt %s, %s Beiträge. Beigetreten %s" + +#: sessions/mastodon/compose.py:49 +#, python-brace-format +msgid "Last message from {}: {}" +msgstr "Letzte Nachricht von {}: {}" + +#: sessions/mastodon/compose.py:64 +#, fuzzy, python-brace-format +msgid "{username} has posted: {status}" +msgstr "{username} hat geteilt: {status}" + +#: sessions/mastodon/compose.py:66 +#, fuzzy, python-brace-format +msgid "{username} has mentioned you: {status}" +msgstr "{username} hat dich erwähnt: {status}" + +#: sessions/mastodon/compose.py:68 +#, python-brace-format +msgid "{username} has boosted: {status}" +msgstr "{username} hat geteilt: {status}" + +#: sessions/mastodon/compose.py:70 +#, python-brace-format +msgid "{username} has added to favorites: {status}" +msgstr "{username} hat favorisiert: {status}" + +#: sessions/mastodon/compose.py:72 +#, python-brace-format +msgid "{username} has followed you." +msgstr "{username} folgt dir." + +#: sessions/mastodon/compose.py:74 +#, fuzzy, python-brace-format +msgid "{username} has joined the instance." +msgstr "{username} hat geteilt: {status}" + +#: sessions/mastodon/compose.py:76 sessions/mastodon/templates.py:171 +#, python-brace-format +msgid "A poll in which you have voted has expired: {status}" +msgstr "Eine Umfrage in der du abgestimmt hast ist abgelaufen: {status}" + +#: sessions/mastodon/compose.py:78 +#, python-brace-format +msgid "{username} wants to follow you." +msgstr "{username} möchte dir folgen." + +#: sessions/mastodon/session.py:69 +msgid "Please enter your instance URL." +msgstr "Bitte trage die URL deiner Instanz ein." + +#: sessions/mastodon/session.py:69 +msgid "Mastodon instance" +msgstr "Mastodon-Instanz" + +#: sessions/mastodon/session.py:80 +msgid "" +"We could not connect to your mastodon instance. Please verify that the " +"domain exists and the instance is accessible via a web browser." +msgstr "" +"Es konnte keine Verbindung zu deiner Mastodon-Instanz aufgebaut werden. " +"Bitte prüfe, ob die URL korrekt und die Instanz mit einem Browser " +"erreichbar ist." + +#: sessions/mastodon/session.py:80 +msgid "Instance error" +msgstr "Instanzfehler" + +#: sessions/mastodon/session.py:85 +msgid "Enter the verification code" +msgstr "Trage den Bestätigungs-Code ein" + +#: sessions/mastodon/session.py:85 +msgid "PIN code authorization" +msgstr "PIN-Code-Autorisierung" + +#: sessions/mastodon/session.py:94 +msgid "" +"We could not authorice your mastodon account to be used in TWBlue. This " +"might be caused due to an incorrect verification code. Please try to add " +"the session again." +msgstr "" +"Dein Mastodon-Account konnte nicht für TWBlue autorisiert werden. " +"Möglicherweise war der Bestädigungs-Code nicht korrekt. Bitte versuche " +"die Sitzung erneut zu erstellen." + +#: sessions/mastodon/session.py:94 +msgid "Authorization error" +msgstr "Autorisierungsfehler" + +#: sessions/mastodon/session.py:215 +#, python-format +msgid "%s succeeded." +msgstr "%s erfolgreich." + +#: sessions/mastodon/templates.py:18 +msgid "$display_name, $text $image_descriptions $date. $source" +msgstr "$display_name, $text $image_descriptions $date. $source" + +#: sessions/mastodon/templates.py:19 +msgid "Dm to $recipient_display_name, $text $date" +msgstr "Direktnachricht an $recipient_display_name, $text $date" + +#: sessions/mastodon/templates.py:20 +msgid "" +"$display_name (@$screen_name). $followers followers, $following " +"following, $posts posts. Joined $created_at." +msgstr "" +"$display_name (@$screen_name). $followers Folger, folgt $following, " +"$posts Beiträge. Beigetreten $created_at." + +#: sessions/mastodon/templates.py:21 +msgid "$display_name $text, $date" +msgstr "$display_name $text, $date" + +#: sessions/mastodon/templates.py:34 +#, python-brace-format +msgid "Content warning: {}" +msgstr "Inhaltswarnung: {}" + +#: sessions/mastodon/templates.py:45 +#, fuzzy, python-brace-format +msgid "Media description: {}" +msgstr "Bildbeschreibung: {}" + +#: sessions/mastodon/templates.py:82 wxUI/dialogs/mastodon/postDialogs.py:49 +msgid "Followers only" +msgstr "Nur Folger" + +#: sessions/mastodon/templates.py:94 +#, fuzzy +msgid "Pinned." +msgstr "Kopiert" + +#: sessions/mastodon/templates.py:157 +#, fuzzy, python-brace-format +msgid "has posted: {status}" +msgstr "hat geteilt: {status}" + +#: sessions/mastodon/templates.py:159 +#, fuzzy, python-brace-format +msgid "has mentioned you: {status}" +msgstr "hat dich erwähnt: {status}" + +#: sessions/mastodon/templates.py:161 +#, python-brace-format +msgid "has boosted: {status}" +msgstr "hat geteilt: {status}" + +#: sessions/mastodon/templates.py:163 +#, python-brace-format +msgid "has added to favorites: {status}" +msgstr "hat favorisiert: {status}" + +#: sessions/mastodon/templates.py:165 +#, python-brace-format +msgid "has updated a status: {status}" +msgstr "hat einen Status aktualisiert: {status}" + +#: sessions/mastodon/templates.py:167 +msgid "has followed you." +msgstr "folgt dir." + +#: sessions/mastodon/templates.py:169 +#, fuzzy +msgid "has joined the instance." +msgstr "Entfernte Instanz" + +#: sessions/mastodon/templates.py:173 +msgid "wants to follow you." +msgstr "möchte dir folgen." + +#: update/utils.py:29 +#, python-format +msgid "%d day, " +msgstr "%d Tag, " + +#: update/utils.py:31 +#, python-format +msgid "%d days, " +msgstr "%d Tage, " + +#: update/utils.py:33 +#, python-format +msgid "%d hour, " +msgstr "%d Stunde, " + +#: update/utils.py:35 +#, python-format +msgid "%d hours, " +msgstr "%d Stunden, " + +#: update/utils.py:37 +#, python-format +msgid "%d minute, " +msgstr "%d Minute, " + +#: update/utils.py:39 +#, python-format +msgid "%d minutes, " +msgstr "%d Minuten, " + +#: update/utils.py:41 +#, python-format +msgid "%s second" +msgstr "%s Sekunde" + +#: update/utils.py:43 +#, python-format +msgid "%s seconds" +msgstr "%s Sekunden" + +#: update/wxUpdater.py:11 +#, python-format +msgid "" +"There's a new %s version available, released on %s. Would you like to " +"download it now?\n" +"\n" +" %s version: %s\n" +"\n" +"Changes:\n" +"%s" +msgstr "" +"Es ist eine neue Version von %s verfügbar, freigegeben am %s. Möchtest du" +" sie jetzt herunterladen?\n" +"\n" +" %s Version: %s\n" +"\n" +"Änderungen:\n" +"%s" + +#: update/wxUpdater.py:14 +#, python-format +msgid "" +"There's a new %s version available, released on %s. Updates are not " +"automatic in Windows 7, so you would need to visit TWBlue's download " +"website to get the latest version.\n" +"\n" +" %s version: %s\n" +"\n" +"Changes:\n" +"%s" +msgstr "" +"Es ist eine neue %s-Version verfügbar, freigegeben am %s. Automatische " +"Updates sind in Windows 7 nicht verfügbar, daher musst du zum " +"Herunterladen die TWBlue-Webseite aufrufen.\n" +"\n" +" %s Version: %s\n" +"\n" +"Änderungen:\n" +"%s" + +#: update/wxUpdater.py:16 +#, python-format +msgid "New version for %s" +msgstr "Neue Version von %s" + +#: update/wxUpdater.py:23 +msgid "Download in Progress" +msgstr "Download läuft" + +#: update/wxUpdater.py:23 +msgid "Downloading the new version..." +msgstr "Die neue Version wird heruntergeladen..." + +#: update/wxUpdater.py:33 +#, python-format +msgid "Updating... %s of %s" +msgstr "Aktualisiere... %s of %s" + +#: update/wxUpdater.py:36 +msgid "" +"The update has been downloaded and installed successfully. Press OK to " +"continue." +msgstr "" +"Das Update wurde heruntergeladen und installiert. Drücke OK zum " +"Fortfahren." + +#: update/wxUpdater.py:36 +msgid "Done!" +msgstr "Fertig!" + +#: wxUI/commonMessageDialogs.py:6 +#, python-brace-format +msgid "Do you really want to close {0}?" +msgstr "Möchtest du {0} wirklich schließen?" + +#: wxUI/commonMessageDialogs.py:6 +msgid "Exit" +msgstr "Beenden" + +#: wxUI/commonMessageDialogs.py:10 +#, python-brace-format +msgid " {0} must be restarted for these changes to take effect." +msgstr "Zum Anwenden der Änderungen muss {0} neu gestartet werden." + +#: wxUI/commonMessageDialogs.py:10 +#, python-brace-format +msgid "Restart {0} " +msgstr "{0} neu starten" + +#: wxUI/commonMessageDialogs.py:13 +msgid "" +"Are you sure you want to delete this user from the database? This user " +"will not appear in autocomplete results anymore." +msgstr "" +"Soll der Benutzer wirklich aus der Datenbank entfernt werden? Er wird " +"dann nicht mehr in der Auto-Vervollständigung erscheinen." + +#: wxUI/commonMessageDialogs.py:13 +msgid "Confirm" +msgstr "Bestätigen" + +#: wxUI/commonMessageDialogs.py:16 +msgid "" +"Do you really want to empty this buffer? It's items will be removed from" +" the list but not from Twitter" +msgstr "" +"Möchtest du diese Ansicht wirklich leeren? Die Einträge werden aus der " +"Liste entfernt, jedoch nicht von Twitter." + +#: wxUI/commonMessageDialogs.py:16 wxUI/dialogs/mastodon/dialogs.py:31 +msgid "Empty buffer" +msgstr "Ansicht leeren" + +#: wxUI/commonMessageDialogs.py:20 +msgid "Do you really want to destroy this buffer?" +msgstr "Möchtest du diese Ansicht wirklich löschen?" + +#: wxUI/commonMessageDialogs.py:23 +msgid "That user does not exist" +msgstr "Dieser Benutzer existiert nicht." + +#: wxUI/commonMessageDialogs.py:26 +msgid "A timeline for this user already exists. You can't open another" +msgstr "" +"Für diesen Benutzer ist bereits eine Zeitleiste geöffnet, es kann daher " +"keine weitere erstellt werden." + +#: wxUI/commonMessageDialogs.py:26 +msgid "Existing timeline" +msgstr "Existierende Zeitleiste" + +#: wxUI/commonMessageDialogs.py:29 +#, python-brace-format +msgid "" +"If you like {0} we need your help to keep it going. Help us by donating " +"to the project. This will help us pay for the server, the domain and some" +" other things to ensure that {0} will be actively maintained. Your " +"donation will give us the means to continue the development of {0}, and " +"to keep {0} free. Would you like to donate now?" +msgstr "" +"Wenn dir {0} gefällt, benötigen wir deine Hilfe zum Fortführen des " +"Projekts. Mit einer Spende kannst du uns dabei unterstützen, die Domain, " +"unseren Server und einige andere Dinge am Laufen zu halten, damit {0} " +"aktiv als kostenlose Software gepflegt und entwickelt werden kann. " +"Möchtest du jetzt spenden?" + +#: wxUI/commonMessageDialogs.py:29 +msgid "We need your help" +msgstr "Wir brauchen deine Hilfe" + +#: wxUI/commonMessageDialogs.py:33 wxUI/dialogs/mastodon/postDialogs.py:207 +msgid "Information" +msgstr "Information" + +#: wxUI/commonMessageDialogs.py:36 +msgid "The configuration file is invalid." +msgstr "Die Konfigurationsdatei ist ungültig." + +#: wxUI/commonMessageDialogs.py:39 +#, python-brace-format +msgid "" +"{0} quit unexpectedly the last time it was run. If the problem persists, " +"please report it to the {0} developers." +msgstr "" +"{0} wurde bei der letzten Ausführung unerwartet beendet. Falls dieses " +"Problem weiterhin besteht, wende dich an die {0}-Entwickler." + +#: wxUI/commonMessageDialogs.py:39 +msgid "Warning" +msgstr "Warnung" + +#: wxUI/commonMessageDialogs.py:45 +#, python-brace-format +msgid "Sorry, you can't update while running {} from source." +msgstr "" + +#: wxUI/commonMessageDialogs.py:49 +msgid "the provided instance is invalid. Please try again." +msgstr "" + +#: wxUI/commonMessageDialogs.py:49 +#, fuzzy +msgid "Invalid instance" +msgstr "Mastodon-Instanz" + +#: wxUI/commonMessageDialogs.py:52 +msgid "" +"TWBlue was unable to add or update the filter with the specified " +"settings. Please try again." +msgstr "" + +#: wxUI/commonMessageDialogs.py:55 +msgid "" +"TWBlue was unable to load your filters from the instance. Please try " +"again." +msgstr "" + +#: wxUI/commonMessageDialogs.py:58 +#, fuzzy +msgid "Do you really want to delete this filter ?" +msgstr "Möchtest du diesen Account wirklich löschen?" + +#: wxUI/commonMessageDialogs.py:58 +#, fuzzy +msgid "Delete filter" +msgstr "Erstelle einen &Filter" + +#: wxUI/commonMessageDialogs.py:61 +msgid "TWBlue was unable to remove the filter you specified. Please try again." +msgstr "" + +#: wxUI/sysTrayIcon.py:36 wxUI/view.py:25 +msgid "&Global settings" +msgstr "&Globale Einstellungen" + +#: wxUI/sysTrayIcon.py:37 wxUI/view.py:24 +msgid "Account se&ttings" +msgstr "Account-Eins&tellungen" + +#: wxUI/sysTrayIcon.py:39 +msgid "&Show / hide" +msgstr "&Zeigen / verbergen" + +#: wxUI/sysTrayIcon.py:40 wxUI/view.py:74 +msgid "&Documentation" +msgstr "Dokumentation^" + +#: wxUI/sysTrayIcon.py:41 +msgid "Check for &updates" +msgstr "Nach &Updates suchen" + +#: wxUI/sysTrayIcon.py:42 +msgid "&Exit" +msgstr "Be&enden" + +#: wxUI/view.py:16 +msgid "&Manage accounts" +msgstr "Accounts &verwalten" + +#: wxUI/view.py:17 +msgid "&Update profile" +msgstr "Profil akt&ualisieren" + +#: wxUI/view.py:18 +msgid "&Hide window" +msgstr "Fenster &verbergen" + +#: wxUI/view.py:20 +msgid "&Lists manager" +msgstr "&Listen verwalten" + +#: wxUI/view.py:23 +msgid "&Edit keystrokes" +msgstr "Tasten&kombinationen bearbeiten" + +#: wxUI/view.py:26 +msgid "E&xit" +msgstr "&Beenden" + +#: wxUI/view.py:34 +#, fuzzy +msgid "&Remove from favorites" +msgstr "Aus Favoriten entfernen" + +#: wxUI/view.py:47 +msgid "&Add to list" +msgstr "Zur L&iste hinzufügen" + +#: wxUI/view.py:48 +msgid "R&emove from list" +msgstr "Aus Liste &entfernen" + +#: wxUI/view.py:49 +msgid "Show user &profile" +msgstr "Benutzer&profil anzeigen" + +#: wxUI/view.py:50 +msgid "V&iew likes" +msgstr "L&ikes anzeigen" + +#: wxUI/view.py:54 +msgid "&Update buffer" +msgstr "Ansicht akt&ualisieren" + +#: wxUI/dialogs/mastodon/communityTimeline.py:9 wxUI/view.py:55 +msgid "Create community timeline" +msgstr "" + +#: wxUI/view.py:56 +msgid "New &trending topics buffer..." +msgstr "Neue &Trends-Ansicht" + +#: wxUI/view.py:59 +msgid "Find a string in the currently focused buffer..." +msgstr "Eine Zeichenkette in der momentan fokussierten Ansicht suchen..." + +#: wxUI/view.py:60 +msgid "&Load previous items" +msgstr "Vorhergehende Einträge &laden" + +#: wxUI/dialogs/mastodon/userActions.py:21 wxUI/view.py:62 +msgid "&Mute" +msgstr "Stu&mmschalten" + +#: wxUI/view.py:63 +msgid "&Autoread" +msgstr "&Automatisch vorlesen" + +#: wxUI/view.py:64 +msgid "&Clear buffer" +msgstr "Ansicht l&eeren" + +#: wxUI/view.py:65 +msgid "&Destroy" +msgstr "&Löschen" + +#: wxUI/view.py:69 +msgid "&Seek back 5 seconds" +msgstr "&Springe 5 Sekunden zurück" + +#: wxUI/view.py:70 +msgid "&Seek forward 5 seconds" +msgstr "&Springe 5 Sekunden vorwärts" + +#: wxUI/view.py:75 +msgid "Sounds &tutorial" +msgstr "Sounds &erlernen" + +#: wxUI/view.py:76 +msgid "&What's new in this version?" +msgstr "&Was ist neu in dieser Version?" + +#: wxUI/view.py:77 +msgid "&Check for updates" +msgstr "Nach &Updates suchen" + +#: wxUI/view.py:78 +msgid "&Report an error" +msgstr "Fehle&r melden" + +#: wxUI/view.py:79 +#, python-brace-format +msgid "{0}'s &website" +msgstr "{0}-&Webseite" + +#: wxUI/view.py:80 +msgid "Get soundpacks for TWBlue" +msgstr "Hole dir Soundpacks für TWBlue" + +#: wxUI/view.py:81 +#, python-brace-format +msgid "About &{0}" +msgstr "Über &{0}" + +#: wxUI/view.py:84 +msgid "&Application" +msgstr "&Anwendung" + +#: wxUI/view.py:85 +msgid "&Tweet" +msgstr "&Tweet" + +#: wxUI/dialogs/mastodon/userActions.py:10 wxUI/view.py:86 +msgid "&User" +msgstr "Ben&utzer" + +#: wxUI/view.py:87 +msgid "&Buffer" +msgstr "A&nsicht" + +#: wxUI/view.py:88 +msgid "&Audio" +msgstr "&Audio" + +#: wxUI/view.py:89 +msgid "&Help" +msgstr "&Hilfe" + +#: wxUI/view.py:175 +msgid "Address" +msgstr "Adresse" + +#: wxUI/view.py:206 +#, python-brace-format +msgid "Your {0} version is up to date" +msgstr "Deine {0}-Version ist aktuell" + +#: wxUI/view.py:206 +msgid "Update" +msgstr "Update" + +#: wxUI/buffers/panels.py:12 wxUI/buffers/panels.py:20 +msgid "Login" +msgstr "Einloggen" + +#: wxUI/buffers/panels.py:14 +msgid "Log in automatically" +msgstr "Automatisch einloggen" + +#: wxUI/buffers/panels.py:22 +msgid "Logout" +msgstr "Ausloggen" + +#: wxUI/buffers/mastodon/base.py:11 +#: wxUI/buffers/mastodon/conversationList.py:11 wxUI/buffers/mastodon/user.py:8 +#: wxUI/dialogs/mastodon/userTimeline.py:10 wxUI/dialogs/userAliasDialogs.py:14 +msgid "User" +msgstr "Benutzer" + +#: wxUI/buffers/mastodon/base.py:11 +#: wxUI/buffers/mastodon/conversationList.py:11 +#: wxUI/buffers/mastodon/notifications.py:11 +#: wxUI/dialogs/mastodon/postDialogs.py:37 +#: wxUI/dialogs/mastodon/postDialogs.py:272 +msgid "Text" +msgstr "Text" + +#: wxUI/buffers/mastodon/base.py:11 +#: wxUI/buffers/mastodon/conversationList.py:11 +#: wxUI/buffers/mastodon/notifications.py:11 +#: wxUI/dialogs/mastodon/postDialogs.py:216 +msgid "Date" +msgstr "Datum" + +#: wxUI/buffers/mastodon/base.py:11 +#: wxUI/buffers/mastodon/conversationList.py:11 +msgid "Client" +msgstr "Client" + +#: wxUI/buffers/mastodon/base.py:27 +msgid "Favorite" +msgstr "Favorit" + +#: wxUI/buffers/mastodon/base.py:28 +msgid "Bookmark" +msgstr "Lesezeichen" + +#: wxUI/buffers/mastodon/base.py:29 +msgid "Direct message" +msgstr "Direktnachricht" + +#: wxUI/buffers/mastodon/notifications.py:23 +#: wxUI/dialogs/mastodon/dialogs.py:23 +msgid "Dismiss" +msgstr "Verwerfen" + +#: wxUI/buffers/mastodon/user.py:19 wxUI/dialogs/userAliasDialogs.py:48 +msgid "Actions" +msgstr "Aktionen" + +#: wxUI/buffers/mastodon/user.py:20 +msgid "Message" +msgstr "Nachricht" + +#: wxUI/dialogs/configuration.py:15 +#, fuzzy +msgid "&Language" +msgstr "Sprache" + +#: wxUI/dialogs/configuration.py:22 +#, fuzzy, python-brace-format +msgid "&Ask before exiting {0}" +msgstr "Vor dem Beenden von {0} fragen" + +#: wxUI/dialogs/configuration.py:24 +#, fuzzy +msgid "&Disable Streaming functions" +msgstr "Streaming-Funktionen ausschalten" + +#: wxUI/dialogs/configuration.py:27 +#, fuzzy +msgid "&Buffer update interval, in minutes" +msgstr "Ansichts-Aktualisierung (in Minuten)" + +#: wxUI/dialogs/configuration.py:33 +#, fuzzy, python-brace-format +msgid "Pla&y a sound when {0} launches" +msgstr "Beim Starten von {0} einen Klang abspielen" + +#: wxUI/dialogs/configuration.py:35 +#, fuzzy, python-brace-format +msgid "Sp&eak a message when {0} launches" +msgstr "Beim Starten von {0} eine Bereitschaftsnachricht sprechen" + +#: wxUI/dialogs/configuration.py:37 +#, fuzzy +msgid "&Use invisible interface's keyboard shortcuts while GUI is visible" +msgstr "Tastenkürzel des unsichtbaren Interfaces im GUI verwenden" + +#: wxUI/dialogs/configuration.py:39 +#, fuzzy +msgid "A&ctivate Sapi5 when any other screen reader is not being run" +msgstr "Verwende Sapi5 wenn kein anderer Screen-Reader aktiv ist" + +#: wxUI/dialogs/configuration.py:41 +#, fuzzy +msgid "&Hide GUI on launch" +msgstr "GUI beim Start verbergen" + +#: wxUI/dialogs/configuration.py:43 +msgid "&Read long posts in GUI" +msgstr "" + +#: wxUI/dialogs/configuration.py:46 +#, fuzzy +msgid "&Keymap" +msgstr "Tastenbelegung" + +#: wxUI/dialogs/configuration.py:51 +#, fuzzy, python-brace-format +msgid "Check for u&pdates when {0} launches" +msgstr "Beim Starten von {0} nach Updates suchen" + +#: wxUI/dialogs/configuration.py:61 +#, fuzzy +msgid "Proxy &type: " +msgstr "Proxy-Typ: " + +#: wxUI/dialogs/configuration.py:68 +#, fuzzy +msgid "Proxy s&erver: " +msgstr "Proxy-Server: " + +#: wxUI/dialogs/configuration.py:74 +#, fuzzy +msgid "&Port: " +msgstr "Port: " + +#: wxUI/dialogs/configuration.py:80 +#, fuzzy +msgid "&User: " +msgstr "Benutzer: " + +#: wxUI/dialogs/configuration.py:86 +#, fuzzy +msgid "P&assword: " +msgstr "Passwort: " + +#: wxUI/dialogs/configuration.py:98 +#, fuzzy +msgid "Enable automatic s&peech feedback" +msgstr "Automatisches Sprachausgaben-Feedback einschalten" + +#: wxUI/dialogs/configuration.py:100 +#, fuzzy +msgid "Enable automatic &Braille feedback" +msgstr "Automatisches Braille-Feedback einschalten" + +#: wxUI/dialogs/configuration.py:108 +msgid "Buffer" +msgstr "Ansicht" + +#: wxUI/dialogs/configuration.py:108 +msgid "Status" +msgstr "Status" + +#: wxUI/dialogs/configuration.py:111 +#, fuzzy +msgid "S&how/hide" +msgstr "Zeigen / verbergen" + +#: wxUI/dialogs/configuration.py:112 +#, fuzzy +msgid "Move &up" +msgstr "Nach oben" + +#: wxUI/dialogs/configuration.py:113 +#, fuzzy +msgid "Move &down" +msgstr "Nach unten" + +#: wxUI/dialogs/configuration.py:123 wxUI/dialogs/configuration.py:188 +#: wxUI/dialogs/configuration.py:191 wxUI/dialogs/configuration.py:196 +msgid "Show" +msgstr "Zeigen" + +#: wxUI/dialogs/configuration.py:125 wxUI/dialogs/configuration.py:135 +#: wxUI/dialogs/configuration.py:159 wxUI/dialogs/configuration.py:189 +msgid "Hide" +msgstr "Verbergen" + +#: wxUI/dialogs/configuration.py:133 wxUI/dialogs/configuration.py:157 +msgid "Select a buffer first." +msgstr "Wähle zuerst eine Ansicht." + +#: wxUI/dialogs/configuration.py:136 wxUI/dialogs/configuration.py:160 +msgid "The buffer is hidden, show it first." +msgstr "Die Ansicht ist versteckt, lasse sie zuerst anzeigen." + +#: wxUI/dialogs/configuration.py:139 +msgid "The buffer is already at the top of the list." +msgstr "Die Ansicht ist bereits am Anfang der Liste." + +#: wxUI/dialogs/configuration.py:163 +msgid "The buffer is already at the bottom of the list." +msgstr "Die Ansicht ist bereits am Ende der Liste." + +#: wxUI/dialogs/configuration.py:205 +msgid "&LibreTranslate API URL: " +msgstr "" + +#: wxUI/dialogs/configuration.py:211 +msgid "LibreTranslate API &Key (optional): " +msgstr "" + +#: wxUI/dialogs/configuration.py:217 +msgid "&DeepL API Key: " +msgstr "" + +#: wxUI/dialogs/configuration.py:231 +#, python-brace-format +msgid "{0} preferences" +msgstr "{0}-Einstellungen" + +#: wxUI/dialogs/configuration.py:237 wxUI/dialogs/mastodon/configuration.py:144 +msgid "General" +msgstr "Allgemein" + +#: wxUI/dialogs/configuration.py:242 +msgid "Proxy" +msgstr "Proxy" + +#: wxUI/dialogs/configuration.py:246 +#, fuzzy +msgid "Translation services" +msgstr "Überse&tzen" + +#: wxUI/dialogs/configuration.py:251 wxUI/dialogs/mastodon/configuration.py:170 +#, fuzzy +msgid "&Save" +msgstr "Speichern" + +#: wxUI/dialogs/configuration.py:253 +#: wxUI/dialogs/mastodon/communityTimeline.py:27 +#: wxUI/dialogs/mastodon/configuration.py:172 +#: wxUI/dialogs/mastodon/search.py:26 +#: wxUI/dialogs/mastodon/showUserProfile.py:170 +#: wxUI/dialogs/mastodon/updateProfile.py:132 +#: wxUI/dialogs/mastodon/userActions.py:38 +#: wxUI/dialogs/mastodon/userTimeline.py:32 +msgid "&Close" +msgstr "S&chließen" + +#: wxUI/dialogs/find.py:13 +msgid "Find in current buffer" +msgstr "In aktiver Ansicht suchen" + +#: wxUI/dialogs/find.py:14 +msgid "String" +msgstr "Zeichenkette" + +#: wxUI/dialogs/find.py:23 wxUI/dialogs/mastodon/showUserProfile.py:33 +msgid "Cancel" +msgstr "Abbrechen" + +#: wxUI/dialogs/templateDialogs.py:8 +msgid "Edit Template" +msgstr "Vorlage bearbeiten" + +#: wxUI/dialogs/templateDialogs.py:13 +msgid "Edit template" +msgstr "Vorlage bearbeiten" + +#: wxUI/dialogs/templateDialogs.py:17 +msgid "Available variables" +msgstr "Verfügbare Variablen" + +#: wxUI/dialogs/templateDialogs.py:29 +msgid "Restore template" +msgstr "Vorlage wiederherstellen" + +#: wxUI/dialogs/templateDialogs.py:48 +#, python-brace-format +msgid "Restored template to {}." +msgstr "Vorlage zu {} wiederhergestellt." + +#: wxUI/dialogs/templateDialogs.py:52 +msgid "" +"the template you have specified include variables that do not exists for " +"the object. Please fix the template and try again. For your reference, " +"you can see a list of all available variables in the variables list while" +" editing your template." +msgstr "" +"Die von dir spezifizierte Vorlage enthält Variablen, die für dieses " +"Objekt nicht verfügbar sind. Bitte korrigiere die Vorlage und versuche es" +" erneut. Eine Liste der verfügbaren Variablen wird im Bearbeitungsdialog " +"für die Vorlage angezeigt." + +#: wxUI/dialogs/templateDialogs.py:52 +msgid "Invalid template" +msgstr "Ungültige Vorlage" + +#: wxUI/dialogs/urlList.py:6 +msgid "Select URL" +msgstr "Wähle eine URL" + +#: wxUI/dialogs/mastodon/userActions.py:13 +#: wxUI/dialogs/mastodon/userTimeline.py:13 wxUI/dialogs/userAliasDialogs.py:13 +msgid "&Autocomplete users" +msgstr "Auto-&Vervollständigung der Benutzer" + +#: wxUI/dialogs/userAliasDialogs.py:18 +msgid "Alias" +msgstr "Alias" + +#: wxUI/dialogs/userAliasDialogs.py:41 +msgid "Edit user aliases" +msgstr "Benutzer-Aliase bearbeiten" + +#: wxUI/dialogs/mastodon/search.py:19 wxUI/dialogs/userAliasDialogs.py:43 +msgid "Users" +msgstr "Benutzer" + +#: wxUI/dialogs/userAliasDialogs.py:50 +msgid "Add alias" +msgstr "Alias hinzufügen" + +#: wxUI/dialogs/userAliasDialogs.py:51 +msgid "Adds a new user alias" +msgstr "Fügt einen neuen Benutzer-Alias hinzu" + +#: wxUI/dialogs/userAliasDialogs.py:54 +msgid "Edit the currently focused user Alias." +msgstr "Den momentan fokussierten Benutzer-Alias bearbeiten." + +#: wxUI/dialogs/mastodon/filters/create_filter.py:26 +#: wxUI/dialogs/mastodon/filters/manage_filters.py:24 +#: wxUI/dialogs/userAliasDialogs.py:57 +msgid "Remove" +msgstr "Entfernen" + +#: wxUI/dialogs/userAliasDialogs.py:58 +msgid "Remove the currently focused user alias." +msgstr "Den momentan gewählten Benutzer-Alias entfernen." + +#: wxUI/dialogs/userAliasDialogs.py:82 +msgid "Are you sure you want to delete this user alias?" +msgstr "Möchtest du diesen Benutzer-Alias wirklich löschen?" + +#: wxUI/dialogs/userAliasDialogs.py:82 +msgid "Remove user alias" +msgstr "Benutzer-Alias entfernen" + +#: wxUI/dialogs/userAliasDialogs.py:93 +msgid "User alias" +msgstr "Benutzer-Alias" + +#: wxUI/dialogs/userList.py:27 +#, fuzzy +msgid "View profile" +msgstr "Profil akt&ualisieren" + +#: wxUI/dialogs/mastodon/communityTimeline.py:10 +#, fuzzy +msgid "Community URL" +msgstr "STRG" + +#: wxUI/dialogs/mastodon/communityTimeline.py:16 +#: wxUI/dialogs/mastodon/userTimeline.py:18 +msgid "Buffer type" +msgstr "Ansichts-Typ" + +#: wxUI/dialogs/mastodon/communityTimeline.py:17 +#, fuzzy +msgid "&Local timeline" +msgstr "Zeitleisten" + +#: wxUI/dialogs/mastodon/communityTimeline.py:18 +#, fuzzy +msgid "&Federated Timeline" +msgstr "{username}s Zeitleiste" + +#: wxUI/dialogs/mastodon/communityTimeline.py:25 +#: wxUI/dialogs/mastodon/search.py:24 +#: wxUI/dialogs/mastodon/updateProfile.py:130 +#: wxUI/dialogs/mastodon/userActions.py:36 +#: wxUI/dialogs/mastodon/userTimeline.py:30 +msgid "&OK" +msgstr "&OK" + +#: wxUI/dialogs/mastodon/configuration.py:14 +msgid "User autocompletion settings" +msgstr "Auto-Vervollständigungs-Einstellungen" + +#: wxUI/dialogs/mastodon/configuration.py:15 +#, fuzzy +msgid "" +"Scan acc&ount and add followers and following users to the user " +"autocompletion database" +msgstr "" +"Account scannen und Folger und Freunde zur Autovervollständigungs-" +"Datenbank hinzufügen" + +#: wxUI/dialogs/mastodon/configuration.py:16 +#, fuzzy +msgid "&Manage autocompletion database" +msgstr "Auto-Vervollständigungsdatenbank verwalten" + +#: wxUI/dialogs/mastodon/configuration.py:21 +#, fuzzy +msgid "&Disable Streaming API endpoints" +msgstr "Streaming-Funktionen ausschalten" + +#: wxUI/dialogs/mastodon/configuration.py:23 +#, fuzzy +msgid "&Relative timestamps" +msgstr "Relative Zeitangaben" + +#: wxUI/dialogs/mastodon/configuration.py:25 +msgid "" +"R&ead preferences from instance (default visibility when publishing and " +"displaying sensitive content)" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:28 +#, fuzzy +msgid "&Items on each API call" +msgstr "Einträge pro API-Aufruf" + +#: wxUI/dialogs/mastodon/configuration.py:34 +#, fuzzy +msgid "" +"I&nverted buffers: The newest items will be shown at the beginning while " +"the oldest at the end" +msgstr "" +"Umgekehrte Ansicht: Neueste Einträge werden am Anfang der Liste " +"angezeigt, die ältesten am Ende" + +#: wxUI/dialogs/mastodon/configuration.py:36 +#, fuzzy +msgid "&Ask confirmation before boosting a post" +msgstr "Bestätigung vor dem Teilen eines Beitrags" + +#: wxUI/dialogs/mastodon/configuration.py:38 +#, fuzzy +msgid "S&how screen names instead of full names" +msgstr "Zeige Benutzernamen statt der vollständigen Namen" + +#: wxUI/dialogs/mastodon/configuration.py:40 +#, fuzzy +msgid "Hide e&mojis in usernames" +msgstr "Emojis in Benutzernamen ausblenden" + +#: wxUI/dialogs/mastodon/configuration.py:42 +#, fuzzy +msgid "" +"&Number of items per buffer to cache in database (0 to disable caching, " +"blank for unlimited)" +msgstr "" +"Anzahl zu speichernder Einträge pro Ansicht in Datenbank (0 zum " +"Ausschalten, leer lassen für unbegrenzt)." + +#: wxUI/dialogs/mastodon/configuration.py:46 +#, fuzzy +msgid "" +"&Load cache for items in memory (much faster in big datasets but requires" +" more RAM)" +msgstr "" +"Einträge im Speicher zwischenlagern (sorgt für verbesserte " +"Geschwindigkeit bei großen Datenmengen, erhöht jedoch die RAM-Nutzung)" + +#: wxUI/dialogs/mastodon/configuration.py:53 +#, fuzzy, python-brace-format +msgid "Edit template for &posts. Current template: {}" +msgstr "Vorlage für Beiträge bearbeiten. Aktuelle Vorlage: {}" + +#: wxUI/dialogs/mastodon/configuration.py:55 +#, fuzzy, python-brace-format +msgid "Edit template for c&onversations. Current template: {}" +msgstr "Vorlage für Unterhaltungen bearbeiten. Aktuelle Vorlage: {}" + +#: wxUI/dialogs/mastodon/configuration.py:57 +#, fuzzy, python-brace-format +msgid "Edit template for p&ersons. Current template: {}" +msgstr "Vorlage für Personen bearbeiten. Aktuelle Vorlage: {}" + +#: wxUI/dialogs/mastodon/configuration.py:65 +#, fuzzy +msgid "&Volume" +msgstr "Lautstärke" + +#: wxUI/dialogs/mastodon/configuration.py:76 +#, fuzzy +msgid "S&ession mute" +msgstr "Sitzung stummschalten" + +#: wxUI/dialogs/mastodon/configuration.py:78 +#, fuzzy +msgid "&Output device" +msgstr "Wiedergabegerät" + +#: wxUI/dialogs/mastodon/configuration.py:85 +#, fuzzy +msgid "&Input device" +msgstr "Aufnahmegerät" + +#: wxUI/dialogs/mastodon/configuration.py:93 +#, fuzzy +msgid "Sound &pack" +msgstr "Soundpack" + +#: wxUI/dialogs/mastodon/configuration.py:99 +#, fuzzy +msgid "Indicate &audio or video in posts with sound" +msgstr "Klang bei Audio- oder Videobeiträgen abspielen" + +#: wxUI/dialogs/mastodon/configuration.py:101 +#, fuzzy +msgid "Indicate posts containing i&mages with sound" +msgstr "Klang bei Beiträgen mit Bildern abspielen" + +#: wxUI/dialogs/mastodon/configuration.py:124 +#, fuzzy +msgid "&Language for OCR" +msgstr "Sprache für Texterkennung" + +#: wxUI/dialogs/mastodon/configuration.py:149 +msgid "Feedback" +msgstr "Feedback" + +#: wxUI/dialogs/mastodon/configuration.py:153 +msgid "Buffers" +msgstr "Ansichten" + +#: wxUI/dialogs/mastodon/configuration.py:157 +msgid "Templates" +msgstr "Vorlagen" + +#: wxUI/dialogs/mastodon/configuration.py:161 +msgid "Sound" +msgstr "Sound" + +#: wxUI/dialogs/mastodon/configuration.py:165 +msgid "Extras" +msgstr "Extras" + +#: wxUI/dialogs/mastodon/dialogs.py:7 +msgid "Would you like to share this post?" +msgstr "Möchtest du diesen Beitrag teilen?" + +#: wxUI/dialogs/mastodon/dialogs.py:15 +msgid "" +"Do you really want to delete this post? It will be deleted from the " +"instance as well." +msgstr "" +"Möchtest du diesen Beitrag wirklich löschen? Er wird auch auf der Instanz" +" gelöscht." + +#: wxUI/dialogs/mastodon/dialogs.py:15 +msgid "Delete" +msgstr "Löschen" + +#: wxUI/dialogs/mastodon/dialogs.py:23 +msgid "" +"Are you sure you want to dismiss this notification? If you dismiss a " +"mention notification, it also disappears from your mentions buffer. The " +"post is not going to be deleted from the instance, though." +msgstr "" +"Möchtest du diese Benachrichtigung wirklich verwerfen? Wenn du eine " +"Erwähnungsbenachrichtigung verwirfst, wird sie auch aus der Erwähnungen-" +"Zeitleiste entfernt. Der Beitrag wird jedoch nicht aus der Instanz " +"gelöscht." + +#: wxUI/dialogs/mastodon/dialogs.py:31 +msgid "" +"Do you really want to empty this buffer? It's items will be removed from" +" the list but not from the instance" +msgstr "" +"Möchtest du diese Ansicht wirklich leeren? Die Einträge werden aus der " +"Liste entfernt, jedoch nicht von der Instanz." + +#: wxUI/dialogs/mastodon/dialogs.py:38 +#, python-brace-format +msgid "This user has no posts. {0} can't create a timeline." +msgstr "" +"Dieser Benutzer hat keine Beiträge, {0} kann daher keine Zeitleiste " +"erstellen." + +#: wxUI/dialogs/mastodon/dialogs.py:43 +#, python-brace-format +msgid "This user has no favorited posts. {0} can't create a timeline." +msgstr "" +"Dieser Benutzer hat keine Favoriten. {0} kann daher keine Zeitleiste " +"erstellen." + +#: wxUI/dialogs/mastodon/dialogs.py:48 +#, python-brace-format +msgid "This user has no followers yet. {0} can't create a timeline." +msgstr "" +"Dieser Benutzer hat noch keine Folger, {0} kann daher keine Zeitleiste " +"erstellen." + +#: wxUI/dialogs/mastodon/dialogs.py:53 +#, python-brace-format +msgid "This user is not following anyone. {0} can't create a timeline." +msgstr "" +"Dieser Benutzer folgt niemandem, {0} kann daher keine Zeitleiste " +"erstellen." + +#: wxUI/dialogs/mastodon/dialogs.py:60 +#, python-brace-format +msgid "The focused item has no user in it. {} ca't open a user profile" +msgstr "" + +#: wxUI/dialogs/mastodon/menus.py:13 wxUI/dialogs/mastodon/menus.py:41 +msgid "R&emove from favorites" +msgstr "Aus Favoriten &entfernen" + +#: wxUI/dialogs/mastodon/menus.py:15 wxUI/dialogs/mastodon/menus.py:43 +msgid "&Open URL" +msgstr "URL &öffnen" + +#: wxUI/dialogs/mastodon/menus.py:17 wxUI/dialogs/mastodon/menus.py:47 +#, fuzzy +msgid "&Open in instance" +msgstr "Auf Instanz suchen" + +#: wxUI/dialogs/mastodon/menus.py:19 wxUI/dialogs/mastodon/menus.py:45 +msgid "&Play audio" +msgstr "Audio abs&pielen" + +#: wxUI/dialogs/mastodon/menus.py:23 wxUI/dialogs/mastodon/menus.py:51 +msgid "&Copy to clipboard" +msgstr "in Zwischenablage &kopieren" + +#: wxUI/dialogs/mastodon/menus.py:27 wxUI/dialogs/mastodon/menus.py:55 +msgid "&User actions..." +msgstr "Ben&utzeraktionen" + +#: wxUI/dialogs/mastodon/menus.py:53 +#, fuzzy +msgid "&Dismiss" +msgstr "Verwerfen" + +#: wxUI/dialogs/mastodon/postDialogs.py:20 +#: wxUI/dialogs/mastodon/postDialogs.py:38 +msgid "Attachments" +msgstr "Anhänge" + +#: wxUI/dialogs/mastodon/postDialogs.py:24 +msgid "File" +msgstr "Datei" + +#: wxUI/dialogs/mastodon/postDialogs.py:25 +msgid "Type" +msgstr "Typ" + +#: wxUI/dialogs/mastodon/postDialogs.py:26 +#: wxUI/dialogs/mastodon/postDialogs.py:141 +msgid "Description" +msgstr "Beschreibung" + +#: wxUI/dialogs/mastodon/postDialogs.py:28 +msgid "Remove Attachment" +msgstr "Anhang entfernen" + +#: wxUI/dialogs/mastodon/postDialogs.py:33 +msgid "Post in the thread" +msgstr "Beitrag im Thread" + +#: wxUI/dialogs/mastodon/postDialogs.py:40 +msgid "Remove post" +msgstr "Beitrag entfernen" + +#: wxUI/dialogs/mastodon/postDialogs.py:47 +#, fuzzy +msgid "&Visibility" +msgstr "Sichtbarkeit" + +#: wxUI/dialogs/mastodon/postDialogs.py:54 +#, fuzzy +msgid "Language" +msgstr "Sprache" + +#: wxUI/dialogs/mastodon/postDialogs.py:58 +msgid "A&dd" +msgstr "Hin&zufügen" + +#: wxUI/dialogs/mastodon/postDialogs.py:59 +#, fuzzy +msgid "S&ensitive content" +msgstr "Heikler Inhalt" + +#: wxUI/dialogs/mastodon/postDialogs.py:64 +msgid "Content warning" +msgstr "Inhaltswarnung" + +#: wxUI/dialogs/mastodon/postDialogs.py:71 +msgid "Add p&ost" +msgstr "&Beitrag hinzufügen" + +#: wxUI/dialogs/mastodon/postDialogs.py:75 +msgid "Auto&complete users" +msgstr "Auto-&Vervollständigung der Benutzer" + +#: wxUI/dialogs/mastodon/postDialogs.py:77 +msgid "Check &spelling" +msgstr "Rechtschreib&prüfung" + +#: wxUI/dialogs/mastodon/postDialogs.py:79 +msgid "&Translate" +msgstr "Überse&tzen" + +#: wxUI/dialogs/mastodon/postDialogs.py:106 +#, python-brace-format +msgid "Post - {} characters" +msgstr "Beitrag - {} Zeichen" + +#: wxUI/dialogs/mastodon/postDialogs.py:130 +msgid "Image" +msgstr "Bild" + +#: wxUI/dialogs/mastodon/postDialogs.py:132 +msgid "Video" +msgstr "Video" + +#: wxUI/dialogs/mastodon/postDialogs.py:134 +msgid "Audio" +msgstr "Audio" + +#: wxUI/dialogs/mastodon/postDialogs.py:136 +msgid "Poll" +msgstr "Umfrage" + +#: wxUI/dialogs/mastodon/postDialogs.py:141 +msgid "please provide a description" +msgstr "Bitte gib eine Beschreibung ein" + +#: wxUI/dialogs/mastodon/postDialogs.py:148 +msgid "Select the picture to be uploaded" +msgstr "Wähle das hochzuladende Bild aus." + +#: wxUI/dialogs/mastodon/postDialogs.py:148 +msgid "Image files (*.png, *.jpg, *.gif)|*.png; *.jpg; *.gif" +msgstr "Bilddateien (*.png, *.jpg, *.gif)|*.png; *.jpg; *.gif" + +#: wxUI/dialogs/mastodon/postDialogs.py:155 +msgid "Select the video to be uploaded" +msgstr "Wähle das hochzuladende Video aus." + +#: wxUI/dialogs/mastodon/postDialogs.py:155 +msgid "Video files (*.mp4, *.mov, *.m4v, *.webm)| *.mp4; *.m4v; *.mov; *.webm" +msgstr "Videodateien (*.mp4, *.mov, *.m4v, *.webm)| *.mp4; *.m4v; *.mov; *.webm" + +#: wxUI/dialogs/mastodon/postDialogs.py:162 +msgid "Select the audio file to be uploaded" +msgstr "Wähle die hochzuladende Datei aus" + +#: wxUI/dialogs/mastodon/postDialogs.py:162 +msgid "" +"Audio files (*.mp3, *.ogg, *.wav, *.flac, *.opus, *.aac, *.m4a, " +"*.3gp)|*.mp3; *.ogg; *.wav; *.flac; *.opus; *.aac; *.m4a; *.3gp" +msgstr "" +"Audiodateien (*.mp3, *.ogg, *.wav, *.flac, *.opus, *.aac, *.m4a, " +"*.3gp)|*.mp3; *.ogg; *.wav; *.flac; *.opus; *.aac; *.m4a; *.3gp" + +#: wxUI/dialogs/mastodon/postDialogs.py:169 +msgid "" +"It is not possible to add more attachments. Please take into account that" +" You can add only a maximum of 4 images, or one audio, video or poll per" +" post. Please remove other attachments before continuing." +msgstr "" +"Weitere Anhänge können nicht hinzugefügt werden. Bitte denke daran, dass " +"du nur maximal 4 Bilder oder eine Audio- bzw. Videodatei oder Umfrage pro" +" Beitrag anhängen kannst. Bitte entferne vor dem Fortfahren die weiteren " +"Anhänge." + +#: wxUI/dialogs/mastodon/postDialogs.py:169 +msgid "Error adding attachment" +msgstr "Fehler beim Hinzufügen des Anhangs" + +#: wxUI/dialogs/mastodon/postDialogs.py:172 +msgid "" +"You can add a poll or media files. In order to add your poll, please " +"remove other attachments first." +msgstr "" +"Du kannst eine Umfrage oder mediendateien hinzufügen. Bitte entferne vor " +"dem Hinzufügen einer Umfrage die weiteren Anhänge." + +#: wxUI/dialogs/mastodon/postDialogs.py:172 +msgid "Error adding poll" +msgstr "Fehler beim Hinzufügen der umfrage" + +#: wxUI/dialogs/mastodon/postDialogs.py:177 +#, python-format +msgid "Post - %i characters " +msgstr "Beitrag - %i Zeichen " + +#: wxUI/dialogs/mastodon/postDialogs.py:200 +msgid "Image description" +msgstr "Bildbeschreibung" + +#: wxUI/dialogs/mastodon/postDialogs.py:210 +msgid "Privacy" +msgstr "Privatsphäre" + +#: wxUI/dialogs/mastodon/postDialogs.py:214 +#, fuzzy +msgid "Source" +msgstr "Quelle: " + +#: wxUI/dialogs/mastodon/postDialogs.py:222 +#, fuzzy +msgid "Boosts" +msgstr "Geteilt: " + +#: wxUI/dialogs/mastodon/postDialogs.py:224 +msgid "View users who boosted this post" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:231 +msgid "View users who favorited this post" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:239 +msgid "Copy link to clipboard" +msgstr "Link in Zwischenablage kopieren" + +#: wxUI/dialogs/mastodon/postDialogs.py:241 +#: wxUI/dialogs/mastodon/postDialogs.py:280 +msgid "Check &spelling..." +msgstr "Rechtschreib&prüfung..." + +#: wxUI/dialogs/mastodon/postDialogs.py:242 +#: wxUI/dialogs/mastodon/postDialogs.py:281 +msgid "&Translate..." +msgstr "Überse&tzen..." + +#: wxUI/dialogs/mastodon/postDialogs.py:243 +#: wxUI/dialogs/mastodon/postDialogs.py:282 +msgid "C&lose" +msgstr "Sch&ließen" + +#: wxUI/dialogs/mastodon/postDialogs.py:294 +msgid "Add a poll" +msgstr "Füge eine Umfrage hinzu" + +#: wxUI/dialogs/mastodon/postDialogs.py:298 +msgid "Participation time" +msgstr "Teilnahmezeitraum" + +#: wxUI/dialogs/mastodon/postDialogs.py:300 +msgid "5 minutes" +msgstr "5 Minuten" + +#: wxUI/dialogs/mastodon/postDialogs.py:300 +msgid "30 minutes" +msgstr "30 Minuten" + +#: wxUI/dialogs/mastodon/postDialogs.py:300 +msgid "1 hour" +msgstr "1 Stunde" + +#: wxUI/dialogs/mastodon/postDialogs.py:300 +msgid "6 hours" +msgstr "6 Stunden" + +#: wxUI/dialogs/mastodon/postDialogs.py:300 +msgid "1 day" +msgstr "1 Tag" + +#: wxUI/dialogs/mastodon/postDialogs.py:300 +msgid "2 days" +msgstr "2 Tage" + +#: wxUI/dialogs/mastodon/postDialogs.py:300 +msgid "3 days" +msgstr "3 Tage" + +#: wxUI/dialogs/mastodon/postDialogs.py:300 +msgid "4 days" +msgstr "4 Tage" + +#: wxUI/dialogs/mastodon/postDialogs.py:300 +msgid "5 days" +msgstr "5 Tage" + +#: wxUI/dialogs/mastodon/postDialogs.py:300 +msgid "6 days" +msgstr "6 Tage" + +#: wxUI/dialogs/mastodon/postDialogs.py:300 +msgid "7 days" +msgstr "7 Tage" + +#: wxUI/dialogs/mastodon/postDialogs.py:304 +msgid "Choices" +msgstr "Wahlmöglichkeiten" + +#: wxUI/dialogs/mastodon/postDialogs.py:308 +msgid "Option 1" +msgstr "Option 1" + +#: wxUI/dialogs/mastodon/postDialogs.py:315 +msgid "Option 2" +msgstr "Option 2" + +#: wxUI/dialogs/mastodon/postDialogs.py:322 +msgid "Option 3" +msgstr "Option 3" + +#: wxUI/dialogs/mastodon/postDialogs.py:329 +msgid "Option 4" +msgstr "Option 4" + +#: wxUI/dialogs/mastodon/postDialogs.py:334 +#, fuzzy +msgid "Allow multiple choices per user" +msgstr "Mehrfache Abstimmungen pro Benutzer erlauben" + +#: wxUI/dialogs/mastodon/postDialogs.py:337 +msgid "Hide votes count until the poll expires" +msgstr "Anzahl Stimmen bis zum Ablauf der Umfrage verbergen" + +#: wxUI/dialogs/mastodon/postDialogs.py:363 +msgid "Please make sure you have provided at least two options for the poll." +msgstr "" +"Bitte stelle sicher, dass mindestens zwei Optionen für die Umfrage " +"angegeben wurden." + +#: wxUI/dialogs/mastodon/postDialogs.py:363 +msgid "Not enough information" +msgstr "Nicht genügend Informationen" + +#: wxUI/dialogs/mastodon/postDialogs.py:368 +msgid "Vote in this poll" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:371 +#, fuzzy +msgid "Options" +msgstr "Option 4" + +#: wxUI/dialogs/mastodon/search.py:9 +msgid "Search" +msgstr "Suche" + +#: wxUI/dialogs/mastodon/search.py:18 +msgid "Posts" +msgstr "Beiträge" + +#: wxUI/dialogs/mastodon/showUserProfile.py:22 +#, fuzzy +msgid "Select user" +msgstr "Wähle eine URL" + +#: wxUI/dialogs/mastodon/showUserProfile.py:73 +#, fuzzy, python-brace-format +msgid "{}'s Profile" +msgstr "Profil akt&ualisieren" + +#: wxUI/dialogs/mastodon/showUserProfile.py:79 +#, fuzzy +msgid "&Name: " +msgstr "Name" + +#: wxUI/dialogs/mastodon/showUserProfile.py:84 +#, fuzzy +msgid "&URL: " +msgstr "Benutzer: " + +#: wxUI/dialogs/mastodon/showUserProfile.py:89 +msgid "&Bio: " +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:94 +msgid "&Joined at: " +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:99 +#, fuzzy +msgid "&Actions" +msgstr "Aktionen" + +#: wxUI/dialogs/mastodon/showUserProfile.py:104 +#, fuzzy +msgid "Header: " +msgstr "Verbergen" + +#: wxUI/dialogs/mastodon/showUserProfile.py:112 +msgid "Avatar: " +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:122 +#, python-brace-format +msgid "Field &{} - Label: " +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:129 +#, fuzzy +msgid "Content: " +msgstr "Kontext" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:43 +#: wxUI/dialogs/mastodon/filters/create_filter.py:65 +#: wxUI/dialogs/mastodon/showUserProfile.py:135 +msgid "Yes" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:43 +#: wxUI/dialogs/mastodon/filters/create_filter.py:65 +#: wxUI/dialogs/mastodon/filters/create_filter.py:69 +#: wxUI/dialogs/mastodon/showUserProfile.py:135 +msgid "No" +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:137 +#, fuzzy +msgid "&Private account: " +msgstr "Account entfernen" + +#: wxUI/dialogs/mastodon/showUserProfile.py:144 +#, fuzzy +msgid "&Bot account: " +msgstr "Account" + +#: wxUI/dialogs/mastodon/showUserProfile.py:151 +#, fuzzy +msgid "&Discoverable account: " +msgstr "Account entfernen" + +#: wxUI/dialogs/mastodon/showUserProfile.py:157 +#, python-brace-format +msgid "{} p&osts. Click to open posts timeline" +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:162 +#, python-brace-format +msgid "{} &following. Click to open Following timeline" +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:166 +#, python-brace-format +msgid "{} fo&llowers. Click to open followers timeline" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:43 +msgid "&Display Name" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:50 +#, fuzzy +msgid "&Bio" +msgstr "&Teilen" + +#: wxUI/dialogs/mastodon/updateProfile.py:58 +#, fuzzy +msgid "Header" +msgstr "Verbergen" + +#: wxUI/dialogs/mastodon/updateProfile.py:71 +#, fuzzy +msgid "Change &header" +msgstr "Verbergen" + +#: wxUI/dialogs/mastodon/updateProfile.py:79 +msgid "Avatar" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:92 +msgid "Change &avatar" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:102 +#, python-brace-format +msgid "Field &{}: Label" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:110 +#, fuzzy +msgid "Content" +msgstr "Kontext" + +#: wxUI/dialogs/mastodon/updateProfile.py:120 +#, fuzzy +msgid "&Private account" +msgstr "Account entfernen" + +#: wxUI/dialogs/mastodon/updateProfile.py:122 +#, fuzzy +msgid "&Bot account" +msgstr "Account" + +#: wxUI/dialogs/mastodon/updateProfile.py:124 +#, fuzzy +msgid "&Discoverable account" +msgstr "Account entfernen" + +#: wxUI/dialogs/mastodon/updateProfile.py:167 +msgid "Select header image - max 2MB" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:172 +#: wxUI/dialogs/mastodon/updateProfile.py:194 +msgid "The selected file is larger than 2MB. Do you want to select another file?" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:173 +#: wxUI/dialogs/mastodon/updateProfile.py:195 +msgid "File more than 2MB" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:189 +msgid "Select avatar image - max 2MB" +msgstr "" + +#: wxUI/dialogs/mastodon/userActions.py:19 +msgid "&Follow" +msgstr "&Folgen" + +#: wxUI/dialogs/mastodon/userActions.py:20 +msgid "U&nfollow" +msgstr "E&ntfolgen" + +#: wxUI/dialogs/mastodon/userActions.py:22 +msgid "Unmu&te" +msgstr "S&tummschaltung aufheben" + +#: wxUI/dialogs/mastodon/userActions.py:23 +msgid "&Block" +msgstr "&Blockieren" + +#: wxUI/dialogs/mastodon/userActions.py:24 +msgid "Unbl&ock" +msgstr "Bl&ockierung aufheben" + +#: wxUI/dialogs/mastodon/userTimeline.py:9 +#, python-format +msgid "Timeline for %s" +msgstr "Zeitleiste von %s" + +#: wxUI/dialogs/mastodon/userTimeline.py:19 +msgid "&Posts" +msgstr "&Beiträge" + +#: wxUI/dialogs/mastodon/userTimeline.py:20 +msgid "&Followers" +msgstr "&Folger" + +#: wxUI/dialogs/mastodon/userTimeline.py:21 +msgid "Fo&llowing" +msgstr "Fo&lgt" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:12 +#, fuzzy +msgid "Keyword" +msgstr "Taste" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:13 +#: wxUI/dialogs/mastodon/filters/create_filter.py:24 +msgid "Whole word" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:19 +msgid "Keyword:" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:25 +#: wxUI/dialogs/mastodon/filters/manage_filters.py:22 +#, fuzzy +msgid "Add" +msgstr "Hin&zufügen" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:34 +msgid "Palabras clave a filtrar:" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:74 +#, fuzzy +msgid "New filter" +msgstr "Filter &verwalten" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:78 +#, fuzzy +msgid "Home timeline" +msgstr "Zeitleisten" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:79 +msgid "Public statuses" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:81 +#, fuzzy +msgid "Threads" +msgstr "Bereit" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:82 +#, fuzzy +msgid "Profiles" +msgstr "Profil akt&ualisieren" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:86 +#, fuzzy +msgid "Hide posts" +msgstr "Beiträge" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:87 +#, fuzzy +msgid "Set a content warning to posts" +msgstr "Inhaltswarnung" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:91 +#, fuzzy +msgid "Hours" +msgstr "6 Stunden" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:92 +#, fuzzy +msgid "Days" +msgstr "7 Tage" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:93 +msgid "Weeks" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:94 +msgid "months" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:97 +#, fuzzy +msgid "Title:" +msgstr "Datei" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:104 +#, fuzzy +msgid "Apply to:" +msgstr "Antwort an {}" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:114 +#, fuzzy +msgid "Action:" +msgstr "Aktion" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:122 +msgid "Expires in:" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/manage_filters.py:10 +#, fuzzy +msgid "Filters" +msgstr "Datei" + +#: wxUI/dialogs/mastodon/filters/manage_filters.py:15 +#, fuzzy +msgid "Title" +msgstr "Datei" + +#: wxUI/dialogs/mastodon/filters/manage_filters.py:16 +msgid "Keywords" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/manage_filters.py:17 +#, fuzzy +msgid "Contexts" +msgstr "Kontext" + +#: wxUI/dialogs/mastodon/filters/manage_filters.py:19 +#, fuzzy +msgid "Expires" +msgstr "Extras" + +#~ msgid "Unable to find address in OpenStreetMap." +#~ msgstr "Adresse kann nicht in OpenStreetMap gefunden werden." + +#~ msgid "There are no results for the coordinates in this tweet" +#~ msgstr "Keine Ergebnisse für die Koordinaten in diesem Tweet." + +#~ msgid "This list is already opened" +#~ msgstr "Diese Liste ist bereits geöffnet." + +#~ msgid "Timelines for {}" +#~ msgstr "Zeitleisten für {}" + +#~ msgid "URL of mastodon instance:" +#~ msgstr "URL der Mastodon-Instanz:" + +#~ msgid "Email address:" +#~ msgstr "E-Mail-Adresse:" + +#~ msgid "Password:" +#~ msgstr "Passwort:" + +#~ msgid "&Item" +#~ msgstr "E&intrag" + +#~ msgid "Likes for {}" +#~ msgstr "Likes für {}" + +#~ msgid "Trending topics for %s" +#~ msgstr "Trends für %s" + +#~ msgid "Select user" +#~ msgstr "Benutzer wählen" + +#~ msgid "Sent direct messages" +#~ msgstr "Gesendete Direktnachrichten" + +#~ msgid "Sent tweets" +#~ msgstr "Gesendete Tweets" + +#~ msgid "Likes" +#~ msgstr "Likes" + +#~ msgid "Friends" +#~ msgstr "Freunde" + +#~ msgid "{username}'s likes" +#~ msgstr "{username}s Likes" + +#~ msgid "{username}'s friends" +#~ msgstr "{username}s Freunde" + +#~ msgid "Tweet" +#~ msgstr "Tweet" + +#~ msgid "Write the tweet here" +#~ msgstr "Gib deinen Tweet hier ein" + +#~ msgid "New tweet in {0}" +#~ msgstr "Neuer Tweet in {0}" + +#~ msgid "{0} new tweets in {1}." +#~ msgstr "{0} neue Tweets in {1}." + +#~ msgid "Reply to {arg0}" +#~ msgstr "Antwort an {arg0}" + +#~ msgid "Reply to %s" +#~ msgstr "Antwort an %s" + +#~ msgid "Direct message to %s" +#~ msgstr "Direktnachricht an %s" + +#~ msgid "New direct message" +#~ msgstr "Neue Direktnachricht" + +#~ msgid "This action is not supported on protected accounts." +#~ msgstr "Diese Aktion wird für geschützte Accounts nicht unterstützt." + +#~ msgid "Quote" +#~ msgstr "Zitat" + +#~ msgid "Add your comment to the tweet" +#~ msgstr "Gib deinen Kommentar ein." + +#~ msgid "User details" +#~ msgstr "Benutzerdetails" + +#~ msgid "MMM D, YYYY. H:m" +#~ msgstr "dddd, D. MMMM YYYY, H:m" + +#~ msgid "There are no coordinates in this tweet" +#~ msgstr "Dieser Tweet hat keine Koordinaten." + +#~ msgid "Error decoding coordinates. Try again later." +#~ msgstr "Fehler beim Umwandeln der Koordinaten. Bitte versuche es später erneut." + +#~ msgid "Invalid buffer" +#~ msgstr "Ungültige Ansicht" + +#~ msgid "{0} new direct messages." +#~ msgstr "{0} neue Direktnachrichten." + +#~ msgid "This action is not supported in the buffer yet." +#~ msgstr "Diese Aktion ist in der Ansicht noch nicht verfügbar." + +#~ msgid "" +#~ "Getting more items cannot be done " +#~ "in this buffer. Use the direct " +#~ "messages buffer instead." +#~ msgstr "" +#~ "Das Abrufen weiterer Einträge ist in " +#~ "dieser Ansicht nicht möglich. Bitte " +#~ "verwende stattdessen die Direktnachrichten-" +#~ "Ansicht." + +#~ msgid "Mention" +#~ msgstr "Erwähnung" + +#~ msgid "Mention to %s" +#~ msgstr "Erwähnung an %s" + +#~ msgid "{0} new followers." +#~ msgstr "{0} neue Folger." + +#~ msgid "This action is not supported in the buffer, yet." +#~ msgstr "Diese Aktion ist in der Ansicht (noch) nicht verfügbar." + +#~ msgid "&Retweet" +#~ msgstr "&Retweet" + +#~ msgid "&Like" +#~ msgstr "Gefä&llt mir" + +#~ msgid "&Unlike" +#~ msgstr "\"Gefällt mir\" &entfernen" + +#~ msgid "View &address" +#~ msgstr "&Adresse abrufen" + +#~ msgid "&View lists" +#~ msgstr "Listen &anzeigen" + +#~ msgid "View likes" +#~ msgstr "Likes anzeigen" + +#~ msgid "Likes timelines" +#~ msgstr "Likes-Zeitleisten" + +#~ msgid "Followers timelines" +#~ msgstr "Folger-Zeitleisten" + +#~ msgid "Following timelines" +#~ msgstr "Freunde-Zeitleisten" + +#~ msgid "Lists" +#~ msgstr "Listen" + +#~ msgid "List for {}" +#~ msgstr "Liste für {}" + +#~ msgid "Filters cannot be applied on this buffer" +#~ msgstr "Filter können für diese Ansicht nicht angewendet werden" + +#~ msgid "View item" +#~ msgstr "Eintrag anzeigen" + +#~ msgid "Ask" +#~ msgstr "Fragen" + +#~ msgid "Retweet without comments" +#~ msgstr "Retweet ohne Kommentar" + +#~ msgid "Retweet with comments" +#~ msgstr "Retweet mit Kommentar" + +#~ msgid "Edit template for tweets. Current template: {}" +#~ msgstr "Tweet-Vorlage bearbeiten. Aktuelle Vorlage: {}" + +#~ msgid "Edit template for direct messages. Current template: {}" +#~ msgstr "Direktnachrichten-Vorlage bearbeiten. Aktuelle Vorlage: {}" + +#~ msgid "Edit template for sent direct messages. Current template: {}" +#~ msgstr "" +#~ "Vorlage für gesendete Direktnachrichten " +#~ "bearbeiten. Aktuelle Vorlage: {}" + +#~ msgid "User has been suspended" +#~ msgstr "Benutzer wurde gesperrt" + +#~ msgid "Information for %s" +#~ msgstr "Informationen über %s" + +#~ msgid "Discarded" +#~ msgstr "Verworfen" + +#~ msgid "Username: @%s\n" +#~ msgstr "Benutzername: @%s\n" + +#~ msgid "Name: %s\n" +#~ msgstr "Name: %s\n" + +#~ msgid "Location: %s\n" +#~ msgstr "Ort: %s\n" + +#~ msgid "URL: %s\n" +#~ msgstr "URL: %s\n" + +#~ msgid "Bio: %s\n" +#~ msgstr "Bio: %s\n" + +#~ msgid "Yes" +#~ msgstr "Ja" + +#~ msgid "No" +#~ msgstr "Nein" + +#~ msgid "Protected: %s\n" +#~ msgstr "Geschützt: %s\n" + +#~ msgid "Relationship: " +#~ msgstr "Beziehung " + +#~ msgid "You follow {0}. " +#~ msgstr "Du folgst {0}. " + +#~ msgid "{0} is following you." +#~ msgstr "{0} folgt dir." + +#~ msgid "" +#~ "Followers: %s\n" +#~ " Friends: %s\n" +#~ msgstr "" +#~ "Folger: %s\n" +#~ " Freunde: %s\n" + +#~ msgid "Verified: %s\n" +#~ msgstr "Bestätigt: %s\n" + +#~ msgid "Tweets: %s\n" +#~ msgstr "Tweets: %s\n" + +#~ msgid "Likes: %s" +#~ msgstr "Likes: %s" + +#~ msgid "You can't ignore direct messages" +#~ msgstr "Du kannst keine Direktnachrichten ignorieren." + +#~ msgid "Attaching..." +#~ msgstr "Wird angehängt..." + +#~ msgid "Pause" +#~ msgstr "Pause" + +#~ msgid "&Resume" +#~ msgstr "&Fortsetzen" + +#~ msgid "Resume" +#~ msgstr "Fortsetzen" + +#~ msgid "&Pause" +#~ msgstr "&Pause" + +#~ msgid "&Stop" +#~ msgstr "&Stop" + +#~ msgid "Recording" +#~ msgstr "Aufnahme" + +#~ msgid "Stopped" +#~ msgstr "Beendet" + +#~ msgid "&Record" +#~ msgstr "&Aufnehmen" + +#~ msgid "&Play" +#~ msgstr "Abs&pielen" + +#~ msgid "Recoding audio..." +#~ msgstr "Wandle Audio..." + +#~ msgid "Error in file upload: {0}" +#~ msgstr "Fehler beim Datei-Upload: {0}" + +#~ msgid "Transferred" +#~ msgstr "Übertragen" + +#~ msgid "Total file size" +#~ msgstr "Gesamtgröße" + +#~ msgid "Transfer rate" +#~ msgstr "Geschwindigkeit" + +#~ msgid "Time left" +#~ msgstr "Verbleibende Zeit" + +#~ msgid "Attach audio" +#~ msgstr "Audio anhängen" + +#~ msgid "&Add an existing file" +#~ msgstr "Bestehende Datei an&hängen" + +#~ msgid "&Discard" +#~ msgstr "&Verwerfen" + +#~ msgid "Upload to" +#~ msgstr "Hochladen auf" + +#~ msgid "Attach" +#~ msgstr "Anhängen" + +#~ msgid "&Cancel" +#~ msgstr "Abbre&chen" + +#~ msgid "Audio Files (*.mp3, *.ogg, *.wav)|*.mp3; *.ogg; *.wav" +#~ msgstr "Audiodateien (*.mp3, *.ogg, *.wav)|*.mp3; *.ogg; *.wav" + +#~ msgid "You have to start writing" +#~ msgstr "Du musst mit dem Schreiben beginnen." + +#~ msgid "There are no results in your users database" +#~ msgstr "Keine Ergebnisse in deiner Benutzerdatenbank." + +#~ msgid "Autocompletion only works for users." +#~ msgstr "Auto-Vervollständigung funktioniert nur für Benutzer." + +#~ msgid "" +#~ "Updating database... You can close this" +#~ " window now. A message will tell " +#~ "you when the process finishes." +#~ msgstr "" +#~ "Datenbank wird aktualisiert. Du kannst " +#~ "dieses Fenster nun schließen und " +#~ "erhältst eine Benachrichtigung, sobald der " +#~ "Vorgang abgeschlossen ist." + +#~ msgid "Manage Autocompletion database" +#~ msgstr "Auto-Vervollständigungsdatenbank verwalten" + +#~ msgid "Editing {0} users database" +#~ msgstr "Bearbeiten der {0} Benutzerdatenbank" + +#~ msgid "Username" +#~ msgstr "Benutzername" + +#~ msgid "Add user" +#~ msgstr "Benutzer hinzufügen" + +#~ msgid "Remove user" +#~ msgstr "Benutzer entfernen" + +#~ msgid "Twitter username" +#~ msgstr "Twitter-Benutzername" + +#~ msgid "Add user to database" +#~ msgstr "Benutzer zur Datenbank hinzufügen" + +#~ msgid "The user does not exist" +#~ msgstr "Der Benutzer existiert nicht." + +#~ msgid "Error!" +#~ msgstr "Fehler!" + +#~ msgid "Autocomplete users' settings" +#~ msgstr "Auto-Vervollständigungs-Einstellungen" + +#~ msgid "Add followers to database" +#~ msgstr "" + +#~ msgid "Add friends to database" +#~ msgstr "Freunde zur Datenbank hinzufügen" + +#~ msgid "Updating autocompletion database" +#~ msgstr "Auto-Vervollständigungsdatenbank aktualisieren" + +#~ msgid "" +#~ "This process will retrieve the users " +#~ "you selected from Twitter, and add " +#~ "them to the user autocomplete database." +#~ " Please note that if there are " +#~ "many users or you have tried to" +#~ " perform this action less than 15 " +#~ "minutes ago, TWBlue may reach a " +#~ "limit in Twitter API calls when " +#~ "trying to load the users into the" +#~ " database. If this happens, we will" +#~ " show you an error, in which " +#~ "case you will have to try this " +#~ "process again in a few minutes. If" +#~ " this process ends with no error, " +#~ "you will be redirected back to the" +#~ " account settings dialog. Do you want" +#~ " to continue?" +#~ msgstr "" +#~ "Dieser Vorgang wird die von dir " +#~ "gewählten Benutzer auf Twitter abrufen " +#~ "und sie in die Autovervollständigungs-" +#~ "Datenbank aufnehmen. Bitte beachte, dass " +#~ "es hierbei zur Überschreitung von " +#~ "Twitters API-Begrenzungen kommen kann, " +#~ "etwa bei sehr vielen Nutzern oder " +#~ "wenn dieser Vorgang innerhalb der " +#~ "letzten 15 Minuten bereits ausgeführt " +#~ "wurde. In diesem Fall wird eine " +#~ "Fehlermeldung angezeigt und du kannst es" +#~ " in einigen Minuten erneut versuchen. " +#~ "Bei erfolgreichem Abschluss wirst du in" +#~ " die Account-Einstellungen weitergeleitet. " +#~ "Möchtest du fortfahren?" + +#~ msgid "TWBlue has imported {} users successfully." +#~ msgstr "TWBlue hat die Benutzer erfolgreich importiert." + +#~ msgid "Done" +#~ msgstr "Fertig" + +#~ msgid "Error adding users from Twitter. Please try again in about 15 minutes." +#~ msgstr "" +#~ "Fehler beim Hinzufügen der Twitter-" +#~ "Benutzer. Bitte warte 15 Minuten und " +#~ "versuche es erneut." + +#~ msgid "New tweet" +#~ msgstr "Neuer Tweet" + +#~ msgid "Retweet" +#~ msgstr "Retweet" + +#~ msgid "Like a tweet" +#~ msgstr "Für einen Tweet \"gefällt mir\" abgeben" + +#~ msgid "Like/unlike a tweet" +#~ msgstr "\"Gefällt mir\" hinzufügen/entfernen" + +#~ msgid "Unlike a tweet" +#~ msgstr "\"Gefällt mir\" entfernen" + +#~ msgid "See user details" +#~ msgstr "Benutzerdetails anzeigen" + +#~ msgid "Show tweet" +#~ msgstr "Tweet anzeigen" + +#~ msgid "Interact with the currently focused tweet." +#~ msgstr "Interagiert mit dem momentan fokussierten Tweet." + +#~ msgid "View in Twitter" +#~ msgstr "Auf Twitter anzeigen" + +#~ msgid "Edit profile" +#~ msgstr "Profil bearbeiten" + +#~ msgid "Delete a tweet or direct message" +#~ msgstr "Tweet oder Direktnachricht löschen" + +#~ msgid "Add to list" +#~ msgstr "Zur Liste hinzufügen" + +#~ msgid "Remove from list" +#~ msgstr "Aus Liste entfernen" + +#~ msgid "Search on twitter" +#~ msgstr "Auf Twitter suchen" + +#~ msgid "Show lists for a specified user" +#~ msgstr "Zeigt Listen für einen bestimmten Benutzer" + +#~ msgid "Get geolocation" +#~ msgstr "Ort abrufen" + +#~ msgid "Display the tweet's geolocation in a dialog" +#~ msgstr "Den Standort eines Tweets als Dialog anzeigen" + +#~ msgid "Create a trending topics buffer" +#~ msgstr "Eine Trends-Ansicht erstellen" + +#~ msgid "" +#~ "Opens the list manager, which allows " +#~ "you to create, edit, delete and " +#~ "open lists in buffers." +#~ msgstr "" +#~ "Öffnet die Listenverwaltung, in welcher " +#~ "Listen erstellt, bearbeitet sowie Zeitleisten" +#~ " für sie geöffnet werden können." + +#~ msgid "Opens the list manager" +#~ msgstr "Öffnet die Listenverwaltung" + +#~ msgid "{account_name} (Twitter)" +#~ msgstr "{account_name} (Twitter)" + +#~ msgid "Twitter" +#~ msgstr "Twitter" + +#~ msgid "" +#~ "The request to authorize your Twitter" +#~ " account will be opened in your " +#~ "browser. You only need to do this" +#~ " once. Would you like to continue?" +#~ msgstr "" +#~ "Die Anfrage zur benötigten Twitter-" +#~ "Autorisierung wird in deinem Browser " +#~ "geöffnet und muss nur einmal " +#~ "durchgeführt werden. Möchtest du fortfahren?" + +#~ msgid "" +#~ "TWBlue is unable to authenticate the " +#~ "account for {} in Twitter. It " +#~ "might be due to an invalid or " +#~ "expired token, revoqued access to the" +#~ " application, or after an account " +#~ "reactivation. Please remove the account " +#~ "manually from your Twitter sessions in" +#~ " order to stop seeing this message." +#~ msgstr "" +#~ "TWBlue kann den Account für {} " +#~ "nicht in Twitter authentisieren. Dies " +#~ "kann durch einen ungültigen oder " +#~ "veralteten Token ausgelöst werden, " +#~ "widerrufener App-Zugriff oder nach einer" +#~ " Account-Reaktivierung. Bitte entferne den" +#~ " Account manuell aus der " +#~ "Sitzungsverwaltung, um diesen Fehler nicht " +#~ "mehr anzuzeigen." + +#~ msgid "Authentication error for session {}" +#~ msgstr "Authentisierungsfehler für Sitzung {}" + +#~ msgid "Dm to %s " +#~ msgstr "DM an %s" + +#~ msgid "{0}. Quoted tweet from @{1}: {2}" +#~ msgstr "{0}. Zitierter Tweet von @{1}: {2}" + +#~ msgid "Unavailable" +#~ msgstr "Nicht verfügbar" + +#~ msgid "" +#~ "%s (@%s). %s followers, %s friends, " +#~ "%s tweets. Last tweeted %s. Joined " +#~ "Twitter %s" +#~ msgstr "" +#~ "%s (@%s). %s Folger, %s Freunde, " +#~ "%s Tweets. Letzter Tweet: %s. Trat " +#~ "Twitter %s bei." + +#~ msgid "No description available" +#~ msgstr "Keine Beschreibung verfügbar." + +#~ msgid "private" +#~ msgstr "Privat" + +#~ msgid "public" +#~ msgstr "Öffentlich" + +#~ msgid "Enter your PIN code here" +#~ msgstr "Gib hier deinen Pin-Code ein" + +#~ msgid "Authorising account..." +#~ msgstr "Autorisiere Account..." + +#~ msgid "" +#~ "We could not authorice your Twitter " +#~ "account to be used in TWBlue. This" +#~ " might be caused due to an " +#~ "incorrect verification code. Please try " +#~ "to add the session again." +#~ msgstr "" +#~ "Dein Twitter-Account konnte nicht für" +#~ " TWBlue autorisiert werden. Möglicherweise " +#~ "war der Bestädigungs-Code nicht korrekt." +#~ " Bitte versuche die Sitzung erneut zu" +#~ " erstellen." + +#~ msgid "%s failed. Reason: %s" +#~ msgstr "%s fehlgeschlagen. Grund: %s" + +#~ msgid "Deleted account" +#~ msgstr "Gelöschter Account" + +#~ msgid "$sender_display_name, $text $date" +#~ msgstr "$sender_display_name, $text $date" + +#~ msgid "" +#~ "$display_name (@$screen_name). $followers followers," +#~ " $following following, $tweets tweets. " +#~ "Joined Twitter $created_at." +#~ msgstr "" +#~ "$display_name (@$screen_name). $followers Folger," +#~ " folgt $following, $tweets Tweets. Trat " +#~ "Twitter $created_at bei." + +#~ msgid "Image description: {}." +#~ msgstr "Bildbeschreibung" + +#~ msgid "RT @{}: {} Quote from @{}: {}" +#~ msgstr "{0}. Zitierter Tweet von @{1}: {2}" + +#~ msgid "RT @{}: {}" +#~ msgstr "Geteilt von @{}: {}" + +#~ msgid "{} Quote from @{}: {}" +#~ msgstr "Geteilt von @{}: {}" + +#~ msgid "Sorry, you are not authorised to see this status." +#~ msgstr "Sorry, du bist nicht berechtigt diesen Status zu sehen." + +#~ msgid "Error {0}" +#~ msgstr "Fehler {0}" + +#~ msgid "{user_1}, {user_2} and {all_users} more: {text}" +#~ msgstr "{user_1}, {user_2} und {all_users} weitere: {text}" + +#~ msgid "" +#~ "This retweet is over 140 characters. " +#~ "Would you like to post it as " +#~ "a mention to the poster with your" +#~ " comments and a link to the " +#~ "original tweet?" +#~ msgstr "" +#~ "Dieser Retweet ist länger als 140 " +#~ "Zeichen. Möchtest du ihn mit deinem " +#~ "Kommentar als Erwähnung an den Verfasser" +#~ " und mit einem Link zum Original-" +#~ "Tweet senden?" + +#~ msgid "Would you like to add a comment to this tweet?" +#~ msgstr "Möchtest du einen Kommentar hinzufügen?" + +#~ msgid "" +#~ "Do you really want to delete this" +#~ " tweet? It will be deleted from " +#~ "Twitter as well." +#~ msgstr "" +#~ "Möchtest du diesen Tweet wirklich " +#~ "löschen? Er wird auch auf Twitter " +#~ "gelöscht." + +#~ msgid "Enter the name of the client : " +#~ msgstr "Gib den Namen des Clients ein: " + +#~ msgid "Add client" +#~ msgstr "Client hinzufügen" + +#~ msgid "This user has no tweets, so you can't open a timeline for them." +#~ msgstr "" +#~ "Dieser Benutzer hat keine Tweets, du " +#~ "kannst daher keine Zeitleiste öffnen." + +#~ msgid "" +#~ "This is a protected Twitter user, " +#~ "which means you can't open a " +#~ "timeline using the Streaming API. The" +#~ " user's tweets will not update due" +#~ " to a twitter policy. Do you " +#~ "want to continue?" +#~ msgstr "" +#~ "Dies ist ein geschützter Twitter-Nutzer," +#~ " daher kannst du keine Zeitleiste " +#~ "über die Streaming-API öffnen. Die " +#~ "Tweets des Nutzers werden nicht " +#~ "automatisch aktualisiert. Möchtest du " +#~ "fortfahren?" + +#~ msgid "" +#~ "This is a protected user account, " +#~ "you need to follow this user to" +#~ " view their tweets or likes." +#~ msgstr "" +#~ "Dies ist ein geschützter Nutzer-Account." +#~ " Du musst diesem Nutzer erst folgen," +#~ " um Tweets und Likes sehen zu " +#~ "können." + +#~ msgid "This user has no tweets. {0} can't create a timeline." +#~ msgstr "" +#~ "Dieser Benutzer hat keine Tweets, {0}" +#~ " kann daher keine Zeitleiste erstellen." + +#~ msgid "This user has no favorited tweets. {0} can't create a timeline." +#~ msgstr "" +#~ "Dieser Benutzer hat keine Favoriten. {0}" +#~ " kann daher keine Zeitleiste erstellen." + +#~ msgid "This user has no followers. {0} can't create a timeline." +#~ msgstr "" +#~ "Dieser Benutzer hat keine Tweets, {0}" +#~ " kann daher keine Zeitleiste erstellen." + +#~ msgid "This user has no friends. {0} can't create a timeline." +#~ msgstr "" +#~ "Dieser Benutzer hat keine Freunde, {0}" +#~ " kann daher keine Zeitleiste erstellen." + +#~ msgid "Geolocation data: {0}" +#~ msgstr "Ortsangaben: {0}" + +#~ msgid "Geo data for this tweet" +#~ msgstr "Geo-Daten für diesen Tweet" + +#~ msgid "You have been blocked from viewing this content" +#~ msgstr "Die Darstellung dieses Inhalts wurde für dich blockiert" + +#~ msgid "" +#~ "You have been blocked from viewing " +#~ "someone's content. In order to avoid " +#~ "conflicts with the full session, TWBlue" +#~ " will remove the affected timeline." +#~ msgstr "" +#~ "Du wurdest für die Anzeige der " +#~ "Inhalte eines Benutzers blockiert. Um " +#~ "Konflikte mit der gerade laufenden " +#~ "Sitzung zu vermeiden, wird TWBlue die" +#~ " betreffende Zeitleiste entfernen." + +#~ msgid "" +#~ "TWBlue cannot load this timeline because" +#~ " the user has been suspended from " +#~ "Twitter." +#~ msgstr "" +#~ "TWBlue kann diese Zeitleiste nicht " +#~ "laden, da der Benutzer von Twitter " +#~ "gesperrt wurde." + +#~ msgid "Do you really want to delete this filter?" +#~ msgstr "Möchtest du diesen Filter wirklich löschen?" + +#~ msgid "This filter already exists. Please use a different title" +#~ msgstr "Dieser Filter ist bereits vorhanden. Bitte verwende einen anderen Titel" + +#~ msgid "&Show direct message" +#~ msgstr "Direktnachricht an&zeigen" + +#~ msgid "&Show event" +#~ msgstr "Ereignis an&zeigen" + +#~ msgid "Direct &message" +#~ msgstr "Direkt&nachricht" + +#~ msgid "&Show user" +#~ msgstr "Benutzer an&zeigen" + +#~ msgid "Search topic" +#~ msgstr "Thema suchen" + +#~ msgid "&Tweet about this trend" +#~ msgstr "Über diesen &Trend twittern" + +#~ msgid "&Show item" +#~ msgstr "Eintrag an&zeigen" + +#~ msgid "Update &profile" +#~ msgstr "&Profil aktualisieren" + +#~ msgid "Event" +#~ msgstr "Ereignis" + +#~ msgid "Remove event" +#~ msgstr "Ereignis entfernen" + +#~ msgid "Trending topic" +#~ msgstr "Trends" + +#~ msgid "Tweet about this trend" +#~ msgstr "Über diesen Trend twittern" + +#~ msgid "" +#~ "Scan account and add friends and " +#~ "followers to the user autocompletion " +#~ "database" +#~ msgstr "" +#~ "Account scannen und Freunde und Folger" +#~ " zur Autovervollständigungs-Datenbank hinzufügen" + +#~ msgid "" +#~ "Inverted buffers: The newest tweets will" +#~ " be shown at the beginning while " +#~ "the oldest at the end" +#~ msgstr "" +#~ "Umgekehrte Ansicht: Neueste Tweets werden " +#~ "am Anfang der Liste angezeigt, die " +#~ "ältesten am Ende" + +#~ msgid "Retweet mode" +#~ msgstr "Retweet-Modus" + +#~ msgid "" +#~ "Load cache for tweets in memory " +#~ "(much faster in big datasets but " +#~ "requires more RAM)" +#~ msgstr "" +#~ "Tweets im Speicher zwischenlagern (sorgt " +#~ "für verbesserte Geschwindigkeit bei großen " +#~ "Datenmengen, erhöht jedoch die RAM-" +#~ "Nutzung)" + +#~ msgid "Ignored clients" +#~ msgstr "Ignorierte Clients" + +#~ msgid "Remove client" +#~ msgstr "Client entfernen" + +#~ msgid "Indicate audio tweets with sound" +#~ msgstr "Klang bei Audio-Tweets abspielen" + +#~ msgid "Indicate geotweets with sound" +#~ msgstr "Klang bei Geo-Tweets abspielen" + +#~ msgid "Indicate tweets containing images with sound" +#~ msgstr "Klang bei Tweets mit Bildern abspielen" + +#~ msgid "API Key for SndUp" +#~ msgstr "API-Schlüssel für SndUp" + +#~ msgid "Create a filter for this buffer" +#~ msgstr "Einen Filter für diese Ansicht erstellen" + +#~ msgid "Filter title" +#~ msgstr "Filter-Titel" + +#~ msgid "Filter by word" +#~ msgstr "Wortfilter" + +#~ msgid "Ignore tweets wich contain the following word" +#~ msgstr "Tweets ignorieren, die das folgende Wort enthalten" + +#~ msgid "Ignore tweets without the following word" +#~ msgstr "Tweets ignorieren, die das folgende Wort nicht enthalten" + +#~ msgid "word" +#~ msgstr "Wort" + +#~ msgid "Allow retweets" +#~ msgstr "Retweets erlauben" + +#~ msgid "Allow quoted tweets" +#~ msgstr "Erlaube zitierte Tweets" + +#~ msgid "Allow replies" +#~ msgstr "Antworten erlauben" + +#~ msgid "Use this term as a regular expression" +#~ msgstr "Diesen Begriff als regulären Ausdruck verwenden" + +#~ msgid "Filter by language" +#~ msgstr "Nach Sprache Filtern" + +#~ msgid "Load tweets in the following languages" +#~ msgstr "Tweets in folgenden Sprachen laden" + +#~ msgid "Ignore tweets in the following languages" +#~ msgstr "Tweets in folgenden Sprachen ignorieren" + +#~ msgid "Don't filter by language" +#~ msgstr "Nicht nach Sprache filtern" + +#~ msgid "Supported languages" +#~ msgstr "Unterstützte Sprachen" + +#~ msgid "Add selected language to filter" +#~ msgstr "Gewählte Sprache dem Filter hinzufügen" + +#~ msgid "Selected languages" +#~ msgstr "Gewählte Sprachen" + +#~ msgid "You must define a name for the filter before creating it." +#~ msgstr "Du musst vor dem Erstellen eines Filters einen namen festlegen." + +#~ msgid "Missing filter name" +#~ msgstr "Fehlender Filtername" + +#~ msgid "Manage filters" +#~ msgstr "Filter verwalten" + +#~ msgid "Filters" +#~ msgstr "Filter" + +#~ msgid "Filter" +#~ msgstr "Filter" + +#~ msgid "Lists manager" +#~ msgstr "Listenverwaltung" + +#~ msgid "List" +#~ msgstr "Liste" + +#~ msgid "Owner" +#~ msgstr "Eigentümer" + +#~ msgid "Members" +#~ msgstr "Mitglieder" + +#~ msgid "mode" +#~ msgstr "Modus" + +#~ msgid "Create a new list" +#~ msgstr "Neue Liste erstellen" + +#~ msgid "Open in buffer" +#~ msgstr "In Ansicht öffnen" + +#~ msgid "Viewing lists for %s" +#~ msgstr "Zeige Liste für %s" + +#~ msgid "Subscribe" +#~ msgstr "Abonnieren" + +#~ msgid "Unsubscribe" +#~ msgstr "Kündigen" + +#~ msgid "Name (20 characters maximun)" +#~ msgstr "Name (maximal 20 Zeichen)" + +#~ msgid "Mode" +#~ msgstr "Modus" + +#~ msgid "Private" +#~ msgstr "Privat" + +#~ msgid "Editing the list %s" +#~ msgstr "Bearbeite Liste %s" + +#~ msgid "Select a list to add the user" +#~ msgstr "Wähle eine Liste zum Hinzufügen des Benutzers." + +#~ msgid "Add" +#~ msgstr "Hinzufügen" + +#~ msgid "Select a list to remove the user" +#~ msgstr "Wähle eine Liste zum Entfernen des Benutzers." + +#~ msgid "Do you really want to delete this list?" +#~ msgstr "Möchtest du diese Liste wirklich löschen?" + +#~ msgid "Search on Twitter" +#~ msgstr "Auf Twitter suchen" + +#~ msgid "Tweets" +#~ msgstr "Tweets" + +#~ msgid "&Language for results: " +#~ msgstr "&Sprache für Ergebnisse: " + +#~ msgid "any" +#~ msgstr "jede" + +#~ msgid "Results &type: " +#~ msgstr "Ergebnis&typ: " + +#~ msgid "Mixed" +#~ msgstr "Gemischt" + +#~ msgid "Recent" +#~ msgstr "Aktuell" + +#~ msgid "Popular" +#~ msgstr "Beliebt" + +#~ msgid "Details" +#~ msgstr "Details" + +#~ msgid "&Go to URL" +#~ msgstr "&Gehe zu URL" + +#~ msgid "View trending topics" +#~ msgstr "Trends anzeigen" + +#~ msgid "Trending topics by" +#~ msgstr "Trends nach" + +#~ msgid "Country" +#~ msgstr "Land" + +#~ msgid "City" +#~ msgstr "Stadt" + +#~ msgid "&Location" +#~ msgstr "&Ort" + +#~ msgid "Update your profile" +#~ msgstr "Aktualisiere dein Profil" + +#~ msgid "&Name (50 characters maximum)" +#~ msgstr "&Name (maximal 50 Zeichen)" + +#~ msgid "&Website" +#~ msgstr "&Webseite" + +#~ msgid "&Bio (160 characters maximum)" +#~ msgstr "&Bio (maximal 160 Zeichen)" + +#~ msgid "Upload a &picture" +#~ msgstr "Ein Bild &hochladen" + +#~ msgid "Upload a picture" +#~ msgstr "Ein Bild hochladen" + +#~ msgid "Discard image" +#~ msgstr "Bild verwerfen" + +#~ msgid "&Report as spam" +#~ msgstr "Als &Spam melden" + +#~ msgid "&Ignore tweets from this client" +#~ msgstr "Tweets dieses Clients &ignorieren" + +#~ msgid "&Tweets" +#~ msgstr "&Tweets" + +#~ msgid "&Likes" +#~ msgstr "&Likes" + +#~ msgid "F&riends" +#~ msgstr "F&reunde" + +#~ msgid "Delete attachment" +#~ msgstr "Anhang löschen" + +#~ msgid "Added Tweets" +#~ msgstr "Hinzugefügte Tweets" + +#~ msgid "Delete tweet" +#~ msgstr "Tweet löschen" + +#~ msgid "A&dd..." +#~ msgstr "Hin&zufügen..." + +#~ msgid "Add t&weet" +#~ msgstr "T&weet hinzufügen" + +#~ msgid "&Attach audio..." +#~ msgstr "&Audio anhängen..." + +#~ msgid "Sen&d" +#~ msgstr "Sen&den" + +#~ msgid "Video files (*.mp4)|*.mp4" +#~ msgstr "Videodateien (*.mp4)|*.mp4" + +#~ msgid "" +#~ "It is not possible to add more " +#~ "attachments. Please make sure your tweet" +#~ " complies with Twitter'S attachment rules." +#~ " You can add only one video or" +#~ " GIF in every tweet, and a " +#~ "maximum of 4 photos." +#~ msgstr "" +#~ "Weitere Anhänge können nicht hinzugefügt " +#~ "werden. Bitte stelle sicher, dass dein" +#~ " Tweet den Twitter-Regeln für Anhänge" +#~ " entspricht. Du kannst nur ein Video" +#~ " oder Gif pro Tweet senden, und " +#~ "maximal 4 Fotos." + +#~ msgid "&Mention to all" +#~ msgstr "Alle er&wähnen" + +#~ msgid "&Recipient" +#~ msgstr "Empfänge&r" + +#~ msgid "Tweet - %i characters " +#~ msgstr "Tweet - %i Zeichen " + +#~ msgid "Retweets: " +#~ msgstr "Retweets: " + +#~ msgid "Likes: " +#~ msgstr "Likes: " + +#~ msgid "View" +#~ msgstr "Anzeigen" + +#~ msgid "Item" +#~ msgstr "Eintrag" + +#~ msgid "&Expand URL" +#~ msgstr "URL &expandieren" + +#~ msgid "Participation time (in days)" +#~ msgstr "Teilnahmezeitraum (in Tagen)" + +#~ msgid "&Open in Twitter" +#~ msgstr "Auf Twitter &Öffnen" + +#~ msgid "&Show tweet" +#~ msgstr "Tweet an&zeigen" + +#~ msgid "Translated" +#~ msgstr "Übersetzt" + +#~ msgid "Afrikaans" +#~ msgstr "Afrikaans" + +#~ msgid "Albanian" +#~ msgstr "Albanisch^" + +#~ msgid "Amharic" +#~ msgstr "Amharisch" + +#~ msgid "Arabic" +#~ msgstr "Arabisch" + +#~ msgid "Armenian" +#~ msgstr "Armenisch" + +#~ msgid "Azerbaijani" +#~ msgstr "Aserbaidschanisch" + +#~ msgid "Basque" +#~ msgstr "Baskisch" + +#~ msgid "Belarusian" +#~ msgstr "Weißrussisch" + +#~ msgid "Bengali" +#~ msgstr "Bengalisch" + +#~ msgid "Bihari" +#~ msgstr "Bihari" + +#~ msgid "Bulgarian" +#~ msgstr "Bulgarisch" + +#~ msgid "Burmese" +#~ msgstr "Burmesisch" + +#~ msgid "Catalan" +#~ msgstr "Katalanisch" + +#~ msgid "Cherokee" +#~ msgstr "Cherokee" + +#~ msgid "Chinese" +#~ msgstr "Chinesisch" + +#~ msgid "Chinese_simplified" +#~ msgstr "Chinesisch (vereinfacht)" + +#~ msgid "Chinese_traditional" +#~ msgstr "Chinesisch (traditionell)" + +#~ msgid "Croatian" +#~ msgstr "Kroatisch" + +#~ msgid "Czech" +#~ msgstr "Tschechisch" + +#~ msgid "Dhivehi" +#~ msgstr "Dhivehi" + +#~ msgid "Esperanto" +#~ msgstr "Esperanto" + +#~ msgid "Estonian" +#~ msgstr "Estnisch" + +#~ msgid "Filipino" +#~ msgstr "Filipino" + +#~ msgid "Galician" +#~ msgstr "Galizisch" + +#~ msgid "Georgian" +#~ msgstr "Georgisch" + +#~ msgid "Greek" +#~ msgstr "Griechisch" + +#~ msgid "Guarani" +#~ msgstr "Guarani" + +#~ msgid "Gujarati" +#~ msgstr "Gujarati" + +#~ msgid "Hebrew" +#~ msgstr "Hebräisch" + +#~ msgid "Hindi" +#~ msgstr "Hindi" + +#~ msgid "Icelandic" +#~ msgstr "Isländisch" + +#~ msgid "Indonesian" +#~ msgstr "Indonesisch" + +#~ msgid "Inuktitut" +#~ msgstr "Inuktitut" + +#~ msgid "Irish" +#~ msgstr "Irisch" + +#~ msgid "Kannada" +#~ msgstr "Kannada" + +#~ msgid "Kazakh" +#~ msgstr "Kasachisch" + +#~ msgid "Khmer" +#~ msgstr "Khmer" + +#~ msgid "Kurdish" +#~ msgstr "Kurdisch" + +#~ msgid "Kyrgyz" +#~ msgstr "Kirgisisch" + +#~ msgid "Laothian" +#~ msgstr "Laotisch" + +#~ msgid "Latvian" +#~ msgstr "Lettisch" + +#~ msgid "Lithuanian" +#~ msgstr "Litauisch" + +#~ msgid "Macedonian" +#~ msgstr "Mazedonisch" + +#~ msgid "Malay" +#~ msgstr "Malaiisch" + +#~ msgid "Malayalam" +#~ msgstr "Malayalam" + +#~ msgid "Maltese" +#~ msgstr "Maltesisch" + +#~ msgid "Marathi" +#~ msgstr "Marathi" + +#~ msgid "Mongolian" +#~ msgstr "Mongolisch" + +#~ msgid "Nepali" +#~ msgstr "Nepalesisch" + +#~ msgid "Norwegian" +#~ msgstr "Norwegisch" + +#~ msgid "Oriya" +#~ msgstr "Oriya" + +#~ msgid "Pashto" +#~ msgstr "Pashto" + +#~ msgid "Persian" +#~ msgstr "Persisch" + +#~ msgid "Punjabi" +#~ msgstr "Punjabi" + +#~ msgid "Romanian" +#~ msgstr "Rumänisch" + +#~ msgid "Sanskrit" +#~ msgstr "Sanskrit" + +#~ msgid "Serbian" +#~ msgstr "Serbisch" + +#~ msgid "Sindhi" +#~ msgstr "Sindhi" + +#~ msgid "Sinhalese" +#~ msgstr "Sinhalese" + +#~ msgid "Slovak" +#~ msgstr "Slowakisch" + +#~ msgid "Slovenian" +#~ msgstr "Slowenisch" + +#~ msgid "Swahili" +#~ msgstr "Swahili" + +#~ msgid "Swedish" +#~ msgstr "Schwedisch" + +#~ msgid "Tajik" +#~ msgstr "Tajik" + +#~ msgid "Tamil" +#~ msgstr "Tamil" + +#~ msgid "Tagalog" +#~ msgstr "Tagalog" + +#~ msgid "Telugu" +#~ msgstr "Telugu" + +#~ msgid "Thai" +#~ msgstr "Thailändisch" + +#~ msgid "Tibetan" +#~ msgstr "Tibetanisch" + +#~ msgid "Ukrainian" +#~ msgstr "Ukrainisch" + +#~ msgid "Urdu" +#~ msgstr "Urdu" + +#~ msgid "Uzbek" +#~ msgstr "Usbekisch" + +#~ msgid "Uighur" +#~ msgstr "Uighur" + +#~ msgid "Vietnamese" +#~ msgstr "Vietnamesisch" + +#~ msgid "Welsh" +#~ msgstr "Walisisch" + +#~ msgid "Yiddish" +#~ msgstr "Jiddisch" + +#~ msgid "" +#~ "TWBlue has detected that you're running" +#~ " windows 10 and has changed the " +#~ "default keymap to the Windows 10 " +#~ "keymap. It means that some keyboard " +#~ "shorcuts could be different. Please " +#~ "check the keystroke editor by pressing" +#~ " Alt+Win+K to see all available " +#~ "keystrokes for this keymap." +#~ msgstr "" +#~ "TWBlue hat erkannt, dass auf diesem " +#~ "Computer Windows 10 ausgeführt wird. Die" +#~ " Standard-Tastenbelegung wurde daher auf" +#~ " eine mit Windows 10 kompatible " +#~ "Belegung geändert. Bitte öffne mit " +#~ "Alt+Win+K den Tasten-Editor, um alle " +#~ "verfügbaren Tastenkombinationen aufzulisten." + +#~ msgid "Favorites: " +#~ msgstr "Favorisiert: " + +#~ msgid "Date: " +#~ msgstr "Datum" + +#~ msgid "Community for {}" +#~ msgstr "" + +#~ msgid "Run {0} at Windows startup" +#~ msgstr "{0} beim Starten von Windows ausführen" + +#~ msgid "Use Codeofdusk's longtweet handlers (may decrease client performance)" +#~ msgstr "" +#~ "Benutze Codeofdusk's Verarbeitung für lange" +#~ " Tweets (kann die Performance des " +#~ "Clients beeinträchtigen)" + +#~ msgid "Remember state for mention all and long tweet" +#~ msgstr "Status für alle erwähnen und langer Tweet merken" + +#~ msgid "Bio: " +#~ msgstr "" + +#~ msgid "Joined at: " +#~ msgstr "" + +#~ msgid "Field {} - Label: " +#~ msgstr "" + +#~ msgid "{} posts. Click to open posts timeline" +#~ msgstr "" + +#~ msgid "{} following. Click to open Following timeline" +#~ msgstr "" + +#~ msgid "{} followers. Click to open followers timeline" +#~ msgstr "" + +#~ msgid "Display Name" +#~ msgstr "" + +#~ msgid "Bio" +#~ msgstr "" + +#~ msgid "Change header" +#~ msgstr "" + +#~ msgid "Change avatar" +#~ msgstr "" + +#~ msgid "Field {}: Label" +#~ msgstr "" + +#~ msgid "Add following to database" +#~ msgstr "" + +#~ msgid "Read long posts in GUI" +#~ msgstr "" + +#~ msgid "LibreTranslate API URL: " +#~ msgstr "" + +#~ msgid "LibreTranslate API Key (optional): " +#~ msgstr "" + +#~ msgid "DeepL API Key: " +#~ msgstr "" + +#~ msgid "" +#~ "Read preferences from instance (default " +#~ "visibility when publishing and displaying " +#~ "sensitive content)" +#~ msgstr "" + diff --git a/srcantiguo/locales/es/LC_MESSAGES/twblue.mo b/srcantiguo/locales/es/LC_MESSAGES/twblue.mo new file mode 100644 index 00000000..14c29f1e Binary files /dev/null and b/srcantiguo/locales/es/LC_MESSAGES/twblue.mo differ diff --git a/srcantiguo/locales/es/LC_MESSAGES/twblue.po b/srcantiguo/locales/es/LC_MESSAGES/twblue.po new file mode 100644 index 00000000..29604351 --- /dev/null +++ b/srcantiguo/locales/es/LC_MESSAGES/twblue.po @@ -0,0 +1,4666 @@ +# Manuel Cortez , 2022, 2023, 2024, 2025. +msgid "" +msgstr "" +"Project-Id-Version: TW Blue 0.84\n" +"Report-Msgid-Bugs-To: manuel@manuelcortez.net\n" +"POT-Creation-Date: 2025-04-13 01:18+0000\n" +"PO-Revision-Date: 2025-03-10 03:23+0000\n" +"Last-Translator: Manuel Cortez \n" +"Language: es\n" +"Language-Team: Spanish " +"\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.17.0\n" + +#: languageHandler.py:61 +msgctxt "languageName" +msgid "Amharic" +msgstr "Amárico" + +#: languageHandler.py:62 +msgctxt "languageName" +msgid "Aragonese" +msgstr "Aragonés" + +#: languageHandler.py:63 +msgctxt "languageName" +msgid "Spanish" +msgstr "Español" + +#: languageHandler.py:64 +msgctxt "languageName" +msgid "Portuguese" +msgstr "Portugués" + +#: languageHandler.py:65 +msgctxt "languageName" +msgid "Russian" +msgstr "Ruso" + +#: languageHandler.py:66 +msgctxt "languageName" +msgid "italian" +msgstr "Italiano" + +#: languageHandler.py:67 +msgctxt "languageName" +msgid "Turkey" +msgstr "Turco" + +#: languageHandler.py:68 +msgctxt "languageName" +msgid "Galician" +msgstr "Gallego" + +#: languageHandler.py:69 +msgctxt "languageName" +msgid "Catala" +msgstr "Catalán" + +#: languageHandler.py:70 +msgctxt "languageName" +msgid "Vasque" +msgstr "Vasco" + +#: languageHandler.py:71 +msgctxt "languageName" +msgid "polish" +msgstr "Polaco" + +#: languageHandler.py:72 +msgctxt "languageName" +msgid "Arabic" +msgstr "Árabe" + +#: languageHandler.py:73 +msgctxt "languageName" +msgid "Nepali" +msgstr "Nepalí" + +#: languageHandler.py:74 +msgctxt "languageName" +msgid "Serbian (Latin)" +msgstr "Serbio" + +#: languageHandler.py:75 +msgctxt "languageName" +msgid "Japanese" +msgstr "Japonés" + +#: languageHandler.py:99 +msgid "User default" +msgstr "Idioma predeterminado" + +#: main.py:105 +msgid "https://twblue.mcvsoftware.com/donate" +msgstr "https://twblue.mcvsoftware.com/es/donate" + +#: main.py:118 +#, python-brace-format +msgid "" +"{0} is already running. Close the other instance before starting this " +"one. If you're sure that {0} isn't running, try deleting the file at {1}." +" If you're unsure of how to do this, contact the {0} developers." +msgstr "" +"{0} ya se encuentra en ejecución. Cierra la otra instancia antes de " +"iniciar esta. Si estás muy seguro de que {0} no está abierto, intenta " +"eliminar el archivo que se encuentra en {1}. Si no sabes cómo hacerlo con" +" seguridad, contacta con los desarrolladores de {0}." + +#: sound.py:148 +msgid "Playing..." +msgstr "Reproduciendo..." + +#: sound.py:161 +msgid "Stopped." +msgstr "Detenido." + +#: controller/mainController.py:261 +msgid "Ready" +msgstr "Listo" + +#: controller/mainController.py:369 controller/mainController.py:654 +#: controller/mainController.py:673 controller/mainController.py:692 +#: controller/mainController.py:711 +msgid "" +"No session is currently in focus. Focus a session with the next or " +"previous session shortcut." +msgstr "No estás en ninguna sesión. Cambia a una sesión activa." + +#: controller/mainController.py:373 +msgid "Empty buffer." +msgstr "Buffer vacío." + +#: controller/mainController.py:380 +#, python-brace-format +msgid "{0} not found." +msgstr "{0} no encontrado." + +#: controller/mainController.py:702 controller/mainController.py:721 +#, python-format +msgid "%s, %s of %s" +msgstr "%s, %s de %s" + +#: controller/mainController.py:704 controller/mainController.py:723 +#: controller/mainController.py:751 controller/mainController.py:779 +#, python-format +msgid "%s. Empty" +msgstr "%s. Vacío" + +#: controller/mainController.py:739 controller/mainController.py:743 +#: controller/mainController.py:767 +#, python-brace-format +msgid "{0}: This account is not logged into Twitter." +msgstr "{0}: No has iniciado sesión con esta cuenta en Twitter." + +#: controller/mainController.py:749 controller/mainController.py:777 +#, python-format +msgid "%s. %s, %s of %s" +msgstr "%s. %s, %s de %s" + +#: controller/mainController.py:771 +#, python-brace-format +msgid "{0}: This account is not logged into twitter." +msgstr "{0}: No has iniciado sesión con esta cuenta en Twitter." + +#: controller/mainController.py:910 controller/mainController.py:926 +msgid "An error happened while trying to connect to the server. Please try later." +msgstr "" +"Ha ocurrido un error al intentar conectarse al servidor. Por favor, " +"inténtalo más tarde." + +#: controller/mainController.py:957 +msgid "The auto-reading of new tweets is enabled for this buffer" +msgstr "La lectura automática de nuevos tuits para este buffer está activada" + +#: controller/mainController.py:960 +msgid "The auto-reading of new tweets is disabled for this buffer" +msgstr "La lectura automática de nuevos tuits para este buffer está desactivada" + +#: controller/mainController.py:967 +msgid "Session mute on" +msgstr "Silencio de sesión activo" + +#: controller/mainController.py:970 +msgid "Session mute off" +msgstr "Silencio de sesión desactivado" + +#: controller/mainController.py:979 +msgid "Buffer mute on" +msgstr "Silenciar buffer, activado" + +#: controller/mainController.py:982 +msgid "Buffer mute off" +msgstr "Silenciar buffer, desactivado" + +#: controller/mainController.py:999 +msgid "Copied" +msgstr "Copiado" + +#: controller/mainController.py:1019 +msgid "Unable to update this buffer." +msgstr "Imposible actualizar este buffer." + +#: controller/mainController.py:1021 +msgid "Updating buffer..." +msgstr "Actualizando buffer..." + +#: controller/mainController.py:1024 +#, python-brace-format +msgid "{0} items retrieved" +msgstr "{0} elementos descargados" + +#: controller/buffers/mastodon/base.py:137 controller/mainController.py:1028 +#: controller/mastodon/handler.py:98 controller/mastodon/handler.py:241 +#, python-brace-format +msgid "Timeline for {}" +msgstr "Línea temporal de {0}" + +#: controller/buffers/mastodon/users.py:93 controller/mainController.py:1030 +#: controller/mastodon/handler.py:100 controller/mastodon/handler.py:255 +#, python-brace-format +msgid "Followers for {}" +msgstr "Seguidores de {0}" + +#: controller/mainController.py:1032 +#, python-brace-format +msgid "Friends for {}" +msgstr "Amigos de {0}" + +#: controller/buffers/mastodon/users.py:95 controller/mainController.py:1034 +#: controller/mastodon/handler.py:102 controller/mastodon/handler.py:269 +#, python-brace-format +msgid "Following for {}" +msgstr "Siguiendo de {0}" + +#: controller/messages.py:18 +msgid "Translated" +msgstr "Traducido" + +#: controller/settings.py:60 +msgid "System default" +msgstr "Predeterminado del sistema" + +#: controller/settings.py:60 +msgid "HTTP" +msgstr "HTTP" + +#: controller/settings.py:60 +msgid "SOCKS v4" +msgstr "SOCKS v4" + +#: controller/settings.py:60 +msgid "SOCKS v4 with DNS support" +msgstr "SOCKS v4 con soporte DNS" + +#: controller/settings.py:60 +msgid "SOCKS v5" +msgstr "SOCKS v5" + +#: controller/settings.py:60 +msgid "SOCKS v5 with DNS support" +msgstr "SOCKS v5 con soporte DNS" + +#: controller/userAlias.py:31 +#, python-brace-format +msgid "Edit alias for {}" +msgstr "Editar alias para {}" + +#: controller/buffers/base/base.py:91 +#: controller/buffers/mastodon/conversations.py:237 +#: controller/buffers/mastodon/search.py:80 +msgid "This action is not supported for this buffer" +msgstr "Esta acción no se encuentra soportada para este buffer" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:70 +#: controller/mastodon/settings.py:194 +msgid "Home" +msgstr "Inicio" + +#: controller/buffers/mastodon/base.py:52 +#: controller/buffers/mastodon/community.py:22 +#: controller/mastodon/handler.py:72 controller/mastodon/handler.py:114 +#: controller/mastodon/settings.py:195 +msgid "Local" +msgstr "Local" + +#: controller/buffers/mastodon/base.py:52 +#: controller/buffers/mastodon/community.py:22 +#: controller/mastodon/handler.py:74 controller/mastodon/settings.py:196 +msgid "Federated" +msgstr "Federada" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:76 +#: controller/mastodon/settings.py:197 +msgid "Mentions" +msgstr "Menciones" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:84 +#: controller/mastodon/settings.py:201 +msgid "Bookmarks" +msgstr "Marcadores" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:78 +msgid "Direct messages" +msgstr "Mensajes directos" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:80 +#: controller/mastodon/settings.py:199 +msgid "Sent" +msgstr "Enviados" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:82 +#: controller/mastodon/settings.py:200 wxUI/dialogs/mastodon/postDialogs.py:229 +msgid "Favorites" +msgstr "Favoritos" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:86 +#: controller/mastodon/settings.py:202 +msgid "Followers" +msgstr "Seguidores" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:88 +#: controller/mastodon/settings.py:203 +msgid "Following" +msgstr "Siguiendo" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:92 +#: controller/mastodon/settings.py:204 +msgid "Blocked users" +msgstr "Usuarios bloqueados" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:90 +#: controller/mastodon/settings.py:205 +msgid "Muted users" +msgstr "Usuarios silenciados" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:94 +#: controller/mastodon/settings.py:206 +#: wxUI/dialogs/mastodon/filters/create_filter.py:80 +msgid "Notifications" +msgstr "Notificaciones" + +#: controller/buffers/mastodon/base.py:58 +#, python-brace-format +msgid "{username}'s timeline" +msgstr "Línea temporal de {username}" + +#: controller/buffers/mastodon/base.py:60 +#, python-brace-format +msgid "{username}'s followers" +msgstr "Seguidores de {username}" + +#: controller/buffers/mastodon/base.py:62 +#, python-brace-format +msgid "{username}'s following" +msgstr "Siguiendo de {username}" + +#: controller/buffers/mastodon/base.py:64 +msgid "Unknown buffer" +msgstr "Buffer desconocido" + +#: controller/buffers/mastodon/base.py:67 +#: controller/buffers/mastodon/base.py:645 wxUI/buffers/mastodon/base.py:24 +#: wxUI/buffers/mastodon/conversationList.py:24 +#: wxUI/buffers/mastodon/notifications.py:22 wxUI/buffers/mastodon/user.py:18 +#: wxUI/dialogs/mastodon/postDialogs.py:5 +#: wxUI/dialogs/mastodon/postDialogs.py:194 wxUI/sysTrayIcon.py:35 +msgid "Post" +msgstr "Publicación" + +#: controller/buffers/mastodon/base.py:68 +#: controller/buffers/mastodon/base.py:646 +msgid "Write your post here" +msgstr "Escribe la publicación aquí" + +#: controller/buffers/mastodon/base.py:153 +#, python-brace-format +msgid "New post in {0}" +msgstr "Nueva publicación en {0}" + +#: controller/buffers/mastodon/base.py:159 +#, python-brace-format +msgid "{0} new posts in {1}." +msgstr "{0} nuevas publicaciones en {1}." + +#: controller/buffers/mastodon/base.py:198 +#: controller/buffers/mastodon/community.py:90 +#: controller/buffers/mastodon/conversations.py:100 +#: controller/buffers/mastodon/mentions.py:82 +#: controller/buffers/mastodon/users.py:139 +#, python-format +msgid "%s items retrieved" +msgstr "%s elementos recuperados" + +#: controller/buffers/mastodon/base.py:216 +#: controller/buffers/mastodon/users.py:206 +msgid "This buffer is not a timeline; it can't be deleted." +msgstr "Este buffer no es una línea temporal. No se puede eliminar." + +#: controller/buffers/mastodon/base.py:346 +#: controller/buffers/mastodon/base.py:384 +#, python-brace-format +msgid "Conversation with {}" +msgstr "Conversación con {}" + +#: controller/buffers/mastodon/base.py:347 +#: controller/buffers/mastodon/base.py:385 +#: controller/buffers/mastodon/conversations.py:181 +#: controller/buffers/mastodon/notifications.py:122 +#: controller/buffers/mastodon/users.py:52 +msgid "Write your message here" +msgstr "Escribe tu mensaje aquí" + +#: controller/buffers/mastodon/base.py:349 +#, python-brace-format +msgid "Reply to {}" +msgstr "Responder a {}" + +#: controller/buffers/mastodon/base.py:350 +msgid "Write your reply here" +msgstr "Escribe tu respuesta aquí" + +#: controller/buffers/mastodon/base.py:412 +msgid "This action is not supported on conversations." +msgstr "Esta acción no está permitida en conversaciones." + +#: controller/buffers/mastodon/base.py:477 +msgid "Opening URL..." +msgstr "Abriendo URL..." + +#: controller/buffers/mastodon/base.py:490 +msgid "You can delete only your own posts." +msgstr "Solamente puedes eliminar tus propias publicaciones." + +#: controller/buffers/mastodon/base.py:519 +msgid "Opening item in web browser..." +msgstr "Abriendo elemento en el navegador..." + +#: controller/buffers/mastodon/base.py:527 +#: controller/buffers/mastodon/base.py:547 +msgid "Adding to favorites..." +msgstr "Añadiendo a favoritos..." + +#: controller/buffers/mastodon/base.py:534 +#: controller/buffers/mastodon/base.py:549 +msgid "Removing from favorites..." +msgstr "Quitando de favoritos..." + +#: controller/buffers/mastodon/base.py:544 +#: controller/buffers/mastodon/base.py:559 +#: controller/buffers/mastodon/base.py:573 +#: controller/buffers/mastodon/conversations.py:213 +msgid "No status found with that ID" +msgstr "No existe un tuit con este ID" + +#: controller/buffers/mastodon/base.py:562 +msgid "Adding to bookmarks..." +msgstr "Añadiendo a marcadores..." + +#: controller/buffers/mastodon/base.py:564 +msgid "Removing from bookmarks..." +msgstr "Quitando de marcadores..." + +#: controller/buffers/mastodon/base.py:586 +#, python-brace-format +msgid "Picture {0}" +msgstr "Foto {0}" + +#: controller/buffers/mastodon/base.py:587 +msgid "Select the picture" +msgstr "Selecciona la foto" + +#: controller/buffers/mastodon/base.py:610 +msgid "Unable to extract text" +msgstr "Imposible extraer texto" + +#: controller/buffers/mastodon/base.py:612 +msgid "OCR Result" +msgstr "Resultado de OCR" + +#: controller/buffers/mastodon/base.py:627 +msgid "this poll no longer exists." +msgstr "Esta encuesta ya no existe." + +#: controller/buffers/mastodon/base.py:630 +msgid "This poll has already expired." +msgstr "La encuesta ha expirado." + +#: controller/buffers/mastodon/base.py:633 +msgid "You have already voted on this poll." +msgstr "Ya has votado en esta encuesta." + +#: controller/buffers/mastodon/base.py:642 +msgid "Sending vote..." +msgstr "Enviando voto..." + +#: controller/buffers/mastodon/conversations.py:180 +#, python-brace-format +msgid "Reply to conversation with {}" +msgstr "Responder a conversación con {}" + +#: controller/buffers/mastodon/notifications.py:121 +#: controller/buffers/mastodon/users.py:51 +#, python-brace-format +msgid "New conversation with {}" +msgstr "Nueva conversación con {}" + +#: controller/buffers/mastodon/notifications.py:151 +msgid "Notification dismissed." +msgstr "Notificación descartada." + +#: controller/buffers/mastodon/users.py:110 +msgid "There are no more items in this buffer." +msgstr "No hay más elementos en este buffer." + +#: controller/mastodon/handler.py:30 wxUI/dialogs/mastodon/updateProfile.py:35 +msgid "Update Profile" +msgstr "Actualizar perfil" + +#: controller/mastodon/handler.py:31 wxUI/dialogs/mastodon/search.py:10 +#: wxUI/view.py:19 +msgid "&Search" +msgstr "&Buscar" + +#: controller/mastodon/handler.py:33 wxUI/view.py:22 +msgid "Manage user aliases" +msgstr "Gestionar alias de usuario" + +#: controller/mastodon/handler.py:35 controller/mastodon/handler.py:59 +#: wxUI/view.py:30 +msgid "&Post" +msgstr "&Publicar" + +#: controller/mastodon/handler.py:36 wxUI/dialogs/mastodon/menus.py:9 +#: wxUI/dialogs/mastodon/menus.py:37 wxUI/view.py:31 +msgid "Re&ply" +msgstr "Res&ponder" + +#: controller/mastodon/handler.py:37 wxUI/dialogs/mastodon/menus.py:7 +#: wxUI/dialogs/mastodon/menus.py:35 wxUI/view.py:32 +msgid "&Boost" +msgstr "&Impulsar" + +#: controller/mastodon/handler.py:38 wxUI/dialogs/mastodon/menus.py:11 +#: wxUI/dialogs/mastodon/menus.py:39 wxUI/view.py:33 +msgid "&Add to favorites" +msgstr "&Añadir a favoritos" + +#: controller/mastodon/handler.py:39 +msgid "Remove from favorites" +msgstr "Quitar de favoritos" + +#: controller/mastodon/handler.py:40 wxUI/dialogs/mastodon/menus.py:21 +#: wxUI/dialogs/mastodon/menus.py:49 wxUI/view.py:35 +msgid "&Show post" +msgstr "&Mostrar publicación" + +#: controller/mastodon/handler.py:41 wxUI/view.py:36 +msgid "View conversa&tion" +msgstr "Ver conversa&ción" + +#: controller/mastodon/handler.py:42 wxUI/view.py:37 +msgid "Read text in picture" +msgstr "Leer texto en imágenes" + +#: controller/mastodon/handler.py:43 wxUI/dialogs/mastodon/menus.py:25 +#: wxUI/view.py:39 +msgid "&Delete" +msgstr "&Eliminar" + +#: controller/mastodon/handler.py:45 wxUI/view.py:43 +msgid "&Actions..." +msgstr "&Acciones..." + +#: controller/mastodon/handler.py:46 wxUI/view.py:44 +msgid "&View timeline..." +msgstr "&Ver línea temporal..." + +#: controller/mastodon/handler.py:47 wxUI/view.py:45 +msgid "Direct me&ssage" +msgstr "&Mensaje directo" + +#: controller/mastodon/handler.py:48 wxUI/view.py:46 +msgid "Add a&lias" +msgstr "Añadir alias" + +#: controller/mastodon/handler.py:51 +msgid "Show user profile" +msgstr "Ver perfil del usuario" + +#: controller/mastodon/handler.py:54 +msgid "Create c&ommunity timeline" +msgstr "Crear línea temporal de &comunidad" + +#: controller/mastodon/handler.py:55 wxUI/view.py:57 +msgid "Create a &filter" +msgstr "Crear &filtro" + +#: controller/mastodon/handler.py:56 wxUI/view.py:58 +msgid "&Manage filters" +msgstr "Gestionar &filtros" + +#: controller/mastodon/handler.py:95 +msgid "Timelines" +msgstr "Líneas temporales" + +#: controller/mastodon/handler.py:107 +msgid "Searches" +msgstr "Búsquedas" + +#: controller/mastodon/handler.py:110 controller/mastodon/handler.py:191 +#: controller/mastodon/handler.py:196 +#, python-brace-format +msgid "Search for {}" +msgstr "Buscar {0}" + +#: controller/mastodon/handler.py:111 +msgid "Communities" +msgstr "Comunidades" + +#: controller/mastodon/handler.py:114 +msgid "federated" +msgstr "Federada" + +#: controller/mastodon/handler.py:143 +#, python-brace-format +msgid "Conversation with {0}" +msgstr "Conversación con {0}" + +#: controller/mastodon/handler.py:299 +msgid "Add an user alias" +msgstr "Añadir alias de usuario" + +#: controller/mastodon/handler.py:311 +#, python-brace-format +msgid "Alias has been set correctly for {}." +msgstr "Añadido el alias para {}." + +#: controller/mastodon/handler.py:342 +msgid "Update profile" +msgstr "Actualizar perfil" + +#: controller/mastodon/messages.py:115 +#, python-format +msgid "%s - %s of %d characters" +msgstr "%s - %s de %d caracteres" + +#: controller/mastodon/messages.py:239 +#, python-brace-format +msgid "Poll with {} options" +msgstr "Encuesta con {} opciones" + +#: controller/mastodon/messages.py:272 +#, python-brace-format +msgid "Post from {}" +msgstr "Publicación de {}" + +#: controller/mastodon/messages.py:276 sessions/mastodon/templates.py:82 +#: wxUI/dialogs/mastodon/postDialogs.py:49 +msgid "Public" +msgstr "Público" + +#: controller/mastodon/messages.py:276 sessions/mastodon/templates.py:82 +#: wxUI/dialogs/mastodon/postDialogs.py:49 +msgid "Not listed" +msgstr "No listado" + +#: controller/mastodon/messages.py:276 +msgid "followers only" +msgstr "Solo seguidores" + +#: controller/mastodon/messages.py:276 sessions/mastodon/templates.py:82 +#: wxUI/dialogs/mastodon/postDialogs.py:49 +msgid "Direct" +msgstr "Directo" + +#: controller/mastodon/messages.py:283 +msgid "Remote instance" +msgstr "Instancia remota" + +#: controller/mastodon/messages.py:291 controller/mastodon/messages.py:319 +msgid "Unmute conversation" +msgstr "Reactivar notificaciones de conversación" + +#: controller/mastodon/messages.py:315 wxUI/dialogs/mastodon/postDialogs.py:237 +msgid "Mute conversation" +msgstr "Silenciar notificaciones de conversación" + +#: controller/mastodon/messages.py:316 +msgid "Conversation unmuted." +msgstr "Notificaciones de conversación reactivadas" + +#: controller/mastodon/messages.py:320 +msgid "Conversation muted." +msgstr "Notificaciones de conversación silenciadas" + +#: controller/mastodon/messages.py:331 +msgid "people who boosted this post" +msgstr "Usuarios que impulsaron la publicación" + +#: controller/mastodon/messages.py:336 +msgid "people who favorited this post" +msgstr "usuarios que añadieron la publicación a favoritos" + +#: controller/mastodon/messages.py:342 +msgid "Link copied to clipboard." +msgstr "Enlace copiado al portapapeles." + +#: controller/mastodon/settings.py:82 +#, python-format +msgid "Account settings for %s" +msgstr "Opciones de la cuenta de %s" + +#: controller/mastodon/settings.py:92 +#, python-brace-format +msgid "Edit template for posts. Current template: {}" +msgstr "Editar plantilla para publicaciones. Plantilla actual: {}" + +#: controller/mastodon/settings.py:101 +#, python-brace-format +msgid "Edit template for conversations. Current template: {}" +msgstr "Editar plantilla para conversaciones. Plantilla actual: {}" + +#: controller/mastodon/settings.py:110 +#, python-brace-format +msgid "Edit template for persons. Current template: {}" +msgstr "Editar plantilla para usuarios. Plantilla actual: {}" + +#: controller/mastodon/settings.py:198 +msgid "Direct Messages" +msgstr "Mensajes directos" + +#: controller/mastodon/filters/create_filter.py:75 +#, python-brace-format +msgid "Update Filter: {}" +msgstr "Actualizar filtro: {}" + +#: controller/mastodon/filters/manage_filters.py:57 +#: wxUI/dialogs/mastodon/filters/create_filter.py:90 +msgid "Never" +msgstr "Nunca" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:4 +msgid "Audio tweet." +msgstr "Tuit con audio." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:5 +msgid "User timeline buffer created." +msgstr "Línea temporal de un usuario creada." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:6 +msgid "Buffer destroied." +msgstr "Buffer eliminado." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:7 +msgid "Direct message received." +msgstr "Mensaje directo recibido." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:8 +msgid "Direct message sent." +msgstr "Mensaje directo enviado." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:9 +msgid "Error." +msgstr "Error." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:10 +msgid "Tweet liked." +msgstr "Tuit marcado como me gusta." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:11 +msgid "Likes buffer updated." +msgstr "Un Buffer de tuits marcados como me gusta se ha actualizado." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:12 +msgid "Geotweet." +msgstr "Tuit con información geográfica." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:13 +msgid "Tweet contains one or more images" +msgstr "El tuit contiene una o más imágenes" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:14 +msgid "Boundary reached." +msgstr "No hay más elementos en el buffer." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:15 +msgid "List updated." +msgstr "Lista actualizada." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:16 +msgid "Too many characters." +msgstr "Demasiados caracteres." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:17 +msgid "Mention received." +msgstr "Mención recibida." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:18 +msgid "New event." +msgstr "Nuevo evento." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:19 +#, python-brace-format +msgid "{0} is ready." +msgstr "{0} está listo." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:20 +msgid "Mention sent." +msgstr "Mención enviada." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:21 +msgid "Tweet retweeted." +msgstr "Tuit retuiteado." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:22 +msgid "Search buffer updated." +msgstr "Buffer de búsqueda actualizado." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:23 +msgid "Tweet received." +msgstr "Tuit recibido." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:24 +msgid "Tweet sent." +msgstr "Tuit enviado." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:25 +msgid "Trending topics buffer updated." +msgstr "Buffer de trending topics actualizado." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:26 +msgid "New tweet in user timeline buffer." +msgstr "Nuevo tuit en línea temporal de un usuario." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:27 +msgid "New follower." +msgstr "Nuevo seguidor." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:28 +msgid "Volume changed." +msgstr "Volumen modificado." + +#: extra/SoundsTutorial/wx_ui.py:8 +msgid "Sounds tutorial" +msgstr "Tutorial de sonidos" + +#: extra/SoundsTutorial/wx_ui.py:11 +msgid "Press enter to listen to the sound for the selected event" +msgstr "Pulsa enter para escuchar el sonido para el evento seleccionado" + +#: extra/SpellChecker/spellchecker.py:56 +#, python-format +msgid "Misspelled word: %s" +msgstr "Palabra mal escrita: %s" + +#: extra/SpellChecker/wx_ui.py:27 +msgid "Misspelled word" +msgstr "Palabra mal escrita" + +#: extra/SpellChecker/wx_ui.py:32 +msgid "Context" +msgstr "Contexto" + +#: extra/SpellChecker/wx_ui.py:37 +msgid "Suggestions" +msgstr "Sugerencias" + +#: extra/SpellChecker/wx_ui.py:42 +msgid "&Ignore" +msgstr "&Ignorar" + +#: extra/SpellChecker/wx_ui.py:43 +msgid "I&gnore all" +msgstr "Ignorar &todo" + +#: extra/SpellChecker/wx_ui.py:44 +msgid "&Replace" +msgstr "&Reemplazar" + +#: extra/SpellChecker/wx_ui.py:45 +msgid "R&eplace all" +msgstr "R&eemplazar todo" + +#: extra/SpellChecker/wx_ui.py:46 +msgid "&Add to personal dictionary" +msgstr "Añadir al &diccionario" + +#: extra/SpellChecker/wx_ui.py:79 +#, python-brace-format +msgid "" +"An error has occurred. There are no dictionaries available for the " +"selected language in {0}" +msgstr "" +"Ha ocurrido un error. No se encuentran diccionarios disponibles para el " +"idioma seleccionado en {0}" + +#: extra/SpellChecker/wx_ui.py:79 +#: extra/autocompletionUsers/mastodon/wx_scan.py:44 +#: wxUI/commonMessageDialogs.py:23 wxUI/commonMessageDialogs.py:36 +#: wxUI/commonMessageDialogs.py:45 wxUI/commonMessageDialogs.py:52 +#: wxUI/commonMessageDialogs.py:55 wxUI/commonMessageDialogs.py:61 +#: wxUI/dialogs/mastodon/dialogs.py:38 wxUI/dialogs/mastodon/dialogs.py:43 +#: wxUI/dialogs/mastodon/dialogs.py:48 wxUI/dialogs/mastodon/dialogs.py:53 +#: wxUI/dialogs/mastodon/dialogs.py:60 +msgid "Error" +msgstr "Error" + +#: extra/SpellChecker/wx_ui.py:82 +msgid "Spell check complete." +msgstr "Corrección ortográfica finalizada." + +#: extra/autocompletionUsers/completion.py:39 +#: extra/autocompletionUsers/completion.py:57 +msgid "You have to start writing" +msgstr "Debes comenzar a escribir" + +#: extra/autocompletionUsers/completion.py:49 +#: extra/autocompletionUsers/completion.py:66 +msgid "There are no results in your users database" +msgstr "No hay resultados en la base de datos de usuarios" + +#: extra/autocompletionUsers/completion.py:51 +msgid "Autocompletion only works for users." +msgstr "El autocompletado solo funciona con usuarios" + +#: extra/autocompletionUsers/wx_manage.py:9 +msgid "Manage Autocompletion database" +msgstr "Gestionar base de datos del autocompletado de usuarios" + +#: extra/autocompletionUsers/wx_manage.py:12 +#, python-brace-format +msgid "Editing {0} users database" +msgstr "Editando base de datos de usuarios para {}" + +#: extra/autocompletionUsers/wx_manage.py:13 +msgid "Username" +msgstr "Usuario" + +#: extra/autocompletionUsers/wx_manage.py:13 wxUI/dialogs/configuration.py:108 +msgid "Name" +msgstr "Nombre" + +#: extra/autocompletionUsers/wx_manage.py:16 +msgid "Add user" +msgstr "Añadir usuario" + +#: extra/autocompletionUsers/wx_manage.py:17 +msgid "Remove user" +msgstr "Eliminar usuario" + +#: extra/autocompletionUsers/wx_manage.py:38 +msgid "Twitter username" +msgstr "Nombre de usuario" + +#: extra/autocompletionUsers/wx_manage.py:38 +msgid "Add user to database" +msgstr "Añadir usuario a la base de datos" + +#: extra/autocompletionUsers/wx_manage.py:44 +msgid "The user does not exist" +msgstr "El usuario no existe" + +#: extra/autocompletionUsers/wx_manage.py:44 +msgid "Error!" +msgstr "Error!" + +#: extra/autocompletionUsers/mastodon/scan.py:49 +msgid "" +"Updating database... You can close this window now. A message will tell " +"you when the process finishes." +msgstr "" +"Actualizando base de datos... Puedes cerrar esta ventana ahora. Un " +"mensaje te informará cuando el proceso haya terminado." + +#: extra/autocompletionUsers/mastodon/wx_scan.py:8 +msgid "Autocomplete users' settings" +msgstr "Opciones de autocompletado de usuarios" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:11 +msgid "Add &followers to database" +msgstr "Añadir &seguidores a base de datos" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:12 +msgid "Add f&ollowing to database" +msgstr "Añadir s&iguiendo a base de datos" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:26 +msgid "Updating autocompletion database" +msgstr "Actualizando base de datos de autocompletado" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:34 +msgid "" +"This process will retrieve the users you selected from your Mastodon " +"account, and add them to the user autocomplete database. Please note that" +" if there are many users or you have tried to perform this action less " +"than 15 minutes ago, TWBlue may reach a limit in API calls when trying to" +" load the users into the database. If this happens, we will show you an " +"error, in which case you will have to try this process again in a few " +"minutes. If this process ends with no error, you will be redirected back " +"to the account settings dialog. Do you want to continue?" +msgstr "" +"Este proceso recuperará los usuarios que hayas seleccionado de tu cuenta " +"de Mastodon, y los añadirá a la base de datos de autocompletado de " +"usuarios. Ten en cuenta que si hay muchos usuarios o has intentado " +"realizar esta acción hace menos de 15 minutos, TWBlue puede alcanzar el " +"límite en las llamadas a la API al intentar cargar los usuarios en la " +"base de datos. Si esto ocurre, te mostraremos un error, en cuyo caso " +"tendrás que volver a intentar este proceso en unos minutos. Si este " +"proceso finaliza sin error, se te redirigirá de nuevo al cuadro de " +"diálogo de configuración de la cuenta. ¿Deseas continuar?" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:34 +#: wxUI/commonMessageDialogs.py:20 +msgid "Attention" +msgstr "Atención" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:40 +#, python-brace-format +msgid "TWBlue has imported {} users successfully." +msgstr "TWBlue ha añadido {} usuarios correctamente." + +#: extra/autocompletionUsers/mastodon/wx_scan.py:40 +msgid "Done" +msgstr "Hecho" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:44 +msgid "Error adding users from Mastodon. Please try again in about 15 minutes." +msgstr "" +"Error añadiendo usuarios desde mastodon. Por favor, prueba nuevamente " +"dentro de 15 minutos." + +#: extra/ocr/OCRSpace.py:7 +msgid "Detect automatically" +msgstr "Detectar automáticamente" + +#: extra/ocr/OCRSpace.py:7 +msgid "Danish" +msgstr "Danés" + +#: extra/ocr/OCRSpace.py:7 +msgid "Dutch" +msgstr "Holandés" + +#: extra/ocr/OCRSpace.py:7 +msgid "English" +msgstr "Inglés" + +#: extra/ocr/OCRSpace.py:7 +msgid "Finnish" +msgstr "Finés" + +#: extra/ocr/OCRSpace.py:7 +msgid "French" +msgstr "Francés" + +#: extra/ocr/OCRSpace.py:7 +msgid "German" +msgstr "Alemán" + +#: extra/ocr/OCRSpace.py:7 +msgid "Hungarian" +msgstr "Húngaro" + +#: extra/ocr/OCRSpace.py:7 +msgid "Korean" +msgstr "Coreano" + +#: extra/ocr/OCRSpace.py:7 +msgid "Italian" +msgstr "Italiano" + +#: extra/ocr/OCRSpace.py:7 +msgid "Japanese" +msgstr "Japonés" + +#: extra/ocr/OCRSpace.py:7 +msgid "Polish" +msgstr "Polaco" + +#: extra/ocr/OCRSpace.py:7 +msgid "Portuguese" +msgstr "Portugués" + +#: extra/ocr/OCRSpace.py:7 +msgid "Russian" +msgstr "Ruso" + +#: extra/ocr/OCRSpace.py:7 +msgid "Spanish" +msgstr "Español" + +#: extra/ocr/OCRSpace.py:7 +msgid "Turkish" +msgstr "Turco" + +#: extra/translator/wx_ui.py:25 +msgid "Translate message" +msgstr "Traducir mensaje" + +#: extra/translator/wx_ui.py:29 +msgid "Translation engine" +msgstr "Motor de traducción" + +#: extra/translator/wx_ui.py:32 +msgid "Target language" +msgstr "Idioma de destino" + +#: keystrokeEditor/wx_ui.py:8 +msgid "Keystroke editor" +msgstr "Editor de combinaciones de teclado" + +#: keystrokeEditor/wx_ui.py:11 +msgid "Select a keystroke to edit" +msgstr "Selecciona una combinación de teclado para editarla" + +#: keystrokeEditor/wx_ui.py:12 +#: wxUI/dialogs/mastodon/filters/manage_filters.py:18 +#: wxUI/dialogs/mastodon/userActions.py:9 +#: wxUI/dialogs/mastodon/userActions.py:18 +#: wxUI/dialogs/mastodon/userActions.py:19 +msgid "Action" +msgstr "Acción" + +#: keystrokeEditor/wx_ui.py:12 +msgid "Keystroke" +msgstr "Combinación de teclado" + +#: keystrokeEditor/wx_ui.py:17 +#: wxUI/dialogs/mastodon/filters/manage_filters.py:23 +#: wxUI/dialogs/userAliasDialogs.py:53 +msgid "Edit" +msgstr "Editar" + +#: keystrokeEditor/wx_ui.py:19 keystrokeEditor/wx_ui.py:49 +msgid "Undefine keystroke" +msgstr "Desasignar combinación de teclas" + +#: keystrokeEditor/wx_ui.py:20 +msgid "Execute action" +msgstr "Ejecutar acción" + +#: keystrokeEditor/wx_ui.py:21 wxUI/dialogs/userAliasDialogs.py:25 +msgid "Close" +msgstr "Cerrar" + +#: keystrokeEditor/wx_ui.py:41 +msgid "Undefined" +msgstr "Sin definir" + +#: keystrokeEditor/wx_ui.py:49 +msgid "Are you sure you want to undefine this keystroke?" +msgstr "¿Seguro que deseas desasignar esta combinación de teclado?" + +#: keystrokeEditor/wx_ui.py:53 +msgid "Editing keystroke" +msgstr "Editando combinación de teclas" + +#: keystrokeEditor/wx_ui.py:56 +msgid "Control" +msgstr "Control" + +#: keystrokeEditor/wx_ui.py:57 +msgid "Alt" +msgstr "Alt" + +#: keystrokeEditor/wx_ui.py:58 +msgid "Shift" +msgstr "Shift" + +#: keystrokeEditor/wx_ui.py:59 +msgid "Windows" +msgstr "Windows" + +#: keystrokeEditor/wx_ui.py:65 +msgid "Key" +msgstr "Tecla" + +#: keystrokeEditor/wx_ui.py:70 wxUI/dialogs/find.py:21 +#: wxUI/dialogs/mastodon/showUserProfile.py:31 +#: wxUI/dialogs/userAliasDialogs.py:23 +msgid "OK" +msgstr "Aceptar" + +#: keystrokeEditor/wx_ui.py:83 +msgid "You need to use the Windows key" +msgstr "Necesitas usar la tecla de windows" + +#: keystrokeEditor/wx_ui.py:83 keystrokeEditor/wx_ui.py:86 +msgid "Invalid keystroke" +msgstr "Combinación de teclado inválida" + +#: keystrokeEditor/wx_ui.py:86 +msgid "You must provide a character for the keystroke" +msgstr "Debes proporcionar una letra para el atajo de teclado" + +#: keystrokeEditor/actions/mastodon.py:3 +msgid "Go up in the current buffer" +msgstr "Va arriba en la lista actual" + +#: keystrokeEditor/actions/mastodon.py:4 +msgid "Go down in the current buffer" +msgstr "Va abajo en la lista actual" + +#: keystrokeEditor/actions/mastodon.py:5 +msgid "Go to the previous buffer" +msgstr "Va al buffer anterior" + +#: keystrokeEditor/actions/mastodon.py:6 +msgid "Go to the next buffer" +msgstr "Va al buffer siguiente" + +#: keystrokeEditor/actions/mastodon.py:7 +msgid "Focus the next session" +msgstr "Ir a la siguiente sesión" + +#: keystrokeEditor/actions/mastodon.py:8 +msgid "Focus the previous session" +msgstr "Va a la sesión anterior" + +#: keystrokeEditor/actions/mastodon.py:9 +msgid "Show or hide the GUI" +msgstr "Muestra o esconde la interfaz gráfica" + +#: keystrokeEditor/actions/mastodon.py:10 +msgid "Make a new post" +msgstr "Crear nueva publicación" + +#: keystrokeEditor/actions/mastodon.py:11 wxUI/buffers/mastodon/base.py:26 +#: wxUI/buffers/mastodon/conversationList.py:25 +msgid "Reply" +msgstr "Responder" + +#: keystrokeEditor/actions/mastodon.py:12 wxUI/buffers/mastodon/base.py:25 +#: wxUI/dialogs/mastodon/dialogs.py:7 +msgid "Boost" +msgstr "Impulsar" + +#: keystrokeEditor/actions/mastodon.py:13 +msgid "Send direct message" +msgstr "Enviar mensaje directo" + +#: keystrokeEditor/actions/mastodon.py:14 +msgid "Add post to favorites" +msgstr "Añadir publicación a favoritos" + +#: keystrokeEditor/actions/mastodon.py:15 +msgid "Remove post from favorites" +msgstr "Quitar de favoritos" + +#: keystrokeEditor/actions/mastodon.py:16 +msgid "Add/remove post from favorites" +msgstr "Añadir/quitar publicación de favoritos" + +#: keystrokeEditor/actions/mastodon.py:17 +msgid "Open the user actions dialogue" +msgstr "Abrir el diálogo de acciones" + +#: keystrokeEditor/actions/mastodon.py:18 +msgid "See user details" +msgstr "Ver detalles del usuario" + +#: keystrokeEditor/actions/mastodon.py:19 +msgid "Show post" +msgstr "Ver publicación" + +#: keystrokeEditor/actions/mastodon.py:20 +msgid "Quit" +msgstr "Salir" + +#: keystrokeEditor/actions/mastodon.py:21 +msgid "Open user timeline" +msgstr "Abrir línea temporal" + +#: keystrokeEditor/actions/mastodon.py:22 +msgid "Destroy buffer" +msgstr "Eliminar buffer" + +#: keystrokeEditor/actions/mastodon.py:23 +msgid "Interact with the currently focused post." +msgstr "Interactuar con la publicación que tiene el foco." + +#: keystrokeEditor/actions/mastodon.py:24 +msgid "Open URL" +msgstr "Abrir URL" + +#: keystrokeEditor/actions/mastodon.py:25 +msgid "View in browser" +msgstr "Ver en la web" + +#: keystrokeEditor/actions/mastodon.py:26 +msgid "Increase volume by 5%" +msgstr "Subir volumen en un 5%" + +#: keystrokeEditor/actions/mastodon.py:27 +msgid "Decrease volume by 5%" +msgstr "Bajar volumen en un 5%" + +#: keystrokeEditor/actions/mastodon.py:28 +msgid "Jump to the first element of a buffer" +msgstr "Ir al primer elemento del buffer" + +#: keystrokeEditor/actions/mastodon.py:29 +msgid "Jump to the last element of the current buffer" +msgstr "Ir al último elemento del buffer" + +#: keystrokeEditor/actions/mastodon.py:30 +msgid "Jump 20 elements up in the current buffer" +msgstr "Moverse 20 elementos hacia arriba en el buffer actual" + +#: keystrokeEditor/actions/mastodon.py:31 +msgid "Jump 20 elements down in the current buffer" +msgstr "Moverse 20 elementos hacia abajo en el buffer actual" + +#: keystrokeEditor/actions/mastodon.py:33 +msgid "Delete post" +msgstr "Eliminar publicación" + +#: keystrokeEditor/actions/mastodon.py:34 +msgid "Empty the current buffer" +msgstr "Vaciar buffer" + +#: keystrokeEditor/actions/mastodon.py:35 +msgid "Repeat last item" +msgstr "Repetir último elemento" + +#: keystrokeEditor/actions/mastodon.py:36 +msgid "Copy to clipboard" +msgstr "Copiar al portapapeles" + +#: keystrokeEditor/actions/mastodon.py:39 +msgid "Mute/unmute the active buffer" +msgstr "Silenciar o des-silenciar el buffer activo" + +#: keystrokeEditor/actions/mastodon.py:40 +msgid "Mute/unmute the current session" +msgstr "Activar o desactivar el silencio para la sesión activa" + +#: keystrokeEditor/actions/mastodon.py:41 +msgid "toggle the automatic reading of incoming tweets in the active buffer" +msgstr "conmutar entre la lectura automática de nuevos tuits para el buffer actual" + +#: keystrokeEditor/actions/mastodon.py:42 +msgid "Search on instance" +msgstr "Buscar en la instancia" + +#: keystrokeEditor/actions/mastodon.py:43 +msgid "Find a string in the currently focused buffer" +msgstr "Buscar un término en el buffer actual" + +#: keystrokeEditor/actions/mastodon.py:44 +msgid "Show the keystroke editor" +msgstr "Mostrar el editor de combinaciones de teclado" + +#: keystrokeEditor/actions/mastodon.py:46 +msgid "load previous items" +msgstr "cargar elementos anteriores" + +#: keystrokeEditor/actions/mastodon.py:48 +msgid "View conversation" +msgstr "Ver conversación" + +#: keystrokeEditor/actions/mastodon.py:49 +msgid "Check and download updates" +msgstr "&Comprobar y descargar actualizaciones" + +#: keystrokeEditor/actions/mastodon.py:50 +msgid "Opens the global settings dialogue" +msgstr "Abre el diálogo de opciones globales" + +#: keystrokeEditor/actions/mastodon.py:52 +msgid "Opens the account settings dialogue" +msgstr "Abre el diálogo de opciones de cuenta" + +#: keystrokeEditor/actions/mastodon.py:53 +msgid "Try to play a media file" +msgstr "Intentar reproducir archivo multimedia" + +#: keystrokeEditor/actions/mastodon.py:54 +msgid "Updates the buffer and retrieves possible lost items there." +msgstr "Actualiza el buffer e intenta descargar los elementos perdidos." + +#: keystrokeEditor/actions/mastodon.py:55 +msgid "Extracts the text from a picture and displays the result in a dialog." +msgstr "Extrae el texto de una foto y muestra el resultado en un diálogo." + +#: keystrokeEditor/actions/mastodon.py:56 +msgid "Adds an alias to an user" +msgstr "Añade un alias a un usuario específico" + +#: sessionmanager/sessionManager.py:69 +#, python-brace-format +msgid "{account_name}@{instance} (Mastodon)" +msgstr "{account_name}@{instance} (Mastodon)" + +#: sessionmanager/wxUI.py:11 +msgid "Session manager" +msgstr "Gestor de sesiones" + +#: sessionmanager/wxUI.py:14 +msgid "Accounts list" +msgstr "Lista de cuentas" + +#: sessionmanager/wxUI.py:16 +msgid "Account" +msgstr "Cuenta" + +#: sessionmanager/wxUI.py:20 +msgid "New account" +msgstr "Nueva cuenta" + +#: sessionmanager/wxUI.py:22 sessionmanager/wxUI.py:79 +msgid "Remove account" +msgstr "Eliminar cuenta" + +#: sessionmanager/wxUI.py:24 +msgid "Global Settings" +msgstr "Opciones globales" + +#: sessionmanager/wxUI.py:48 +msgid "You need to configure an account." +msgstr "Necesitas configurar una cuenta." + +#: sessionmanager/wxUI.py:48 +msgid "Account Error" +msgstr "Error en la cuenta" + +#: sessionmanager/wxUI.py:54 +msgid "Mastodon" +msgstr "Mastodon" + +#: sessionmanager/wxUI.py:59 +msgid "" +"You will be prompted for your Mastodon data (instance URL, email address " +"and password) so we can authorise TWBlue in your instance. Would you like" +" to authorise your account now?" +msgstr "" +"Te solicitaremos tu información de tu cuenta de Mastodon para poder " +"iniciar tu sesión. ¿Te gustaría autorizar tu cuenta ahora?" + +#: sessionmanager/wxUI.py:59 +msgid "Authorization" +msgstr "Autorización" + +#: sessionmanager/wxUI.py:67 +#, python-format +msgid "Authorized account %d" +msgstr "Cuenta autorizada %d" + +#: sessionmanager/wxUI.py:73 +msgid "" +"Your access token is invalid or the authorization has failed. Please try " +"again." +msgstr "" +"El código de autorización es inválido o el proceso ha fallado. Por favor " +"inténtalo de nuevo más tarde." + +#: sessionmanager/wxUI.py:73 +msgid "Invalid user token" +msgstr "Código de acceso inválido" + +#: sessionmanager/wxUI.py:79 +msgid "Do you really want to delete this account?" +msgstr "¿Realmente deseas eliminar esta cuenta?" + +#: sessions/base.py:125 +#, python-brace-format +msgid "" +"An exception occurred while saving the {app} database. It will be deleted" +" and rebuilt automatically. If this error persists, send the error log to" +" the {app} developers." +msgstr "" +"Ha ocurrido un error al guardar la base de datos de {app}. La base de " +"datos será creada desde cero automáticamente. Si este error persiste, " +"contacta con los desarrolladores de {app} para obtener ayuda." + +#: sessions/base.py:165 +#, python-brace-format +msgid "" +"An exception occurred while loading the {app} database. It will be " +"deleted and rebuilt automatically. If this error persists, send the error" +" log to the {app} developers." +msgstr "" +"Ocurrió un error al cargar la base de datos de {app}. {app} creará una " +"base de datos nueva automáticamente. Si este error persiste, contacta con" +" los desarrolladores de {app} para obtener ayuda." + +#: sessions/mastodon/compose.py:15 sessions/mastodon/compose.py:61 +msgid "dddd, MMMM D, YYYY H:m" +msgstr "dddd, MMMM D, YYYY H:m" + +#: sessions/mastodon/compose.py:17 sessions/mastodon/templates.py:74 +#: sessions/mastodon/templates.py:75 +#, python-brace-format +msgid "Boosted from @{}: {}" +msgstr "Impulsado de @{}: {}" + +#: sessions/mastodon/compose.py:22 sessions/mastodon/compose.py:81 +#: sessions/mastodon/templates.py:81 sessions/mastodon/templates.py:176 +#, python-brace-format +msgid "hidden by filter {}" +msgstr "Oculto por el filtro {}" + +#: sessions/mastodon/compose.py:36 sessions/mastodon/templates.py:28 +msgid "dddd, MMMM D, YYYY H:m:s" +msgstr "dddd, MMMM D, YYYY H:m:s" + +#: sessions/mastodon/compose.py:38 +#, python-format +msgid "%s (@%s). %s followers, %s following, %s posts. Joined %s" +msgstr "%s (@%s). %s seguidores, %s siguiendo, %s publicaciones. Se unió el %s" + +#: sessions/mastodon/compose.py:49 +#, python-brace-format +msgid "Last message from {}: {}" +msgstr "Último mensaje de {}: {}" + +#: sessions/mastodon/compose.py:64 +#, python-brace-format +msgid "{username} has posted: {status}" +msgstr "{username} ha publicado: {status}" + +#: sessions/mastodon/compose.py:66 +#, python-brace-format +msgid "{username} has mentioned you: {status}" +msgstr "{username} te ha mencionado: {status}" + +#: sessions/mastodon/compose.py:68 +#, python-brace-format +msgid "{username} has boosted: {status}" +msgstr "{username} ha impulsado: {status}" + +#: sessions/mastodon/compose.py:70 +#, python-brace-format +msgid "{username} has added to favorites: {status}" +msgstr "{username} ha añadido a favoritos: {status}" + +#: sessions/mastodon/compose.py:72 +#, python-brace-format +msgid "{username} has followed you." +msgstr "{username} te ha seguido." + +#: sessions/mastodon/compose.py:74 +#, python-brace-format +msgid "{username} has joined the instance." +msgstr "{username} se ha unido a la instancia" + +#: sessions/mastodon/compose.py:76 sessions/mastodon/templates.py:171 +#, python-brace-format +msgid "A poll in which you have voted has expired: {status}" +msgstr "Una encuesta en la que has votado ha expirado: {status}" + +#: sessions/mastodon/compose.py:78 +#, python-brace-format +msgid "{username} wants to follow you." +msgstr "A {username} le gustaría seguirte." + +#: sessions/mastodon/session.py:69 +msgid "Please enter your instance URL." +msgstr "Introduce la dirección URL de tu instancia." + +#: sessions/mastodon/session.py:69 +msgid "Mastodon instance" +msgstr "Instancia de mastodon" + +#: sessions/mastodon/session.py:80 +msgid "" +"We could not connect to your mastodon instance. Please verify that the " +"domain exists and the instance is accessible via a web browser." +msgstr "" +"No hemos podido conectar con la instancia de Mastodon. Comprueba que el " +"dominio existe y que se puede acceder a la instancia a través de un " +"navegador web." + +#: sessions/mastodon/session.py:80 +msgid "Instance error" +msgstr "Error en la instancia" + +#: sessions/mastodon/session.py:85 +msgid "Enter the verification code" +msgstr "Escribe el código de verificación" + +#: sessions/mastodon/session.py:85 +msgid "PIN code authorization" +msgstr "Código de autorización" + +#: sessions/mastodon/session.py:94 +msgid "" +"We could not authorice your mastodon account to be used in TWBlue. This " +"might be caused due to an incorrect verification code. Please try to add " +"the session again." +msgstr "" +"No hemos podido autorizar el uso de tu cuenta de Mastodon en TWBlue. Esto" +" puede deberse a un código de verificación incorrecto. Por favor, intenta" +" añadir la sesión de nuevo." + +#: sessions/mastodon/session.py:94 +msgid "Authorization error" +msgstr "Error de autorización" + +#: sessions/mastodon/session.py:215 +#, python-format +msgid "%s succeeded." +msgstr "%s con éxito." + +#: sessions/mastodon/templates.py:18 +msgid "$display_name, $text $image_descriptions $date. $source" +msgstr "$display_name, $text $image_descriptions $date. $source" + +#: sessions/mastodon/templates.py:19 +msgid "Dm to $recipient_display_name, $text $date" +msgstr "DM para $recipient_display_name, $text $date" + +#: sessions/mastodon/templates.py:20 +msgid "" +"$display_name (@$screen_name). $followers followers, $following " +"following, $posts posts. Joined $created_at." +msgstr "" +"$display_name (@$screen_name). $followers seguidores, $following " +"siguiendo, $posts publicaciones. Se unió el $created_at." + +#: sessions/mastodon/templates.py:21 +msgid "$display_name $text, $date" +msgstr "$display_name $text, $date" + +#: sessions/mastodon/templates.py:34 +#, python-brace-format +msgid "Content warning: {}" +msgstr "Advertencia de contenido: {}" + +#: sessions/mastodon/templates.py:45 +#, python-brace-format +msgid "Media description: {}" +msgstr "Descripción de medios: {}." + +#: sessions/mastodon/templates.py:82 wxUI/dialogs/mastodon/postDialogs.py:49 +msgid "Followers only" +msgstr "Solo seguidores" + +#: sessions/mastodon/templates.py:94 +msgid "Pinned." +msgstr "Publicación fijada" + +#: sessions/mastodon/templates.py:157 +#, python-brace-format +msgid "has posted: {status}" +msgstr "Ha publicado: {status}" + +#: sessions/mastodon/templates.py:159 +#, python-brace-format +msgid "has mentioned you: {status}" +msgstr "Te ha mencionado: {status}" + +#: sessions/mastodon/templates.py:161 +#, python-brace-format +msgid "has boosted: {status}" +msgstr "Ha impulsado: {status}" + +#: sessions/mastodon/templates.py:163 +#, python-brace-format +msgid "has added to favorites: {status}" +msgstr "Ha añadido a favoritos: {status}" + +#: sessions/mastodon/templates.py:165 +#, python-brace-format +msgid "has updated a status: {status}" +msgstr "Ha actualizado una publicación: {status}" + +#: sessions/mastodon/templates.py:167 +msgid "has followed you." +msgstr "Te ha seguido" + +#: sessions/mastodon/templates.py:169 +msgid "has joined the instance." +msgstr "Se ha unido a la instancia" + +#: sessions/mastodon/templates.py:173 +msgid "wants to follow you." +msgstr "Le gustaría seguirte." + +#: update/utils.py:29 +#, python-format +msgid "%d day, " +msgstr "%d día, " + +#: update/utils.py:31 +#, python-format +msgid "%d days, " +msgstr "%d días, " + +#: update/utils.py:33 +#, python-format +msgid "%d hour, " +msgstr "%d hora, " + +#: update/utils.py:35 +#, python-format +msgid "%d hours, " +msgstr "%d horas, " + +#: update/utils.py:37 +#, python-format +msgid "%d minute, " +msgstr "%d minuto, " + +#: update/utils.py:39 +#, python-format +msgid "%d minutes, " +msgstr "%d minutos, " + +#: update/utils.py:41 +#, python-format +msgid "%s second" +msgstr "%s segundo" + +#: update/utils.py:43 +#, python-format +msgid "%s seconds" +msgstr "%s segundos" + +#: update/wxUpdater.py:11 +#, python-format +msgid "" +"There's a new %s version available, released on %s. Would you like to " +"download it now?\n" +"\n" +" %s version: %s\n" +"\n" +"Changes:\n" +"%s" +msgstr "" +"Hay disponible una nueva versión de %s, liberada en %s. ¿Te gustaría " +"descargarla ahora?\n" +" %s versión: %s\n" +"\n" +"Novedades:\n" +"%s" + +#: update/wxUpdater.py:14 +#, python-format +msgid "" +"There's a new %s version available, released on %s. Updates are not " +"automatic in Windows 7, so you would need to visit TWBlue's download " +"website to get the latest version.\n" +"\n" +" %s version: %s\n" +"\n" +"Changes:\n" +"%s" +msgstr "" +"Hay una nueva versión de %s disponible, publicada el %s. Las " +"actualizaciones no son automáticas en Windows 7, por lo que tendrás que " +"visitar la web de descargas de TWBlue para obtener la última versión.\n" +"\n" +" %s versión: %s\n" +"\n" +"Cambios:\n" +"%s" + +#: update/wxUpdater.py:16 +#, python-format +msgid "New version for %s" +msgstr "Nueva versión de %s" + +#: update/wxUpdater.py:23 +msgid "Download in Progress" +msgstr "Descarga en progreso" + +#: update/wxUpdater.py:23 +msgid "Downloading the new version..." +msgstr "Descargando la nueva versión..." + +#: update/wxUpdater.py:33 +#, python-format +msgid "Updating... %s of %s" +msgstr "Actualizando... %s de %s" + +#: update/wxUpdater.py:36 +msgid "" +"The update has been downloaded and installed successfully. Press OK to " +"continue." +msgstr "" +"La actualización ha sido descargada e instalada. Presiona aceptar para " +"iniciar la aplicación." + +#: update/wxUpdater.py:36 +msgid "Done!" +msgstr "¡Hecho!" + +#: wxUI/commonMessageDialogs.py:6 +#, python-brace-format +msgid "Do you really want to close {0}?" +msgstr "¿Realmente deseas salir de {0}?" + +#: wxUI/commonMessageDialogs.py:6 +msgid "Exit" +msgstr "Salir" + +#: wxUI/commonMessageDialogs.py:10 +#, python-brace-format +msgid " {0} must be restarted for these changes to take effect." +msgstr " Debes reiniciar {0} para que estos cambios tengan efecto." + +#: wxUI/commonMessageDialogs.py:10 +#, python-brace-format +msgid "Restart {0} " +msgstr "Reiniciar {0} " + +#: wxUI/commonMessageDialogs.py:13 +msgid "" +"Are you sure you want to delete this user from the database? This user " +"will not appear in autocomplete results anymore." +msgstr "" +"¿Estás seguro de querer eliminar este usuario de la base de datos? Este " +"ya no aparecerá en los resultados del autocompletado." + +#: wxUI/commonMessageDialogs.py:13 +msgid "Confirm" +msgstr "Confirmar" + +#: wxUI/commonMessageDialogs.py:16 +msgid "" +"Do you really want to empty this buffer? It's items will be removed from" +" the list but not from Twitter" +msgstr "" +"¿Realmente quieres vaciar el contenido de este buffer? Los tweets serán " +"eliminados de la lista, pero no de Twitter" + +#: wxUI/commonMessageDialogs.py:16 wxUI/dialogs/mastodon/dialogs.py:31 +msgid "Empty buffer" +msgstr "Vaciar buffer" + +#: wxUI/commonMessageDialogs.py:20 +msgid "Do you really want to destroy this buffer?" +msgstr "¿Realmente deseas eliminar este buffer?" + +#: wxUI/commonMessageDialogs.py:23 +msgid "That user does not exist" +msgstr "El usuario no existe" + +#: wxUI/commonMessageDialogs.py:26 +msgid "A timeline for this user already exists. You can't open another" +msgstr "Ya hay una línea temporal para este usuario. No se puede abrir otra" + +#: wxUI/commonMessageDialogs.py:26 +msgid "Existing timeline" +msgstr "Línea temporal existente" + +#: wxUI/commonMessageDialogs.py:29 +#, python-brace-format +msgid "" +"If you like {0} we need your help to keep it going. Help us by donating " +"to the project. This will help us pay for the server, the domain and some" +" other things to ensure that {0} will be actively maintained. Your " +"donation will give us the means to continue the development of {0}, and " +"to keep {0} free. Would you like to donate now?" +msgstr "" +"Si te gusta {0}, necesitamos tu ayuda para mantenerla operativa por más " +"tiempo. Ayuda realizando un donativo al proyecto, lo que nos permitirá " +"pagar el servidor, el dominio en internet y algunas cuantas otras cosas " +"para asegurar que {0} seguirá desarrollándose como hasta ahora. Tu " +"donativo nos permitirá seguir escribiendo características para {0} y que " +"estas sean libres en {0}. ¿Te gustaría donar ahora?" + +#: wxUI/commonMessageDialogs.py:29 +msgid "We need your help" +msgstr "Necesitamos tu ayuda" + +#: wxUI/commonMessageDialogs.py:33 wxUI/dialogs/mastodon/postDialogs.py:207 +msgid "Information" +msgstr "Información" + +#: wxUI/commonMessageDialogs.py:36 +msgid "The configuration file is invalid." +msgstr "El fichero de configuración es incorrecto." + +#: wxUI/commonMessageDialogs.py:39 +#, python-brace-format +msgid "" +"{0} quit unexpectedly the last time it was run. If the problem persists, " +"please report it to the {0} developers." +msgstr "" +"{0} se cerró de forma inesperada la última vez que se usó. Si el problema" +" persiste, por favor informa de él a los desarrolladores de {0}." + +#: wxUI/commonMessageDialogs.py:39 +msgid "Warning" +msgstr "Atención" + +#: wxUI/commonMessageDialogs.py:45 +#, python-brace-format +msgid "Sorry, you can't update while running {} from source." +msgstr "No es posible actualizar {} desde su código fuente." + +#: wxUI/commonMessageDialogs.py:49 +msgid "the provided instance is invalid. Please try again." +msgstr "La instancia proporcionada no es válida. Por favor, inténtalo de nuevo." + +#: wxUI/commonMessageDialogs.py:49 +msgid "Invalid instance" +msgstr "Instancia inválida" + +#: wxUI/commonMessageDialogs.py:52 +msgid "" +"TWBlue was unable to add or update the filter with the specified " +"settings. Please try again." +msgstr "" +"TWBlue no ha podido crear o actualizar el filtro con las opciones " +"proporcionadas. Por favor, prueba de nuevo." + +#: wxUI/commonMessageDialogs.py:55 +msgid "" +"TWBlue was unable to load your filters from the instance. Please try " +"again." +msgstr "" +"TWBlue no ha podido cargar los filtros desde tu instancia. Por favor, " +"prueba de nuevo." + +#: wxUI/commonMessageDialogs.py:58 +msgid "Do you really want to delete this filter ?" +msgstr "¿Realmente deseas eliminar este filtro?" + +#: wxUI/commonMessageDialogs.py:58 +msgid "Delete filter" +msgstr "Eliminar filtro" + +#: wxUI/commonMessageDialogs.py:61 +msgid "TWBlue was unable to remove the filter you specified. Please try again." +msgstr "" +"TWBlue no ha podido eliminar el filtro especificado. Por favor, prueba de" +" nuevo." + +#: wxUI/sysTrayIcon.py:36 wxUI/view.py:25 +msgid "&Global settings" +msgstr "Opciones &globales" + +#: wxUI/sysTrayIcon.py:37 wxUI/view.py:24 +msgid "Account se&ttings" +msgstr "Opciones de &cuenta" + +#: wxUI/sysTrayIcon.py:39 +msgid "&Show / hide" +msgstr "&Mostrar / esconder" + +#: wxUI/sysTrayIcon.py:40 wxUI/view.py:74 +msgid "&Documentation" +msgstr "&Documentación" + +#: wxUI/sysTrayIcon.py:41 +msgid "Check for &updates" +msgstr "Comprobar &actualizaciones" + +#: wxUI/sysTrayIcon.py:42 +msgid "&Exit" +msgstr "&Salir" + +#: wxUI/view.py:16 +msgid "&Manage accounts" +msgstr "Gestionar &cuentas" + +#: wxUI/view.py:17 +msgid "&Update profile" +msgstr "Actuali&zar perfil" + +#: wxUI/view.py:18 +msgid "&Hide window" +msgstr "Esconder &ventana" + +#: wxUI/view.py:20 +msgid "&Lists manager" +msgstr "Gestor de &listas" + +#: wxUI/view.py:23 +msgid "&Edit keystrokes" +msgstr "Editar combinaciones de &teclas" + +#: wxUI/view.py:26 +msgid "E&xit" +msgstr "S&alir" + +#: wxUI/view.py:34 +msgid "&Remove from favorites" +msgstr "&Quitar de favoritos" + +#: wxUI/view.py:47 +msgid "&Add to list" +msgstr "&Añadir a lista" + +#: wxUI/view.py:48 +msgid "R&emove from list" +msgstr "&Quitar de lista" + +#: wxUI/view.py:49 +msgid "Show user &profile" +msgstr "Ve&r perfil del usuario" + +#: wxUI/view.py:50 +msgid "V&iew likes" +msgstr "&Ver tuits marcados con me gusta" + +#: wxUI/view.py:54 +msgid "&Update buffer" +msgstr "&actualizar buffer" + +#: wxUI/dialogs/mastodon/communityTimeline.py:9 wxUI/view.py:55 +msgid "Create community timeline" +msgstr "Crear línea temporal de comunidad" + +#: wxUI/view.py:56 +msgid "New &trending topics buffer..." +msgstr "Nuevo buffer de &tendencias..." + +#: wxUI/view.py:59 +msgid "Find a string in the currently focused buffer..." +msgstr "Buscar término en el buffer actual..." + +#: wxUI/view.py:60 +msgid "&Load previous items" +msgstr "&Cargar elementos anteriores" + +#: wxUI/dialogs/mastodon/userActions.py:21 wxUI/view.py:62 +msgid "&Mute" +msgstr "S&ilenciar" + +#: wxUI/view.py:63 +msgid "&Autoread" +msgstr "&lectura automática" + +#: wxUI/view.py:64 +msgid "&Clear buffer" +msgstr "&Vaciar buffer" + +#: wxUI/view.py:65 +msgid "&Destroy" +msgstr "&Eliminar" + +#: wxUI/view.py:69 +msgid "&Seek back 5 seconds" +msgstr "&Retroceder 5 segundos" + +#: wxUI/view.py:70 +msgid "&Seek forward 5 seconds" +msgstr "A&vanzar 5 segundos" + +#: wxUI/view.py:75 +msgid "Sounds &tutorial" +msgstr "Tutorial de &sonidos" + +#: wxUI/view.py:76 +msgid "&What's new in this version?" +msgstr "¿&Qué hay de nuevo en esta versión?" + +#: wxUI/view.py:77 +msgid "&Check for updates" +msgstr "&Comprobar actualizaciones" + +#: wxUI/view.py:78 +msgid "&Report an error" +msgstr "&Reportar un error" + +#: wxUI/view.py:79 +#, python-brace-format +msgid "{0}'s &website" +msgstr "Sitio &web de {0}" + +#: wxUI/view.py:80 +msgid "Get soundpacks for TWBlue" +msgstr "Obtener paquetes de sonidos para TWBlue" + +#: wxUI/view.py:81 +#, python-brace-format +msgid "About &{0}" +msgstr "Sobre &{0}" + +#: wxUI/view.py:84 +msgid "&Application" +msgstr "&Aplicación" + +#: wxUI/view.py:85 +msgid "&Tweet" +msgstr "&Tuit" + +#: wxUI/dialogs/mastodon/userActions.py:10 wxUI/view.py:86 +msgid "&User" +msgstr "&Usuario" + +#: wxUI/view.py:87 +msgid "&Buffer" +msgstr "&Buffer" + +#: wxUI/view.py:88 +msgid "&Audio" +msgstr "&Audio" + +#: wxUI/view.py:89 +msgid "&Help" +msgstr "Ay&uda" + +#: wxUI/view.py:175 +msgid "Address" +msgstr "Dirección" + +#: wxUI/view.py:206 +#, python-brace-format +msgid "Your {0} version is up to date" +msgstr "Tu versión de {0} está actualizada" + +#: wxUI/view.py:206 +msgid "Update" +msgstr "Actualización" + +#: wxUI/buffers/panels.py:12 wxUI/buffers/panels.py:20 +msgid "Login" +msgstr "Iniciar sesión" + +#: wxUI/buffers/panels.py:14 +msgid "Log in automatically" +msgstr "Iniciar sesión automáticamente" + +#: wxUI/buffers/panels.py:22 +msgid "Logout" +msgstr "Cerrar sesión" + +#: wxUI/buffers/mastodon/base.py:11 +#: wxUI/buffers/mastodon/conversationList.py:11 wxUI/buffers/mastodon/user.py:8 +#: wxUI/dialogs/mastodon/userTimeline.py:10 wxUI/dialogs/userAliasDialogs.py:14 +msgid "User" +msgstr "Usuario" + +#: wxUI/buffers/mastodon/base.py:11 +#: wxUI/buffers/mastodon/conversationList.py:11 +#: wxUI/buffers/mastodon/notifications.py:11 +#: wxUI/dialogs/mastodon/postDialogs.py:37 +#: wxUI/dialogs/mastodon/postDialogs.py:272 +msgid "Text" +msgstr "Texto" + +#: wxUI/buffers/mastodon/base.py:11 +#: wxUI/buffers/mastodon/conversationList.py:11 +#: wxUI/buffers/mastodon/notifications.py:11 +#: wxUI/dialogs/mastodon/postDialogs.py:216 +msgid "Date" +msgstr "Fecha" + +#: wxUI/buffers/mastodon/base.py:11 +#: wxUI/buffers/mastodon/conversationList.py:11 +msgid "Client" +msgstr "Cliente" + +#: wxUI/buffers/mastodon/base.py:27 +msgid "Favorite" +msgstr "Favorito" + +#: wxUI/buffers/mastodon/base.py:28 +msgid "Bookmark" +msgstr "marcador" + +#: wxUI/buffers/mastodon/base.py:29 +msgid "Direct message" +msgstr "Mensaje directo" + +#: wxUI/buffers/mastodon/notifications.py:23 +#: wxUI/dialogs/mastodon/dialogs.py:23 +msgid "Dismiss" +msgstr "Descartar" + +#: wxUI/buffers/mastodon/user.py:19 wxUI/dialogs/userAliasDialogs.py:48 +msgid "Actions" +msgstr "Acciones" + +#: wxUI/buffers/mastodon/user.py:20 +msgid "Message" +msgstr "Mensaje" + +#: wxUI/dialogs/configuration.py:15 +msgid "&Language" +msgstr "&Idioma" + +#: wxUI/dialogs/configuration.py:22 +#, python-brace-format +msgid "&Ask before exiting {0}" +msgstr "Preguntar antes de salir de {0}" + +#: wxUI/dialogs/configuration.py:24 +msgid "&Disable Streaming functions" +msgstr "&Desactivar funciones en tiempo real" + +#: wxUI/dialogs/configuration.py:27 +msgid "&Buffer update interval, in minutes" +msgstr "Intervalo de actualización de los &buffers, en minutos" + +#: wxUI/dialogs/configuration.py:33 +#, python-brace-format +msgid "Pla&y a sound when {0} launches" +msgstr "Reproducir un sonido cuando inicia &{0}" + +#: wxUI/dialogs/configuration.py:35 +#, python-brace-format +msgid "Sp&eak a message when {0} launches" +msgstr "&Hablar un mensaje cuando {0} inicie" + +#: wxUI/dialogs/configuration.py:37 +msgid "&Use invisible interface's keyboard shortcuts while GUI is visible" +msgstr "Usar los &atajos de teclado de la interfaz invisible en la ventana gráfica" + +#: wxUI/dialogs/configuration.py:39 +msgid "A&ctivate Sapi5 when any other screen reader is not being run" +msgstr "Activar Sapi5 &cuando no hay ningún lector de pantalla ejecutándose" + +#: wxUI/dialogs/configuration.py:41 +msgid "&Hide GUI on launch" +msgstr "Esconder interfaz &gráfica al iniciar" + +#: wxUI/dialogs/configuration.py:43 +msgid "&Read long posts in GUI" +msgstr "&Leer publicaciones largas en la interfaz gráfica" + +#: wxUI/dialogs/configuration.py:46 +msgid "&Keymap" +msgstr "Mapa de &teclado" + +#: wxUI/dialogs/configuration.py:51 +#, python-brace-format +msgid "Check for u&pdates when {0} launches" +msgstr "Comprobar ac&tualizaciones cuando {0} inicie" + +#: wxUI/dialogs/configuration.py:61 +msgid "Proxy &type: " +msgstr "&Tipo de proxy: " + +#: wxUI/dialogs/configuration.py:68 +msgid "Proxy s&erver: " +msgstr "&Servidor proxy: " + +#: wxUI/dialogs/configuration.py:74 +msgid "&Port: " +msgstr "&Puerto: " + +#: wxUI/dialogs/configuration.py:80 +msgid "&User: " +msgstr "&Usuario: " + +#: wxUI/dialogs/configuration.py:86 +msgid "P&assword: " +msgstr "&Contraseña: " + +#: wxUI/dialogs/configuration.py:98 +msgid "Enable automatic s&peech feedback" +msgstr "Activar mensajes automáticos &hablados" + +#: wxUI/dialogs/configuration.py:100 +msgid "Enable automatic &Braille feedback" +msgstr "Activar mensajes automáticos en &Braille" + +#: wxUI/dialogs/configuration.py:108 +msgid "Buffer" +msgstr "Buffer" + +#: wxUI/dialogs/configuration.py:108 +msgid "Status" +msgstr "Estado" + +#: wxUI/dialogs/configuration.py:111 +msgid "S&how/hide" +msgstr "&Mostrar/ocultar" + +#: wxUI/dialogs/configuration.py:112 +msgid "Move &up" +msgstr "Mover &arriba" + +#: wxUI/dialogs/configuration.py:113 +msgid "Move &down" +msgstr "Mover a&bajo" + +#: wxUI/dialogs/configuration.py:123 wxUI/dialogs/configuration.py:188 +#: wxUI/dialogs/configuration.py:191 wxUI/dialogs/configuration.py:196 +msgid "Show" +msgstr "Mostrar" + +#: wxUI/dialogs/configuration.py:125 wxUI/dialogs/configuration.py:135 +#: wxUI/dialogs/configuration.py:159 wxUI/dialogs/configuration.py:189 +msgid "Hide" +msgstr "Ocultar" + +#: wxUI/dialogs/configuration.py:133 wxUI/dialogs/configuration.py:157 +msgid "Select a buffer first." +msgstr "Primero selecciona un buffer." + +#: wxUI/dialogs/configuration.py:136 wxUI/dialogs/configuration.py:160 +msgid "The buffer is hidden, show it first." +msgstr "El buffer está oculto, muéstralo primero." + +#: wxUI/dialogs/configuration.py:139 +msgid "The buffer is already at the top of the list." +msgstr "El buffer ya se encuentra al principio de la lista." + +#: wxUI/dialogs/configuration.py:163 +msgid "The buffer is already at the bottom of the list." +msgstr "El buffer ya se encuentra al final de la lista." + +#: wxUI/dialogs/configuration.py:205 +msgid "&LibreTranslate API URL: " +msgstr "URL de API &LibreTranslate: " + +#: wxUI/dialogs/configuration.py:211 +msgid "LibreTranslate API &Key (optional): " +msgstr "Clave de &API para LibreTranslate (opcional): " + +#: wxUI/dialogs/configuration.py:217 +msgid "&DeepL API Key: " +msgstr "Clave de API para &DeepL: " + +#: wxUI/dialogs/configuration.py:231 +#, python-brace-format +msgid "{0} preferences" +msgstr "Preferencias de {0}" + +#: wxUI/dialogs/configuration.py:237 wxUI/dialogs/mastodon/configuration.py:144 +msgid "General" +msgstr "General" + +#: wxUI/dialogs/configuration.py:242 +msgid "Proxy" +msgstr "Proxy" + +#: wxUI/dialogs/configuration.py:246 +msgid "Translation services" +msgstr "Servicios de traducción" + +#: wxUI/dialogs/configuration.py:251 wxUI/dialogs/mastodon/configuration.py:170 +msgid "&Save" +msgstr "&Guardar" + +#: wxUI/dialogs/configuration.py:253 +#: wxUI/dialogs/mastodon/communityTimeline.py:27 +#: wxUI/dialogs/mastodon/configuration.py:172 +#: wxUI/dialogs/mastodon/search.py:26 +#: wxUI/dialogs/mastodon/showUserProfile.py:170 +#: wxUI/dialogs/mastodon/updateProfile.py:132 +#: wxUI/dialogs/mastodon/userActions.py:38 +#: wxUI/dialogs/mastodon/userTimeline.py:32 +msgid "&Close" +msgstr "Ce&rrar" + +#: wxUI/dialogs/find.py:13 +msgid "Find in current buffer" +msgstr "Buscar en el buffer actual" + +#: wxUI/dialogs/find.py:14 +msgid "String" +msgstr "Término" + +#: wxUI/dialogs/find.py:23 wxUI/dialogs/mastodon/showUserProfile.py:33 +msgid "Cancel" +msgstr "Cancelar" + +#: wxUI/dialogs/templateDialogs.py:8 +msgid "Edit Template" +msgstr "Editar plantilla" + +#: wxUI/dialogs/templateDialogs.py:13 +msgid "Edit template" +msgstr "Editar plantilla" + +#: wxUI/dialogs/templateDialogs.py:17 +msgid "Available variables" +msgstr "Variables disponibles" + +#: wxUI/dialogs/templateDialogs.py:29 +msgid "Restore template" +msgstr "Restablecer plantilla" + +#: wxUI/dialogs/templateDialogs.py:48 +#, python-brace-format +msgid "Restored template to {}." +msgstr "Plantilla restablecida a {}." + +#: wxUI/dialogs/templateDialogs.py:52 +msgid "" +"the template you have specified include variables that do not exists for " +"the object. Please fix the template and try again. For your reference, " +"you can see a list of all available variables in the variables list while" +" editing your template." +msgstr "" +"La plantilla que has indicado contiene variables que no existen para el " +"tipo de objeto seleccionado. Por favor, corrige estos errores e inténtalo" +" de nuevo. A modo de referencia, puedes ver una lista de variables " +"disponibles mientras editas tu plantilla." + +#: wxUI/dialogs/templateDialogs.py:52 +msgid "Invalid template" +msgstr "Plantilla inválida" + +#: wxUI/dialogs/urlList.py:6 +msgid "Select URL" +msgstr "Selecciona la URL" + +#: wxUI/dialogs/mastodon/userActions.py:13 +#: wxUI/dialogs/mastodon/userTimeline.py:13 wxUI/dialogs/userAliasDialogs.py:13 +msgid "&Autocomplete users" +msgstr "&Autocompletar usuarios" + +#: wxUI/dialogs/userAliasDialogs.py:18 +msgid "Alias" +msgstr "Alias" + +#: wxUI/dialogs/userAliasDialogs.py:41 +msgid "Edit user aliases" +msgstr "Editar alias de usuarios" + +#: wxUI/dialogs/mastodon/search.py:19 wxUI/dialogs/userAliasDialogs.py:43 +msgid "Users" +msgstr "Usuarios" + +#: wxUI/dialogs/userAliasDialogs.py:50 +msgid "Add alias" +msgstr "Añadir alias" + +#: wxUI/dialogs/userAliasDialogs.py:51 +msgid "Adds a new user alias" +msgstr "Añadir un nuevo alias" + +#: wxUI/dialogs/userAliasDialogs.py:54 +msgid "Edit the currently focused user Alias." +msgstr "Editar alias del usuario seleccionado" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:26 +#: wxUI/dialogs/mastodon/filters/manage_filters.py:24 +#: wxUI/dialogs/userAliasDialogs.py:57 +msgid "Remove" +msgstr "Borrar" + +#: wxUI/dialogs/userAliasDialogs.py:58 +msgid "Remove the currently focused user alias." +msgstr "Eliminar alias del usuario seleccionado." + +#: wxUI/dialogs/userAliasDialogs.py:82 +msgid "Are you sure you want to delete this user alias?" +msgstr "¿Estás seguro que deseas eliminar este alias de usuario?" + +#: wxUI/dialogs/userAliasDialogs.py:82 +msgid "Remove user alias" +msgstr "Eliminar alias de usuario" + +#: wxUI/dialogs/userAliasDialogs.py:93 +msgid "User alias" +msgstr "Alias de usuario" + +#: wxUI/dialogs/userList.py:27 +msgid "View profile" +msgstr "Ver perfil" + +#: wxUI/dialogs/mastodon/communityTimeline.py:10 +msgid "Community URL" +msgstr "URL de comunidad" + +#: wxUI/dialogs/mastodon/communityTimeline.py:16 +#: wxUI/dialogs/mastodon/userTimeline.py:18 +msgid "Buffer type" +msgstr "Tipo de buffer" + +#: wxUI/dialogs/mastodon/communityTimeline.py:17 +msgid "&Local timeline" +msgstr "Línea temporal &local" + +#: wxUI/dialogs/mastodon/communityTimeline.py:18 +msgid "&Federated Timeline" +msgstr "Línea temporal &pública" + +#: wxUI/dialogs/mastodon/communityTimeline.py:25 +#: wxUI/dialogs/mastodon/search.py:24 +#: wxUI/dialogs/mastodon/updateProfile.py:130 +#: wxUI/dialogs/mastodon/userActions.py:36 +#: wxUI/dialogs/mastodon/userTimeline.py:30 +msgid "&OK" +msgstr "&Aceptar" + +#: wxUI/dialogs/mastodon/configuration.py:14 +msgid "User autocompletion settings" +msgstr "Opciones de autocompletado de usuarios" + +#: wxUI/dialogs/mastodon/configuration.py:15 +msgid "" +"Scan acc&ount and add followers and following users to the user " +"autocompletion database" +msgstr "" +"Escanear &cuenta y añadir seguidores y siguiendo a la base de datos de " +"autocompletado de usuarios" + +#: wxUI/dialogs/mastodon/configuration.py:16 +msgid "&Manage autocompletion database" +msgstr "&Gestionar base de datos del autocompletado de usuarios" + +#: wxUI/dialogs/mastodon/configuration.py:21 +msgid "&Disable Streaming API endpoints" +msgstr "&Desactivar funciones en tiempo real" + +#: wxUI/dialogs/mastodon/configuration.py:23 +msgid "&Relative timestamps" +msgstr "&Tiempos relativos" + +#: wxUI/dialogs/mastodon/configuration.py:25 +msgid "" +"R&ead preferences from instance (default visibility when publishing and " +"displaying sensitive content)" +msgstr "" +"&Leer preferencias de la instancia (visibilidad por defecto al publicar y" +" mostrar contenido sensible)" + +#: wxUI/dialogs/mastodon/configuration.py:28 +msgid "&Items on each API call" +msgstr "&Elementos por cada llamada a la API" + +#: wxUI/dialogs/mastodon/configuration.py:34 +msgid "" +"I&nverted buffers: The newest items will be shown at the beginning while " +"the oldest at the end" +msgstr "" +"Buffers &invertidos: los nuevos elementos se mostrarán al principio de " +"las listas y los viejos al final" + +#: wxUI/dialogs/mastodon/configuration.py:36 +msgid "&Ask confirmation before boosting a post" +msgstr "&Solicitar confirmación antes de impulsar una publicación" + +#: wxUI/dialogs/mastodon/configuration.py:38 +msgid "S&how screen names instead of full names" +msgstr "Mos&trar nombres de pantalla en lugar de nombres completos" + +#: wxUI/dialogs/mastodon/configuration.py:40 +msgid "Hide e&mojis in usernames" +msgstr "Esconder &emojis en nombres de usuario" + +#: wxUI/dialogs/mastodon/configuration.py:42 +msgid "" +"&Number of items per buffer to cache in database (0 to disable caching, " +"blank for unlimited)" +msgstr "" +"&Número de elementos de cada buffer a conservar en la base de datos " +"(dejar en blanco para guardarlos de forma ilimitada, 0 para desactivar la" +" base de datos)" + +#: wxUI/dialogs/mastodon/configuration.py:46 +msgid "" +"&Load cache for items in memory (much faster in big datasets but requires" +" more RAM)" +msgstr "" +"Cargar &cache para elementos en RAM (es más rápido para listas muy " +"grandes de elementos, pero requiere más memoria)" + +#: wxUI/dialogs/mastodon/configuration.py:53 +#, python-brace-format +msgid "Edit template for &posts. Current template: {}" +msgstr "Editar plantilla para &publicaciones. Plantilla actual: {}" + +#: wxUI/dialogs/mastodon/configuration.py:55 +#, python-brace-format +msgid "Edit template for c&onversations. Current template: {}" +msgstr "Editar plantilla para &conversaciones. Plantilla actual: {}" + +#: wxUI/dialogs/mastodon/configuration.py:57 +#, python-brace-format +msgid "Edit template for p&ersons. Current template: {}" +msgstr "Editar plantilla para &usuarios. Plantilla actual: {}" + +#: wxUI/dialogs/mastodon/configuration.py:65 +msgid "&Volume" +msgstr "&Volumen" + +#: wxUI/dialogs/mastodon/configuration.py:76 +msgid "S&ession mute" +msgstr "Si&lencio de sesión" + +#: wxUI/dialogs/mastodon/configuration.py:78 +msgid "&Output device" +msgstr "Dispositivo de &salida" + +#: wxUI/dialogs/mastodon/configuration.py:85 +msgid "&Input device" +msgstr "Dispositivo de &entrada" + +#: wxUI/dialogs/mastodon/configuration.py:93 +msgid "Sound &pack" +msgstr "&Paquete de sonidos" + +#: wxUI/dialogs/mastodon/configuration.py:99 +msgid "Indicate &audio or video in posts with sound" +msgstr "Reproducir sonido en publicaciones que incluyan archivos &multimedia" + +#: wxUI/dialogs/mastodon/configuration.py:101 +msgid "Indicate posts containing i&mages with sound" +msgstr "Reproducir sonido en publicaciones que incluyan &imágenes" + +#: wxUI/dialogs/mastodon/configuration.py:124 +msgid "&Language for OCR" +msgstr "Idioma para el &OCR" + +#: wxUI/dialogs/mastodon/configuration.py:149 +msgid "Feedback" +msgstr "Retroalimentación" + +#: wxUI/dialogs/mastodon/configuration.py:153 +msgid "Buffers" +msgstr "Buffers" + +#: wxUI/dialogs/mastodon/configuration.py:157 +msgid "Templates" +msgstr "Plantillas" + +#: wxUI/dialogs/mastodon/configuration.py:161 +msgid "Sound" +msgstr "Sonido" + +#: wxUI/dialogs/mastodon/configuration.py:165 +msgid "Extras" +msgstr "Extras" + +#: wxUI/dialogs/mastodon/dialogs.py:7 +msgid "Would you like to share this post?" +msgstr "¿Te gustaría impulsar esta publicación?" + +#: wxUI/dialogs/mastodon/dialogs.py:15 +msgid "" +"Do you really want to delete this post? It will be deleted from the " +"instance as well." +msgstr "" +"¿Realmente quieres borrar esta publicación? También se eliminará de la " +"instancia." + +#: wxUI/dialogs/mastodon/dialogs.py:15 +msgid "Delete" +msgstr "Eliminar" + +#: wxUI/dialogs/mastodon/dialogs.py:23 +msgid "" +"Are you sure you want to dismiss this notification? If you dismiss a " +"mention notification, it also disappears from your mentions buffer. The " +"post is not going to be deleted from the instance, though." +msgstr "" +"¿Realmente quieres descartar esta notificación? Si eliminas la " +"notificación de una mención, esta también desaparecerá del buffer de " +"menciones, aunque no será eliminada la publicación de la instancia." + +#: wxUI/dialogs/mastodon/dialogs.py:31 +msgid "" +"Do you really want to empty this buffer? It's items will be removed from" +" the list but not from the instance" +msgstr "" +"¿Realmente quieres vaciar el contenido de este buffer? Los elementos del " +"buffer serán eliminados de la lista, pero no de la instancia" + +#: wxUI/dialogs/mastodon/dialogs.py:38 +#, python-brace-format +msgid "This user has no posts. {0} can't create a timeline." +msgstr "" +"Este usuario no tiene publicaciones. {0} no puede abrirle una línea " +"temporal." + +#: wxUI/dialogs/mastodon/dialogs.py:43 +#, python-brace-format +msgid "This user has no favorited posts. {0} can't create a timeline." +msgstr "" +"Este usuario no tiene publicaciones en sus favoritos. {0} no puede " +"abrirle una línea temporal." + +#: wxUI/dialogs/mastodon/dialogs.py:48 +#, python-brace-format +msgid "This user has no followers yet. {0} can't create a timeline." +msgstr "" +"Este usuario no tiene seguidores todavía. {0} no puede abrirle una línea " +"temporal." + +#: wxUI/dialogs/mastodon/dialogs.py:53 +#, python-brace-format +msgid "This user is not following anyone. {0} can't create a timeline." +msgstr "" +"Este usuario no sigue a nadie aún. {0} no puede abrirle una línea " +"temporal." + +#: wxUI/dialogs/mastodon/dialogs.py:60 +#, python-brace-format +msgid "The focused item has no user in it. {} ca't open a user profile" +msgstr "" +"El elemento enfocado no tiene un usuario. {} no puede abrir el perfil de " +"usuario" + +#: wxUI/dialogs/mastodon/menus.py:13 wxUI/dialogs/mastodon/menus.py:41 +msgid "R&emove from favorites" +msgstr "&Quitar de favoritos" + +#: wxUI/dialogs/mastodon/menus.py:15 wxUI/dialogs/mastodon/menus.py:43 +msgid "&Open URL" +msgstr "&Abrir URL" + +#: wxUI/dialogs/mastodon/menus.py:17 wxUI/dialogs/mastodon/menus.py:47 +msgid "&Open in instance" +msgstr "Abrir en la instancia" + +#: wxUI/dialogs/mastodon/menus.py:19 wxUI/dialogs/mastodon/menus.py:45 +msgid "&Play audio" +msgstr "&Reproducir audio" + +#: wxUI/dialogs/mastodon/menus.py:23 wxUI/dialogs/mastodon/menus.py:51 +msgid "&Copy to clipboard" +msgstr "&Copiar al portapapeles" + +#: wxUI/dialogs/mastodon/menus.py:27 wxUI/dialogs/mastodon/menus.py:55 +msgid "&User actions..." +msgstr "&Acciones de usuario..." + +#: wxUI/dialogs/mastodon/menus.py:53 +msgid "&Dismiss" +msgstr "&Descartar" + +#: wxUI/dialogs/mastodon/postDialogs.py:20 +#: wxUI/dialogs/mastodon/postDialogs.py:38 +msgid "Attachments" +msgstr "Adjuntos" + +#: wxUI/dialogs/mastodon/postDialogs.py:24 +msgid "File" +msgstr "Archivo" + +#: wxUI/dialogs/mastodon/postDialogs.py:25 +msgid "Type" +msgstr "Tipo" + +#: wxUI/dialogs/mastodon/postDialogs.py:26 +#: wxUI/dialogs/mastodon/postDialogs.py:141 +msgid "Description" +msgstr "Descripción" + +#: wxUI/dialogs/mastodon/postDialogs.py:28 +msgid "Remove Attachment" +msgstr "Quitar archivo" + +#: wxUI/dialogs/mastodon/postDialogs.py:33 +msgid "Post in the thread" +msgstr "Publicación en el hilo" + +#: wxUI/dialogs/mastodon/postDialogs.py:40 +msgid "Remove post" +msgstr "Eliminar publicación" + +#: wxUI/dialogs/mastodon/postDialogs.py:47 +msgid "&Visibility" +msgstr "&Visibilidad" + +#: wxUI/dialogs/mastodon/postDialogs.py:54 +msgid "Language" +msgstr "Idioma" + +#: wxUI/dialogs/mastodon/postDialogs.py:58 +msgid "A&dd" +msgstr "Añadir..." + +#: wxUI/dialogs/mastodon/postDialogs.py:59 +msgid "S&ensitive content" +msgstr "Contenido &sensible" + +#: wxUI/dialogs/mastodon/postDialogs.py:64 +msgid "Content warning" +msgstr "Advertencia de contenido" + +#: wxUI/dialogs/mastodon/postDialogs.py:71 +msgid "Add p&ost" +msgstr "Añadir publicación" + +#: wxUI/dialogs/mastodon/postDialogs.py:75 +msgid "Auto&complete users" +msgstr "Auto&completar usuarios" + +#: wxUI/dialogs/mastodon/postDialogs.py:77 +msgid "Check &spelling" +msgstr "Revisar &ortografía" + +#: wxUI/dialogs/mastodon/postDialogs.py:79 +msgid "&Translate" +msgstr "&Traducir" + +#: wxUI/dialogs/mastodon/postDialogs.py:106 +#, python-brace-format +msgid "Post - {} characters" +msgstr "Publicación - {} caracteres" + +#: wxUI/dialogs/mastodon/postDialogs.py:130 +msgid "Image" +msgstr "Imagen" + +#: wxUI/dialogs/mastodon/postDialogs.py:132 +msgid "Video" +msgstr "Vídeo" + +#: wxUI/dialogs/mastodon/postDialogs.py:134 +msgid "Audio" +msgstr "Audio" + +#: wxUI/dialogs/mastodon/postDialogs.py:136 +msgid "Poll" +msgstr "Encuesta" + +#: wxUI/dialogs/mastodon/postDialogs.py:141 +msgid "please provide a description" +msgstr "por favor proporciona una descripción" + +#: wxUI/dialogs/mastodon/postDialogs.py:148 +msgid "Select the picture to be uploaded" +msgstr "Selecciona una foto para subir" + +#: wxUI/dialogs/mastodon/postDialogs.py:148 +msgid "Image files (*.png, *.jpg, *.gif)|*.png; *.jpg; *.gif" +msgstr "Archivos de imagen (*.png, *.jpg, *.gif)|*.png; *.jpg; *.gif" + +#: wxUI/dialogs/mastodon/postDialogs.py:155 +msgid "Select the video to be uploaded" +msgstr "Selecciona un vídeo para subir" + +#: wxUI/dialogs/mastodon/postDialogs.py:155 +msgid "Video files (*.mp4, *.mov, *.m4v, *.webm)| *.mp4; *.m4v; *.mov; *.webm" +msgstr "" +"Archivos de video (*.mp4, *.mov, *.m4v, *.webm)| *.mp4; *.m4v; *.mov; " +"*.webm" + +#: wxUI/dialogs/mastodon/postDialogs.py:162 +msgid "Select the audio file to be uploaded" +msgstr "Selecciona el archivo de audio que deseas subir" + +#: wxUI/dialogs/mastodon/postDialogs.py:162 +msgid "" +"Audio files (*.mp3, *.ogg, *.wav, *.flac, *.opus, *.aac, *.m4a, " +"*.3gp)|*.mp3; *.ogg; *.wav; *.flac; *.opus; *.aac; *.m4a; *.3gp" +msgstr "" +"Archivos de audio (*.mp3, *.ogg, *.wav, *.flac, *.opus, *.aac, *.m4a, " +"*.3gp)|*.mp3; *.ogg; *.wav; *.flac; *.opus; *.aac; *.m4a; *.3gp" + +#: wxUI/dialogs/mastodon/postDialogs.py:169 +msgid "" +"It is not possible to add more attachments. Please take into account that" +" You can add only a maximum of 4 images, or one audio, video or poll per" +" post. Please remove other attachments before continuing." +msgstr "" +"No es posible añadir más archivos adjuntos. Ten en cuenta que sólo puedes" +" añadir un máximo de 4 imágenes, o un audio, vídeo o encuesta por " +"mensaje. Por favor, elimina otros archivos adjuntos antes de continuar." + +#: wxUI/dialogs/mastodon/postDialogs.py:169 +msgid "Error adding attachment" +msgstr "Error añadiendo un archivo" + +#: wxUI/dialogs/mastodon/postDialogs.py:172 +msgid "" +"You can add a poll or media files. In order to add your poll, please " +"remove other attachments first." +msgstr "" +"Puedes añadir una encuesta o archivos multimedia. Para añadir su " +"encuesta, elimina primero otros archivos adjuntos." + +#: wxUI/dialogs/mastodon/postDialogs.py:172 +msgid "Error adding poll" +msgstr "Error añadiendo la encuesta" + +#: wxUI/dialogs/mastodon/postDialogs.py:177 +#, python-format +msgid "Post - %i characters " +msgstr "Publicación - %i caracteres " + +#: wxUI/dialogs/mastodon/postDialogs.py:200 +msgid "Image description" +msgstr "Descripción de la imagen" + +#: wxUI/dialogs/mastodon/postDialogs.py:210 +msgid "Privacy" +msgstr "Privacidad" + +#: wxUI/dialogs/mastodon/postDialogs.py:214 +msgid "Source" +msgstr "Desde" + +#: wxUI/dialogs/mastodon/postDialogs.py:222 +msgid "Boosts" +msgstr "Impulsos" + +#: wxUI/dialogs/mastodon/postDialogs.py:224 +msgid "View users who boosted this post" +msgstr "Ver usuarios que impulsaron la publicación" + +#: wxUI/dialogs/mastodon/postDialogs.py:231 +msgid "View users who favorited this post" +msgstr "Ver usuarios que marcaron la publicación como favorito" + +#: wxUI/dialogs/mastodon/postDialogs.py:239 +msgid "Copy link to clipboard" +msgstr "Copiar enlace al portapapeles" + +#: wxUI/dialogs/mastodon/postDialogs.py:241 +#: wxUI/dialogs/mastodon/postDialogs.py:280 +msgid "Check &spelling..." +msgstr "Revisar &ortografía..." + +#: wxUI/dialogs/mastodon/postDialogs.py:242 +#: wxUI/dialogs/mastodon/postDialogs.py:281 +msgid "&Translate..." +msgstr "&Traducir..." + +#: wxUI/dialogs/mastodon/postDialogs.py:243 +#: wxUI/dialogs/mastodon/postDialogs.py:282 +msgid "C&lose" +msgstr "Ce&rrar" + +#: wxUI/dialogs/mastodon/postDialogs.py:294 +msgid "Add a poll" +msgstr "Añadir encuesta" + +#: wxUI/dialogs/mastodon/postDialogs.py:298 +msgid "Participation time" +msgstr "Tiempo para participar" + +#: wxUI/dialogs/mastodon/postDialogs.py:300 +msgid "5 minutes" +msgstr "5 minutos" + +#: wxUI/dialogs/mastodon/postDialogs.py:300 +msgid "30 minutes" +msgstr "30 minutos" + +#: wxUI/dialogs/mastodon/postDialogs.py:300 +msgid "1 hour" +msgstr "Una hora" + +#: wxUI/dialogs/mastodon/postDialogs.py:300 +msgid "6 hours" +msgstr "6 horas" + +#: wxUI/dialogs/mastodon/postDialogs.py:300 +msgid "1 day" +msgstr "un día" + +#: wxUI/dialogs/mastodon/postDialogs.py:300 +msgid "2 days" +msgstr "2 días" + +#: wxUI/dialogs/mastodon/postDialogs.py:300 +msgid "3 days" +msgstr "3 días" + +#: wxUI/dialogs/mastodon/postDialogs.py:300 +msgid "4 days" +msgstr "4 días" + +#: wxUI/dialogs/mastodon/postDialogs.py:300 +msgid "5 days" +msgstr "5 días" + +#: wxUI/dialogs/mastodon/postDialogs.py:300 +msgid "6 days" +msgstr "6 días" + +#: wxUI/dialogs/mastodon/postDialogs.py:300 +msgid "7 days" +msgstr "7 días" + +#: wxUI/dialogs/mastodon/postDialogs.py:304 +msgid "Choices" +msgstr "Opciones" + +#: wxUI/dialogs/mastodon/postDialogs.py:308 +msgid "Option 1" +msgstr "Opción 1" + +#: wxUI/dialogs/mastodon/postDialogs.py:315 +msgid "Option 2" +msgstr "Opción 2" + +#: wxUI/dialogs/mastodon/postDialogs.py:322 +msgid "Option 3" +msgstr "Opción 3" + +#: wxUI/dialogs/mastodon/postDialogs.py:329 +msgid "Option 4" +msgstr "Opción 4" + +#: wxUI/dialogs/mastodon/postDialogs.py:334 +msgid "Allow multiple choices per user" +msgstr "Permitir múltiples votos por usuario" + +#: wxUI/dialogs/mastodon/postDialogs.py:337 +msgid "Hide votes count until the poll expires" +msgstr "Esconder conteo de votos hasta que la encuesta finalice" + +#: wxUI/dialogs/mastodon/postDialogs.py:363 +msgid "Please make sure you have provided at least two options for the poll." +msgstr "" +"Por favor asegúrate de haber proporcionado, al menos, dos opciones para " +"la encuesta." + +#: wxUI/dialogs/mastodon/postDialogs.py:363 +msgid "Not enough information" +msgstr "Información insuficiente" + +#: wxUI/dialogs/mastodon/postDialogs.py:368 +msgid "Vote in this poll" +msgstr "Votar en encuesta" + +#: wxUI/dialogs/mastodon/postDialogs.py:371 +msgid "Options" +msgstr "Opciónes" + +#: wxUI/dialogs/mastodon/search.py:9 +msgid "Search" +msgstr "Buscar" + +#: wxUI/dialogs/mastodon/search.py:18 +msgid "Posts" +msgstr "Publicaciones" + +#: wxUI/dialogs/mastodon/showUserProfile.py:22 +msgid "Select user" +msgstr "Seleccionar usuario" + +#: wxUI/dialogs/mastodon/showUserProfile.py:73 +#, python-brace-format +msgid "{}'s Profile" +msgstr "Perfil de {}" + +#: wxUI/dialogs/mastodon/showUserProfile.py:79 +msgid "&Name: " +msgstr "&Nombre: " + +#: wxUI/dialogs/mastodon/showUserProfile.py:84 +msgid "&URL: " +msgstr "&URL: " + +#: wxUI/dialogs/mastodon/showUserProfile.py:89 +msgid "&Bio: " +msgstr "&Biografía: " + +#: wxUI/dialogs/mastodon/showUserProfile.py:94 +msgid "&Joined at: " +msgstr "Se &unió: " + +#: wxUI/dialogs/mastodon/showUserProfile.py:99 +msgid "&Actions" +msgstr "A&cciones" + +#: wxUI/dialogs/mastodon/showUserProfile.py:104 +msgid "Header: " +msgstr "Foto de cabecera: " + +#: wxUI/dialogs/mastodon/showUserProfile.py:112 +msgid "Avatar: " +msgstr "Avatar: " + +#: wxUI/dialogs/mastodon/showUserProfile.py:122 +#, python-brace-format +msgid "Field &{} - Label: " +msgstr "&Campo {} - Nombre: " + +#: wxUI/dialogs/mastodon/showUserProfile.py:129 +msgid "Content: " +msgstr "Contenido: " + +#: wxUI/dialogs/mastodon/filters/create_filter.py:43 +#: wxUI/dialogs/mastodon/filters/create_filter.py:65 +#: wxUI/dialogs/mastodon/showUserProfile.py:135 +msgid "Yes" +msgstr "Sí" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:43 +#: wxUI/dialogs/mastodon/filters/create_filter.py:65 +#: wxUI/dialogs/mastodon/filters/create_filter.py:69 +#: wxUI/dialogs/mastodon/showUserProfile.py:135 +msgid "No" +msgstr "No" + +#: wxUI/dialogs/mastodon/showUserProfile.py:137 +msgid "&Private account: " +msgstr "Cuenta &privada: " + +#: wxUI/dialogs/mastodon/showUserProfile.py:144 +msgid "&Bot account: " +msgstr "Cuenta &bot: " + +#: wxUI/dialogs/mastodon/showUserProfile.py:151 +msgid "&Discoverable account: " +msgstr "Cuenta &visible " + +#: wxUI/dialogs/mastodon/showUserProfile.py:157 +#, python-brace-format +msgid "{} p&osts. Click to open posts timeline" +msgstr "{} p&ublicaciones. Presiona para abrir línea temporal" + +#: wxUI/dialogs/mastodon/showUserProfile.py:162 +#, python-brace-format +msgid "{} &following. Click to open Following timeline" +msgstr "{} &siguiendo. Presiona para abrir línea temporal" + +#: wxUI/dialogs/mastodon/showUserProfile.py:166 +#, python-brace-format +msgid "{} fo&llowers. Click to open followers timeline" +msgstr "{} s&eguidores. Presiona para abrir línea temporal" + +#: wxUI/dialogs/mastodon/updateProfile.py:43 +msgid "&Display Name" +msgstr "N&ombre" + +#: wxUI/dialogs/mastodon/updateProfile.py:50 +msgid "&Bio" +msgstr "&Biografía" + +#: wxUI/dialogs/mastodon/updateProfile.py:58 +msgid "Header" +msgstr "Imagen de cabecera" + +#: wxUI/dialogs/mastodon/updateProfile.py:71 +msgid "Change &header" +msgstr "Cambiar imagen de &cabecera" + +#: wxUI/dialogs/mastodon/updateProfile.py:79 +msgid "Avatar" +msgstr "Avatar" + +#: wxUI/dialogs/mastodon/updateProfile.py:92 +msgid "Change &avatar" +msgstr "Cambiar imagen de &avatar" + +#: wxUI/dialogs/mastodon/updateProfile.py:102 +#, python-brace-format +msgid "Field &{}: Label" +msgstr "Campo {}. &Nombre" + +#: wxUI/dialogs/mastodon/updateProfile.py:110 +msgid "Content" +msgstr "Contenido" + +#: wxUI/dialogs/mastodon/updateProfile.py:120 +msgid "&Private account" +msgstr "Cuenta &privada" + +#: wxUI/dialogs/mastodon/updateProfile.py:122 +msgid "&Bot account" +msgstr "Cuenta &bot" + +#: wxUI/dialogs/mastodon/updateProfile.py:124 +msgid "&Discoverable account" +msgstr "Cuenta &visible" + +#: wxUI/dialogs/mastodon/updateProfile.py:167 +msgid "Select header image - max 2MB" +msgstr "Selecciona imagen de cabecera. Tamaño máximo 2 MB" + +#: wxUI/dialogs/mastodon/updateProfile.py:172 +#: wxUI/dialogs/mastodon/updateProfile.py:194 +msgid "The selected file is larger than 2MB. Do you want to select another file?" +msgstr "" +"El archivo seleccionado tiene un tamaño mayor a 2 MB. ¿Quieres " +"seleccionar otro archivo?" + +#: wxUI/dialogs/mastodon/updateProfile.py:173 +#: wxUI/dialogs/mastodon/updateProfile.py:195 +msgid "File more than 2MB" +msgstr "Archivo demasiado grande" + +#: wxUI/dialogs/mastodon/updateProfile.py:189 +msgid "Select avatar image - max 2MB" +msgstr "Selecciona imagen de avatar. Tamaño máximo 2 MB" + +#: wxUI/dialogs/mastodon/userActions.py:19 +msgid "&Follow" +msgstr "&Seguir" + +#: wxUI/dialogs/mastodon/userActions.py:20 +msgid "U&nfollow" +msgstr "&Dejar de seguir" + +#: wxUI/dialogs/mastodon/userActions.py:22 +msgid "Unmu&te" +msgstr "D&esactivar silencio" + +#: wxUI/dialogs/mastodon/userActions.py:23 +msgid "&Block" +msgstr "&Bloquear" + +#: wxUI/dialogs/mastodon/userActions.py:24 +msgid "Unbl&ock" +msgstr "Desb&loquear" + +#: wxUI/dialogs/mastodon/userTimeline.py:9 +#, python-format +msgid "Timeline for %s" +msgstr "Línea temporal de %s" + +#: wxUI/dialogs/mastodon/userTimeline.py:19 +msgid "&Posts" +msgstr "&Publicaciones" + +#: wxUI/dialogs/mastodon/userTimeline.py:20 +msgid "&Followers" +msgstr "&Seguidores" + +#: wxUI/dialogs/mastodon/userTimeline.py:21 +msgid "Fo&llowing" +msgstr "Siguiendo" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:12 +msgid "Keyword" +msgstr "Palabra clave" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:13 +#: wxUI/dialogs/mastodon/filters/create_filter.py:24 +msgid "Whole word" +msgstr "Palabra completa" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:19 +msgid "Keyword:" +msgstr "Palabra clave:" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:25 +#: wxUI/dialogs/mastodon/filters/manage_filters.py:22 +msgid "Add" +msgstr "Añadir" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:34 +msgid "Palabras clave a filtrar:" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:74 +msgid "New filter" +msgstr "Nuevo filtro" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:78 +msgid "Home timeline" +msgstr "Línea principal" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:79 +msgid "Public statuses" +msgstr "Público" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:81 +msgid "Threads" +msgstr "Hilos" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:82 +msgid "Profiles" +msgstr "Perfiles" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:86 +msgid "Hide posts" +msgstr "Ocultar publicaciones" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:87 +msgid "Set a content warning to posts" +msgstr "Agregar advertencia de contenido a las publicaciones" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:91 +msgid "Hours" +msgstr "horas" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:92 +msgid "Days" +msgstr "días" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:93 +msgid "Weeks" +msgstr "semanas" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:94 +msgid "months" +msgstr "meses" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:97 +msgid "Title:" +msgstr "Título:" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:104 +msgid "Apply to:" +msgstr "Aplicar a:" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:114 +msgid "Action:" +msgstr "Acción:" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:122 +msgid "Expires in:" +msgstr "Expira en:" + +#: wxUI/dialogs/mastodon/filters/manage_filters.py:10 +msgid "Filters" +msgstr "Filtros" + +#: wxUI/dialogs/mastodon/filters/manage_filters.py:15 +msgid "Title" +msgstr "Título" + +#: wxUI/dialogs/mastodon/filters/manage_filters.py:16 +msgid "Keywords" +msgstr "Palabras clave" + +#: wxUI/dialogs/mastodon/filters/manage_filters.py:17 +msgid "Contexts" +msgstr "Contextos" + +#: wxUI/dialogs/mastodon/filters/manage_filters.py:19 +msgid "Expires" +msgstr "Expiración" + +#~ msgid "Unable to find address in OpenStreetMap." +#~ msgstr "Imposible encontrar dirección en Open Street Map." + +#~ msgid "There are no results for the coordinates in this tweet" +#~ msgstr "No hay resultados para las coordenadas en este tuit" + +#~ msgid "This list is already opened" +#~ msgstr "Esta lista ya ha sido abierta" + +#~ msgid "Timelines for {}" +#~ msgstr "Línea temporal de {}" + +#~ msgid "URL of mastodon instance:" +#~ msgstr "URL de la instancia de Mastodon:" + +#~ msgid "Email address:" +#~ msgstr "Dirección de correo:" + +#~ msgid "Password:" +#~ msgstr "Contraseña:" + +#~ msgid "&Item" +#~ msgstr "&Elemento" + +#~ msgid "Likes for {}" +#~ msgstr "Tuits que le gustan a {0}" + +#~ msgid "Trending topics for %s" +#~ msgstr "Tendencias para %s" + +#~ msgid "Select user" +#~ msgstr "Selecciona un usuario" + +#~ msgid "Sent direct messages" +#~ msgstr "Mensajes directos enviados" + +#~ msgid "Sent tweets" +#~ msgstr "Tuits enviados" + +#~ msgid "Likes" +#~ msgstr "Tuits marcados como me gusta" + +#~ msgid "Friends" +#~ msgstr "Amigos" + +#~ msgid "{username}'s likes" +#~ msgstr "Tuits que le gustan a {username}" + +#~ msgid "{username}'s friends" +#~ msgstr "Amigos de {username}" + +#~ msgid "Tweet" +#~ msgstr "Tuit" + +#~ msgid "Write the tweet here" +#~ msgstr "Escribe el tuit aquí" + +#~ msgid "New tweet in {0}" +#~ msgstr "Nuevo tuit en {0}" + +#~ msgid "{0} new tweets in {1}." +#~ msgstr "{0} nuevos tuits en {1}." + +#~ msgid "Reply to {arg0}" +#~ msgstr "Responder a {arg0}" + +#~ msgid "Reply to %s" +#~ msgstr "Responder a %s" + +#~ msgid "Direct message to %s" +#~ msgstr "Mensaje directo a %s" + +#~ msgid "New direct message" +#~ msgstr "Nuevo mensaje directo" + +#~ msgid "This action is not supported on protected accounts." +#~ msgstr "Esta acción no está permitida sobre cuentas protegidas." + +#~ msgid "Quote" +#~ msgstr "Citar" + +#~ msgid "Add your comment to the tweet" +#~ msgstr "Añade tu comentario al tuit" + +#~ msgid "User details" +#~ msgstr "Detalles del usuario" + +#~ msgid "MMM D, YYYY. H:m" +#~ msgstr "D MMM, YYYY. H:m" + +#~ msgid "There are no coordinates in this tweet" +#~ msgstr "No hay coordenadas en este tuit" + +#~ msgid "Error decoding coordinates. Try again later." +#~ msgstr "Error decodificando las coordenadas. Inténtalo nuevamente más tarde." + +#~ msgid "Invalid buffer" +#~ msgstr "Buffer inválido" + +#~ msgid "{0} new direct messages." +#~ msgstr "{0} mensajes directos nuevos." + +#~ msgid "This action is not supported in the buffer yet." +#~ msgstr "Esta acción todavía no se soporta en este buffer." + +#~ msgid "" +#~ "Getting more items cannot be done " +#~ "in this buffer. Use the direct " +#~ "messages buffer instead." +#~ msgstr "" +#~ "No se pueden obtener más elementos " +#~ "en este buffer. Usa el buffer de" +#~ " mensajes directos en su lugar." + +#~ msgid "Mention" +#~ msgstr "Mención" + +#~ msgid "Mention to %s" +#~ msgstr "Mencionar a %s" + +#~ msgid "{0} new followers." +#~ msgstr "{0} nuevos seguidores." + +#~ msgid "This action is not supported in the buffer, yet." +#~ msgstr "Esta acción todavía no se soporta en este buffer." + +#~ msgid "&Retweet" +#~ msgstr "&Retuit" + +#~ msgid "&Like" +#~ msgstr "Me &gusta" + +#~ msgid "&Unlike" +#~ msgstr "&Ya no me gusta" + +#~ msgid "View &address" +#~ msgstr "Ver &dirección" + +#~ msgid "&View lists" +#~ msgstr "&Ver listas" + +#~ msgid "View likes" +#~ msgstr "Ver tuits marcados con me gusta" + +#~ msgid "Likes timelines" +#~ msgstr "Líneas temporales de tuits marcados con me gusta" + +#~ msgid "Followers timelines" +#~ msgstr "Líneas temporales de seguidores" + +#~ msgid "Following timelines" +#~ msgstr "Líneas temporales de siguiendo" + +#~ msgid "Lists" +#~ msgstr "Listas" + +#~ msgid "List for {}" +#~ msgstr "Lista {0}" + +#~ msgid "Filters cannot be applied on this buffer" +#~ msgstr "No pueden aplicarse filtros sobre este buffer" + +#~ msgid "View item" +#~ msgstr "Ver elemento" + +#~ msgid "Ask" +#~ msgstr "Preguntar" + +#~ msgid "Retweet without comments" +#~ msgstr "Retuitear sin comentario" + +#~ msgid "Retweet with comments" +#~ msgstr "Retuitear añadiendo un comentario" + +#~ msgid "Edit template for tweets. Current template: {}" +#~ msgstr "Editar plantilla para Tweets. Plantilla actual: {}" + +#~ msgid "Edit template for direct messages. Current template: {}" +#~ msgstr "Editar plantilla para mensajes directos. Plantilla actual: {}" + +#~ msgid "Edit template for sent direct messages. Current template: {}" +#~ msgstr "Editar plantilla para mensajes directos enviados. Plantilla actual: {}" + +#~ msgid "User has been suspended" +#~ msgstr "El usuario ha sido suspendido" + +#~ msgid "Information for %s" +#~ msgstr "Detalles para %s" + +#~ msgid "Discarded" +#~ msgstr "Descartado" + +#~ msgid "Username: @%s\n" +#~ msgstr "Nombre de usuario: @%s\n" + +#~ msgid "Name: %s\n" +#~ msgstr "Nombre: %s\n" + +#~ msgid "Location: %s\n" +#~ msgstr "Ubicación: %s\n" + +#~ msgid "URL: %s\n" +#~ msgstr "URL: %s\n" + +#~ msgid "Bio: %s\n" +#~ msgstr "Descripción: %s\n" + +#~ msgid "Yes" +#~ msgstr "Sí" + +#~ msgid "No" +#~ msgstr "No" + +#~ msgid "Protected: %s\n" +#~ msgstr "Protegido: %s\n" + +#~ msgid "Relationship: " +#~ msgstr "Relación: " + +#~ msgid "You follow {0}. " +#~ msgstr "Sigues a {0}. " + +#~ msgid "{0} is following you." +#~ msgstr "{0} te sigue." + +#~ msgid "" +#~ "Followers: %s\n" +#~ " Friends: %s\n" +#~ msgstr "" +#~ "Seguidores: %s\n" +#~ " Amigos: %s\n" + +#~ msgid "Verified: %s\n" +#~ msgstr "Verificado: %s\n" + +#~ msgid "Tweets: %s\n" +#~ msgstr "Tuits: %s\n" + +#~ msgid "Likes: %s" +#~ msgstr "Me gusta: %s" + +#~ msgid "You can't ignore direct messages" +#~ msgstr "No puedes ignorar los mensajes directos" + +#~ msgid "Attaching..." +#~ msgstr "Adjuntando..." + +#~ msgid "Pause" +#~ msgstr "Pausa" + +#~ msgid "&Resume" +#~ msgstr "&Reanudar" + +#~ msgid "Resume" +#~ msgstr "Reanudar" + +#~ msgid "&Pause" +#~ msgstr "&Pausa" + +#~ msgid "&Stop" +#~ msgstr "&Detener" + +#~ msgid "Recording" +#~ msgstr "Grabando" + +#~ msgid "Stopped" +#~ msgstr "Detenido" + +#~ msgid "&Record" +#~ msgstr "&Grabar" + +#~ msgid "&Play" +#~ msgstr "&Reproducir" + +#~ msgid "Recoding audio..." +#~ msgstr "Recodificando audio..." + +#~ msgid "Error in file upload: {0}" +#~ msgstr "Error al subir el archivo: {0}" + +#~ msgid "Transferred" +#~ msgstr "Transferido" + +#~ msgid "Total file size" +#~ msgstr "Tamaño total del archivo" + +#~ msgid "Transfer rate" +#~ msgstr "Velocidad de transferencia" + +#~ msgid "Time left" +#~ msgstr "Tiempo restante" + +#~ msgid "Attach audio" +#~ msgstr "Adjuntar audio" + +#~ msgid "&Add an existing file" +#~ msgstr "&Añadir un archivo existente" + +#~ msgid "&Discard" +#~ msgstr "&Descartar" + +#~ msgid "Upload to" +#~ msgstr "Subir a" + +#~ msgid "Attach" +#~ msgstr "Adjuntar" + +#~ msgid "&Cancel" +#~ msgstr "&Cancelar" + +#~ msgid "Audio Files (*.mp3, *.ogg, *.wav)|*.mp3; *.ogg; *.wav" +#~ msgstr "Archivos de audio (*.mp3, *.ogg, *.wav)|*.mp3; *.ogg; *.wav" + +#~ msgid "You have to start writing" +#~ msgstr "Tienes que empezar a escribir" + +#~ msgid "There are no results in your users database" +#~ msgstr "No hay resultados en tu base de datos de usuarios" + +#~ msgid "Autocompletion only works for users." +#~ msgstr "El autocompletado solo funciona con usuarios." + +#~ msgid "" +#~ "Updating database... You can close this" +#~ " window now. A message will tell " +#~ "you when the process finishes." +#~ msgstr "" +#~ "Actualizando base de datos... Puedes " +#~ "cerrar esta ventana ahora. Un mensaje" +#~ " te informará cuando el proceso haya" +#~ " terminado." + +#~ msgid "Manage Autocompletion database" +#~ msgstr "Gestionar la base de datos del autocompletado de usuarios" + +#~ msgid "Editing {0} users database" +#~ msgstr "Editando la base de datos de usuarios de {0}" + +#~ msgid "Username" +#~ msgstr "Nombre de usuario" + +#~ msgid "Add user" +#~ msgstr "Añadir usuario" + +#~ msgid "Remove user" +#~ msgstr "Quitar usuario" + +#~ msgid "Twitter username" +#~ msgstr "Nombre de usuario de Twitter" + +#~ msgid "Add user to database" +#~ msgstr "Añadir usuario a la base de datos" + +#~ msgid "The user does not exist" +#~ msgstr "El usuario no existe" + +#~ msgid "Error!" +#~ msgstr "¡Error!" + +#~ msgid "Autocomplete users' settings" +#~ msgstr "Opciones de autocompletado de usuarios" + +#~ msgid "Add followers to database" +#~ msgstr "Añadir seguidores a la base de datos" + +#~ msgid "Add friends to database" +#~ msgstr "Añadir \"siguiendo\" a la base de datos" + +#~ msgid "Updating autocompletion database" +#~ msgstr "Actualizando base de datos de autocompletado" + +#~ msgid "" +#~ "This process will retrieve the users " +#~ "you selected from Twitter, and add " +#~ "them to the user autocomplete database." +#~ " Please note that if there are " +#~ "many users or you have tried to" +#~ " perform this action less than 15 " +#~ "minutes ago, TWBlue may reach a " +#~ "limit in Twitter API calls when " +#~ "trying to load the users into the" +#~ " database. If this happens, we will" +#~ " show you an error, in which " +#~ "case you will have to try this " +#~ "process again in a few minutes. If" +#~ " this process ends with no error, " +#~ "you will be redirected back to the" +#~ " account settings dialog. Do you want" +#~ " to continue?" +#~ msgstr "" +#~ "Este proceso recuperará los usuarios que" +#~ " hayas seleccionado de Twitter y los" +#~ " añadirá a la base de datos de" +#~ " autocompletado de usuarios. Ten en " +#~ "cuenta que si hay muchos usuarios " +#~ "o has intentado realizar esta acción " +#~ "hace menos de 15 minutos, TWBlue " +#~ "puede llegar a un límite en las" +#~ " llamadas a la API de Twitter " +#~ "al intentar cargar los usuarios en " +#~ "la base de datos. Si esto ocurre," +#~ " te mostraremos un error, en cuyo " +#~ "caso tendrás que volver a intentar " +#~ "este proceso en unos minutos. Si " +#~ "este proceso finaliza sin ningún error," +#~ " serás redirigido de nuevo al diálogo" +#~ " de configuración de la cuenta. " +#~ "¿Deseas continuar?" + +#~ msgid "TWBlue has imported {} users successfully." +#~ msgstr "TWBlue ha importado {} usuarios correctamente." + +#~ msgid "Done" +#~ msgstr "¡Hecho" + +#~ msgid "Error adding users from Twitter. Please try again in about 15 minutes." +#~ msgstr "" +#~ "Error añadiendo usuarios desde Twitter. " +#~ "Por favor, inténtalo nuevamente en 15" +#~ " minutos." + +#~ msgid "New tweet" +#~ msgstr "Nuevo tuit" + +#~ msgid "Retweet" +#~ msgstr "Retuit" + +#~ msgid "Like a tweet" +#~ msgstr "Marcar tuit como me gusta" + +#~ msgid "Like/unlike a tweet" +#~ msgstr "Marcar o remover tuit como me gusta" + +#~ msgid "Unlike a tweet" +#~ msgstr "Marcar tuit como ya no me gusta" + +#~ msgid "See user details" +#~ msgstr "Ver detalles del usuario" + +#~ msgid "Show tweet" +#~ msgstr "Ver tuit" + +#~ msgid "Interact with the currently focused tweet." +#~ msgstr "Interactuar con el tuit que tiene el foco." + +#~ msgid "View in Twitter" +#~ msgstr "Ver en Twitter" + +#~ msgid "Edit profile" +#~ msgstr "Editar perfil" + +#~ msgid "Delete a tweet or direct message" +#~ msgstr "Eliminar tuit o mensaje directo" + +#~ msgid "Add to list" +#~ msgstr "Añadir a lista" + +#~ msgid "Remove from list" +#~ msgstr "Quitar de lista" + +#~ msgid "Search on twitter" +#~ msgstr "Buscar en Twitter" + +#~ msgid "Show lists for a specified user" +#~ msgstr "Mostrar listas para un usuario específico" + +#~ msgid "Get geolocation" +#~ msgstr "Obtener ubicación" + +#~ msgid "Display the tweet's geolocation in a dialog" +#~ msgstr "Mostrar la ubicación del tuit en un diálogo" + +#~ msgid "Create a trending topics buffer" +#~ msgstr "Crear un buffer de tendencias" + +#~ msgid "" +#~ "Opens the list manager, which allows " +#~ "you to create, edit, delete and " +#~ "open lists in buffers." +#~ msgstr "" +#~ "Abre el gestor de listas, que " +#~ "permite crear, editar, eliminar y abrir" +#~ " listas como buffers." + +#~ msgid "Opens the list manager" +#~ msgstr "Abre el gestor de listas" + +#~ msgid "{account_name} (Twitter)" +#~ msgstr "{account_name} (Twitter)" + +#~ msgid "Twitter" +#~ msgstr "Twitter" + +#~ msgid "" +#~ "The request to authorize your Twitter" +#~ " account will be opened in your " +#~ "browser. You only need to do this" +#~ " once. Would you like to continue?" +#~ msgstr "" +#~ "La solicitud de autorización de Twitter" +#~ " será abierta en tu navegador. Esto" +#~ " es necesario hacerlo solo una vez." +#~ " ¿Quieres continuar?" + +#~ msgid "" +#~ "TWBlue is unable to authenticate the " +#~ "account for {} in Twitter. It " +#~ "might be due to an invalid or " +#~ "expired token, revoqued access to the" +#~ " application, or after an account " +#~ "reactivation. Please remove the account " +#~ "manually from your Twitter sessions in" +#~ " order to stop seeing this message." +#~ msgstr "" +#~ "TWBlue es incapaz de autenticar los " +#~ "datos para la cuenta {}. Esto " +#~ "puede deberse a un token incorrecto " +#~ "o que ya ha expirado; a haber " +#~ "revocado acceso a la aplicación, o " +#~ "luego de reactivar una cuenta " +#~ "previamente suspendida. Por favor, elimina " +#~ "esta cuenta manualmente desde tus " +#~ "sesiones de Twitter en la aplicación " +#~ "para dejar de ver este mensaje." + +#~ msgid "Authentication error for session {}" +#~ msgstr "Error de autenticación en la sesión {}" + +#~ msgid "Dm to %s " +#~ msgstr "Dm a %s " + +#~ msgid "{0}. Quoted tweet from @{1}: {2}" +#~ msgstr "{0} citó el tuit de {1}: {2}" + +#~ msgid "Unavailable" +#~ msgstr "No disponible" + +#~ msgid "" +#~ "%s (@%s). %s followers, %s friends, " +#~ "%s tweets. Last tweeted %s. Joined " +#~ "Twitter %s" +#~ msgstr "" +#~ "%s (@%s). %s seguidores, %s amigos, " +#~ "%s tuits. Último tuit %s. Se unió" +#~ " a Twitter %s" + +#~ msgid "No description available" +#~ msgstr "No hay una descripción disponible" + +#~ msgid "private" +#~ msgstr "privado" + +#~ msgid "public" +#~ msgstr "público" + +#~ msgid "Enter your PIN code here" +#~ msgstr "Introduce el código PIN aquí" + +#~ msgid "Authorising account..." +#~ msgstr "Autorizando cuenta..." + +#~ msgid "" +#~ "We could not authorice your Twitter " +#~ "account to be used in TWBlue. This" +#~ " might be caused due to an " +#~ "incorrect verification code. Please try " +#~ "to add the session again." +#~ msgstr "" +#~ "No hemos podido autorizar el uso " +#~ "de tu cuenta de Twitter en TWBlue." +#~ " Esto puede deberse a un código " +#~ "de verificación incorrecto. Por favor, " +#~ "intenta añadir la sesión de nuevo." + +#~ msgid "%s failed. Reason: %s" +#~ msgstr "%s falló. Razón: %s" + +#~ msgid "Deleted account" +#~ msgstr "Cuenta eliminada" + +#~ msgid "$sender_display_name, $text $date" +#~ msgstr "$sender_display_name, $text $date" + +#~ msgid "" +#~ "$display_name (@$screen_name). $followers followers," +#~ " $following following, $tweets tweets. " +#~ "Joined Twitter $created_at." +#~ msgstr "" +#~ "$display_name (@$screen_name). $followers " +#~ "seguidores, $following siguiendo, $tweets " +#~ "tweets. Se unió a Twitter $created_at." + +#~ msgid "Image description: {}." +#~ msgstr "Descripción de la imagen: {}." + +#~ msgid "RT @{}: {} Quote from @{}: {}" +#~ msgstr "{0} citó el tuit de {1}: {2}" + +#~ msgid "RT @{}: {}" +#~ msgstr "Impulsado de @{}: {}" + +#~ msgid "{} Quote from @{}: {}" +#~ msgstr "Impulsado de @{}: {}" + +#~ msgid "Sorry, you are not authorised to see this status." +#~ msgstr "Lo sentimos, no estás autorizado para ver este tuit." + +#~ msgid "Error {0}" +#~ msgstr "Código de error {0}" + +#~ msgid "{user_1}, {user_2} and {all_users} more: {text}" +#~ msgstr "{user_1}, {user_2} y {all_users} más: {text}" + +#~ msgid "" +#~ "This retweet is over 140 characters. " +#~ "Would you like to post it as " +#~ "a mention to the poster with your" +#~ " comments and a link to the " +#~ "original tweet?" +#~ msgstr "" +#~ "Este retuit contiene más de 140 " +#~ "caracteres. ¿Te gustaría publicar tus " +#~ "comentarios con una mención al usuario" +#~ " que publicó el tuit original y " +#~ "un enlace al mismo?" + +#~ msgid "Would you like to add a comment to this tweet?" +#~ msgstr "¿Te gustaría añadir un comentario a este tuit?" + +#~ msgid "" +#~ "Do you really want to delete this" +#~ " tweet? It will be deleted from " +#~ "Twitter as well." +#~ msgstr "" +#~ "¿Realmente quieres borrar este mensaje? " +#~ "También se eliminará de Twitter." + +#~ msgid "Enter the name of the client : " +#~ msgstr "Introduce el nombre del cliente: " + +#~ msgid "Add client" +#~ msgstr "Añadir cliente" + +#~ msgid "This user has no tweets, so you can't open a timeline for them." +#~ msgstr "Este usuario no tiene tuits. No puedes abrirle una línea temporal." + +#~ msgid "" +#~ "This is a protected Twitter user, " +#~ "which means you can't open a " +#~ "timeline using the Streaming API. The" +#~ " user's tweets will not update due" +#~ " to a twitter policy. Do you " +#~ "want to continue?" +#~ msgstr "" +#~ "Esta cuenta de usuario se encuentra " +#~ "protegida. Esto significa que no podrás" +#~ " abrir una línea temporal con " +#~ "actualizaciones en tiempo real. Los " +#~ "tuits de este usuario no se " +#~ "actualizarán debido a una política de" +#~ " Twitter. ¿Deseas continuar?" + +#~ msgid "" +#~ "This is a protected user account, " +#~ "you need to follow this user to" +#~ " view their tweets or likes." +#~ msgstr "" +#~ "Esta es una cuenta protegida, debes " +#~ "seguir al usuario para poder ver " +#~ "sus tuits y los tuits marcados con" +#~ " me gusta." + +#~ msgid "This user has no tweets. {0} can't create a timeline." +#~ msgstr "Este usuario no tiene tuits. {0} no puede abrirle una línea temporal." + +#~ msgid "This user has no favorited tweets. {0} can't create a timeline." +#~ msgstr "" +#~ "Este usuario no tiene tuits favoritos." +#~ " {0} no puede abrirle una línea " +#~ "temporal." + +#~ msgid "This user has no followers. {0} can't create a timeline." +#~ msgstr "" +#~ "Este usuario no tiene seguidores. {0}" +#~ " no puede abrirle una línea temporal." + +#~ msgid "This user has no friends. {0} can't create a timeline." +#~ msgstr "Este usuario no tiene amigos. {0} no puede abrirle una línea temporal." + +#~ msgid "Geolocation data: {0}" +#~ msgstr "Datos de ubicación: {0}" + +#~ msgid "Geo data for this tweet" +#~ msgstr "Información geográfica para este tweet" + +#~ msgid "You have been blocked from viewing this content" +#~ msgstr "Te han bloqueado y no puedes ver este contenido" + +#~ msgid "" +#~ "You have been blocked from viewing " +#~ "someone's content. In order to avoid " +#~ "conflicts with the full session, TWBlue" +#~ " will remove the affected timeline." +#~ msgstr "" +#~ "Alguien te ha bloqueado y no " +#~ "puedes ver su contenido. Para evitar " +#~ "conflictos en la sesión entera, TWBlue" +#~ " quitará el hilo temporal afectado." + +#~ msgid "" +#~ "TWBlue cannot load this timeline because" +#~ " the user has been suspended from " +#~ "Twitter." +#~ msgstr "" +#~ "TWBlue no puede cargar este hilo " +#~ "temporal porque el usuario ha sido " +#~ "suspendido por Twitter." + +#~ msgid "Do you really want to delete this filter?" +#~ msgstr "¿Realmente deseas eliminar este filtro?" + +#~ msgid "This filter already exists. Please use a different title" +#~ msgstr "Este filtro ya existe, por favor utiliza un título diferente" + +#~ msgid "&Show direct message" +#~ msgstr "&Mostrar mensaje directo" + +#~ msgid "&Show event" +#~ msgstr "&Mostrar evento" + +#~ msgid "Direct &message" +#~ msgstr "Mensaje &directo" + +#~ msgid "&Show user" +#~ msgstr "&Mostrar usuario" + +#~ msgid "Search topic" +#~ msgstr "Buscar tema" + +#~ msgid "&Tweet about this trend" +#~ msgstr "&Tuitear sobre esta tendencia" + +#~ msgid "&Show item" +#~ msgstr "&Ver tuit" + +#~ msgid "Update &profile" +#~ msgstr "Actualizar &perfil" + +#~ msgid "Event" +#~ msgstr "Evento" + +#~ msgid "Remove event" +#~ msgstr "Eliminar evento" + +#~ msgid "Trending topic" +#~ msgstr "Tendencia" + +#~ msgid "Tweet about this trend" +#~ msgstr "Tuitear sobre esta tendencia" + +#~ msgid "" +#~ "Scan account and add friends and " +#~ "followers to the user autocompletion " +#~ "database" +#~ msgstr "" +#~ "Escanear cuenta y añadir usuarios a " +#~ "la base de datos de autocompletado " +#~ "de usuarios" + +#~ msgid "" +#~ "Inverted buffers: The newest tweets will" +#~ " be shown at the beginning while " +#~ "the oldest at the end" +#~ msgstr "" +#~ "Buffers invertidos: los nuevos tweets se" +#~ " mostrarán al principio de las listas" +#~ " y los viejos al final" + +#~ msgid "Retweet mode" +#~ msgstr "Modo de retuit" + +#~ msgid "" +#~ "Load cache for tweets in memory " +#~ "(much faster in big datasets but " +#~ "requires more RAM)" +#~ msgstr "" +#~ "Cargar cache para Tweets en RAM " +#~ "(es más rápido para listas muy " +#~ "grandes de elementos, pero requiere más" +#~ " memoria)" + +#~ msgid "Ignored clients" +#~ msgstr "Clientes ignorados" + +#~ msgid "Remove client" +#~ msgstr "Quitar cliente" + +#~ msgid "Indicate audio tweets with sound" +#~ msgstr "Reproducir sonido en tuits con audio" + +#~ msgid "Indicate geotweets with sound" +#~ msgstr "Reproducir sonido en tuits con información geográfica" + +#~ msgid "Indicate tweets containing images with sound" +#~ msgstr "Reproducir sonido en tuits con imágenes" + +#~ msgid "API Key for SndUp" +#~ msgstr "Clave de api para SNDUp" + +#~ msgid "Create a filter for this buffer" +#~ msgstr "Crear filtro para este buffer" + +#~ msgid "Filter title" +#~ msgstr "Nombre del filtro" + +#~ msgid "Filter by word" +#~ msgstr "Filtrar por palabra" + +#~ msgid "Ignore tweets wich contain the following word" +#~ msgstr "Ignorar tuits que contengan la siguiente palabra" + +#~ msgid "Ignore tweets without the following word" +#~ msgstr "Ignorar tuits que no contengan la siguiente palabra" + +#~ msgid "word" +#~ msgstr "palabra" + +#~ msgid "Allow retweets" +#~ msgstr "Permitir retuits" + +#~ msgid "Allow quoted tweets" +#~ msgstr "Permitir tweets citados" + +#~ msgid "Allow replies" +#~ msgstr "Permitir respuestas" + +#~ msgid "Use this term as a regular expression" +#~ msgstr "Usar término como expresión regular" + +#~ msgid "Filter by language" +#~ msgstr "Filtrar por idioma" + +#~ msgid "Load tweets in the following languages" +#~ msgstr "Cargar tuits en los siguientes idiomas" + +#~ msgid "Ignore tweets in the following languages" +#~ msgstr "Ignorar tuits en los siguientes idiomas" + +#~ msgid "Don't filter by language" +#~ msgstr "No filtrar por idioma" + +#~ msgid "Supported languages" +#~ msgstr "Idiomas soportados" + +#~ msgid "Add selected language to filter" +#~ msgstr "Añadir idioma seleccionado al filtro" + +#~ msgid "Selected languages" +#~ msgstr "Idiomas seleccionados" + +#~ msgid "You must define a name for the filter before creating it." +#~ msgstr "Debes definir un título ppara el filtro antes de poder guardarlo." + +#~ msgid "Missing filter name" +#~ msgstr "Título del filtro faltante" + +#~ msgid "Manage filters" +#~ msgstr "Gestionar filtros" + +#~ msgid "Filters" +#~ msgstr "Filtros" + +#~ msgid "Filter" +#~ msgstr "Filtro" + +#~ msgid "Lists manager" +#~ msgstr "Gestor de listas" + +#~ msgid "List" +#~ msgstr "Lista" + +#~ msgid "Owner" +#~ msgstr "Propietario" + +#~ msgid "Members" +#~ msgstr "Miembros" + +#~ msgid "mode" +#~ msgstr "modo" + +#~ msgid "Create a new list" +#~ msgstr "Crear nueva lista" + +#~ msgid "Open in buffer" +#~ msgstr "Abrir en buffer" + +#~ msgid "Viewing lists for %s" +#~ msgstr "Viendo las listas de %s" + +#~ msgid "Subscribe" +#~ msgstr "Darte de alta" + +#~ msgid "Unsubscribe" +#~ msgstr "Darse de baja" + +#~ msgid "Name (20 characters maximun)" +#~ msgstr "Nombre (máximo 20 caracteres)" + +#~ msgid "Mode" +#~ msgstr "Modo" + +#~ msgid "Private" +#~ msgstr "Privado" + +#~ msgid "Editing the list %s" +#~ msgstr "Editando la lista %s" + +#~ msgid "Select a list to add the user" +#~ msgstr "Selecciona una lista para añadir al usuario" + +#~ msgid "Add" +#~ msgstr "Añadir" + +#~ msgid "Select a list to remove the user" +#~ msgstr "Selecciona una lista para quitar al usuario" + +#~ msgid "Do you really want to delete this list?" +#~ msgstr "¿Realmente deseas eliminar esta lista?" + +#~ msgid "Search on Twitter" +#~ msgstr "Buscar en Twitter" + +#~ msgid "Tweets" +#~ msgstr "Tuits" + +#~ msgid "&Language for results: " +#~ msgstr "&Idioma para los resultados: " + +#~ msgid "any" +#~ msgstr "cualquiera" + +#~ msgid "Results &type: " +#~ msgstr "&Tipo de resultados: " + +#~ msgid "Mixed" +#~ msgstr "Mixtos" + +#~ msgid "Recent" +#~ msgstr "Recientes" + +#~ msgid "Popular" +#~ msgstr "Populares" + +#~ msgid "Details" +#~ msgstr "Detalles" + +#~ msgid "&Go to URL" +#~ msgstr "&Ir a URL" + +#~ msgid "View trending topics" +#~ msgstr "Ver tendencias" + +#~ msgid "Trending topics by" +#~ msgstr "Tendencias por" + +#~ msgid "Country" +#~ msgstr "País" + +#~ msgid "City" +#~ msgstr "Ciudad" + +#~ msgid "&Location" +#~ msgstr "&Ubicación" + +#~ msgid "Update your profile" +#~ msgstr "Actualizar tu perfil" + +#~ msgid "&Name (50 characters maximum)" +#~ msgstr "&Nombre (máximo 50 caracteres)" + +#~ msgid "&Website" +#~ msgstr "Sitio &web" + +#~ msgid "&Bio (160 characters maximum)" +#~ msgstr "&Descripción (máximo 160 caracteres)" + +#~ msgid "Upload a &picture" +#~ msgstr "Subir una &foto" + +#~ msgid "Upload a picture" +#~ msgstr "Subir una foto" + +#~ msgid "Discard image" +#~ msgstr "Descartar foto" + +#~ msgid "&Report as spam" +#~ msgstr "&Reportar como spam" + +#~ msgid "&Ignore tweets from this client" +#~ msgstr "&Ignorar tuits de este cliente" + +#~ msgid "&Tweets" +#~ msgstr "&Tuits" + +#~ msgid "&Likes" +#~ msgstr "Tuits marcados como &me gusta" + +#~ msgid "F&riends" +#~ msgstr "&Amigos" + +#~ msgid "Delete attachment" +#~ msgstr "Quitar archivo" + +#~ msgid "Added Tweets" +#~ msgstr "Tuits añadidos" + +#~ msgid "Delete tweet" +#~ msgstr "Quitar tuit" + +#~ msgid "A&dd..." +#~ msgstr "Añadir..." + +#~ msgid "Add t&weet" +#~ msgstr "Añadir Tuit" + +#~ msgid "&Attach audio..." +#~ msgstr "&Adjuntar audio..." + +#~ msgid "Sen&d" +#~ msgstr "En&viar" + +#~ msgid "Video files (*.mp4)|*.mp4" +#~ msgstr "Archivos de video (*.mp4)|*.mp4" + +#~ msgid "" +#~ "It is not possible to add more " +#~ "attachments. Please make sure your tweet" +#~ " complies with Twitter'S attachment rules." +#~ " You can add only one video or" +#~ " GIF in every tweet, and a " +#~ "maximum of 4 photos." +#~ msgstr "" +#~ "No es posible añadir más archivos " +#~ "multimedia. Por favor asegúrate que " +#~ "cumples con los requisitos de archivos" +#~ " de Twitter. Solo se puede añadir " +#~ "un video o un GIF en cada " +#~ "tweet, o un máximo de hasta 4 " +#~ "imágenes." + +#~ msgid "&Mention to all" +#~ msgstr "&Mencionar a todos" + +#~ msgid "&Recipient" +#~ msgstr "&Destinatario" + +#~ msgid "Tweet - %i characters " +#~ msgstr "Tuit - %i caracteres " + +#~ msgid "Retweets: " +#~ msgstr "Retuits: " + +#~ msgid "Likes: " +#~ msgstr "Me gusta: " + +#~ msgid "View" +#~ msgstr "Ver" + +#~ msgid "Item" +#~ msgstr "Elemento" + +#~ msgid "&Expand URL" +#~ msgstr "&Expandir URL" + +#~ msgid "Participation time (in days)" +#~ msgstr "Tiempo para participar (en días)" + +#~ msgid "&Open in Twitter" +#~ msgstr "&Abrir en Twitter" + +#~ msgid "&Show tweet" +#~ msgstr "&Ver tuit" + +#~ msgid "Translated" +#~ msgstr "Traducido" + +#~ msgid "Afrikaans" +#~ msgstr "Africano" + +#~ msgid "Albanian" +#~ msgstr "Albanés" + +#~ msgid "Amharic" +#~ msgstr "Amárico" + +#~ msgid "Arabic" +#~ msgstr "Árabe" + +#~ msgid "Armenian" +#~ msgstr "Armenio" + +#~ msgid "Azerbaijani" +#~ msgstr "Acerí" + +#~ msgid "Basque" +#~ msgstr "Vasco" + +#~ msgid "Belarusian" +#~ msgstr "Bielorruso" + +#~ msgid "Bengali" +#~ msgstr "Bengalí" + +#~ msgid "Bihari" +#~ msgstr "Bihari" + +#~ msgid "Bulgarian" +#~ msgstr "Búlgaro" + +#~ msgid "Burmese" +#~ msgstr "Birmano" + +#~ msgid "Catalan" +#~ msgstr "Catalán" + +#~ msgid "Cherokee" +#~ msgstr "Cheroqui" + +#~ msgid "Chinese" +#~ msgstr "Chino" + +#~ msgid "Chinese_simplified" +#~ msgstr "Chino simplificado" + +#~ msgid "Chinese_traditional" +#~ msgstr "Chino tradicional" + +#~ msgid "Croatian" +#~ msgstr "Croata" + +#~ msgid "Czech" +#~ msgstr "Checo" + +#~ msgid "Dhivehi" +#~ msgstr "Dhivehi" + +#~ msgid "Esperanto" +#~ msgstr "Esperanto" + +#~ msgid "Estonian" +#~ msgstr "Estonio" + +#~ msgid "Filipino" +#~ msgstr "Filipino" + +#~ msgid "Galician" +#~ msgstr "Gallego" + +#~ msgid "Georgian" +#~ msgstr "Georgiano" + +#~ msgid "Greek" +#~ msgstr "Griego" + +#~ msgid "Guarani" +#~ msgstr "Guaraní" + +#~ msgid "Gujarati" +#~ msgstr "Guyaratí" + +#~ msgid "Hebrew" +#~ msgstr "Hebreo" + +#~ msgid "Hindi" +#~ msgstr "Hindi" + +#~ msgid "Icelandic" +#~ msgstr "Islandés" + +#~ msgid "Indonesian" +#~ msgstr "Indonesio" + +#~ msgid "Inuktitut" +#~ msgstr "Inuktitut" + +#~ msgid "Irish" +#~ msgstr "Irlandés" + +#~ msgid "Kannada" +#~ msgstr "Canarés" + +#~ msgid "Kazakh" +#~ msgstr "Kazajo" + +#~ msgid "Khmer" +#~ msgstr "Camboyano" + +#~ msgid "Kurdish" +#~ msgstr "Kurdo" + +#~ msgid "Kyrgyz" +#~ msgstr "Kirguís" + +#~ msgid "Laothian" +#~ msgstr "Lao" + +#~ msgid "Latvian" +#~ msgstr "Letón" + +#~ msgid "Lithuanian" +#~ msgstr "Lituano" + +#~ msgid "Macedonian" +#~ msgstr "Macedonio" + +#~ msgid "Malay" +#~ msgstr "Malayo" + +#~ msgid "Malayalam" +#~ msgstr "Malayalam" + +#~ msgid "Maltese" +#~ msgstr "Maltés" + +#~ msgid "Marathi" +#~ msgstr "Maratí" + +#~ msgid "Mongolian" +#~ msgstr "Mongol" + +#~ msgid "Nepali" +#~ msgstr "Nepalí" + +#~ msgid "Norwegian" +#~ msgstr "Noruego" + +#~ msgid "Oriya" +#~ msgstr "Oriya" + +#~ msgid "Pashto" +#~ msgstr "Pastú" + +#~ msgid "Persian" +#~ msgstr "Persa" + +#~ msgid "Punjabi" +#~ msgstr "Panyabí" + +#~ msgid "Romanian" +#~ msgstr "Rumano" + +#~ msgid "Sanskrit" +#~ msgstr "Sánscrito" + +#~ msgid "Serbian" +#~ msgstr "Serbio" + +#~ msgid "Sindhi" +#~ msgstr "Sindhi" + +#~ msgid "Sinhalese" +#~ msgstr "Cingalés" + +#~ msgid "Slovak" +#~ msgstr "Eslovaco" + +#~ msgid "Slovenian" +#~ msgstr "Esloveno" + +#~ msgid "Swahili" +#~ msgstr "Suajili" + +#~ msgid "Swedish" +#~ msgstr "Sueco" + +#~ msgid "Tajik" +#~ msgstr "Tayiko" + +#~ msgid "Tamil" +#~ msgstr "Tamil" + +#~ msgid "Tagalog" +#~ msgstr "Tagalo" + +#~ msgid "Telugu" +#~ msgstr "Telugú" + +#~ msgid "Thai" +#~ msgstr "Tailandés" + +#~ msgid "Tibetan" +#~ msgstr "Tibetano" + +#~ msgid "Ukrainian" +#~ msgstr "Ucraniano" + +#~ msgid "Urdu" +#~ msgstr "Urdu" + +#~ msgid "Uzbek" +#~ msgstr "Uzbeco" + +#~ msgid "Uighur" +#~ msgstr "Uigur" + +#~ msgid "Vietnamese" +#~ msgstr "Vietnamita" + +#~ msgid "Welsh" +#~ msgstr "Galés" + +#~ msgid "Yiddish" +#~ msgstr "Yídish" + +#~ msgid "" +#~ "TWBlue has detected that you're running" +#~ " windows 10 and has changed the " +#~ "default keymap to the Windows 10 " +#~ "keymap. It means that some keyboard " +#~ "shorcuts could be different. Please " +#~ "check the keystroke editor by pressing" +#~ " Alt+Win+K to see all available " +#~ "keystrokes for this keymap." +#~ msgstr "" +#~ "TWBlue ha detectado que usas Windows " +#~ "10 y ha cambiado el mapa de " +#~ "teclado predeterminado al mapa de " +#~ "teclado de Windows 10. Esto significa" +#~ " que algunas combinaciones de teclas " +#~ "podrían ser diferentes. Pulsa alt+win+k " +#~ "para abrir el editor de combinaciones" +#~ " de teclado y ver todas las " +#~ "combinaciones disponibles en este mapa " +#~ "de teclado." + +#~ msgid "Favorites: " +#~ msgstr "Favoritos: " + +#~ msgid "Date: " +#~ msgstr "Fecha: " + +#~ msgid "Community for {}" +#~ msgstr "Comunidad para {}" + +#~ msgid "Run {0} at Windows startup" +#~ msgstr "Ejecutar {0} al iniciar Windows" + +#~ msgid "Use Codeofdusk's longtweet handlers (may decrease client performance)" +#~ msgstr "" +#~ "Lectura completa de Tuits largos (puede" +#~ " disminuir el rendimiento del cliente)" + +#~ msgid "Remember state for mention all and long tweet" +#~ msgstr "Recordar estado para casillas de mencionar a todos y tweet largos" + +#~ msgid "Read long posts in GUI" +#~ msgstr "" + diff --git a/srcantiguo/locales/fi/LC_MESSAGES/twblue.mo b/srcantiguo/locales/fi/LC_MESSAGES/twblue.mo new file mode 100644 index 00000000..f4d4b254 Binary files /dev/null and b/srcantiguo/locales/fi/LC_MESSAGES/twblue.mo differ diff --git a/srcantiguo/locales/fi/LC_MESSAGES/twblue.po b/srcantiguo/locales/fi/LC_MESSAGES/twblue.po new file mode 100644 index 00000000..bd408607 --- /dev/null +++ b/srcantiguo/locales/fi/LC_MESSAGES/twblue.po @@ -0,0 +1,4929 @@ + +msgid "" +msgstr "" +"Project-Id-Version: TW Blue 0.80\n" +"Report-Msgid-Bugs-To: manuel@manuelcortez.net\n" +"POT-Creation-Date: 2025-04-13 01:18+0000\n" +"PO-Revision-Date: 2022-12-20 22:43+0000\n" +"Last-Translator: Anonymous \n" +"Language: fi\n" +"Language-Team: Finnish " +"\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.17.0\n" + +#: languageHandler.py:61 +#, fuzzy +msgctxt "languageName" +msgid "Amharic" +msgstr "amhara" + +#: languageHandler.py:62 +#, fuzzy +msgctxt "languageName" +msgid "Aragonese" +msgstr "japani" + +#: languageHandler.py:63 +#, fuzzy +msgctxt "languageName" +msgid "Spanish" +msgstr "espanja" + +#: languageHandler.py:64 +#, fuzzy +msgctxt "languageName" +msgid "Portuguese" +msgstr "portugali" + +#: languageHandler.py:65 +#, fuzzy +msgctxt "languageName" +msgid "Russian" +msgstr "venäjä" + +#: languageHandler.py:66 +#, fuzzy +msgctxt "languageName" +msgid "italian" +msgstr "italia" + +#: languageHandler.py:67 +#, fuzzy +msgctxt "languageName" +msgid "Turkey" +msgstr "ominaisuus" + +#: languageHandler.py:68 +#, fuzzy +msgctxt "languageName" +msgid "Galician" +msgstr "galicia" + +#: languageHandler.py:69 +#, fuzzy +msgctxt "languageName" +msgid "Catala" +msgstr "katalaani" + +#: languageHandler.py:70 +#, fuzzy +msgctxt "languageName" +msgid "Vasque" +msgstr "baski" + +#: languageHandler.py:71 +#, fuzzy +msgctxt "languageName" +msgid "polish" +msgstr "puola" + +#: languageHandler.py:72 +#, fuzzy +msgctxt "languageName" +msgid "Arabic" +msgstr "arabia" + +#: languageHandler.py:73 +#, fuzzy +msgctxt "languageName" +msgid "Nepali" +msgstr "nepali" + +#: languageHandler.py:74 +msgctxt "languageName" +msgid "Serbian (Latin)" +msgstr "" + +#: languageHandler.py:75 +#, fuzzy +msgctxt "languageName" +msgid "Japanese" +msgstr "japani" + +#: languageHandler.py:99 +msgid "User default" +msgstr "Käyttäjän oletus" + +#: main.py:105 +#, fuzzy +msgid "https://twblue.mcvsoftware.com/donate" +msgstr "https://twblue.es/donate" + +#: main.py:118 +#, python-brace-format +msgid "" +"{0} is already running. Close the other instance before starting this " +"one. If you're sure that {0} isn't running, try deleting the file at {1}." +" If you're unsure of how to do this, contact the {0} developers." +msgstr "" +"{0} on jo käynnissä. Sulje toinen kopio ennen uuden käynnistämistä. Jos " +"olet varma, että {0} ei ole käynnissä, kokeile poistaa tiedosto " +"hakemistosta {1}. Jos et ole varma, miten tämä tehdään, ota yhteyttä {0}n" +" kehittäjiin." + +#: sound.py:148 +msgid "Playing..." +msgstr "Toistetaan..." + +#: sound.py:161 +msgid "Stopped." +msgstr "Keskeytetty." + +#: controller/mainController.py:261 +msgid "Ready" +msgstr "Valmis" + +#: controller/mainController.py:369 controller/mainController.py:654 +#: controller/mainController.py:673 controller/mainController.py:692 +#: controller/mainController.py:711 +msgid "" +"No session is currently in focus. Focus a session with the next or " +"previous session shortcut." +msgstr "" +"Aktiivista istuntoa ei tällä hetkellä ole. Aktivoi istunto Siirry " +"seuraavaan istuntoon- tai Siirry edelliseen istuntoon -painikkeella." + +#: controller/mainController.py:373 +msgid "Empty buffer." +msgstr "Tyhjennä puskuri." + +#: controller/mainController.py:380 +#, python-brace-format +msgid "{0} not found." +msgstr "Käyttäjää {0} ei löydy." + +#: controller/mainController.py:702 controller/mainController.py:721 +#, python-format +msgid "%s, %s of %s" +msgstr "%s, %s / %s" + +#: controller/mainController.py:704 controller/mainController.py:723 +#: controller/mainController.py:751 controller/mainController.py:779 +#, python-format +msgid "%s. Empty" +msgstr "%s. Tyhjä" + +#: controller/mainController.py:739 controller/mainController.py:743 +#: controller/mainController.py:767 +#, python-brace-format +msgid "{0}: This account is not logged into Twitter." +msgstr "{0}: Tämä tili ei ole kirjautuneena Twitteriin." + +#: controller/mainController.py:749 controller/mainController.py:777 +#, python-format +msgid "%s. %s, %s of %s" +msgstr "%s. %s, %s / %s" + +#: controller/mainController.py:771 +#, python-brace-format +msgid "{0}: This account is not logged into twitter." +msgstr "{0}: Tämä tili ei ole kirjautuneena Twitteriin." + +#: controller/mainController.py:910 controller/mainController.py:926 +msgid "An error happened while trying to connect to the server. Please try later." +msgstr "Virhe yritettäessä yhdistää palvelimeen. Yritä myöhemmin uudelleen." + +#: controller/mainController.py:957 +msgid "The auto-reading of new tweets is enabled for this buffer" +msgstr "Tämän puskurin uusien twiittien automaattinen lukeminen on käytössä" + +#: controller/mainController.py:960 +msgid "The auto-reading of new tweets is disabled for this buffer" +msgstr "Tämän puskurin uusien twiittien automaattinen lukeminen ei ole käytössä" + +#: controller/mainController.py:967 +msgid "Session mute on" +msgstr "Istunnon hiljennys päällä" + +#: controller/mainController.py:970 +msgid "Session mute off" +msgstr "Istunnon hiljennys pois" + +#: controller/mainController.py:979 +msgid "Buffer mute on" +msgstr "Puskurin hiljennys päällä" + +#: controller/mainController.py:982 +msgid "Buffer mute off" +msgstr "Puskurin hiljennys pois päältä" + +#: controller/mainController.py:999 +msgid "Copied" +msgstr "Kopioitu" + +#: controller/mainController.py:1019 +msgid "Unable to update this buffer." +msgstr "Tätä puskuria ei voi päivittää." + +#: controller/mainController.py:1021 +msgid "Updating buffer..." +msgstr "Päivitetään puskuria..." + +#: controller/mainController.py:1024 +#, python-brace-format +msgid "{0} items retrieved" +msgstr "{0} kohdetta noudettu" + +#: controller/buffers/mastodon/base.py:137 controller/mainController.py:1028 +#: controller/mastodon/handler.py:98 controller/mastodon/handler.py:241 +#, python-brace-format +msgid "Timeline for {}" +msgstr "Käyttäjän {} aikajana" + +#: controller/buffers/mastodon/users.py:93 controller/mainController.py:1030 +#: controller/mastodon/handler.py:100 controller/mastodon/handler.py:255 +#, python-brace-format +msgid "Followers for {}" +msgstr "Käyttäjän {} seuraajat" + +#: controller/mainController.py:1032 +#, python-brace-format +msgid "Friends for {}" +msgstr "Käyttäjän {} kaverit" + +# | msgid "Followers for {}" +#: controller/buffers/mastodon/users.py:95 controller/mainController.py:1034 +#: controller/mastodon/handler.py:102 controller/mastodon/handler.py:269 +#, fuzzy, python-brace-format +msgid "Following for {}" +msgstr "Käyttäjän {} seuraajat" + +#: controller/messages.py:18 +#, fuzzy +msgid "Translated" +msgstr "Käännetty" + +#: controller/settings.py:60 +#, fuzzy +msgid "System default" +msgstr "Käyttäjän oletus" + +#: controller/settings.py:60 +msgid "HTTP" +msgstr "" + +#: controller/settings.py:60 +msgid "SOCKS v4" +msgstr "" + +#: controller/settings.py:60 +msgid "SOCKS v4 with DNS support" +msgstr "" + +#: controller/settings.py:60 +msgid "SOCKS v5" +msgstr "" + +#: controller/settings.py:60 +msgid "SOCKS v5 with DNS support" +msgstr "" + +#: controller/userAlias.py:31 +#, fuzzy, python-brace-format +msgid "Edit alias for {}" +msgstr "Käyttäjän {} lista" + +#: controller/buffers/base/base.py:91 +#: controller/buffers/mastodon/conversations.py:237 +#: controller/buffers/mastodon/search.py:80 +msgid "This action is not supported for this buffer" +msgstr "Toimintoa ei tueta tässä puskurissa" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:70 +#: controller/mastodon/settings.py:194 +msgid "Home" +msgstr "Koti" + +#: controller/buffers/mastodon/base.py:52 +#: controller/buffers/mastodon/community.py:22 +#: controller/mastodon/handler.py:72 controller/mastodon/handler.py:114 +#: controller/mastodon/settings.py:195 +msgid "Local" +msgstr "" + +#: controller/buffers/mastodon/base.py:52 +#: controller/buffers/mastodon/community.py:22 +#: controller/mastodon/handler.py:74 controller/mastodon/settings.py:196 +msgid "Federated" +msgstr "" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:76 +#: controller/mastodon/settings.py:197 +msgid "Mentions" +msgstr "Maininnat" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:84 +#: controller/mastodon/settings.py:201 +msgid "Bookmarks" +msgstr "" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:78 +msgid "Direct messages" +msgstr "Yksityisviestit" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:80 +#: controller/mastodon/settings.py:199 +msgid "Sent" +msgstr "" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:82 +#: controller/mastodon/settings.py:200 wxUI/dialogs/mastodon/postDialogs.py:229 +msgid "Favorites" +msgstr "" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:86 +#: controller/mastodon/settings.py:202 +msgid "Followers" +msgstr "Seuraajat" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:88 +#: controller/mastodon/settings.py:203 +#, fuzzy +msgid "Following" +msgstr "L&opeta seuraaminen" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:92 +#: controller/mastodon/settings.py:204 +msgid "Blocked users" +msgstr "Estetyt käyttäjät" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:90 +#: controller/mastodon/settings.py:205 +msgid "Muted users" +msgstr "Hiljennetyt käyttäjät" + +# | msgid "&Location" +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:94 +#: controller/mastodon/settings.py:206 +#: wxUI/dialogs/mastodon/filters/create_filter.py:80 +#, fuzzy +msgid "Notifications" +msgstr "&Sijainti" + +#: controller/buffers/mastodon/base.py:58 +#, python-brace-format +msgid "{username}'s timeline" +msgstr "Käyttäjän {username} aikajana" + +#: controller/buffers/mastodon/base.py:60 +#, python-brace-format +msgid "{username}'s followers" +msgstr "Käyttäjän {username} seuraajat" + +# | msgid "{username}'s followers" +#: controller/buffers/mastodon/base.py:62 +#, fuzzy, python-brace-format +msgid "{username}'s following" +msgstr "Käyttäjän {username} seuraajat" + +#: controller/buffers/mastodon/base.py:64 +msgid "Unknown buffer" +msgstr "Tuntematon puskuri" + +#: controller/buffers/mastodon/base.py:67 +#: controller/buffers/mastodon/base.py:645 wxUI/buffers/mastodon/base.py:24 +#: wxUI/buffers/mastodon/conversationList.py:24 +#: wxUI/buffers/mastodon/notifications.py:22 wxUI/buffers/mastodon/user.py:18 +#: wxUI/dialogs/mastodon/postDialogs.py:5 +#: wxUI/dialogs/mastodon/postDialogs.py:194 wxUI/sysTrayIcon.py:35 +msgid "Post" +msgstr "" + +# | msgid "Write the tweet here" +#: controller/buffers/mastodon/base.py:68 +#: controller/buffers/mastodon/base.py:646 +#, fuzzy +msgid "Write your post here" +msgstr "Kirjoita twiitti tähän" + +# | msgid "New tweet in {0}" +#: controller/buffers/mastodon/base.py:153 +#, fuzzy, python-brace-format +msgid "New post in {0}" +msgstr "Uusi twiitti puskurissa {0}" + +# | msgid "{0} new tweets in {1}." +#: controller/buffers/mastodon/base.py:159 +#, fuzzy, python-brace-format +msgid "{0} new posts in {1}." +msgstr "{0} uutta twiittiä puskurissa {1}." + +#: controller/buffers/mastodon/base.py:198 +#: controller/buffers/mastodon/community.py:90 +#: controller/buffers/mastodon/conversations.py:100 +#: controller/buffers/mastodon/mentions.py:82 +#: controller/buffers/mastodon/users.py:139 +#, python-format +msgid "%s items retrieved" +msgstr "%s kohdetta noudettu" + +#: controller/buffers/mastodon/base.py:216 +#: controller/buffers/mastodon/users.py:206 +msgid "This buffer is not a timeline; it can't be deleted." +msgstr "Tämä puskuri ei ole aikajana eikä sitä voi poistaa." + +# | msgid "Conversation with {0}" +#: controller/buffers/mastodon/base.py:346 +#: controller/buffers/mastodon/base.py:384 +#, fuzzy, python-brace-format +msgid "Conversation with {}" +msgstr "Keskustelu käyttäjän {0} kanssa" + +# | msgid "Write the tweet here" +#: controller/buffers/mastodon/base.py:347 +#: controller/buffers/mastodon/base.py:385 +#: controller/buffers/mastodon/conversations.py:181 +#: controller/buffers/mastodon/notifications.py:122 +#: controller/buffers/mastodon/users.py:52 +#, fuzzy +msgid "Write your message here" +msgstr "Kirjoita twiitti tähän" + +# | msgid "Reply to {arg0}" +#: controller/buffers/mastodon/base.py:349 +#, fuzzy, python-brace-format +msgid "Reply to {}" +msgstr "Vastaa käyttäjälle {arg0}" + +# | msgid "Write the tweet here" +#: controller/buffers/mastodon/base.py:350 +#, fuzzy +msgid "Write your reply here" +msgstr "Kirjoita twiitti tähän" + +#: controller/buffers/mastodon/base.py:412 +#, fuzzy +msgid "This action is not supported on conversations." +msgstr "Puskurissa ei vielä tueta tätä toimintoa." + +#: controller/buffers/mastodon/base.py:477 +msgid "Opening URL..." +msgstr "Avataan URL..." + +#: controller/buffers/mastodon/base.py:490 +msgid "You can delete only your own posts." +msgstr "" + +#: controller/buffers/mastodon/base.py:519 +msgid "Opening item in web browser..." +msgstr "Avataan kohde verkkoselaimessa..." + +#: controller/buffers/mastodon/base.py:527 +#: controller/buffers/mastodon/base.py:547 +msgid "Adding to favorites..." +msgstr "" + +# | msgid "Remove from list" +#: controller/buffers/mastodon/base.py:534 +#: controller/buffers/mastodon/base.py:549 +#, fuzzy +msgid "Removing from favorites..." +msgstr "Poista listalta" + +#: controller/buffers/mastodon/base.py:544 +#: controller/buffers/mastodon/base.py:559 +#: controller/buffers/mastodon/base.py:573 +#: controller/buffers/mastodon/conversations.py:213 +msgid "No status found with that ID" +msgstr "Antamallasi tunnuksella ei löydy tilaa" + +#: controller/buffers/mastodon/base.py:562 +msgid "Adding to bookmarks..." +msgstr "" + +#: controller/buffers/mastodon/base.py:564 +msgid "Removing from bookmarks..." +msgstr "" + +#: controller/buffers/mastodon/base.py:586 +#, python-brace-format +msgid "Picture {0}" +msgstr "Kuva {0}" + +#: controller/buffers/mastodon/base.py:587 +msgid "Select the picture" +msgstr "Valitse kuva" + +#: controller/buffers/mastodon/base.py:610 +msgid "Unable to extract text" +msgstr "Tekstiä ei voi poimia" + +#: controller/buffers/mastodon/base.py:612 +msgid "OCR Result" +msgstr "" + +#: controller/buffers/mastodon/base.py:627 +msgid "this poll no longer exists." +msgstr "" + +#: controller/buffers/mastodon/base.py:630 +msgid "This poll has already expired." +msgstr "" + +#: controller/buffers/mastodon/base.py:633 +msgid "You have already voted on this poll." +msgstr "" + +#: controller/buffers/mastodon/base.py:642 +#, fuzzy +msgid "Sending vote..." +msgstr "Uudelleenkoodataan ääntä..." + +# | msgid "Conversation with {0}" +#: controller/buffers/mastodon/conversations.py:180 +#, fuzzy, python-brace-format +msgid "Reply to conversation with {}" +msgstr "Keskustelu käyttäjän {0} kanssa" + +# | msgid "Conversation with {0}" +#: controller/buffers/mastodon/notifications.py:121 +#: controller/buffers/mastodon/users.py:51 +#, fuzzy, python-brace-format +msgid "New conversation with {}" +msgstr "Keskustelu käyttäjän {0} kanssa" + +#: controller/buffers/mastodon/notifications.py:151 +msgid "Notification dismissed." +msgstr "" + +# | msgid "There are no coordinates in this tweet" +#: controller/buffers/mastodon/users.py:110 +#, fuzzy +msgid "There are no more items in this buffer." +msgstr "Tässä twiitissä ei ole koordinaatteja" + +#: controller/mastodon/handler.py:30 wxUI/dialogs/mastodon/updateProfile.py:35 +#, fuzzy +msgid "Update Profile" +msgstr "&Päivitä profiili" + +#: controller/mastodon/handler.py:31 wxUI/dialogs/mastodon/search.py:10 +#: wxUI/view.py:19 +msgid "&Search" +msgstr "&Haku" + +#: controller/mastodon/handler.py:33 wxUI/view.py:22 +msgid "Manage user aliases" +msgstr "" + +#: controller/mastodon/handler.py:35 controller/mastodon/handler.py:59 +#: wxUI/view.py:30 +msgid "&Post" +msgstr "" + +#: controller/mastodon/handler.py:36 wxUI/dialogs/mastodon/menus.py:9 +#: wxUI/dialogs/mastodon/menus.py:37 wxUI/view.py:31 +msgid "Re&ply" +msgstr "V&astaa" + +#: controller/mastodon/handler.py:37 wxUI/dialogs/mastodon/menus.py:7 +#: wxUI/dialogs/mastodon/menus.py:35 wxUI/view.py:32 +msgid "&Boost" +msgstr "" + +# | msgid "&Add to list" +#: controller/mastodon/handler.py:38 wxUI/dialogs/mastodon/menus.py:11 +#: wxUI/dialogs/mastodon/menus.py:39 wxUI/view.py:33 +#, fuzzy +msgid "&Add to favorites" +msgstr "&Lisää listalle" + +# | msgid "Remove from list" +#: controller/mastodon/handler.py:39 +#, fuzzy +msgid "Remove from favorites" +msgstr "Poista listalta" + +# | msgid "&Show user" +#: controller/mastodon/handler.py:40 wxUI/dialogs/mastodon/menus.py:21 +#: wxUI/dialogs/mastodon/menus.py:49 wxUI/view.py:35 +#, fuzzy +msgid "&Show post" +msgstr "&Näytä käyttäjä" + +#: controller/mastodon/handler.py:41 wxUI/view.py:36 +msgid "View conversa&tion" +msgstr "Näytä &keskustelu" + +#: controller/mastodon/handler.py:42 wxUI/view.py:37 +msgid "Read text in picture" +msgstr "Lue kuvan teksti" + +#: controller/mastodon/handler.py:43 wxUI/dialogs/mastodon/menus.py:25 +#: wxUI/view.py:39 +msgid "&Delete" +msgstr "&Poista" + +#: controller/mastodon/handler.py:45 wxUI/view.py:43 +msgid "&Actions..." +msgstr "To&iminnot..." + +#: controller/mastodon/handler.py:46 wxUI/view.py:44 +msgid "&View timeline..." +msgstr "&Näytä aikajana..." + +#: controller/mastodon/handler.py:47 wxUI/view.py:45 +msgid "Direct me&ssage" +msgstr "Y&ksityisviesti" + +#: controller/mastodon/handler.py:48 wxUI/view.py:46 +msgid "Add a&lias" +msgstr "" + +#: controller/mastodon/handler.py:51 +#, fuzzy +msgid "Show user profile" +msgstr "Näytä käyttäjän p&rofiili" + +#: controller/mastodon/handler.py:54 +msgid "Create c&ommunity timeline" +msgstr "" + +#: controller/mastodon/handler.py:55 wxUI/view.py:57 +msgid "Create a &filter" +msgstr "Luo &suodatin" + +#: controller/mastodon/handler.py:56 wxUI/view.py:58 +msgid "&Manage filters" +msgstr "Suo&dattimien hallinta" + +#: controller/mastodon/handler.py:95 +msgid "Timelines" +msgstr "Aikajanat" + +#: controller/mastodon/handler.py:107 +msgid "Searches" +msgstr "Haut" + +#: controller/mastodon/handler.py:110 controller/mastodon/handler.py:191 +#: controller/mastodon/handler.py:196 +#, python-brace-format +msgid "Search for {}" +msgstr "Hae {}" + +#: controller/mastodon/handler.py:111 +msgid "Communities" +msgstr "" + +#: controller/mastodon/handler.py:114 +#, fuzzy +msgid "federated" +msgstr "Käyttäjän {username} aikajana" + +#: controller/mastodon/handler.py:143 +#, python-brace-format +msgid "Conversation with {0}" +msgstr "Keskustelu käyttäjän {0} kanssa" + +#: controller/mastodon/handler.py:299 +msgid "Add an user alias" +msgstr "" + +#: controller/mastodon/handler.py:311 +#, python-brace-format +msgid "Alias has been set correctly for {}." +msgstr "" + +#: controller/mastodon/handler.py:342 +#, fuzzy +msgid "Update profile" +msgstr "&Päivitä profiili" + +#: controller/mastodon/messages.py:115 +#, python-format +msgid "%s - %s of %d characters" +msgstr "%s - %s / %d merkkiä" + +#: controller/mastodon/messages.py:239 +#, python-brace-format +msgid "Poll with {} options" +msgstr "" + +# | msgid "List for {}" +#: controller/mastodon/messages.py:272 +#, fuzzy, python-brace-format +msgid "Post from {}" +msgstr "Käyttäjän {} lista" + +#: controller/mastodon/messages.py:276 sessions/mastodon/templates.py:82 +#: wxUI/dialogs/mastodon/postDialogs.py:49 +msgid "Public" +msgstr "Julkinen" + +# | msgid "Accounts list" +#: controller/mastodon/messages.py:276 sessions/mastodon/templates.py:82 +#: wxUI/dialogs/mastodon/postDialogs.py:49 +#, fuzzy +msgid "Not listed" +msgstr "Tilit" + +# | msgid "Followers" +#: controller/mastodon/messages.py:276 +#, fuzzy +msgid "followers only" +msgstr "Seuraajat" + +# | msgid "Direct message" +#: controller/mastodon/messages.py:276 sessions/mastodon/templates.py:82 +#: wxUI/dialogs/mastodon/postDialogs.py:49 +#, fuzzy +msgid "Direct" +msgstr "Yksityisviesti" + +# | msgid "Remove client" +#: controller/mastodon/messages.py:283 +#, fuzzy +msgid "Remote instance" +msgstr "Poista" + +#: controller/mastodon/messages.py:291 controller/mastodon/messages.py:319 +#, fuzzy +msgid "Unmute conversation" +msgstr "Näytä keskustelu" + +#: controller/mastodon/messages.py:315 wxUI/dialogs/mastodon/postDialogs.py:237 +#, fuzzy +msgid "Mute conversation" +msgstr "Näytä keskustelu" + +# | msgid "Conversation with {0}" +#: controller/mastodon/messages.py:316 +#, fuzzy +msgid "Conversation unmuted." +msgstr "Keskustelu käyttäjän {0} kanssa" + +# | msgid "Conversation with {0}" +#: controller/mastodon/messages.py:320 +#, fuzzy +msgid "Conversation muted." +msgstr "Keskustelu käyttäjän {0} kanssa" + +#: controller/mastodon/messages.py:331 +msgid "people who boosted this post" +msgstr "" + +#: controller/mastodon/messages.py:336 +msgid "people who favorited this post" +msgstr "" + +#: controller/mastodon/messages.py:342 +#, fuzzy +msgid "Link copied to clipboard." +msgstr "Kopioi leikepöydälle" + +#: controller/mastodon/settings.py:82 +#, python-format +msgid "Account settings for %s" +msgstr "Tilin %s asetukset" + +#: controller/mastodon/settings.py:92 +#, python-brace-format +msgid "Edit template for posts. Current template: {}" +msgstr "" + +#: controller/mastodon/settings.py:101 +#, python-brace-format +msgid "Edit template for conversations. Current template: {}" +msgstr "" + +#: controller/mastodon/settings.py:110 +#, python-brace-format +msgid "Edit template for persons. Current template: {}" +msgstr "" + +#: controller/mastodon/settings.py:198 +msgid "Direct Messages" +msgstr "Yksityisviestit" + +#: controller/mastodon/filters/create_filter.py:75 +#, fuzzy, python-brace-format +msgid "Update Filter: {}" +msgstr "&Päivitä profiili" + +#: controller/mastodon/filters/manage_filters.py:57 +#: wxUI/dialogs/mastodon/filters/create_filter.py:90 +msgid "Never" +msgstr "" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:4 +msgid "Audio tweet." +msgstr "Äänitwiitti." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:5 +msgid "User timeline buffer created." +msgstr "Käyttäjän aikajanapuskuri luotu." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:6 +msgid "Buffer destroied." +msgstr "Puskuri poistettu." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:7 +msgid "Direct message received." +msgstr "Yksityisviesti vastaanotettu." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:8 +msgid "Direct message sent." +msgstr "Yksityisviesti lähetetty." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:9 +msgid "Error." +msgstr "Virhe." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:10 +msgid "Tweet liked." +msgstr "Twiitistä tykätty." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:11 +msgid "Likes buffer updated." +msgstr "Tykkäysten puskuri päivitetty." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:12 +msgid "Geotweet." +msgstr "Geotwiitti." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:13 +msgid "Tweet contains one or more images" +msgstr "Twiitti sisältää yhden tai useamman kuvan" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:14 +msgid "Boundary reached." +msgstr "Raja saavutettu." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:15 +msgid "List updated." +msgstr "Lista päivitetty." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:16 +msgid "Too many characters." +msgstr "Liikaa merkkejä." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:17 +msgid "Mention received." +msgstr "Maininta vastaanotettu." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:18 +msgid "New event." +msgstr "Uusi tapahtuma." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:19 +#, python-brace-format +msgid "{0} is ready." +msgstr "{0} on valmis." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:20 +msgid "Mention sent." +msgstr "Maininta lähetetty." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:21 +msgid "Tweet retweeted." +msgstr "Twiitti uudelleentwiitattu." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:22 +msgid "Search buffer updated." +msgstr "Hakupuskuri päivitetty." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:23 +msgid "Tweet received." +msgstr "Twiitti vastaanotettu." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:24 +msgid "Tweet sent." +msgstr "Twiitti lähetetty." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:25 +msgid "Trending topics buffer updated." +msgstr "Suosittujen aiheiden puskuri päivitetty." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:26 +msgid "New tweet in user timeline buffer." +msgstr "Uusi twiitti käyttäjän aikajanapuskurissa." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:27 +msgid "New follower." +msgstr "Uusi seuraaja." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:28 +msgid "Volume changed." +msgstr "Äänenvoimakkuutta muutettu." + +#: extra/SoundsTutorial/wx_ui.py:8 +msgid "Sounds tutorial" +msgstr "Tutustu ääniin" + +#: extra/SoundsTutorial/wx_ui.py:11 +msgid "Press enter to listen to the sound for the selected event" +msgstr "Paina Enteriä kuunnellaksesi valitun tapahtuman äänen" + +#: extra/SpellChecker/spellchecker.py:56 +#, python-format +msgid "Misspelled word: %s" +msgstr "Väärin kirjoitettu sana: %s" + +#: extra/SpellChecker/wx_ui.py:27 +msgid "Misspelled word" +msgstr "Väärin kirjoitettu sana" + +#: extra/SpellChecker/wx_ui.py:32 +msgid "Context" +msgstr "Asiayhteys" + +#: extra/SpellChecker/wx_ui.py:37 +msgid "Suggestions" +msgstr "Ehdotukset" + +#: extra/SpellChecker/wx_ui.py:42 +msgid "&Ignore" +msgstr "&Ohita" + +#: extra/SpellChecker/wx_ui.py:43 +msgid "I&gnore all" +msgstr "O&hita kaikki" + +#: extra/SpellChecker/wx_ui.py:44 +msgid "&Replace" +msgstr "&Korvaa" + +#: extra/SpellChecker/wx_ui.py:45 +msgid "R&eplace all" +msgstr "Ko&rvaa kaikki" + +#: extra/SpellChecker/wx_ui.py:46 +msgid "&Add to personal dictionary" +msgstr "&Lisää henkilökohtaiseen sanastoon" + +#: extra/SpellChecker/wx_ui.py:79 +#, python-brace-format +msgid "" +"An error has occurred. There are no dictionaries available for the " +"selected language in {0}" +msgstr "Tapahtui virhe. {0}ssa ei ole sanastoja valitulle kielelle." + +#: extra/SpellChecker/wx_ui.py:79 +#: extra/autocompletionUsers/mastodon/wx_scan.py:44 +#: wxUI/commonMessageDialogs.py:23 wxUI/commonMessageDialogs.py:36 +#: wxUI/commonMessageDialogs.py:45 wxUI/commonMessageDialogs.py:52 +#: wxUI/commonMessageDialogs.py:55 wxUI/commonMessageDialogs.py:61 +#: wxUI/dialogs/mastodon/dialogs.py:38 wxUI/dialogs/mastodon/dialogs.py:43 +#: wxUI/dialogs/mastodon/dialogs.py:48 wxUI/dialogs/mastodon/dialogs.py:53 +#: wxUI/dialogs/mastodon/dialogs.py:60 +msgid "Error" +msgstr "Virhe" + +#: extra/SpellChecker/wx_ui.py:82 +msgid "Spell check complete." +msgstr "Oikeinkirjoituksen tarkistus suoritettu." + +#: extra/autocompletionUsers/completion.py:39 +#: extra/autocompletionUsers/completion.py:57 +msgid "You have to start writing" +msgstr "" + +# | msgid "There are no coordinates in this tweet" +#: extra/autocompletionUsers/completion.py:49 +#: extra/autocompletionUsers/completion.py:66 +#, fuzzy +msgid "There are no results in your users database" +msgstr "Tässä twiitissä ei ole koordinaatteja" + +#: extra/autocompletionUsers/completion.py:51 +#, fuzzy +msgid "Autocompletion only works for users." +msgstr "Täydennä käyttäjät &automaattisesti" + +#: extra/autocompletionUsers/wx_manage.py:9 +#, fuzzy +msgid "Manage Autocompletion database" +msgstr "Automaattisen täydennyksen tietokannan hallinta" + +#: extra/autocompletionUsers/wx_manage.py:12 +#, fuzzy, python-brace-format +msgid "Editing {0} users database" +msgstr "Muokataan {0}n käyttäjätietokantaa" + +#: extra/autocompletionUsers/wx_manage.py:13 +#, fuzzy +msgid "Username" +msgstr "Käyttäjä" + +#: extra/autocompletionUsers/wx_manage.py:13 wxUI/dialogs/configuration.py:108 +msgid "Name" +msgstr "Nimi" + +#: extra/autocompletionUsers/wx_manage.py:16 +#, fuzzy +msgid "Add user" +msgstr "Käyttäjä" + +#: extra/autocompletionUsers/wx_manage.py:17 +#, fuzzy +msgid "Remove user" +msgstr "Poista käyttäjä" + +#: extra/autocompletionUsers/wx_manage.py:38 +msgid "Twitter username" +msgstr "" + +#: extra/autocompletionUsers/wx_manage.py:38 +msgid "Add user to database" +msgstr "" + +#: extra/autocompletionUsers/wx_manage.py:44 +#, fuzzy +msgid "The user does not exist" +msgstr "Käyttäjää ei ole" + +#: extra/autocompletionUsers/wx_manage.py:44 +#, fuzzy +msgid "Error!" +msgstr "Virhe" + +#: extra/autocompletionUsers/mastodon/scan.py:49 +msgid "" +"Updating database... You can close this window now. A message will tell " +"you when the process finishes." +msgstr "" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:8 +#, fuzzy +msgid "Autocomplete users' settings" +msgstr "Täydennä käyttäjät &automaattisesti" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:11 +msgid "Add &followers to database" +msgstr "" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:12 +msgid "Add f&ollowing to database" +msgstr "" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:26 +#, fuzzy +msgid "Updating autocompletion database" +msgstr "Automaattisen täydennyksen tietokannan hallinta" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:34 +msgid "" +"This process will retrieve the users you selected from your Mastodon " +"account, and add them to the user autocomplete database. Please note that" +" if there are many users or you have tried to perform this action less " +"than 15 minutes ago, TWBlue may reach a limit in API calls when trying to" +" load the users into the database. If this happens, we will show you an " +"error, in which case you will have to try this process again in a few " +"minutes. If this process ends with no error, you will be redirected back " +"to the account settings dialog. Do you want to continue?" +msgstr "" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:34 +#: wxUI/commonMessageDialogs.py:20 +msgid "Attention" +msgstr "Huomio" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:40 +#, python-brace-format +msgid "TWBlue has imported {} users successfully." +msgstr "" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:40 +#, fuzzy +msgid "Done" +msgstr "Valmis!" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:44 +msgid "Error adding users from Mastodon. Please try again in about 15 minutes." +msgstr "" + +#: extra/ocr/OCRSpace.py:7 +msgid "Detect automatically" +msgstr "Tunnista automaattisesti" + +#: extra/ocr/OCRSpace.py:7 +msgid "Danish" +msgstr "tanska" + +#: extra/ocr/OCRSpace.py:7 +msgid "Dutch" +msgstr "hollanti" + +#: extra/ocr/OCRSpace.py:7 +msgid "English" +msgstr "englanti" + +#: extra/ocr/OCRSpace.py:7 +msgid "Finnish" +msgstr "suomi" + +#: extra/ocr/OCRSpace.py:7 +msgid "French" +msgstr "ranska" + +#: extra/ocr/OCRSpace.py:7 +msgid "German" +msgstr "saksa" + +#: extra/ocr/OCRSpace.py:7 +msgid "Hungarian" +msgstr "unkari" + +#: extra/ocr/OCRSpace.py:7 +msgid "Korean" +msgstr "korea" + +#: extra/ocr/OCRSpace.py:7 +msgid "Italian" +msgstr "italia" + +#: extra/ocr/OCRSpace.py:7 +msgid "Japanese" +msgstr "japani" + +#: extra/ocr/OCRSpace.py:7 +msgid "Polish" +msgstr "puola" + +#: extra/ocr/OCRSpace.py:7 +msgid "Portuguese" +msgstr "portugali" + +#: extra/ocr/OCRSpace.py:7 +msgid "Russian" +msgstr "venäjä" + +#: extra/ocr/OCRSpace.py:7 +msgid "Spanish" +msgstr "espanja" + +#: extra/ocr/OCRSpace.py:7 +msgid "Turkish" +msgstr "turkki" + +#: extra/translator/wx_ui.py:25 +msgid "Translate message" +msgstr "Käännä viesti" + +#: extra/translator/wx_ui.py:29 +#, fuzzy +msgid "Translation engine" +msgstr "Käännetty" + +#: extra/translator/wx_ui.py:32 +msgid "Target language" +msgstr "Kohdekieli" + +#: keystrokeEditor/wx_ui.py:8 +msgid "Keystroke editor" +msgstr "Näppäinkomentojen muokkain" + +#: keystrokeEditor/wx_ui.py:11 +msgid "Select a keystroke to edit" +msgstr "Valitse muokattava näppäinkomento" + +#: keystrokeEditor/wx_ui.py:12 +#: wxUI/dialogs/mastodon/filters/manage_filters.py:18 +#: wxUI/dialogs/mastodon/userActions.py:9 +#: wxUI/dialogs/mastodon/userActions.py:18 +#: wxUI/dialogs/mastodon/userActions.py:19 +msgid "Action" +msgstr "Toiminto" + +#: keystrokeEditor/wx_ui.py:12 +msgid "Keystroke" +msgstr "Näppäinkomento" + +#: keystrokeEditor/wx_ui.py:17 +#: wxUI/dialogs/mastodon/filters/manage_filters.py:23 +#: wxUI/dialogs/userAliasDialogs.py:53 +msgid "Edit" +msgstr "Muokkaa" + +#: keystrokeEditor/wx_ui.py:19 keystrokeEditor/wx_ui.py:49 +#, fuzzy +msgid "Undefine keystroke" +msgstr "Muokataan näppäinkomentoa" + +#: keystrokeEditor/wx_ui.py:20 +msgid "Execute action" +msgstr "Suorita toiminto" + +#: keystrokeEditor/wx_ui.py:21 wxUI/dialogs/userAliasDialogs.py:25 +msgid "Close" +msgstr "Sulje" + +#: keystrokeEditor/wx_ui.py:41 +msgid "Undefined" +msgstr "" + +#: keystrokeEditor/wx_ui.py:49 +#, fuzzy +msgid "Are you sure you want to undefine this keystroke?" +msgstr "Haluatko varmasti poistaa tämän listan?" + +#: keystrokeEditor/wx_ui.py:53 +msgid "Editing keystroke" +msgstr "Muokataan näppäinkomentoa" + +#: keystrokeEditor/wx_ui.py:56 +msgid "Control" +msgstr "Control" + +#: keystrokeEditor/wx_ui.py:57 +msgid "Alt" +msgstr "Alt" + +#: keystrokeEditor/wx_ui.py:58 +msgid "Shift" +msgstr "Shift" + +#: keystrokeEditor/wx_ui.py:59 +msgid "Windows" +msgstr "Windows" + +#: keystrokeEditor/wx_ui.py:65 +msgid "Key" +msgstr "Näppäin" + +#: keystrokeEditor/wx_ui.py:70 wxUI/dialogs/find.py:21 +#: wxUI/dialogs/mastodon/showUserProfile.py:31 +#: wxUI/dialogs/userAliasDialogs.py:23 +msgid "OK" +msgstr "OK" + +#: keystrokeEditor/wx_ui.py:83 +msgid "You need to use the Windows key" +msgstr "Sinun on käytettävä Windows-näppäintä" + +#: keystrokeEditor/wx_ui.py:83 keystrokeEditor/wx_ui.py:86 +msgid "Invalid keystroke" +msgstr "Virheellinen näppäinkomento" + +#: keystrokeEditor/wx_ui.py:86 +msgid "You must provide a character for the keystroke" +msgstr "Sinun on annettava jokin merkki näppäinkomennolle" + +#: keystrokeEditor/actions/mastodon.py:3 +msgid "Go up in the current buffer" +msgstr "Siirry ylöspäin nykyisessä puskurissa" + +#: keystrokeEditor/actions/mastodon.py:4 +msgid "Go down in the current buffer" +msgstr "Siirry alaspäin nykyisessä puskurissa" + +#: keystrokeEditor/actions/mastodon.py:5 +msgid "Go to the previous buffer" +msgstr "Siirry edelliseen puskuriin" + +#: keystrokeEditor/actions/mastodon.py:6 +msgid "Go to the next buffer" +msgstr "Siirry seuraavaan puskuriin" + +#: keystrokeEditor/actions/mastodon.py:7 +msgid "Focus the next session" +msgstr "Siirry seuraavaan istuntoon" + +#: keystrokeEditor/actions/mastodon.py:8 +msgid "Focus the previous session" +msgstr "Siirry edelliseen istuntoon" + +#: keystrokeEditor/actions/mastodon.py:9 +msgid "Show or hide the GUI" +msgstr "Näytä tai piilota graafinen käyttöliittymä" + +# | msgid "Create a new list" +#: keystrokeEditor/actions/mastodon.py:10 +#, fuzzy +msgid "Make a new post" +msgstr "Luo uusi" + +#: keystrokeEditor/actions/mastodon.py:11 wxUI/buffers/mastodon/base.py:26 +#: wxUI/buffers/mastodon/conversationList.py:25 +msgid "Reply" +msgstr "Vastaa" + +#: keystrokeEditor/actions/mastodon.py:12 wxUI/buffers/mastodon/base.py:25 +#: wxUI/dialogs/mastodon/dialogs.py:7 +msgid "Boost" +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:13 +msgid "Send direct message" +msgstr "Lähetä yksityisviesti" + +#: keystrokeEditor/actions/mastodon.py:14 +msgid "Add post to favorites" +msgstr "" + +# | msgid "Remove from list" +#: keystrokeEditor/actions/mastodon.py:15 +#, fuzzy +msgid "Remove post from favorites" +msgstr "Poista listalta" + +#: keystrokeEditor/actions/mastodon.py:16 +msgid "Add/remove post from favorites" +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:17 +msgid "Open the user actions dialogue" +msgstr "Avaa käyttäjätoimintojen valintaikkuna" + +#: keystrokeEditor/actions/mastodon.py:18 +#, fuzzy +msgid "See user details" +msgstr "Poista käyttäjä" + +# | msgid "Show tweet" +#: keystrokeEditor/actions/mastodon.py:19 +#, fuzzy +msgid "Show post" +msgstr "Näytä twiitti" + +#: keystrokeEditor/actions/mastodon.py:20 +msgid "Quit" +msgstr "Lopeta" + +#: keystrokeEditor/actions/mastodon.py:21 +msgid "Open user timeline" +msgstr "Avaa käyttäjän aikajana" + +#: keystrokeEditor/actions/mastodon.py:22 +msgid "Destroy buffer" +msgstr "Poista puskuri" + +# | msgid "Interact with the currently focused tweet." +#: keystrokeEditor/actions/mastodon.py:23 +#, fuzzy +msgid "Interact with the currently focused post." +msgstr "Ole vuorovaikutuksessa tällä hetkellä aktiivisena olevan twiitin kanssa." + +#: keystrokeEditor/actions/mastodon.py:24 +msgid "Open URL" +msgstr "Avaa URL" + +# | msgid "View in Twitter" +#: keystrokeEditor/actions/mastodon.py:25 +#, fuzzy +msgid "View in browser" +msgstr "Näytä Twitterissä" + +#: keystrokeEditor/actions/mastodon.py:26 +msgid "Increase volume by 5%" +msgstr "Lisää äänenvoimakkuutta 5%" + +#: keystrokeEditor/actions/mastodon.py:27 +msgid "Decrease volume by 5%" +msgstr "Vähennä äänenvoimakkuutta 5%" + +#: keystrokeEditor/actions/mastodon.py:28 +msgid "Jump to the first element of a buffer" +msgstr "Siirry puskurin ensimmäiseen kohteeseen" + +#: keystrokeEditor/actions/mastodon.py:29 +msgid "Jump to the last element of the current buffer" +msgstr "Siirry puskurin viimeiseen kohteeseen" + +#: keystrokeEditor/actions/mastodon.py:30 +msgid "Jump 20 elements up in the current buffer" +msgstr "Siirry 20 kohdetta ylöspäin nykyisessä puskurissa" + +#: keystrokeEditor/actions/mastodon.py:31 +msgid "Jump 20 elements down in the current buffer" +msgstr "Siirry 20 kohdetta alaspäin nykyisessä puskurissa" + +# | msgid "Delete" +#: keystrokeEditor/actions/mastodon.py:33 +#, fuzzy +msgid "Delete post" +msgstr "Poista" + +#: keystrokeEditor/actions/mastodon.py:34 +msgid "Empty the current buffer" +msgstr "Tyhjennä nykyinen puskuri" + +#: keystrokeEditor/actions/mastodon.py:35 +msgid "Repeat last item" +msgstr "Toista viimeisin kohde" + +#: keystrokeEditor/actions/mastodon.py:36 +msgid "Copy to clipboard" +msgstr "Kopioi leikepöydälle" + +#: keystrokeEditor/actions/mastodon.py:39 +msgid "Mute/unmute the active buffer" +msgstr "Ota käyttöön aktiivisen puskurin hiljennys tai poista se käytöstä" + +#: keystrokeEditor/actions/mastodon.py:40 +msgid "Mute/unmute the current session" +msgstr "Ota käyttöön nykyisen istunnon yleishiljennys tai poista se käytöstä" + +#: keystrokeEditor/actions/mastodon.py:41 +msgid "toggle the automatic reading of incoming tweets in the active buffer" +msgstr "" +"Ota käyttöön aktiivisen puskurin saapuvien twiittien automaattinen " +"lukeminen tai poista se käytöstä" + +# | msgid "Search on twitter" +#: keystrokeEditor/actions/mastodon.py:42 +#, fuzzy +msgid "Search on instance" +msgstr "Etsi Twitteristä" + +#: keystrokeEditor/actions/mastodon.py:43 +msgid "Find a string in the currently focused buffer" +msgstr "Etsi merkkijonoa tällä hetkellä aktiivisena olevasta puskurista" + +#: keystrokeEditor/actions/mastodon.py:44 +msgid "Show the keystroke editor" +msgstr "Näytä näppäinkomentojen muokkain" + +#: keystrokeEditor/actions/mastodon.py:46 +msgid "load previous items" +msgstr "Lataa edelliset kohteet" + +#: keystrokeEditor/actions/mastodon.py:48 +msgid "View conversation" +msgstr "Näytä keskustelu" + +#: keystrokeEditor/actions/mastodon.py:49 +msgid "Check and download updates" +msgstr "Tarkista ja lataa päivitykset" + +#: keystrokeEditor/actions/mastodon.py:50 +msgid "Opens the global settings dialogue" +msgstr "Avaa yleisasetusten valintaikkunan" + +#: keystrokeEditor/actions/mastodon.py:52 +msgid "Opens the account settings dialogue" +msgstr "Avaa tiliasetusten valintaikkunan" + +# | msgid "Try to play an audio file" +#: keystrokeEditor/actions/mastodon.py:53 +#, fuzzy +msgid "Try to play a media file" +msgstr "Yritä toistaa äänitiedosto" + +#: keystrokeEditor/actions/mastodon.py:54 +msgid "Updates the buffer and retrieves possible lost items there." +msgstr "Päivittää puskurin ja hakee sen mahdollisesti kadonneet kohteet." + +#: keystrokeEditor/actions/mastodon.py:55 +msgid "Extracts the text from a picture and displays the result in a dialog." +msgstr "Poimii kuvasta tekstin ja näyttää lopputuloksen valintaikkunassa." + +#: keystrokeEditor/actions/mastodon.py:56 +#, fuzzy +msgid "Adds an alias to an user" +msgstr "Valitse lista, johon käyttäjä lisätään" + +#: sessionmanager/sessionManager.py:69 +#, python-brace-format +msgid "{account_name}@{instance} (Mastodon)" +msgstr "" + +#: sessionmanager/wxUI.py:11 +msgid "Session manager" +msgstr "Istunnonhallinta" + +#: sessionmanager/wxUI.py:14 +msgid "Accounts list" +msgstr "Tilit" + +#: sessionmanager/wxUI.py:16 +msgid "Account" +msgstr "Tili" + +#: sessionmanager/wxUI.py:20 +msgid "New account" +msgstr "Uusi tili" + +#: sessionmanager/wxUI.py:22 sessionmanager/wxUI.py:79 +msgid "Remove account" +msgstr "Poista tili" + +#: sessionmanager/wxUI.py:24 +msgid "Global Settings" +msgstr "Yleisasetukset" + +#: sessionmanager/wxUI.py:48 +msgid "You need to configure an account." +msgstr "Sinun on määritettävä tili." + +#: sessionmanager/wxUI.py:48 +msgid "Account Error" +msgstr "Tilivirhe" + +#: sessionmanager/wxUI.py:54 +msgid "Mastodon" +msgstr "" + +#: sessionmanager/wxUI.py:59 +msgid "" +"You will be prompted for your Mastodon data (instance URL, email address " +"and password) so we can authorise TWBlue in your instance. Would you like" +" to authorise your account now?" +msgstr "" + +#: sessionmanager/wxUI.py:59 +msgid "Authorization" +msgstr "Valtuutus" + +#: sessionmanager/wxUI.py:67 +#, python-format +msgid "Authorized account %d" +msgstr "Valtuutettu tili %d" + +#: sessionmanager/wxUI.py:73 +msgid "" +"Your access token is invalid or the authorization has failed. Please try " +"again." +msgstr "" +"Pääsytunnisteesi on virheellinen tai valtuutus epäonnistui. Yritä " +"uudelleen." + +#: sessionmanager/wxUI.py:73 +msgid "Invalid user token" +msgstr "Virheellinen käyttäjätunniste" + +#: sessionmanager/wxUI.py:79 +msgid "Do you really want to delete this account?" +msgstr "Haluatko varmasti poistaa tämän tilin?" + +#: sessions/base.py:125 +#, python-brace-format +msgid "" +"An exception occurred while saving the {app} database. It will be deleted" +" and rebuilt automatically. If this error persists, send the error log to" +" the {app} developers." +msgstr "" + +#: sessions/base.py:165 +#, python-brace-format +msgid "" +"An exception occurred while loading the {app} database. It will be " +"deleted and rebuilt automatically. If this error persists, send the error" +" log to the {app} developers." +msgstr "" + +# | msgid "dddd, MMMM D, YYYY H:m:s" +#: sessions/mastodon/compose.py:15 sessions/mastodon/compose.py:61 +#, fuzzy +msgid "dddd, MMMM D, YYYY H:m" +msgstr "dddd, D. MMMMta YYYY HH:mm:ss" + +# | msgid "{0}. Quoted tweet from @{1}: {2}" +#: sessions/mastodon/compose.py:17 sessions/mastodon/templates.py:74 +#: sessions/mastodon/templates.py:75 +#, fuzzy, python-brace-format +msgid "Boosted from @{}: {}" +msgstr "{0}. Lainattu twiitti käyttäjältä @{1}: {2}" + +#: sessions/mastodon/compose.py:22 sessions/mastodon/compose.py:81 +#: sessions/mastodon/templates.py:81 sessions/mastodon/templates.py:176 +#, python-brace-format +msgid "hidden by filter {}" +msgstr "" + +#: sessions/mastodon/compose.py:36 sessions/mastodon/templates.py:28 +msgid "dddd, MMMM D, YYYY H:m:s" +msgstr "dddd, D. MMMMta YYYY HH:mm:ss" + +# | msgid "" +# | "%s (@%s). %s followers, %s friends, %s tweets. Last tweeted %s. Joined " +# | "Twitter %s" +#: sessions/mastodon/compose.py:38 +#, fuzzy, python-format +msgid "%s (@%s). %s followers, %s following, %s posts. Joined %s" +msgstr "" +"%s (@%s). %s seuraajaa, %s kaveria, %s twiittiä. Twiitannut viimeksi %s. " +"Liittynyt Twitteriin %s." + +#: sessions/mastodon/compose.py:49 +#, python-brace-format +msgid "Last message from {}: {}" +msgstr "" + +# | msgid "{username}'s followers" +#: sessions/mastodon/compose.py:64 +#, fuzzy, python-brace-format +msgid "{username} has posted: {status}" +msgstr "Käyttäjän {username} seuraajat" + +# | msgid "{username}'s followers" +#: sessions/mastodon/compose.py:66 +#, fuzzy, python-brace-format +msgid "{username} has mentioned you: {status}" +msgstr "Käyttäjän {username} seuraajat" + +#: sessions/mastodon/compose.py:68 +#, python-brace-format +msgid "{username} has boosted: {status}" +msgstr "" + +#: sessions/mastodon/compose.py:70 +#, python-brace-format +msgid "{username} has added to favorites: {status}" +msgstr "" + +# | msgid "{username}'s followers" +#: sessions/mastodon/compose.py:72 +#, fuzzy, python-brace-format +msgid "{username} has followed you." +msgstr "Käyttäjän {username} seuraajat" + +# | msgid "{username}'s followers" +#: sessions/mastodon/compose.py:74 +#, fuzzy, python-brace-format +msgid "{username} has joined the instance." +msgstr "Käyttäjän {username} seuraajat" + +#: sessions/mastodon/compose.py:76 sessions/mastodon/templates.py:171 +#, python-brace-format +msgid "A poll in which you have voted has expired: {status}" +msgstr "" + +# | msgid "{username}'s followers" +#: sessions/mastodon/compose.py:78 +#, fuzzy, python-brace-format +msgid "{username} wants to follow you." +msgstr "Käyttäjän {username} seuraajat" + +#: sessions/mastodon/session.py:69 +msgid "Please enter your instance URL." +msgstr "" + +#: sessions/mastodon/session.py:69 +msgid "Mastodon instance" +msgstr "" + +#: sessions/mastodon/session.py:80 +msgid "" +"We could not connect to your mastodon instance. Please verify that the " +"domain exists and the instance is accessible via a web browser." +msgstr "" + +# | msgid "&Report an error" +#: sessions/mastodon/session.py:80 +#, fuzzy +msgid "Instance error" +msgstr "&Ilmoita virheestä" + +#: sessions/mastodon/session.py:85 +msgid "Enter the verification code" +msgstr "" + +# | msgid "Authorization" +#: sessions/mastodon/session.py:85 +#, fuzzy +msgid "PIN code authorization" +msgstr "Valtuutus" + +#: sessions/mastodon/session.py:94 +msgid "" +"We could not authorice your mastodon account to be used in TWBlue. This " +"might be caused due to an incorrect verification code. Please try to add " +"the session again." +msgstr "" + +# | msgid "Authorization" +#: sessions/mastodon/session.py:94 +#, fuzzy +msgid "Authorization error" +msgstr "Valtuutus" + +#: sessions/mastodon/session.py:215 +#, python-format +msgid "%s succeeded." +msgstr "%s onnistui." + +#: sessions/mastodon/templates.py:18 +msgid "$display_name, $text $image_descriptions $date. $source" +msgstr "" + +#: sessions/mastodon/templates.py:19 +msgid "Dm to $recipient_display_name, $text $date" +msgstr "" + +#: sessions/mastodon/templates.py:20 +msgid "" +"$display_name (@$screen_name). $followers followers, $following " +"following, $posts posts. Joined $created_at." +msgstr "" + +#: sessions/mastodon/templates.py:21 +msgid "$display_name $text, $date" +msgstr "" + +#: sessions/mastodon/templates.py:34 +#, python-brace-format +msgid "Content warning: {}" +msgstr "" + +#: sessions/mastodon/templates.py:45 +#, fuzzy, python-brace-format +msgid "Media description: {}" +msgstr "Kuvan kuvaus" + +# | msgid "Followers" +#: sessions/mastodon/templates.py:82 wxUI/dialogs/mastodon/postDialogs.py:49 +#, fuzzy +msgid "Followers only" +msgstr "Seuraajat" + +#: sessions/mastodon/templates.py:94 +#, fuzzy +msgid "Pinned." +msgstr "Kopioitu" + +#: sessions/mastodon/templates.py:157 +#, python-brace-format +msgid "has posted: {status}" +msgstr "" + +#: sessions/mastodon/templates.py:159 +#, python-brace-format +msgid "has mentioned you: {status}" +msgstr "" + +#: sessions/mastodon/templates.py:161 +#, python-brace-format +msgid "has boosted: {status}" +msgstr "" + +#: sessions/mastodon/templates.py:163 +#, python-brace-format +msgid "has added to favorites: {status}" +msgstr "" + +#: sessions/mastodon/templates.py:165 +#, python-brace-format +msgid "has updated a status: {status}" +msgstr "" + +# | msgid "{0} is following you." +#: sessions/mastodon/templates.py:167 +#, fuzzy +msgid "has followed you." +msgstr "{0} seuraa sinua." + +# | msgid "Remove client" +#: sessions/mastodon/templates.py:169 +#, fuzzy +msgid "has joined the instance." +msgstr "Poista" + +# | msgid "{0} is following you." +#: sessions/mastodon/templates.py:173 +#, fuzzy +msgid "wants to follow you." +msgstr "{0} seuraa sinua." + +#: update/utils.py:29 +#, python-format +msgid "%d day, " +msgstr "%d päivä, " + +#: update/utils.py:31 +#, python-format +msgid "%d days, " +msgstr "%d päivää, " + +#: update/utils.py:33 +#, python-format +msgid "%d hour, " +msgstr "%d tunti, " + +#: update/utils.py:35 +#, python-format +msgid "%d hours, " +msgstr "%d tuntia, " + +#: update/utils.py:37 +#, python-format +msgid "%d minute, " +msgstr "%d minuutti, " + +#: update/utils.py:39 +#, python-format +msgid "%d minutes, " +msgstr "%d minuuttia, " + +#: update/utils.py:41 +#, python-format +msgid "%s second" +msgstr "%s sekunti" + +#: update/utils.py:43 +#, python-format +msgid "%s seconds" +msgstr "%s sekuntia" + +#: update/wxUpdater.py:11 +#, python-format +msgid "" +"There's a new %s version available, released on %s. Would you like to " +"download it now?\n" +"\n" +" %s version: %s\n" +"\n" +"Changes:\n" +"%s" +msgstr "" +"%ssta on saatavilla uusi versio, joka on julkaistu %s. Haluatko ladata " +"sen nyt?\n" +"\n" +" %sn versio: %s\n" +"\n" +"Muutokset:\n" +"%s" + +# | msgid "" +# | "There's a new %s version available, released on %s. Would you like to " +# | "download it now?\n" +# | "\n" +# | " %s version: %s\n" +# | "Changes:\n" +# | "%s" +#: update/wxUpdater.py:14 +#, fuzzy, python-format +msgid "" +"There's a new %s version available, released on %s. Updates are not " +"automatic in Windows 7, so you would need to visit TWBlue's download " +"website to get the latest version.\n" +"\n" +" %s version: %s\n" +"\n" +"Changes:\n" +"%s" +msgstr "" +"%ssta on saatavilla uusi versio, joka on julkaistu %s. Haluatko ladata " +"sen nyt?\n" +"\n" +" %sn versio: %s\n" +"\n" +"Muutokset:\n" +"%s" + +#: update/wxUpdater.py:16 +#, python-format +msgid "New version for %s" +msgstr "Uusi %sn versio" + +#: update/wxUpdater.py:23 +msgid "Download in Progress" +msgstr "Lataus käynnissä" + +#: update/wxUpdater.py:23 +msgid "Downloading the new version..." +msgstr "Ladataan uutta versiota..." + +#: update/wxUpdater.py:33 +#, python-format +msgid "Updating... %s of %s" +msgstr "Päivitetään... %s / %s" + +#: update/wxUpdater.py:36 +msgid "" +"The update has been downloaded and installed successfully. Press OK to " +"continue." +msgstr "Päivitys on ladattu ja asennettu onnistuneesti. Jatka painamalla OK." + +#: update/wxUpdater.py:36 +msgid "Done!" +msgstr "Valmis!" + +#: wxUI/commonMessageDialogs.py:6 +#, python-brace-format +msgid "Do you really want to close {0}?" +msgstr "Haluatko varmasti sulkea {0}n?" + +#: wxUI/commonMessageDialogs.py:6 +msgid "Exit" +msgstr "Lopeta" + +#: wxUI/commonMessageDialogs.py:10 +#, python-brace-format +msgid " {0} must be restarted for these changes to take effect." +msgstr "{0} on käynnistettävä uudelleen, jotta muutokset tulevat voimaan." + +#: wxUI/commonMessageDialogs.py:10 +#, python-brace-format +msgid "Restart {0} " +msgstr "Käynnistä {0} uudelleen" + +#: wxUI/commonMessageDialogs.py:13 +msgid "" +"Are you sure you want to delete this user from the database? This user " +"will not appear in autocomplete results anymore." +msgstr "" +"Haluatko varmasti poistaa tämän käyttäjän tietokannasta? Käyttäjä ei näy " +"poiston jälkeen enää automaattisen täydennyksen tuloksissa." + +#: wxUI/commonMessageDialogs.py:13 +msgid "Confirm" +msgstr "Vahvista" + +#: wxUI/commonMessageDialogs.py:16 +msgid "" +"Do you really want to empty this buffer? It's items will be removed from" +" the list but not from Twitter" +msgstr "" +"Haluatko varmasti tyhjentää tämän puskurin? Sen twiitit poistetaan " +"listalta, mutta ei Twitteristä." + +#: wxUI/commonMessageDialogs.py:16 wxUI/dialogs/mastodon/dialogs.py:31 +msgid "Empty buffer" +msgstr "Tyhjennä puskuri" + +#: wxUI/commonMessageDialogs.py:20 +msgid "Do you really want to destroy this buffer?" +msgstr "Haluatko varmasti poistaa tämän puskurin?" + +#: wxUI/commonMessageDialogs.py:23 +msgid "That user does not exist" +msgstr "Käyttäjää ei ole" + +#: wxUI/commonMessageDialogs.py:26 +msgid "A timeline for this user already exists. You can't open another" +msgstr "Tälle käyttäjälle on jo aikajana. Et voi avata toista." + +#: wxUI/commonMessageDialogs.py:26 +msgid "Existing timeline" +msgstr "Nykyinen aikajana" + +#: wxUI/commonMessageDialogs.py:29 +#, python-brace-format +msgid "" +"If you like {0} we need your help to keep it going. Help us by donating " +"to the project. This will help us pay for the server, the domain and some" +" other things to ensure that {0} will be actively maintained. Your " +"donation will give us the means to continue the development of {0}, and " +"to keep {0} free. Would you like to donate now?" +msgstr "" +"Tarvitsemme apuasi voidaksemme jatkaa {0}n kehitystä. Jos tämä sovellus " +"on mielestäsi hyödyllinen, harkitse lahjoituksen tekemistä. Lahjoituksesi" +" avulla voimme maksaa palvelimen ylläpidon, verkkodomainin sekä muut " +"asiat, joilla varmistamme {0}n aktiivisen kehityksen jatkumisen sekä " +"sovelluksen ilmaisen jakelun tulevaisuudessakin. Haluatko lahjoittaa nyt?" + +#: wxUI/commonMessageDialogs.py:29 +msgid "We need your help" +msgstr "Tarvitsemme apuasi" + +#: wxUI/commonMessageDialogs.py:33 wxUI/dialogs/mastodon/postDialogs.py:207 +msgid "Information" +msgstr "Tietoja" + +#: wxUI/commonMessageDialogs.py:36 +msgid "The configuration file is invalid." +msgstr "" + +#: wxUI/commonMessageDialogs.py:39 +#, python-brace-format +msgid "" +"{0} quit unexpectedly the last time it was run. If the problem persists, " +"please report it to the {0} developers." +msgstr "" +"{0} sulkeutui odottamattomasti edellisellä käyttökerralla. Jos ongelma " +"jatkuu, ole hyvä ja ilmoita siitä {0}n kehittäjille." + +#: wxUI/commonMessageDialogs.py:39 +msgid "Warning" +msgstr "Varoitus" + +#: wxUI/commonMessageDialogs.py:45 +#, python-brace-format +msgid "Sorry, you can't update while running {} from source." +msgstr "" + +#: wxUI/commonMessageDialogs.py:49 +msgid "the provided instance is invalid. Please try again." +msgstr "" + +#: wxUI/commonMessageDialogs.py:49 +#, fuzzy +msgid "Invalid instance" +msgstr "Virheellinen näppäinkomento" + +#: wxUI/commonMessageDialogs.py:52 +msgid "" +"TWBlue was unable to add or update the filter with the specified " +"settings. Please try again." +msgstr "" + +#: wxUI/commonMessageDialogs.py:55 +msgid "" +"TWBlue was unable to load your filters from the instance. Please try " +"again." +msgstr "" + +#: wxUI/commonMessageDialogs.py:58 +#, fuzzy +msgid "Do you really want to delete this filter ?" +msgstr "Haluatko varmasti poistaa tämän tilin?" + +#: wxUI/commonMessageDialogs.py:58 +#, fuzzy +msgid "Delete filter" +msgstr "Luo &suodatin" + +#: wxUI/commonMessageDialogs.py:61 +msgid "TWBlue was unable to remove the filter you specified. Please try again." +msgstr "" + +#: wxUI/sysTrayIcon.py:36 wxUI/view.py:25 +msgid "&Global settings" +msgstr "&Yleisasetukset" + +#: wxUI/sysTrayIcon.py:37 wxUI/view.py:24 +msgid "Account se&ttings" +msgstr "Tilin &asetukset" + +#: wxUI/sysTrayIcon.py:39 +msgid "&Show / hide" +msgstr "&Näytä / piilota" + +#: wxUI/sysTrayIcon.py:40 wxUI/view.py:74 +msgid "&Documentation" +msgstr "&Ohje" + +#: wxUI/sysTrayIcon.py:41 +msgid "Check for &updates" +msgstr "Tark&ista päivitykset" + +#: wxUI/sysTrayIcon.py:42 +msgid "&Exit" +msgstr "&Lopeta" + +#: wxUI/view.py:16 +msgid "&Manage accounts" +msgstr "Tilien &hallinta" + +#: wxUI/view.py:17 +msgid "&Update profile" +msgstr "&Päivitä profiili" + +#: wxUI/view.py:18 +msgid "&Hide window" +msgstr "&Piilota ikkuna" + +#: wxUI/view.py:20 +msgid "&Lists manager" +msgstr "&Listojen hallinta" + +#: wxUI/view.py:23 +msgid "&Edit keystrokes" +msgstr "&Muokkaa näppäinkomentoja" + +#: wxUI/view.py:26 +msgid "E&xit" +msgstr "&Lopeta" + +# | msgid "Remove from list" +#: wxUI/view.py:34 +#, fuzzy +msgid "&Remove from favorites" +msgstr "Poista listalta" + +#: wxUI/view.py:47 +msgid "&Add to list" +msgstr "&Lisää listalle" + +#: wxUI/view.py:48 +msgid "R&emove from list" +msgstr "&Poista listalta" + +#: wxUI/view.py:49 +msgid "Show user &profile" +msgstr "Näytä käyttäjän p&rofiili" + +#: wxUI/view.py:50 +msgid "V&iew likes" +msgstr "&Näytä tykkäykset" + +#: wxUI/view.py:54 +msgid "&Update buffer" +msgstr "&Päivitä puskuri" + +#: wxUI/dialogs/mastodon/communityTimeline.py:9 wxUI/view.py:55 +msgid "Create community timeline" +msgstr "" + +#: wxUI/view.py:56 +msgid "New &trending topics buffer..." +msgstr "Uusi &suosittujen aiheiden puskuri..." + +#: wxUI/view.py:59 +msgid "Find a string in the currently focused buffer..." +msgstr "Etsi merkkijonoa aktiivisesta puskurista..." + +#: wxUI/view.py:60 +msgid "&Load previous items" +msgstr "&Lataa edelliset kohteet" + +#: wxUI/dialogs/mastodon/userActions.py:21 wxUI/view.py:62 +msgid "&Mute" +msgstr "&Hiljennä" + +#: wxUI/view.py:63 +msgid "&Autoread" +msgstr "&Lue automaattisesti" + +#: wxUI/view.py:64 +msgid "&Clear buffer" +msgstr "&Tyhjennä puskuri" + +#: wxUI/view.py:65 +msgid "&Destroy" +msgstr "&Poista" + +#: wxUI/view.py:69 +msgid "&Seek back 5 seconds" +msgstr "Kelaa t&aaksepäin 5 sekuntia" + +#: wxUI/view.py:70 +msgid "&Seek forward 5 seconds" +msgstr "Kelaa &eteenpäin 5 sekuntia" + +#: wxUI/view.py:75 +msgid "Sounds &tutorial" +msgstr "Tutustu &ääniin" + +#: wxUI/view.py:76 +msgid "&What's new in this version?" +msgstr "&Mitä uutta tässä versiossa?" + +#: wxUI/view.py:77 +msgid "&Check for updates" +msgstr "&Tarkista päivitykset" + +#: wxUI/view.py:78 +msgid "&Report an error" +msgstr "&Ilmoita virheestä" + +#: wxUI/view.py:79 +#, python-brace-format +msgid "{0}'s &website" +msgstr "{0}n ve&rkkosivu" + +#: wxUI/view.py:80 +msgid "Get soundpacks for TWBlue" +msgstr "Hanki äänipaketteja TWBluelle" + +#: wxUI/view.py:81 +#, python-brace-format +msgid "About &{0}" +msgstr "&Tietoja {0}sta" + +#: wxUI/view.py:84 +msgid "&Application" +msgstr "&Sovellus" + +#: wxUI/view.py:85 +msgid "&Tweet" +msgstr "&Twiittaa" + +#: wxUI/dialogs/mastodon/userActions.py:10 wxUI/view.py:86 +msgid "&User" +msgstr "&Käyttäjä" + +#: wxUI/view.py:87 +msgid "&Buffer" +msgstr "&Puskuri" + +#: wxUI/view.py:88 +msgid "&Audio" +msgstr "&Audio" + +#: wxUI/view.py:89 +msgid "&Help" +msgstr "&Ohje" + +#: wxUI/view.py:175 +msgid "Address" +msgstr "Osoite" + +#: wxUI/view.py:206 +#, python-brace-format +msgid "Your {0} version is up to date" +msgstr "Käyttämäsi {0}n versio on ajan tasalla." + +#: wxUI/view.py:206 +msgid "Update" +msgstr "Päivitä" + +#: wxUI/buffers/panels.py:12 wxUI/buffers/panels.py:20 +msgid "Login" +msgstr "Kirjaudu sisään" + +#: wxUI/buffers/panels.py:14 +msgid "Log in automatically" +msgstr "Kirjaudu sisään automaattisesti" + +#: wxUI/buffers/panels.py:22 +msgid "Logout" +msgstr "Kirjaudu ulos" + +#: wxUI/buffers/mastodon/base.py:11 +#: wxUI/buffers/mastodon/conversationList.py:11 wxUI/buffers/mastodon/user.py:8 +#: wxUI/dialogs/mastodon/userTimeline.py:10 wxUI/dialogs/userAliasDialogs.py:14 +msgid "User" +msgstr "Käyttäjä" + +#: wxUI/buffers/mastodon/base.py:11 +#: wxUI/buffers/mastodon/conversationList.py:11 +#: wxUI/buffers/mastodon/notifications.py:11 +#: wxUI/dialogs/mastodon/postDialogs.py:37 +#: wxUI/dialogs/mastodon/postDialogs.py:272 +msgid "Text" +msgstr "Teksti" + +#: wxUI/buffers/mastodon/base.py:11 +#: wxUI/buffers/mastodon/conversationList.py:11 +#: wxUI/buffers/mastodon/notifications.py:11 +#: wxUI/dialogs/mastodon/postDialogs.py:216 +msgid "Date" +msgstr "Päiväys" + +#: wxUI/buffers/mastodon/base.py:11 +#: wxUI/buffers/mastodon/conversationList.py:11 +msgid "Client" +msgstr "Asiakasohjelma" + +#: wxUI/buffers/mastodon/base.py:27 +msgid "Favorite" +msgstr "" + +#: wxUI/buffers/mastodon/base.py:28 +msgid "Bookmark" +msgstr "" + +#: wxUI/buffers/mastodon/base.py:29 +msgid "Direct message" +msgstr "Yksityisviesti" + +#: wxUI/buffers/mastodon/notifications.py:23 +#: wxUI/dialogs/mastodon/dialogs.py:23 +msgid "Dismiss" +msgstr "" + +#: wxUI/buffers/mastodon/user.py:19 wxUI/dialogs/userAliasDialogs.py:48 +#, fuzzy +msgid "Actions" +msgstr "Toiminto" + +# | msgid "Direct Messages" +#: wxUI/buffers/mastodon/user.py:20 +#, fuzzy +msgid "Message" +msgstr "Yksityisviestit" + +#: wxUI/dialogs/configuration.py:15 +#, fuzzy +msgid "&Language" +msgstr "Kieli" + +#: wxUI/dialogs/configuration.py:22 +#, fuzzy, python-brace-format +msgid "&Ask before exiting {0}" +msgstr "Kysy vahvistus ennen {0}n lopettamista" + +#: wxUI/dialogs/configuration.py:24 +#, fuzzy +msgid "&Disable Streaming functions" +msgstr "Poista suoratoistotoiminnot käytöstä" + +#: wxUI/dialogs/configuration.py:27 +#, fuzzy +msgid "&Buffer update interval, in minutes" +msgstr "Puskurin päivittämisen aikaväli (minuutteina)" + +#: wxUI/dialogs/configuration.py:33 +#, fuzzy, python-brace-format +msgid "Pla&y a sound when {0} launches" +msgstr "Toista ääni {0}n käynnistyessä" + +#: wxUI/dialogs/configuration.py:35 +#, fuzzy, python-brace-format +msgid "Sp&eak a message when {0} launches" +msgstr "Ilmoita puheella, kun {0} käynnistyy" + +#: wxUI/dialogs/configuration.py:37 +#, fuzzy +msgid "&Use invisible interface's keyboard shortcuts while GUI is visible" +msgstr "" +"Käytä näkymättömän käyttöliittymän pikanäppäimiä graafisen " +"käyttöliittymän ollessa näkyvissä" + +#: wxUI/dialogs/configuration.py:39 +#, fuzzy +msgid "A&ctivate Sapi5 when any other screen reader is not being run" +msgstr "Käytä SAPI5:tä, kun ruudunlukuohjelma ei ole käytössä" + +#: wxUI/dialogs/configuration.py:41 +#, fuzzy +msgid "&Hide GUI on launch" +msgstr "Piilota graafinen käyttöliittymä käynnistettäessä" + +#: wxUI/dialogs/configuration.py:43 +msgid "&Read long posts in GUI" +msgstr "" + +#: wxUI/dialogs/configuration.py:46 +#, fuzzy +msgid "&Keymap" +msgstr "Näppäinkartta" + +#: wxUI/dialogs/configuration.py:51 +#, fuzzy, python-brace-format +msgid "Check for u&pdates when {0} launches" +msgstr "Tarkista päivitykset {0}n käynnistyessä" + +#: wxUI/dialogs/configuration.py:61 +#, fuzzy +msgid "Proxy &type: " +msgstr "Välityspalvelimen tyyppi: " + +#: wxUI/dialogs/configuration.py:68 +#, fuzzy +msgid "Proxy s&erver: " +msgstr "Välityspalvelin: " + +#: wxUI/dialogs/configuration.py:74 +#, fuzzy +msgid "&Port: " +msgstr "Portti: " + +#: wxUI/dialogs/configuration.py:80 +#, fuzzy +msgid "&User: " +msgstr "Käyttäjä: " + +#: wxUI/dialogs/configuration.py:86 +#, fuzzy +msgid "P&assword: " +msgstr "Salasana: " + +#: wxUI/dialogs/configuration.py:98 +#, fuzzy +msgid "Enable automatic s&peech feedback" +msgstr "Ota käyttöön automaattinen puhepalaute" + +#: wxUI/dialogs/configuration.py:100 +#, fuzzy +msgid "Enable automatic &Braille feedback" +msgstr "Ota käyttöön automaattinen pistekirjoituspalaute" + +#: wxUI/dialogs/configuration.py:108 +msgid "Buffer" +msgstr "Puskuri" + +#: wxUI/dialogs/configuration.py:108 +msgid "Status" +msgstr "Tila" + +#: wxUI/dialogs/configuration.py:111 +#, fuzzy +msgid "S&how/hide" +msgstr "Näytä/piilota" + +#: wxUI/dialogs/configuration.py:112 +#, fuzzy +msgid "Move &up" +msgstr "Siirrä ylös" + +#: wxUI/dialogs/configuration.py:113 +#, fuzzy +msgid "Move &down" +msgstr "Siirrä alas" + +#: wxUI/dialogs/configuration.py:123 wxUI/dialogs/configuration.py:188 +#: wxUI/dialogs/configuration.py:191 wxUI/dialogs/configuration.py:196 +msgid "Show" +msgstr "Näytä" + +#: wxUI/dialogs/configuration.py:125 wxUI/dialogs/configuration.py:135 +#: wxUI/dialogs/configuration.py:159 wxUI/dialogs/configuration.py:189 +msgid "Hide" +msgstr "Piilota" + +#: wxUI/dialogs/configuration.py:133 wxUI/dialogs/configuration.py:157 +msgid "Select a buffer first." +msgstr "Valitse ensin puskuri." + +#: wxUI/dialogs/configuration.py:136 wxUI/dialogs/configuration.py:160 +msgid "The buffer is hidden, show it first." +msgstr "Puskuri on piilotettu. Tuo se ensin näkyviin." + +#: wxUI/dialogs/configuration.py:139 +msgid "The buffer is already at the top of the list." +msgstr "Puskuri on jo listan ylimmäisenä." + +#: wxUI/dialogs/configuration.py:163 +msgid "The buffer is already at the bottom of the list." +msgstr "Puskuri on jo listan alimmaisena." + +#: wxUI/dialogs/configuration.py:205 +msgid "&LibreTranslate API URL: " +msgstr "" + +#: wxUI/dialogs/configuration.py:211 +msgid "LibreTranslate API &Key (optional): " +msgstr "" + +#: wxUI/dialogs/configuration.py:217 +msgid "&DeepL API Key: " +msgstr "" + +#: wxUI/dialogs/configuration.py:231 +#, python-brace-format +msgid "{0} preferences" +msgstr "{0}n asetukset" + +#: wxUI/dialogs/configuration.py:237 wxUI/dialogs/mastodon/configuration.py:144 +msgid "General" +msgstr "Yleiset" + +#: wxUI/dialogs/configuration.py:242 +msgid "Proxy" +msgstr "Välityspalvelin" + +#: wxUI/dialogs/configuration.py:246 +#, fuzzy +msgid "Translation services" +msgstr "Käännetty" + +#: wxUI/dialogs/configuration.py:251 wxUI/dialogs/mastodon/configuration.py:170 +#, fuzzy +msgid "&Save" +msgstr "Tallenna" + +#: wxUI/dialogs/configuration.py:253 +#: wxUI/dialogs/mastodon/communityTimeline.py:27 +#: wxUI/dialogs/mastodon/configuration.py:172 +#: wxUI/dialogs/mastodon/search.py:26 +#: wxUI/dialogs/mastodon/showUserProfile.py:170 +#: wxUI/dialogs/mastodon/updateProfile.py:132 +#: wxUI/dialogs/mastodon/userActions.py:38 +#: wxUI/dialogs/mastodon/userTimeline.py:32 +msgid "&Close" +msgstr "&Sulje" + +#: wxUI/dialogs/find.py:13 +msgid "Find in current buffer" +msgstr "Etsi nykyisestä puskurista" + +#: wxUI/dialogs/find.py:14 +msgid "String" +msgstr "Merkkijono" + +#: wxUI/dialogs/find.py:23 wxUI/dialogs/mastodon/showUserProfile.py:33 +msgid "Cancel" +msgstr "Peruuta" + +#: wxUI/dialogs/templateDialogs.py:8 +msgid "Edit Template" +msgstr "" + +#: wxUI/dialogs/templateDialogs.py:13 +msgid "Edit template" +msgstr "" + +#: wxUI/dialogs/templateDialogs.py:17 +#, fuzzy +msgid "Available variables" +msgstr "Ei saatavilla" + +#: wxUI/dialogs/templateDialogs.py:29 +msgid "Restore template" +msgstr "" + +#: wxUI/dialogs/templateDialogs.py:48 +#, python-brace-format +msgid "Restored template to {}." +msgstr "" + +#: wxUI/dialogs/templateDialogs.py:52 +msgid "" +"the template you have specified include variables that do not exists for " +"the object. Please fix the template and try again. For your reference, " +"you can see a list of all available variables in the variables list while" +" editing your template." +msgstr "" + +#: wxUI/dialogs/templateDialogs.py:52 +#, fuzzy +msgid "Invalid template" +msgstr "Virheellinen näppäinkomento" + +#: wxUI/dialogs/urlList.py:6 +msgid "Select URL" +msgstr "Valitse URL" + +#: wxUI/dialogs/mastodon/userActions.py:13 +#: wxUI/dialogs/mastodon/userTimeline.py:13 wxUI/dialogs/userAliasDialogs.py:13 +msgid "&Autocomplete users" +msgstr "Täydennä käyttäjät &automaattisesti" + +#: wxUI/dialogs/userAliasDialogs.py:18 +#, fuzzy +msgid "Alias" +msgstr "aina" + +#: wxUI/dialogs/userAliasDialogs.py:41 +#, fuzzy +msgid "Edit user aliases" +msgstr "Muokataan {0}n käyttäjätietokantaa" + +#: wxUI/dialogs/mastodon/search.py:19 wxUI/dialogs/userAliasDialogs.py:43 +msgid "Users" +msgstr "Käyttäjiä" + +#: wxUI/dialogs/userAliasDialogs.py:50 +#, fuzzy +msgid "Add alias" +msgstr "Lisää listalle" + +#: wxUI/dialogs/userAliasDialogs.py:51 +msgid "Adds a new user alias" +msgstr "" + +#: wxUI/dialogs/userAliasDialogs.py:54 +#, fuzzy +msgid "Edit the currently focused user Alias." +msgstr "Ole vuorovaikutuksessa tällä hetkellä aktiivisena olevan twiitin kanssa." + +#: wxUI/dialogs/mastodon/filters/create_filter.py:26 +#: wxUI/dialogs/mastodon/filters/manage_filters.py:24 +#: wxUI/dialogs/userAliasDialogs.py:57 +msgid "Remove" +msgstr "Poista" + +#: wxUI/dialogs/userAliasDialogs.py:58 +#, fuzzy +msgid "Remove the currently focused user alias." +msgstr "Etsi merkkijonoa aktiivisesta puskurista..." + +#: wxUI/dialogs/userAliasDialogs.py:82 +#, fuzzy +msgid "Are you sure you want to delete this user alias?" +msgstr "Haluatko varmasti poistaa tämän listan?" + +#: wxUI/dialogs/userAliasDialogs.py:82 +#, fuzzy +msgid "Remove user alias" +msgstr "Poista käyttäjä" + +#: wxUI/dialogs/userAliasDialogs.py:93 +#, fuzzy +msgid "User alias" +msgstr "Käyttäjän tiedot" + +#: wxUI/dialogs/userList.py:27 +#, fuzzy +msgid "View profile" +msgstr "&Päivitä profiili" + +#: wxUI/dialogs/mastodon/communityTimeline.py:10 +#, fuzzy +msgid "Community URL" +msgstr "Control" + +#: wxUI/dialogs/mastodon/communityTimeline.py:16 +#: wxUI/dialogs/mastodon/userTimeline.py:18 +msgid "Buffer type" +msgstr "Puskurin tyyppi" + +#: wxUI/dialogs/mastodon/communityTimeline.py:17 +#, fuzzy +msgid "&Local timeline" +msgstr "Aikajanat" + +#: wxUI/dialogs/mastodon/communityTimeline.py:18 +#, fuzzy +msgid "&Federated Timeline" +msgstr "Käyttäjän {username} aikajana" + +#: wxUI/dialogs/mastodon/communityTimeline.py:25 +#: wxUI/dialogs/mastodon/search.py:24 +#: wxUI/dialogs/mastodon/updateProfile.py:130 +#: wxUI/dialogs/mastodon/userActions.py:36 +#: wxUI/dialogs/mastodon/userTimeline.py:30 +msgid "&OK" +msgstr "&OK" + +#: wxUI/dialogs/mastodon/configuration.py:14 +#, fuzzy +msgid "User autocompletion settings" +msgstr "Automaattisen täydennyksen asetukset..." + +#: wxUI/dialogs/mastodon/configuration.py:15 +msgid "" +"Scan acc&ount and add followers and following users to the user " +"autocompletion database" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:16 +#, fuzzy +msgid "&Manage autocompletion database" +msgstr "Automaattisen täydennyksen tietokannan hallinta" + +#: wxUI/dialogs/mastodon/configuration.py:21 +#, fuzzy +msgid "&Disable Streaming API endpoints" +msgstr "Poista suoratoistotoiminnot käytöstä" + +#: wxUI/dialogs/mastodon/configuration.py:23 +#, fuzzy +msgid "&Relative timestamps" +msgstr "Suhteelliset aikaleimat" + +#: wxUI/dialogs/mastodon/configuration.py:25 +msgid "" +"R&ead preferences from instance (default visibility when publishing and " +"displaying sensitive content)" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:28 +#, fuzzy +msgid "&Items on each API call" +msgstr "Kohteita kussakin API-kutsussa" + +# | msgid "" +# | "Inverted buffers: The newest tweets will be shown at the beginning while +# " +# | "the oldest at the end" +#: wxUI/dialogs/mastodon/configuration.py:34 +#, fuzzy +msgid "" +"I&nverted buffers: The newest items will be shown at the beginning while " +"the oldest at the end" +msgstr "" +"Käänteiset puskurit: Uusimmat twiitit näytetään listojen alussa ja vanhat" +" lopussa" + +#: wxUI/dialogs/mastodon/configuration.py:36 +msgid "&Ask confirmation before boosting a post" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:38 +#, fuzzy +msgid "S&how screen names instead of full names" +msgstr "Näytä näyttönimet koko nimien asemesta" + +#: wxUI/dialogs/mastodon/configuration.py:40 +msgid "Hide e&mojis in usernames" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:42 +#, fuzzy +msgid "" +"&Number of items per buffer to cache in database (0 to disable caching, " +"blank for unlimited)" +msgstr "" +"Tietokantaan tallennettavien kohteiden määrä puskuria kohti (0 poistaa " +"tallennuksen käytöstä, tyhjä = rajaton)" + +#: wxUI/dialogs/mastodon/configuration.py:46 +msgid "" +"&Load cache for items in memory (much faster in big datasets but requires" +" more RAM)" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:53 +#, python-brace-format +msgid "Edit template for &posts. Current template: {}" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:55 +#, python-brace-format +msgid "Edit template for c&onversations. Current template: {}" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:57 +#, python-brace-format +msgid "Edit template for p&ersons. Current template: {}" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:65 +#, fuzzy +msgid "&Volume" +msgstr "Äänenvoimakkuus" + +#: wxUI/dialogs/mastodon/configuration.py:76 +#, fuzzy +msgid "S&ession mute" +msgstr "Istunnon hiljennys" + +#: wxUI/dialogs/mastodon/configuration.py:78 +#, fuzzy +msgid "&Output device" +msgstr "Ulostulolaite" + +#: wxUI/dialogs/mastodon/configuration.py:85 +#, fuzzy +msgid "&Input device" +msgstr "Sisääntulolaite" + +#: wxUI/dialogs/mastodon/configuration.py:93 +#, fuzzy +msgid "Sound &pack" +msgstr "Äänipaketti" + +# | msgid "Indicate audio tweets with sound" +#: wxUI/dialogs/mastodon/configuration.py:99 +#, fuzzy +msgid "Indicate &audio or video in posts with sound" +msgstr "Ilmaise audiotwiitit äänimerkillä" + +# | msgid "Indicate tweets containing images with sound" +#: wxUI/dialogs/mastodon/configuration.py:101 +#, fuzzy +msgid "Indicate posts containing i&mages with sound" +msgstr "Ilmaise kuvia sisältävät twiitit äänimerkillä" + +#: wxUI/dialogs/mastodon/configuration.py:124 +#, fuzzy +msgid "&Language for OCR" +msgstr "Tekstintunnistuksen kieli" + +#: wxUI/dialogs/mastodon/configuration.py:149 +msgid "Feedback" +msgstr "Palaute" + +#: wxUI/dialogs/mastodon/configuration.py:153 +msgid "Buffers" +msgstr "Puskurit" + +#: wxUI/dialogs/mastodon/configuration.py:157 +msgid "Templates" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:161 +msgid "Sound" +msgstr "Ääni" + +#: wxUI/dialogs/mastodon/configuration.py:165 +msgid "Extras" +msgstr "Ekstrat" + +# | msgid "Would you like to add a comment to this tweet?" +#: wxUI/dialogs/mastodon/dialogs.py:7 +#, fuzzy +msgid "Would you like to share this post?" +msgstr "Haluatko lisätä kommentin tähän twiittiin?" + +# | msgid "" +# | "Do you really want to delete this tweet? It will be deleted from Twitter +# " +# | "as well." +#: wxUI/dialogs/mastodon/dialogs.py:15 +#, fuzzy +msgid "" +"Do you really want to delete this post? It will be deleted from the " +"instance as well." +msgstr "Haluatko varmasti poistaa tämän twiitin? Se poistetaan myös Twitteristä." + +#: wxUI/dialogs/mastodon/dialogs.py:15 +msgid "Delete" +msgstr "Poista" + +#: wxUI/dialogs/mastodon/dialogs.py:23 +msgid "" +"Are you sure you want to dismiss this notification? If you dismiss a " +"mention notification, it also disappears from your mentions buffer. The " +"post is not going to be deleted from the instance, though." +msgstr "" + +# | msgid "" +# | "Do you really want to empty this buffer? It's items will be removed from +# " +# | "the list but not from Twitter" +#: wxUI/dialogs/mastodon/dialogs.py:31 +#, fuzzy +msgid "" +"Do you really want to empty this buffer? It's items will be removed from" +" the list but not from the instance" +msgstr "" +"Haluatko varmasti tyhjentää tämän puskurin? Sen twiitit poistetaan " +"listalta, mutta ei Twitteristä." + +# | msgid "This user has no tweets. {0} can't create a timeline." +#: wxUI/dialogs/mastodon/dialogs.py:38 +#, fuzzy, python-brace-format +msgid "This user has no posts. {0} can't create a timeline." +msgstr "Tällä käyttäjällä ei ole twiittejä. {0} ei voi luoda aikajanaa." + +# | msgid "This user has no favorited tweets. {0} can't create a timeline." +#: wxUI/dialogs/mastodon/dialogs.py:43 +#, fuzzy, python-brace-format +msgid "This user has no favorited posts. {0} can't create a timeline." +msgstr "" +"Tällä käyttäjällä ei ole suosikeiksi merkittyjä twiittejä. {0} ei voi " +"luoda aikajanaa." + +# | msgid "This user has no followers. {0} can't create a timeline." +#: wxUI/dialogs/mastodon/dialogs.py:48 +#, fuzzy, python-brace-format +msgid "This user has no followers yet. {0} can't create a timeline." +msgstr "Tällä käyttäjällä ei ole seuraajia. {0} ei voi luoda aikajanaa." + +# | msgid "This user has no followers. {0} can't create a timeline." +#: wxUI/dialogs/mastodon/dialogs.py:53 +#, fuzzy, python-brace-format +msgid "This user is not following anyone. {0} can't create a timeline." +msgstr "Tällä käyttäjällä ei ole seuraajia. {0} ei voi luoda aikajanaa." + +#: wxUI/dialogs/mastodon/dialogs.py:60 +#, python-brace-format +msgid "The focused item has no user in it. {} ca't open a user profile" +msgstr "" + +# | msgid "R&emove from list" +#: wxUI/dialogs/mastodon/menus.py:13 wxUI/dialogs/mastodon/menus.py:41 +#, fuzzy +msgid "R&emove from favorites" +msgstr "&Poista listalta" + +#: wxUI/dialogs/mastodon/menus.py:15 wxUI/dialogs/mastodon/menus.py:43 +msgid "&Open URL" +msgstr "&Avaa URL" + +# | msgid "Search on twitter" +#: wxUI/dialogs/mastodon/menus.py:17 wxUI/dialogs/mastodon/menus.py:47 +#, fuzzy +msgid "&Open in instance" +msgstr "Etsi Twitteristä" + +#: wxUI/dialogs/mastodon/menus.py:19 wxUI/dialogs/mastodon/menus.py:45 +msgid "&Play audio" +msgstr "&Toista ääni" + +#: wxUI/dialogs/mastodon/menus.py:23 wxUI/dialogs/mastodon/menus.py:51 +msgid "&Copy to clipboard" +msgstr "&Kopioi leikepöydälle" + +#: wxUI/dialogs/mastodon/menus.py:27 wxUI/dialogs/mastodon/menus.py:55 +msgid "&User actions..." +msgstr "&Käyttäjätoiminnot..." + +#: wxUI/dialogs/mastodon/menus.py:53 +msgid "&Dismiss" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:20 +#: wxUI/dialogs/mastodon/postDialogs.py:38 +msgid "Attachments" +msgstr "Liitteet" + +#: wxUI/dialogs/mastodon/postDialogs.py:24 +msgid "File" +msgstr "Tiedosto" + +#: wxUI/dialogs/mastodon/postDialogs.py:25 +msgid "Type" +msgstr "Tyyppi" + +#: wxUI/dialogs/mastodon/postDialogs.py:26 +#: wxUI/dialogs/mastodon/postDialogs.py:141 +msgid "Description" +msgstr "Kuvaus" + +# | msgid "Remove client" +#: wxUI/dialogs/mastodon/postDialogs.py:28 +#, fuzzy +msgid "Remove Attachment" +msgstr "Poista" + +#: wxUI/dialogs/mastodon/postDialogs.py:33 +msgid "Post in the thread" +msgstr "" + +# | msgid "Remove from list" +#: wxUI/dialogs/mastodon/postDialogs.py:40 +#, fuzzy +msgid "Remove post" +msgstr "Poista listalta" + +#: wxUI/dialogs/mastodon/postDialogs.py:47 +msgid "&Visibility" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:54 +#, fuzzy +msgid "Language" +msgstr "Kieli" + +#: wxUI/dialogs/mastodon/postDialogs.py:58 +msgid "A&dd" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:59 +msgid "S&ensitive content" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:64 +msgid "Content warning" +msgstr "" + +# | msgid "Add to list" +#: wxUI/dialogs/mastodon/postDialogs.py:71 +#, fuzzy +msgid "Add p&ost" +msgstr "Lisää listalle" + +#: wxUI/dialogs/mastodon/postDialogs.py:75 +msgid "Auto&complete users" +msgstr "Täydennä käyttäjät &automaattisesti" + +# | msgid "Check &spelling..." +#: wxUI/dialogs/mastodon/postDialogs.py:77 +#, fuzzy +msgid "Check &spelling" +msgstr "Tarkista &oikeinkirjoitus..." + +#: wxUI/dialogs/mastodon/postDialogs.py:79 +#, fuzzy +msgid "&Translate" +msgstr "Käännetty" + +# | msgid "Tweet - %i characters " +#: wxUI/dialogs/mastodon/postDialogs.py:106 +#, fuzzy, python-brace-format +msgid "Post - {} characters" +msgstr "Twiitti - %i merkkiä " + +#: wxUI/dialogs/mastodon/postDialogs.py:130 +msgid "Image" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:132 +#, fuzzy +msgid "Video" +msgstr "Piilota" + +# | msgid "&Audio" +#: wxUI/dialogs/mastodon/postDialogs.py:134 +#, fuzzy +msgid "Audio" +msgstr "&Audio" + +#: wxUI/dialogs/mastodon/postDialogs.py:136 +msgid "Poll" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:141 +msgid "please provide a description" +msgstr "Kirjoita kuvaus" + +#: wxUI/dialogs/mastodon/postDialogs.py:148 +msgid "Select the picture to be uploaded" +msgstr "Valitse lähetettävä kuva" + +#: wxUI/dialogs/mastodon/postDialogs.py:148 +msgid "Image files (*.png, *.jpg, *.gif)|*.png; *.jpg; *.gif" +msgstr "Kuvatiedostot (*.png, *.jpg, *.gif)|*.png; *.jpg; *.gif" + +#: wxUI/dialogs/mastodon/postDialogs.py:155 +#, fuzzy +msgid "Select the video to be uploaded" +msgstr "Valitse lähetettävä kuva" + +# | msgid "Audio Files (*.mp3, *.ogg, *.wav)|*.mp3; *.ogg; *.wav" +#: wxUI/dialogs/mastodon/postDialogs.py:155 +#, fuzzy +msgid "Video files (*.mp4, *.mov, *.m4v, *.webm)| *.mp4; *.m4v; *.mov; *.webm" +msgstr "Äänitiedostot (*.mp3, *.ogg, *.wav)|*.mp3; *.ogg; *.wav" + +#: wxUI/dialogs/mastodon/postDialogs.py:162 +msgid "Select the audio file to be uploaded" +msgstr "Valitse lähetettävä äänitiedosto" + +#: wxUI/dialogs/mastodon/postDialogs.py:162 +msgid "" +"Audio files (*.mp3, *.ogg, *.wav, *.flac, *.opus, *.aac, *.m4a, " +"*.3gp)|*.mp3; *.ogg; *.wav; *.flac; *.opus; *.aac; *.m4a; *.3gp" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:169 +msgid "" +"It is not possible to add more attachments. Please take into account that" +" You can add only a maximum of 4 images, or one audio, video or poll per" +" post. Please remove other attachments before continuing." +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:169 +#, fuzzy +msgid "Error adding attachment" +msgstr "Lisää liite" + +#: wxUI/dialogs/mastodon/postDialogs.py:172 +msgid "" +"You can add a poll or media files. In order to add your poll, please " +"remove other attachments first." +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:172 +#, fuzzy +msgid "Error adding poll" +msgstr "Lisää liite" + +# | msgid "Tweet - %i characters " +#: wxUI/dialogs/mastodon/postDialogs.py:177 +#, fuzzy, python-format +msgid "Post - %i characters " +msgstr "Twiitti - %i merkkiä " + +#: wxUI/dialogs/mastodon/postDialogs.py:200 +msgid "Image description" +msgstr "Kuvan kuvaus" + +# | msgid "Private" +#: wxUI/dialogs/mastodon/postDialogs.py:210 +#, fuzzy +msgid "Privacy" +msgstr "Yksityinen" + +#: wxUI/dialogs/mastodon/postDialogs.py:214 +#, fuzzy +msgid "Source" +msgstr "Lähde: " + +#: wxUI/dialogs/mastodon/postDialogs.py:222 +msgid "Boosts" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:224 +msgid "View users who boosted this post" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:231 +msgid "View users who favorited this post" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:239 +#, fuzzy +msgid "Copy link to clipboard" +msgstr "Kopioi leikepöydälle" + +#: wxUI/dialogs/mastodon/postDialogs.py:241 +#: wxUI/dialogs/mastodon/postDialogs.py:280 +msgid "Check &spelling..." +msgstr "Tarkista &oikeinkirjoitus..." + +#: wxUI/dialogs/mastodon/postDialogs.py:242 +#: wxUI/dialogs/mastodon/postDialogs.py:281 +msgid "&Translate..." +msgstr "&Käännä..." + +#: wxUI/dialogs/mastodon/postDialogs.py:243 +#: wxUI/dialogs/mastodon/postDialogs.py:282 +msgid "C&lose" +msgstr "S&ulje" + +#: wxUI/dialogs/mastodon/postDialogs.py:294 +msgid "Add a poll" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:298 +msgid "Participation time" +msgstr "" + +# | msgid "%d minutes, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "5 minutes" +msgstr "%d minuuttia, " + +# | msgid "%d minutes, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "30 minutes" +msgstr "%d minuuttia, " + +# | msgid "%d hour, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "1 hour" +msgstr "%d tunti, " + +# | msgid "%d hours, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "6 hours" +msgstr "%d tuntia, " + +# | msgid "%d day, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "1 day" +msgstr "%d päivä, " + +# | msgid "%d days, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "2 days" +msgstr "%d päivää, " + +# | msgid "%d days, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "3 days" +msgstr "%d päivää, " + +# | msgid "%d days, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "4 days" +msgstr "%d päivää, " + +# | msgid "%d days, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "5 days" +msgstr "%d päivää, " + +# | msgid "%d days, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "6 days" +msgstr "%d päivää, " + +# | msgid "%d days, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "7 days" +msgstr "%d päivää, " + +#: wxUI/dialogs/mastodon/postDialogs.py:304 +msgid "Choices" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:308 +msgid "Option 1" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:315 +msgid "Option 2" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:322 +msgid "Option 3" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:329 +msgid "Option 4" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:334 +msgid "Allow multiple choices per user" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:337 +msgid "Hide votes count until the poll expires" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:363 +msgid "Please make sure you have provided at least two options for the poll." +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:363 +#, fuzzy +msgid "Not enough information" +msgstr "Tietoja" + +#: wxUI/dialogs/mastodon/postDialogs.py:368 +msgid "Vote in this poll" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:371 +#, fuzzy +msgid "Options" +msgstr "Toiminto" + +# | msgid "&Search" +#: wxUI/dialogs/mastodon/search.py:9 +#, fuzzy +msgid "Search" +msgstr "&Haku" + +#: wxUI/dialogs/mastodon/search.py:18 +msgid "Posts" +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:22 +#, fuzzy +msgid "Select user" +msgstr "Valitse URL" + +#: wxUI/dialogs/mastodon/showUserProfile.py:73 +#, fuzzy, python-brace-format +msgid "{}'s Profile" +msgstr "&Päivitä profiili" + +#: wxUI/dialogs/mastodon/showUserProfile.py:79 +#, fuzzy +msgid "&Name: " +msgstr "Nimi" + +#: wxUI/dialogs/mastodon/showUserProfile.py:84 +#, fuzzy +msgid "&URL: " +msgstr "Käyttäjä: " + +#: wxUI/dialogs/mastodon/showUserProfile.py:89 +msgid "&Bio: " +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:94 +msgid "&Joined at: " +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:99 +#, fuzzy +msgid "&Actions" +msgstr "Toiminto" + +#: wxUI/dialogs/mastodon/showUserProfile.py:104 +#, fuzzy +msgid "Header: " +msgstr "Piilota" + +#: wxUI/dialogs/mastodon/showUserProfile.py:112 +msgid "Avatar: " +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:122 +#, python-brace-format +msgid "Field &{} - Label: " +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:129 +#, fuzzy +msgid "Content: " +msgstr "Asiayhteys" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:43 +#: wxUI/dialogs/mastodon/filters/create_filter.py:65 +#: wxUI/dialogs/mastodon/showUserProfile.py:135 +msgid "Yes" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:43 +#: wxUI/dialogs/mastodon/filters/create_filter.py:65 +#: wxUI/dialogs/mastodon/filters/create_filter.py:69 +#: wxUI/dialogs/mastodon/showUserProfile.py:135 +msgid "No" +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:137 +#, fuzzy +msgid "&Private account: " +msgstr "Poista tili" + +#: wxUI/dialogs/mastodon/showUserProfile.py:144 +#, fuzzy +msgid "&Bot account: " +msgstr "Tili" + +#: wxUI/dialogs/mastodon/showUserProfile.py:151 +#, fuzzy +msgid "&Discoverable account: " +msgstr "Poista tili" + +#: wxUI/dialogs/mastodon/showUserProfile.py:157 +#, python-brace-format +msgid "{} p&osts. Click to open posts timeline" +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:162 +#, python-brace-format +msgid "{} &following. Click to open Following timeline" +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:166 +#, python-brace-format +msgid "{} fo&llowers. Click to open followers timeline" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:43 +msgid "&Display Name" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:50 +#, fuzzy +msgid "&Bio" +msgstr "&Estä" + +#: wxUI/dialogs/mastodon/updateProfile.py:58 +#, fuzzy +msgid "Header" +msgstr "Piilota" + +#: wxUI/dialogs/mastodon/updateProfile.py:71 +#, fuzzy +msgid "Change &header" +msgstr "Piilota" + +#: wxUI/dialogs/mastodon/updateProfile.py:79 +msgid "Avatar" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:92 +msgid "Change &avatar" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:102 +#, python-brace-format +msgid "Field &{}: Label" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:110 +#, fuzzy +msgid "Content" +msgstr "Asiayhteys" + +#: wxUI/dialogs/mastodon/updateProfile.py:120 +#, fuzzy +msgid "&Private account" +msgstr "Poista tili" + +#: wxUI/dialogs/mastodon/updateProfile.py:122 +#, fuzzy +msgid "&Bot account" +msgstr "Tili" + +#: wxUI/dialogs/mastodon/updateProfile.py:124 +#, fuzzy +msgid "&Discoverable account" +msgstr "Poista tili" + +#: wxUI/dialogs/mastodon/updateProfile.py:167 +msgid "Select header image - max 2MB" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:172 +#: wxUI/dialogs/mastodon/updateProfile.py:194 +msgid "The selected file is larger than 2MB. Do you want to select another file?" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:173 +#: wxUI/dialogs/mastodon/updateProfile.py:195 +msgid "File more than 2MB" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:189 +msgid "Select avatar image - max 2MB" +msgstr "" + +#: wxUI/dialogs/mastodon/userActions.py:19 +msgid "&Follow" +msgstr "&Seuraa" + +#: wxUI/dialogs/mastodon/userActions.py:20 +msgid "U&nfollow" +msgstr "L&opeta seuraaminen" + +#: wxUI/dialogs/mastodon/userActions.py:22 +msgid "Unmu&te" +msgstr "Po&ista hiljennys" + +#: wxUI/dialogs/mastodon/userActions.py:23 +msgid "&Block" +msgstr "&Estä" + +#: wxUI/dialogs/mastodon/userActions.py:24 +msgid "Unbl&ock" +msgstr "&Poista esto" + +#: wxUI/dialogs/mastodon/userTimeline.py:9 +#, python-format +msgid "Timeline for %s" +msgstr "Käyttäjän %s aikajana" + +#: wxUI/dialogs/mastodon/userTimeline.py:19 +msgid "&Posts" +msgstr "" + +#: wxUI/dialogs/mastodon/userTimeline.py:20 +msgid "&Followers" +msgstr "&Seuraajat" + +#: wxUI/dialogs/mastodon/userTimeline.py:21 +#, fuzzy +msgid "Fo&llowing" +msgstr "L&opeta seuraaminen" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:12 +#, fuzzy +msgid "Keyword" +msgstr "Näppäin" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:13 +#: wxUI/dialogs/mastodon/filters/create_filter.py:24 +msgid "Whole word" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:19 +msgid "Keyword:" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:25 +#: wxUI/dialogs/mastodon/filters/manage_filters.py:22 +#, fuzzy +msgid "Add" +msgstr "Osoite" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:34 +msgid "Palabras clave a filtrar:" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:74 +#, fuzzy +msgid "New filter" +msgstr "Suo&dattimien hallinta" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:78 +#, fuzzy +msgid "Home timeline" +msgstr "Aikajanat" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:79 +msgid "Public statuses" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:81 +#, fuzzy +msgid "Threads" +msgstr "Valmis" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:82 +#, fuzzy +msgid "Profiles" +msgstr "&Päivitä profiili" + +# | msgid "Delete" +#: wxUI/dialogs/mastodon/filters/create_filter.py:86 +#, fuzzy +msgid "Hide posts" +msgstr "Poista" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:87 +msgid "Set a content warning to posts" +msgstr "" + +# | msgid "%d hours, " +#: wxUI/dialogs/mastodon/filters/create_filter.py:91 +#, fuzzy +msgid "Hours" +msgstr "%d tuntia, " + +# | msgid "%d days, " +#: wxUI/dialogs/mastodon/filters/create_filter.py:92 +#, fuzzy +msgid "Days" +msgstr "%d päivää, " + +#: wxUI/dialogs/mastodon/filters/create_filter.py:93 +msgid "Weeks" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:94 +msgid "months" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:97 +#, fuzzy +msgid "Title:" +msgstr "Tiedosto" + +# | msgid "Reply to {arg0}" +#: wxUI/dialogs/mastodon/filters/create_filter.py:104 +#, fuzzy +msgid "Apply to:" +msgstr "Vastaa käyttäjälle {arg0}" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:114 +#, fuzzy +msgid "Action:" +msgstr "Toiminto" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:122 +msgid "Expires in:" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/manage_filters.py:10 +#, fuzzy +msgid "Filters" +msgstr "Tiedosto" + +#: wxUI/dialogs/mastodon/filters/manage_filters.py:15 +#, fuzzy +msgid "Title" +msgstr "Tiedosto" + +#: wxUI/dialogs/mastodon/filters/manage_filters.py:16 +msgid "Keywords" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/manage_filters.py:17 +#, fuzzy +msgid "Contexts" +msgstr "Asiayhteys" + +#: wxUI/dialogs/mastodon/filters/manage_filters.py:19 +#, fuzzy +msgid "Expires" +msgstr "Ekstrat" + +#~ msgid "There are no results for the coordinates in this tweet" +#~ msgstr "Ei tuloksia tämän twiitin koordinaateille" + +#~ msgid "This list is already opened" +#~ msgstr "Tämä lista on jo avattu" + +# | msgid "Timeline for {}" +#~ msgid "Timelines for {}" +#~ msgstr "Käyttäjän {} aikajana" + +#~ msgid "{account_name} (Mastodon)" +#~ msgstr "" + +#~ msgid "URL of mastodon instance:" +#~ msgstr "" + +# | msgid "View &address" +#~ msgid "Email address:" +#~ msgstr "Näytä &osoite" + +# | msgid "Password: " +#~ msgid "Password:" +#~ msgstr "Salasana: " + +# | msgid "Item" +#~ msgid "&Item" +#~ msgstr "Kohde" + +#~ msgid "Visibility" +#~ msgstr "" + +#~ msgid "Sensitive content" +#~ msgstr "" + +#~ msgid "Allow multiple votes per user" +#~ msgstr "" + +#~ msgid "{username} has mentionned you: {status}" +#~ msgstr "" + +#~ msgid "has mentionned you: {status}" +#~ msgstr "" + +#~ msgid "Likes for {}" +#~ msgstr "Käyttäjän {} tykkäykset" + +#~ msgid "Trending topics for %s" +#~ msgstr "Suositut aiheet käyttäjällä %s" + +#~ msgid "Select user" +#~ msgstr "Valitse käyttäjä" + +#~ msgid "Sent direct messages" +#~ msgstr "Lähetetyt yksityisviestit" + +#~ msgid "Sent tweets" +#~ msgstr "Lähetetyt twiitit" + +#~ msgid "Likes" +#~ msgstr "Tykkäykset" + +#~ msgid "Friends" +#~ msgstr "Kaverit" + +#~ msgid "{username}'s likes" +#~ msgstr "Käyttäjän {username} tykkäykset" + +#~ msgid "{username}'s friends" +#~ msgstr "Käyttäjän {username} kaverit" + +#~ msgid "Tweet" +#~ msgstr "Twiittaa" + +#~ msgid "Write the tweet here" +#~ msgstr "Kirjoita twiitti tähän" + +#~ msgid "New tweet in {0}" +#~ msgstr "Uusi twiitti puskurissa {0}" + +#~ msgid "{0} new tweets in {1}." +#~ msgstr "{0} uutta twiittiä puskurissa {1}." + +#~ msgid "Reply to {arg0}" +#~ msgstr "Vastaa käyttäjälle {arg0}" + +#~ msgid "Reply to %s" +#~ msgstr "Vastaa käyttäjälle %s" + +#~ msgid "Direct message to %s" +#~ msgstr "Yksityisviesti käyttäjälle %s" + +#~ msgid "New direct message" +#~ msgstr "Uusi yksityisviesti" + +#~ msgid "This action is not supported on protected accounts." +#~ msgstr "Puskurissa ei vielä tueta tätä toimintoa." + +#~ msgid "Quote" +#~ msgstr "Lainaa" + +#~ msgid "Add your comment to the tweet" +#~ msgstr "Lisää kommenttisi twiittiin" + +#~ msgid "User details" +#~ msgstr "Käyttäjän tiedot" + +#~ msgid "MMM D, YYYY. H:m" +#~ msgstr "dddd, D. MMMMta YYYY HH:mm" + +#~ msgid "There are no coordinates in this tweet" +#~ msgstr "Tässä twiitissä ei ole koordinaatteja" + +#~ msgid "Error decoding coordinates. Try again later." +#~ msgstr "Virhe tulkittaessa koordinaatteja. Yritä myöhemmin uudelleen." + +#~ msgid "Invalid buffer" +#~ msgstr "Virheellinen puskuri" + +#~ msgid "{0} new direct messages." +#~ msgstr "{0} uutta yksityisviestiä." + +#~ msgid "This action is not supported in the buffer yet." +#~ msgstr "Puskurissa ei vielä tueta tätä toimintoa." + +#~ msgid "" +#~ "Getting more items cannot be done " +#~ "in this buffer. Use the direct " +#~ "messages buffer instead." +#~ msgstr "Lisäkohteita ei voi hakea. Käytä Yksityisviestit-puskuria." + +#~ msgid "Mention" +#~ msgstr "Mainitse" + +#~ msgid "Mention to %s" +#~ msgstr "Maininta käyttäjälle %s" + +#~ msgid "{0} new followers." +#~ msgstr "{0} uutta seuraajaa." + +#~ msgid "This action is not supported in the buffer, yet." +#~ msgstr "Puskurissa ei vielä tueta tätä toimintoa." + +#~ msgid "&Retweet" +#~ msgstr "&Uudelleentwiittaa" + +#~ msgid "&Like" +#~ msgstr "T&ykkää" + +#~ msgid "&Unlike" +#~ msgstr "&Poista tykkäys" + +#~ msgid "View &address" +#~ msgstr "Näytä &osoite" + +#~ msgid "&View lists" +#~ msgstr "&Näytä listat" + +# | msgid "V&iew likes" +#~ msgid "View likes" +#~ msgstr "&Näytä tykkäykset" + +#~ msgid "Likes timelines" +#~ msgstr "Tykkäykset" + +#~ msgid "Followers timelines" +#~ msgstr "Seuraajien aikajanat" + +#~ msgid "Following timelines" +#~ msgstr "Seuraajien aikajanat" + +#~ msgid "Lists" +#~ msgstr "Listat" + +#~ msgid "List for {}" +#~ msgstr "Käyttäjän {} lista" + +#~ msgid "Filters cannot be applied on this buffer" +#~ msgstr "Suodatinta ei voi käyttää tässä puskurissa" + +#~ msgid "View item" +#~ msgstr "Näytä kohde" + +#~ msgid "Ask" +#~ msgstr "Kysy" + +#~ msgid "Retweet without comments" +#~ msgstr "Uudelleentwiittaa ilman kommentteja" + +#~ msgid "Retweet with comments" +#~ msgstr "Uudelleentwiittaa kommenteilla" + +#~ msgid "Edit template for tweets. Current template: {}" +#~ msgstr "" + +#~ msgid "Edit template for direct messages. Current template: {}" +#~ msgstr "" + +#~ msgid "Edit template for sent direct messages. Current template: {}" +#~ msgstr "" + +#~ msgid "User has been suspended" +#~ msgstr "Käyttäjä on erotettu" + +#~ msgid "Information for %s" +#~ msgstr "Käyttäjän %s tiedot" + +#~ msgid "Discarded" +#~ msgstr "Hylätty" + +#~ msgid "Username: @%s\n" +#~ msgstr "Käyttäjänimi: @%s\n" + +#~ msgid "Name: %s\n" +#~ msgstr "Nimi: %s\n" + +#~ msgid "Location: %s\n" +#~ msgstr "Sijainti: %s\n" + +#~ msgid "URL: %s\n" +#~ msgstr "URL: %s\n" + +#~ msgid "Bio: %s\n" +#~ msgstr "Kuvaus: %s\n" + +#~ msgid "Yes" +#~ msgstr "Kyllä" + +#~ msgid "No" +#~ msgstr "Ei" + +#~ msgid "Protected: %s\n" +#~ msgstr "Suojattu: %s\n" + +#~ msgid "Relationship: " +#~ msgstr "" + +#~ msgid "You follow {0}. " +#~ msgstr "Seuraat käyttäjää {0}. " + +#~ msgid "{0} is following you." +#~ msgstr "{0} seuraa sinua." + +#~ msgid "" +#~ "Followers: %s\n" +#~ " Friends: %s\n" +#~ msgstr "" +#~ "Seuraajia: %s\n" +#~ " Friends: %s\n" + +#~ msgid "Verified: %s\n" +#~ msgstr "Vahvistettu: %s\n" + +#~ msgid "Tweets: %s\n" +#~ msgstr "Twiittejä: %s\n" + +#~ msgid "Likes: %s" +#~ msgstr "Tykkäykset: %s" + +#~ msgid "You can't ignore direct messages" +#~ msgstr "Et voi jättää huomiotta yksityisviestejä" + +#~ msgid "Attaching..." +#~ msgstr "Lisätään liitettä..." + +#~ msgid "Pause" +#~ msgstr "Keskeytä" + +#~ msgid "&Resume" +#~ msgstr "&Jatka" + +#~ msgid "Resume" +#~ msgstr "Jatka" + +#~ msgid "&Pause" +#~ msgstr "&Pysäytä" + +#~ msgid "&Stop" +#~ msgstr "&Keskeytä" + +#~ msgid "Recording" +#~ msgstr "Nauhoitetaan" + +#~ msgid "Stopped" +#~ msgstr "Keskeytetty" + +#~ msgid "&Record" +#~ msgstr "&Nauhoita" + +#~ msgid "&Play" +#~ msgstr "&Toista" + +#~ msgid "Recoding audio..." +#~ msgstr "Uudelleenkoodataan ääntä..." + +#~ msgid "Error in file upload: {0}" +#~ msgstr "Virhe lähetettäessä tiedostoa: {0}" + +#~ msgid "Transferred" +#~ msgstr "Siirretty" + +#~ msgid "Total file size" +#~ msgstr "Tiedoston koko yhteensä" + +#~ msgid "Transfer rate" +#~ msgstr "Siirtonopeus" + +#~ msgid "Time left" +#~ msgstr "Aikaa jäljellä" + +#~ msgid "Attach audio" +#~ msgstr "Lisää liitteeksi äänitiedosto" + +#~ msgid "&Add an existing file" +#~ msgstr "&Lisää olemassa oleva tiedosto" + +#~ msgid "&Discard" +#~ msgstr "&Hylkää" + +#~ msgid "Upload to" +#~ msgstr "Lähetä palveluun" + +#~ msgid "Attach" +#~ msgstr "Lisää liite" + +#~ msgid "&Cancel" +#~ msgstr "&Peruuta" + +#~ msgid "Audio Files (*.mp3, *.ogg, *.wav)|*.mp3; *.ogg; *.wav" +#~ msgstr "Äänitiedostot (*.mp3, *.ogg, *.wav)|*.mp3; *.ogg; *.wav" + +#~ msgid "You have to start writing" +#~ msgstr "Sinun on kirjoitettava jotain" + +#~ msgid "There are no results in your users database" +#~ msgstr "Käyttäjätietokannasta ei löydy tuloksia" + +#~ msgid "Autocompletion only works for users." +#~ msgstr "Automaattinen täydennys toimii vain käyttäjille." + +#~ msgid "" +#~ "Updating database... You can close this" +#~ " window now. A message will tell " +#~ "you when the process finishes." +#~ msgstr "" +#~ "Päivitetään tietokantaa... Voit nyt sulkea " +#~ "tämän ikkunan. TWBlue ilmoittaa, kun " +#~ "päivitys on suoritettu." + +#~ msgid "Manage Autocompletion database" +#~ msgstr "Automaattisen täydennyksen tietokannan hallinta" + +#~ msgid "Editing {0} users database" +#~ msgstr "Muokataan {0}n käyttäjätietokantaa" + +#~ msgid "Username" +#~ msgstr "Käyttäjänimi" + +#~ msgid "Add user" +#~ msgstr "Lisää käyttäjä" + +#~ msgid "Remove user" +#~ msgstr "Poista käyttäjä" + +#~ msgid "Twitter username" +#~ msgstr "Twitter-käyttäjänimi" + +#~ msgid "Add user to database" +#~ msgstr "Lisää käyttäjä tietokantaan" + +#~ msgid "The user does not exist" +#~ msgstr "Käyttäjää ei ole" + +#~ msgid "Error!" +#~ msgstr "Virhe!" + +#~ msgid "Autocomplete users' settings" +#~ msgstr "Käyttäjien automaattisen täydennyksen asetukset" + +#~ msgid "Add followers to database" +#~ msgstr "" + +#~ msgid "Add friends to database" +#~ msgstr "Lisää käyttäjä tietokantaan" + +#~ msgid "Updating autocompletion database" +#~ msgstr "Automaattisen täydennyksen tietokannan hallinta" + +#~ msgid "" +#~ "This process will retrieve the users " +#~ "you selected from Twitter, and add " +#~ "them to the user autocomplete database." +#~ " Please note that if there are " +#~ "many users or you have tried to" +#~ " perform this action less than 15 " +#~ "minutes ago, TWBlue may reach a " +#~ "limit in Twitter API calls when " +#~ "trying to load the users into the" +#~ " database. If this happens, we will" +#~ " show you an error, in which " +#~ "case you will have to try this " +#~ "process again in a few minutes. If" +#~ " this process ends with no error, " +#~ "you will be redirected back to the" +#~ " account settings dialog. Do you want" +#~ " to continue?" +#~ msgstr "" + +#~ msgid "TWBlue has imported {} users successfully." +#~ msgstr "" + +#~ msgid "Done" +#~ msgstr "Valmis" + +#~ msgid "Error adding users from Twitter. Please try again in about 15 minutes." +#~ msgstr "" + +#~ msgid "New tweet" +#~ msgstr "Uusi twiitti" + +#~ msgid "Retweet" +#~ msgstr "Uudelleentwiittaa" + +#~ msgid "Like a tweet" +#~ msgstr "Tykkää twiitistä" + +#~ msgid "Like/unlike a tweet" +#~ msgstr "Tykkää twiitistä/peru sen tykkäys" + +#~ msgid "Unlike a tweet" +#~ msgstr "Poista twiitin tykkäys" + +#~ msgid "See user details" +#~ msgstr "Näytä käyttäjän tiedot" + +#~ msgid "Show tweet" +#~ msgstr "Näytä twiitti" + +#~ msgid "Interact with the currently focused tweet." +#~ msgstr "" +#~ "Ole vuorovaikutuksessa tällä hetkellä " +#~ "aktiivisena olevan twiitin kanssa." + +#~ msgid "View in Twitter" +#~ msgstr "Näytä Twitterissä" + +#~ msgid "Edit profile" +#~ msgstr "Muokkaa profiilia" + +#~ msgid "Delete a tweet or direct message" +#~ msgstr "Poista twiitti tai yksityisviesti" + +#~ msgid "Add to list" +#~ msgstr "Lisää listalle" + +#~ msgid "Remove from list" +#~ msgstr "Poista listalta" + +#~ msgid "Search on twitter" +#~ msgstr "Etsi Twitteristä" + +#~ msgid "Show lists for a specified user" +#~ msgstr "Näytä valitun käyttäjän listat" + +#~ msgid "Get geolocation" +#~ msgstr "Selvitä geosijainti" + +#~ msgid "Display the tweet's geolocation in a dialog" +#~ msgstr "Näytä twiitin geosijainti valintaikkunassa" + +#~ msgid "Create a trending topics buffer" +#~ msgstr "Luo suosittujen aiheiden puskuri" + +#~ msgid "" +#~ "Opens the list manager, which allows " +#~ "you to create, edit, delete and " +#~ "open lists in buffers." +#~ msgstr "" +#~ "Avaa listojen hallinnan, jonka avulla " +#~ "voit luoda, muokata, poistaa ja avata" +#~ " listoja puskureissa." + +#~ msgid "Opens the list manager" +#~ msgstr "Avaa listojen hallinnan." + +#~ msgid "{account_name} (Twitter)" +#~ msgstr "" + +# | msgid "View in Twitter" +#~ msgid "Twitter" +#~ msgstr "Näytä Twitterissä" + +#~ msgid "" +#~ "The request to authorize your Twitter" +#~ " account will be opened in your " +#~ "browser. You only need to do this" +#~ " once. Would you like to continue?" +#~ msgstr "" +#~ "Twitter-tilisi valtuutuspyyntö avataan " +#~ "selaimessa. Sinun tarvitsee hyväksyä se " +#~ "vain kerran. Haluatko jatkaa?" + +#~ msgid "" +#~ "TWBlue is unable to authenticate the " +#~ "account for {} in Twitter. It " +#~ "might be due to an invalid or " +#~ "expired token, revoqued access to the" +#~ " application, or after an account " +#~ "reactivation. Please remove the account " +#~ "manually from your Twitter sessions in" +#~ " order to stop seeing this message." +#~ msgstr "" + +#~ msgid "Authentication error for session {}" +#~ msgstr "" + +#~ msgid "Dm to %s " +#~ msgstr "Yksityisviesti käyttäjälle %s " + +#~ msgid "{0}. Quoted tweet from @{1}: {2}" +#~ msgstr "{0}. Lainattu twiitti käyttäjältä @{1}: {2}" + +#~ msgid "Unavailable" +#~ msgstr "Ei saatavilla" + +#~ msgid "" +#~ "%s (@%s). %s followers, %s friends, " +#~ "%s tweets. Last tweeted %s. Joined " +#~ "Twitter %s" +#~ msgstr "" +#~ "%s (@%s). %s seuraajaa, %s kaveria, " +#~ "%s twiittiä. Twiitannut viimeksi %s. " +#~ "Liittynyt Twitteriin %s." + +#~ msgid "No description available" +#~ msgstr "Kuvausta ei saatavilla" + +#~ msgid "private" +#~ msgstr "yksityinen" + +#~ msgid "public" +#~ msgstr "julkinen" + +#~ msgid "Enter your PIN code here" +#~ msgstr "Syötä PIN-koodi tähän" + +#~ msgid "Authorising account..." +#~ msgstr "Valtuutetaan tiliä..." + +#~ msgid "" +#~ "We could not authorice your Twitter " +#~ "account to be used in TWBlue. This" +#~ " might be caused due to an " +#~ "incorrect verification code. Please try " +#~ "to add the session again." +#~ msgstr "" + +#~ msgid "%s failed. Reason: %s" +#~ msgstr "%s epäonnistui. Syy: %s" + +#~ msgid "Deleted account" +#~ msgstr "Uusi tili" + +#~ msgid "$sender_display_name, $text $date" +#~ msgstr "" + +#~ msgid "" +#~ "$display_name (@$screen_name). $followers followers," +#~ " $following following, $tweets tweets. " +#~ "Joined Twitter $created_at." +#~ msgstr "" + +#~ msgid "Image description: {}." +#~ msgstr "Kuvan kuvaus" + +#~ msgid "RT @{}: {} Quote from @{}: {}" +#~ msgstr "{0}. Lainattu twiitti käyttäjältä @{1}: {2}" + +# | msgid "{0}. Quoted tweet from @{1}: {2}" +#~ msgid "RT @{}: {}" +#~ msgstr "{0}. Lainattu twiitti käyttäjältä @{1}: {2}" + +# | msgid "{0}. Quoted tweet from @{1}: {2}" +#~ msgid "{} Quote from @{}: {}" +#~ msgstr "{0}. Lainattu twiitti käyttäjältä @{1}: {2}" + +#~ msgid "Sorry, you are not authorised to see this status." +#~ msgstr "Valitettavasti sinulla ei ole valtuuksia tämän tilan katsomiseen." + +#~ msgid "Error {0}" +#~ msgstr "Virhekoodi {0}" + +#~ msgid "{user_1}, {user_2} and {all_users} more: {text}" +#~ msgstr "" + +#~ msgid "" +#~ "This retweet is over 140 characters. " +#~ "Would you like to post it as " +#~ "a mention to the poster with your" +#~ " comments and a link to the " +#~ "original tweet?" +#~ msgstr "" +#~ "Tämä uudelleentwiittaus on yli 140 " +#~ "merkkiä pitkä. Haluatko lähettää sen " +#~ "lähettäjälle mainintana ja sisällyttää siihen" +#~ " kommenttisi sekä linkin alkuperäiseen " +#~ "twiittiin?" + +#~ msgid "Would you like to add a comment to this tweet?" +#~ msgstr "Haluatko lisätä kommentin tähän twiittiin?" + +#~ msgid "" +#~ "Do you really want to delete this" +#~ " tweet? It will be deleted from " +#~ "Twitter as well." +#~ msgstr "" +#~ "Haluatko varmasti poistaa tämän twiitin? " +#~ "Se poistetaan myös Twitteristä." + +#~ msgid "Enter the name of the client : " +#~ msgstr "Kirjoita asiakasohjelman nimi: " + +#~ msgid "Add client" +#~ msgstr "Lisää" + +#~ msgid "This user has no tweets, so you can't open a timeline for them." +#~ msgstr "Aikajanaa ei voi avata, koska tällä käyttäjällä ei ole twiittejä." + +#~ msgid "" +#~ "This is a protected Twitter user, " +#~ "which means you can't open a " +#~ "timeline using the Streaming API. The" +#~ " user's tweets will not update due" +#~ " to a twitter policy. Do you " +#~ "want to continue?" +#~ msgstr "" +#~ "Tämä on suojattu Twitter-käyttäjä, mikä" +#~ " tarkoittaa, ettei aikajanaa voi avata " +#~ "virtautusrajapinnan kautta. Käyttäjän twiitit " +#~ "eivät päivity Twitterin toimintaperiaatteen " +#~ "vuoksi. Haluatko jatkaa?" + +#~ msgid "" +#~ "This is a protected user account, " +#~ "you need to follow this user to" +#~ " view their tweets or likes." +#~ msgstr "" +#~ "Tämä on suojattu käyttäjätili. Sinun on" +#~ " seurattava sitä nähdäksesi kyseisen " +#~ "käyttäjän twiitit tai tykkäykset." + +#~ msgid "This user has no tweets. {0} can't create a timeline." +#~ msgstr "Tällä käyttäjällä ei ole twiittejä. {0} ei voi luoda aikajanaa." + +#~ msgid "This user has no favorited tweets. {0} can't create a timeline." +#~ msgstr "" +#~ "Tällä käyttäjällä ei ole suosikeiksi " +#~ "merkittyjä twiittejä. {0} ei voi luoda" +#~ " aikajanaa." + +#~ msgid "This user has no followers. {0} can't create a timeline." +#~ msgstr "Tällä käyttäjällä ei ole seuraajia. {0} ei voi luoda aikajanaa." + +#~ msgid "This user has no friends. {0} can't create a timeline." +#~ msgstr "Tällä käyttäjällä ei ole kavereita. {0} ei voi luoda aikajanaa." + +#~ msgid "Geolocation data: {0}" +#~ msgstr "Geosijainnin tiedot: {0}" + +#~ msgid "Geo data for this tweet" +#~ msgstr "Tämän twiitin geotiedot" + +#~ msgid "You have been blocked from viewing this content" +#~ msgstr "Sinua on estetty katselemasta tätä sisältöä" + +#~ msgid "" +#~ "You have been blocked from viewing " +#~ "someone's content. In order to avoid " +#~ "conflicts with the full session, TWBlue" +#~ " will remove the affected timeline." +#~ msgstr "" +#~ "Sinua on estetty katselemasta jonkun " +#~ "käyttäjän sisältöä. TWBlue poistaa kyseisen" +#~ " aikajanan, jotta vältettäisiin ristiriidat " +#~ "koko istunnon kanssa." + +#~ msgid "" +#~ "TWBlue cannot load this timeline because" +#~ " the user has been suspended from " +#~ "Twitter." +#~ msgstr "" +#~ "TWBlue ei voi ladata tätä aikajanaa, " +#~ "koska käyttäjä on erotettu Twitteristä." + +#~ msgid "Do you really want to delete this filter?" +#~ msgstr "Haluatko varmasti poistaa tämän suodattimen?" + +#~ msgid "This filter already exists. Please use a different title" +#~ msgstr "Tämä suodatin on jo olemassa. Käytä jotain toista nimeä." + +#~ msgid "&Show direct message" +#~ msgstr "&Näytä yksityisviesti" + +#~ msgid "&Show event" +#~ msgstr "&Näytä tapahtuma" + +#~ msgid "Direct &message" +#~ msgstr "&Yksityisviesti" + +#~ msgid "&Show user" +#~ msgstr "&Näytä käyttäjä" + +#~ msgid "Search topic" +#~ msgstr "Etsi aihetta" + +#~ msgid "&Tweet about this trend" +#~ msgstr "&Twiitttaa tästä trendistä" + +#~ msgid "&Show item" +#~ msgstr "&Näytä kohde" + +#~ msgid "Update &profile" +#~ msgstr "Päivitä &profiili" + +#~ msgid "Event" +#~ msgstr "Tapahtuma" + +#~ msgid "Remove event" +#~ msgstr "Poista tapahtuma" + +#~ msgid "Trending topic" +#~ msgstr "Suosittu aihe" + +#~ msgid "Tweet about this trend" +#~ msgstr "Twiittaa tästä aiheesta" + +#~ msgid "" +#~ "Scan account and add friends and " +#~ "followers to the user autocompletion " +#~ "database" +#~ msgstr "" + +#~ msgid "" +#~ "Inverted buffers: The newest tweets will" +#~ " be shown at the beginning while " +#~ "the oldest at the end" +#~ msgstr "" +#~ "Käänteiset puskurit: Uusimmat twiitit " +#~ "näytetään listojen alussa ja vanhat " +#~ "lopussa" + +#~ msgid "Retweet mode" +#~ msgstr "Uudelleentwiittauksen tila" + +#~ msgid "" +#~ "Load cache for tweets in memory " +#~ "(much faster in big datasets but " +#~ "requires more RAM)" +#~ msgstr "" + +#~ msgid "Ignored clients" +#~ msgstr "Ohitettavat asiakasohjelmat" + +#~ msgid "Remove client" +#~ msgstr "Poista" + +#~ msgid "Indicate audio tweets with sound" +#~ msgstr "Ilmaise audiotwiitit äänimerkillä" + +#~ msgid "Indicate geotweets with sound" +#~ msgstr "Ilmaise geotwiitit äänimerkillä" + +#~ msgid "Indicate tweets containing images with sound" +#~ msgstr "Ilmaise kuvia sisältävät twiitit äänimerkillä" + +#~ msgid "API Key for SndUp" +#~ msgstr "SndUpin API-avain" + +#~ msgid "Create a filter for this buffer" +#~ msgstr "Luo suodatin tälle puskurille" + +#~ msgid "Filter title" +#~ msgstr "Suodattimen nimi" + +#~ msgid "Filter by word" +#~ msgstr "Suodata sana" + +#~ msgid "Ignore tweets wich contain the following word" +#~ msgstr "Ohita twiitit, jotka sisältävät sanan" + +#~ msgid "Ignore tweets without the following word" +#~ msgstr "Ohita twiitit, jotka eivät sisällä sanaa" + +#~ msgid "word" +#~ msgstr "sana" + +#~ msgid "Allow retweets" +#~ msgstr "Salli uudelleentwiittaukset" + +#~ msgid "Allow quoted tweets" +#~ msgstr "Salli lainatut twiitit" + +#~ msgid "Allow replies" +#~ msgstr "Salli vastaukset" + +#~ msgid "Use this term as a regular expression" +#~ msgstr "Käytä tätä termiä säännöllisenä lausekkeena" + +#~ msgid "Filter by language" +#~ msgstr "Suodata kieli" + +#~ msgid "Load tweets in the following languages" +#~ msgstr "Lataa twiitit, joiden kieli on" + +#~ msgid "Ignore tweets in the following languages" +#~ msgstr "Ohita twiitit, joiden kieli on" + +#~ msgid "Don't filter by language" +#~ msgstr "Älä suodata kielen perusteella" + +#~ msgid "Supported languages" +#~ msgstr "Tuetut kielet" + +#~ msgid "Add selected language to filter" +#~ msgstr "Lisää valittu kieli suodattimeen" + +#~ msgid "Selected languages" +#~ msgstr "Valitut kielet" + +#~ msgid "You must define a name for the filter before creating it." +#~ msgstr "" + +#~ msgid "Missing filter name" +#~ msgstr "" + +#~ msgid "Manage filters" +#~ msgstr "Suodattimien hallinta" + +#~ msgid "Filters" +#~ msgstr "Suodattimet" + +#~ msgid "Filter" +#~ msgstr "Suodatin" + +#~ msgid "Lists manager" +#~ msgstr "Listojen hallinta" + +#~ msgid "List" +#~ msgstr "Lista" + +#~ msgid "Owner" +#~ msgstr "Omistaja" + +#~ msgid "Members" +#~ msgstr "Jäsenet" + +#~ msgid "mode" +#~ msgstr "tila" + +#~ msgid "Create a new list" +#~ msgstr "Luo uusi" + +#~ msgid "Open in buffer" +#~ msgstr "Avaa puskurissa" + +#~ msgid "Viewing lists for %s" +#~ msgstr "Näytetään käyttäjän %s listat" + +#~ msgid "Subscribe" +#~ msgstr "Tilaa" + +#~ msgid "Unsubscribe" +#~ msgstr "Peruuta tilaus" + +#~ msgid "Name (20 characters maximun)" +#~ msgstr "Nimi (enintään 20 merkkiä)" + +#~ msgid "Mode" +#~ msgstr "Tila" + +#~ msgid "Private" +#~ msgstr "Yksityinen" + +#~ msgid "Editing the list %s" +#~ msgstr "Muokataan listaa %s" + +#~ msgid "Select a list to add the user" +#~ msgstr "Valitse lista, johon käyttäjä lisätään" + +#~ msgid "Add" +#~ msgstr "Lisää" + +#~ msgid "Select a list to remove the user" +#~ msgstr "Valitse lista, jolta käyttäjä poistetaan" + +#~ msgid "Do you really want to delete this list?" +#~ msgstr "Haluatko varmasti poistaa tämän listan?" + +#~ msgid "Search on Twitter" +#~ msgstr "Hae Twitteristä" + +#~ msgid "Tweets" +#~ msgstr "Twiittejä" + +#~ msgid "&Language for results: " +#~ msgstr "&Tulosten kieli: " + +#~ msgid "any" +#~ msgstr "mikä tahansa" + +#~ msgid "Results &type: " +#~ msgstr "Tulosten t&yyppi: " + +#~ msgid "Mixed" +#~ msgstr "Molemmat sekaisin" + +#~ msgid "Recent" +#~ msgstr "Uusimmat" + +#~ msgid "Popular" +#~ msgstr "Suositut" + +#~ msgid "Details" +#~ msgstr "Tiedot" + +#~ msgid "&Go to URL" +#~ msgstr "&Siirry URL-osoitteeseen" + +#~ msgid "View trending topics" +#~ msgstr "Näytä suositut aiheet" + +#~ msgid "Trending topics by" +#~ msgstr "Suositut aiheet käyttäjällä" + +#~ msgid "Country" +#~ msgstr "Maa" + +#~ msgid "City" +#~ msgstr "Kaupunki" + +#~ msgid "&Location" +#~ msgstr "&Sijainti" + +#~ msgid "Update your profile" +#~ msgstr "Päivitä profiilisi" + +#~ msgid "&Name (50 characters maximum)" +#~ msgstr "&Nimi (enintään 50 merkkiä)" + +#~ msgid "&Website" +#~ msgstr "&Verkkosivu" + +#~ msgid "&Bio (160 characters maximum)" +#~ msgstr "&Kuvaus (enintään 160 merkkiä)" + +#~ msgid "Upload a &picture" +#~ msgstr "Lähetä &kuva" + +#~ msgid "Upload a picture" +#~ msgstr "Lähetä kuva" + +#~ msgid "Discard image" +#~ msgstr "Hylkää kuva" + +#~ msgid "&Report as spam" +#~ msgstr "&Ilmoita roskatwiittaajaksi" + +#~ msgid "&Ignore tweets from this client" +#~ msgstr "&Ohita twiitit tästä asiakasohjelmasta" + +#~ msgid "&Tweets" +#~ msgstr "&Twiitit" + +#~ msgid "&Likes" +#~ msgstr "&Tykkäykset" + +#~ msgid "F&riends" +#~ msgstr "K&averit" + +#~ msgid "Delete attachment" +#~ msgstr "Poista liite" + +#~ msgid "Added Tweets" +#~ msgstr "Lähetetyt twiitit" + +#~ msgid "Delete tweet" +#~ msgstr "Lähetetyt twiitit" + +#~ msgid "A&dd..." +#~ msgstr "" + +#~ msgid "Add t&weet" +#~ msgstr "Tykkää twiitistä" + +#~ msgid "&Attach audio..." +#~ msgstr "L&isää liitteeksi äänitiedosto..." + +#~ msgid "Sen&d" +#~ msgstr "Lä&hetä" + +#~ msgid "Video files (*.mp4)|*.mp4" +#~ msgstr "" + +#~ msgid "" +#~ "It is not possible to add more " +#~ "attachments. Please make sure your tweet" +#~ " complies with Twitter'S attachment rules." +#~ " You can add only one video or" +#~ " GIF in every tweet, and a " +#~ "maximum of 4 photos." +#~ msgstr "" + +#~ msgid "&Mention to all" +#~ msgstr "&Mainitse ka&ikille" + +#~ msgid "&Recipient" +#~ msgstr "Vastaa¬taja" + +#~ msgid "Tweet - %i characters " +#~ msgstr "Twiitti - %i merkkiä " + +#~ msgid "Retweets: " +#~ msgstr "Uudelleentwiittauksia: " + +#~ msgid "Likes: " +#~ msgstr "Tykkäyksiä: " + +#~ msgid "View" +#~ msgstr "Näytä" + +#~ msgid "Item" +#~ msgstr "Kohde" + +#~ msgid "&Expand URL" +#~ msgstr "Laa&jenna URL" + +#~ msgid "Participation time (in days)" +#~ msgstr "" + +#~ msgid "&Open in Twitter" +#~ msgstr "&Avaa Twitterissä" + +#~ msgid "&Show tweet" +#~ msgstr "&Näytä twiitti" + +#~ msgid "Translated" +#~ msgstr "Käännetty" + +#~ msgid "Afrikaans" +#~ msgstr "afrikaans" + +#~ msgid "Albanian" +#~ msgstr "albania" + +#~ msgid "Amharic" +#~ msgstr "amhara" + +#~ msgid "Arabic" +#~ msgstr "arabia" + +#~ msgid "Armenian" +#~ msgstr "armenia" + +#~ msgid "Azerbaijani" +#~ msgstr "azeri" + +#~ msgid "Basque" +#~ msgstr "baski" + +#~ msgid "Belarusian" +#~ msgstr "valkovenäjä" + +#~ msgid "Bengali" +#~ msgstr "bengali" + +#~ msgid "Bihari" +#~ msgstr "bihar" + +#~ msgid "Bulgarian" +#~ msgstr "bulgaria" + +#~ msgid "Burmese" +#~ msgstr "burma" + +#~ msgid "Catalan" +#~ msgstr "katalaani" + +#~ msgid "Cherokee" +#~ msgstr "cherokee" + +#~ msgid "Chinese" +#~ msgstr "kiina" + +#~ msgid "Chinese_simplified" +#~ msgstr "kiina (yksinkertaistettu)" + +#~ msgid "Chinese_traditional" +#~ msgstr "kiina (perinteinen)" + +#~ msgid "Croatian" +#~ msgstr "kroatia" + +#~ msgid "Czech" +#~ msgstr "tshekki" + +#~ msgid "Dhivehi" +#~ msgstr "divehi" + +#~ msgid "Esperanto" +#~ msgstr "esperanto" + +#~ msgid "Estonian" +#~ msgstr "viro" + +#~ msgid "Filipino" +#~ msgstr "filipino" + +#~ msgid "Galician" +#~ msgstr "galicia" + +#~ msgid "Georgian" +#~ msgstr "georgia" + +#~ msgid "Greek" +#~ msgstr "kreikka" + +#~ msgid "Guarani" +#~ msgstr "guarani" + +#~ msgid "Gujarati" +#~ msgstr "gujarati" + +#~ msgid "Hebrew" +#~ msgstr "heprea" + +#~ msgid "Hindi" +#~ msgstr "hindi" + +#~ msgid "Icelandic" +#~ msgstr "islanti" + +#~ msgid "Indonesian" +#~ msgstr "indonesia" + +#~ msgid "Inuktitut" +#~ msgstr "inuktitut" + +#~ msgid "Irish" +#~ msgstr "iiri" + +#~ msgid "Kannada" +#~ msgstr "kannada" + +#~ msgid "Kazakh" +#~ msgstr "kazakki" + +#~ msgid "Khmer" +#~ msgstr "khmer" + +#~ msgid "Kurdish" +#~ msgstr "kurdi" + +#~ msgid "Kyrgyz" +#~ msgstr "kirgiisi" + +#~ msgid "Laothian" +#~ msgstr "lao" + +#~ msgid "Latvian" +#~ msgstr "latvia" + +#~ msgid "Lithuanian" +#~ msgstr "liettua" + +#~ msgid "Macedonian" +#~ msgstr "makedonia" + +#~ msgid "Malay" +#~ msgstr "malaiji" + +#~ msgid "Malayalam" +#~ msgstr "malajalam" + +#~ msgid "Maltese" +#~ msgstr "malta" + +#~ msgid "Marathi" +#~ msgstr "Marathi" + +#~ msgid "Mongolian" +#~ msgstr "mongoli" + +#~ msgid "Nepali" +#~ msgstr "nepali" + +#~ msgid "Norwegian" +#~ msgstr "norja" + +#~ msgid "Oriya" +#~ msgstr "orija" + +#~ msgid "Pashto" +#~ msgstr "pashtu" + +#~ msgid "Persian" +#~ msgstr "persia" + +#~ msgid "Punjabi" +#~ msgstr "pandzhabi" + +#~ msgid "Romanian" +#~ msgstr "romania" + +#~ msgid "Sanskrit" +#~ msgstr "sanskrit" + +#~ msgid "Serbian" +#~ msgstr "serbia" + +#~ msgid "Sindhi" +#~ msgstr "sindhi" + +#~ msgid "Sinhalese" +#~ msgstr "sinhali" + +#~ msgid "Slovak" +#~ msgstr "slovakki" + +#~ msgid "Slovenian" +#~ msgstr "slovenia" + +#~ msgid "Swahili" +#~ msgstr "swahili" + +#~ msgid "Swedish" +#~ msgstr "ruotsi" + +#~ msgid "Tajik" +#~ msgstr "tadzhikki" + +#~ msgid "Tamil" +#~ msgstr "tamili" + +#~ msgid "Tagalog" +#~ msgstr "tagalog" + +#~ msgid "Telugu" +#~ msgstr "telugu" + +#~ msgid "Thai" +#~ msgstr "thai" + +#~ msgid "Tibetan" +#~ msgstr "tiibet" + +#~ msgid "Ukrainian" +#~ msgstr "ukraina" + +#~ msgid "Urdu" +#~ msgstr "urdu" + +#~ msgid "Uzbek" +#~ msgstr "Uzbek" + +#~ msgid "Uighur" +#~ msgstr "uiguuri" + +#~ msgid "Vietnamese" +#~ msgstr "vietnam" + +#~ msgid "Welsh" +#~ msgstr "wales" + +#~ msgid "Yiddish" +#~ msgstr "jiddish" + +#~ msgid "" +#~ "TWBlue has detected that you're running" +#~ " windows 10 and has changed the " +#~ "default keymap to the Windows 10 " +#~ "keymap. It means that some keyboard " +#~ "shorcuts could be different. Please " +#~ "check the keystroke editor by pressing" +#~ " Alt+Win+K to see all available " +#~ "keystrokes for this keymap." +#~ msgstr "" +#~ "TWBlue on havainnut, että käytät Windows" +#~ " 10:tä, ja on siksi vaihtanut " +#~ "oletusnäppäinkartan. Tämän vuoksi jotkin " +#~ "näppäinkomennot saattavat olla erilaisia kuin" +#~ " mihin olet tottunut. Katso kaikki " +#~ "Windows 10 -näppäinkartan käytettävissä olevat" +#~ " komennot näppäinkomentojen editorista painamalla" +#~ " Alt+Win+K." + +#~ msgid "Boosts: " +#~ msgstr "" + +#~ msgid "Favorites: " +#~ msgstr "" + +#~ msgid "Date: " +#~ msgstr "Päiväys: " + +#~ msgid "Community for {}" +#~ msgstr "" + +#~ msgid "Run {0} at Windows startup" +#~ msgstr "Suorita {0} Windowsin käynnistyksessä" + +#~ msgid "Use Codeofdusk's longtweet handlers (may decrease client performance)" +#~ msgstr "" +#~ "Käytä Codeofduskin pitkien twiittien " +#~ "käsittelijöitä (saattaa heikentää asiakasohjelman" +#~ " suorituskykyä)" + +#~ msgid "Remember state for mention all and long tweet" +#~ msgstr "Muista maininta kaikille -toiminnon ja pitkän twiitin tila" + +#~ msgid "Bio: " +#~ msgstr "" + +#~ msgid "Joined at: " +#~ msgstr "" + +#~ msgid "Field {} - Label: " +#~ msgstr "" + +#~ msgid "{} posts. Click to open posts timeline" +#~ msgstr "" + +#~ msgid "{} following. Click to open Following timeline" +#~ msgstr "" + +#~ msgid "{} followers. Click to open followers timeline" +#~ msgstr "" + +#~ msgid "Display Name" +#~ msgstr "" + +#~ msgid "Bio" +#~ msgstr "" + +#~ msgid "Change header" +#~ msgstr "" + +#~ msgid "Change avatar" +#~ msgstr "" + +#~ msgid "Field {}: Label" +#~ msgstr "" + +#~ msgid "Add following to database" +#~ msgstr "" + +#~ msgid "Read long posts in GUI" +#~ msgstr "" + +#~ msgid "LibreTranslate API URL: " +#~ msgstr "" + +#~ msgid "LibreTranslate API Key (optional): " +#~ msgstr "" + +#~ msgid "DeepL API Key: " +#~ msgstr "" + +#~ msgid "" +#~ "Scan account and add followers and " +#~ "following users to the user " +#~ "autocompletion database" +#~ msgstr "" + +#~ msgid "" +#~ "Read preferences from instance (default " +#~ "visibility when publishing and displaying " +#~ "sensitive content)" +#~ msgstr "" + +#~ msgid "Ask confirmation before boosting a post" +#~ msgstr "" + +#~ msgid "hide emojis in usernames" +#~ msgstr "" + +#~ msgid "" +#~ "Load cache for items in memory " +#~ "(much faster in big datasets but " +#~ "requires more RAM)" +#~ msgstr "" + diff --git a/srcantiguo/locales/fr/LC_MESSAGES/twblue.mo b/srcantiguo/locales/fr/LC_MESSAGES/twblue.mo new file mode 100644 index 00000000..23316793 Binary files /dev/null and b/srcantiguo/locales/fr/LC_MESSAGES/twblue.mo differ diff --git a/srcantiguo/locales/fr/LC_MESSAGES/twblue.po b/srcantiguo/locales/fr/LC_MESSAGES/twblue.po new file mode 100644 index 00000000..c64ad0cb --- /dev/null +++ b/srcantiguo/locales/fr/LC_MESSAGES/twblue.po @@ -0,0 +1,4687 @@ +# Corentin Bacqué-Cazenave , 2022, 2023, 2024,, +# 2025. +msgid "" +msgstr "" +"Project-Id-Version: TW Blue 0.94\n" +"Report-Msgid-Bugs-To: manuel@manuelcortez.net\n" +"POT-Creation-Date: 2025-04-13 01:18+0000\n" +"PO-Revision-Date: 2025-03-10 03:23+0000\n" +"Last-Translator: Corentin Bacqué-Cazenave \n" +"Language: fr\n" +"Language-Team: French " +"\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.17.0\n" + +#: languageHandler.py:61 +msgctxt "languageName" +msgid "Amharic" +msgstr "Amharic" + +#: languageHandler.py:62 +msgctxt "languageName" +msgid "Aragonese" +msgstr "Aragonais" + +#: languageHandler.py:63 +msgctxt "languageName" +msgid "Spanish" +msgstr "Espagnol" + +#: languageHandler.py:64 +msgctxt "languageName" +msgid "Portuguese" +msgstr "Portugais" + +#: languageHandler.py:65 +msgctxt "languageName" +msgid "Russian" +msgstr "Russe" + +#: languageHandler.py:66 +msgctxt "languageName" +msgid "italian" +msgstr "italian" + +#: languageHandler.py:67 +msgctxt "languageName" +msgid "Turkey" +msgstr "Turc" + +#: languageHandler.py:68 +msgctxt "languageName" +msgid "Galician" +msgstr "Galicien" + +#: languageHandler.py:69 +msgctxt "languageName" +msgid "Catala" +msgstr "Catalan" + +#: languageHandler.py:70 +msgctxt "languageName" +msgid "Vasque" +msgstr "Basque" + +#: languageHandler.py:71 +msgctxt "languageName" +msgid "polish" +msgstr "polonais" + +#: languageHandler.py:72 +msgctxt "languageName" +msgid "Arabic" +msgstr "Arabe" + +#: languageHandler.py:73 +msgctxt "languageName" +msgid "Nepali" +msgstr "Népalais" + +#: languageHandler.py:74 +msgctxt "languageName" +msgid "Serbian (Latin)" +msgstr "Serbe (Latin)" + +#: languageHandler.py:75 +msgctxt "languageName" +msgid "Japanese" +msgstr "Japonais" + +#: languageHandler.py:99 +msgid "User default" +msgstr "Utilisateur par défaut" + +#: main.py:105 +msgid "https://twblue.mcvsoftware.com/donate" +msgstr "https://twblue.es/donate" + +#: main.py:118 +#, python-brace-format +msgid "" +"{0} is already running. Close the other instance before starting this " +"one. If you're sure that {0} isn't running, try deleting the file at {1}." +" If you're unsure of how to do this, contact the {0} developers." +msgstr "" +"{0} est déjà en cours d'exécution. Fermez l'autre instance avant de " +"démarrer celle-ci. Si vous êtes sûr·e que {0} n'est pas démarré, essayez " +"de supprimer le fichier à l'emplacement {1}. Si vous n'êtes pas sûr·e de " +"comment faire cela, contactez les développeurs de {0}." + +#: sound.py:148 +msgid "Playing..." +msgstr "Lecture..." + +#: sound.py:161 +msgid "Stopped." +msgstr "Arrêté." + +#: controller/mainController.py:261 +msgid "Ready" +msgstr "Prêt" + +#: controller/mainController.py:369 controller/mainController.py:654 +#: controller/mainController.py:673 controller/mainController.py:692 +#: controller/mainController.py:711 +msgid "" +"No session is currently in focus. Focus a session with the next or " +"previous session shortcut." +msgstr "" +"Aucune session n'a actuellement le focus. Sélectionnez-en une avec le " +"raccourci pour la session précédente ou suivante." + +#: controller/mainController.py:373 +msgid "Empty buffer." +msgstr "Tampon vide." + +#: controller/mainController.py:380 +#, python-brace-format +msgid "{0} not found." +msgstr "{0} introuvable." + +#: controller/mainController.py:702 controller/mainController.py:721 +#, python-format +msgid "%s, %s of %s" +msgstr "%s, %s de %s" + +#: controller/mainController.py:704 controller/mainController.py:723 +#: controller/mainController.py:751 controller/mainController.py:779 +#, python-format +msgid "%s. Empty" +msgstr "%s. Vide" + +#: controller/mainController.py:739 controller/mainController.py:743 +#: controller/mainController.py:767 +#, python-brace-format +msgid "{0}: This account is not logged into Twitter." +msgstr "{0}: Ce compte n'est pas connecté à twitter." + +#: controller/mainController.py:749 controller/mainController.py:777 +#, python-format +msgid "%s. %s, %s of %s" +msgstr "%s. %s, %s de %s" + +#: controller/mainController.py:771 +#, python-brace-format +msgid "{0}: This account is not logged into twitter." +msgstr "{0}: Ce compte n'est pas connecté à twitter." + +#: controller/mainController.py:910 controller/mainController.py:926 +msgid "An error happened while trying to connect to the server. Please try later." +msgstr "" +"Une erreur s'est produite en essayant de se connecter au serveur. " +"Veuillez réessayer plus tard." + +#: controller/mainController.py:957 +msgid "The auto-reading of new tweets is enabled for this buffer" +msgstr "La lecture automatique des nouveaux tweets est activée pour ce tampon" + +#: controller/mainController.py:960 +msgid "The auto-reading of new tweets is disabled for this buffer" +msgstr "La lecture automatique des nouveaux tweets est désactivée pour ce tampon" + +#: controller/mainController.py:967 +msgid "Session mute on" +msgstr "Session muette" + +#: controller/mainController.py:970 +msgid "Session mute off" +msgstr "Session non muette" + +#: controller/mainController.py:979 +msgid "Buffer mute on" +msgstr "Tampon muet" + +#: controller/mainController.py:982 +msgid "Buffer mute off" +msgstr "Tampon non muet" + +#: controller/mainController.py:999 +msgid "Copied" +msgstr "Copié" + +#: controller/mainController.py:1019 +msgid "Unable to update this buffer." +msgstr "Impossible de mettre à jour ce tampon." + +#: controller/mainController.py:1021 +msgid "Updating buffer..." +msgstr "Actualisation..." + +#: controller/mainController.py:1024 +#, python-brace-format +msgid "{0} items retrieved" +msgstr "{0} éléments récupérés" + +#: controller/buffers/mastodon/base.py:137 controller/mainController.py:1028 +#: controller/mastodon/handler.py:98 controller/mastodon/handler.py:241 +#, python-brace-format +msgid "Timeline for {}" +msgstr "Chronologie de {}" + +#: controller/buffers/mastodon/users.py:93 controller/mainController.py:1030 +#: controller/mastodon/handler.py:100 controller/mastodon/handler.py:255 +#, python-brace-format +msgid "Followers for {}" +msgstr "Abonnés de {}" + +#: controller/mainController.py:1032 +#, python-brace-format +msgid "Friends for {}" +msgstr "Abonnements de {}" + +#: controller/buffers/mastodon/users.py:95 controller/mainController.py:1034 +#: controller/mastodon/handler.py:102 controller/mastodon/handler.py:269 +#, python-brace-format +msgid "Following for {}" +msgstr "Abonnements de {}" + +#: controller/messages.py:18 +msgid "Translated" +msgstr "Traduit" + +#: controller/settings.py:60 +msgid "System default" +msgstr "Système par défaut" + +#: controller/settings.py:60 +msgid "HTTP" +msgstr "HTTP" + +#: controller/settings.py:60 +msgid "SOCKS v4" +msgstr "SOCKS v4" + +#: controller/settings.py:60 +msgid "SOCKS v4 with DNS support" +msgstr "SOCKS v4 avec support DNS" + +#: controller/settings.py:60 +msgid "SOCKS v5" +msgstr "SOCKS v5" + +#: controller/settings.py:60 +msgid "SOCKS v5 with DNS support" +msgstr "SOCKS v5 avec support DNS" + +#: controller/userAlias.py:31 +#, python-brace-format +msgid "Edit alias for {}" +msgstr "Éditer l'alias pour {}" + +#: controller/buffers/base/base.py:91 +#: controller/buffers/mastodon/conversations.py:237 +#: controller/buffers/mastodon/search.py:80 +msgid "This action is not supported for this buffer" +msgstr "Cette action n'est pas supportée pour ce tampon" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:70 +#: controller/mastodon/settings.py:194 +msgid "Home" +msgstr "Accueil" + +#: controller/buffers/mastodon/base.py:52 +#: controller/buffers/mastodon/community.py:22 +#: controller/mastodon/handler.py:72 controller/mastodon/handler.py:114 +#: controller/mastodon/settings.py:195 +msgid "Local" +msgstr "Local" + +#: controller/buffers/mastodon/base.py:52 +#: controller/buffers/mastodon/community.py:22 +#: controller/mastodon/handler.py:74 controller/mastodon/settings.py:196 +msgid "Federated" +msgstr "Fédéré" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:76 +#: controller/mastodon/settings.py:197 +msgid "Mentions" +msgstr "Mentions" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:84 +#: controller/mastodon/settings.py:201 +msgid "Bookmarks" +msgstr "Marque-pages" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:78 +msgid "Direct messages" +msgstr "Messages" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:80 +#: controller/mastodon/settings.py:199 +msgid "Sent" +msgstr "Envoyé" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:82 +#: controller/mastodon/settings.py:200 wxUI/dialogs/mastodon/postDialogs.py:229 +msgid "Favorites" +msgstr "Favoris" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:86 +#: controller/mastodon/settings.py:202 +msgid "Followers" +msgstr "Abonnés" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:88 +#: controller/mastodon/settings.py:203 +msgid "Following" +msgstr "Abonnements" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:92 +#: controller/mastodon/settings.py:204 +msgid "Blocked users" +msgstr "Utilisateurs bloqués" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:90 +#: controller/mastodon/settings.py:205 +msgid "Muted users" +msgstr "Utilisateurs masqués" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:94 +#: controller/mastodon/settings.py:206 +#: wxUI/dialogs/mastodon/filters/create_filter.py:80 +msgid "Notifications" +msgstr "Notifications" + +#: controller/buffers/mastodon/base.py:58 +#, python-brace-format +msgid "{username}'s timeline" +msgstr "Chronologie de {username}" + +#: controller/buffers/mastodon/base.py:60 +#, python-brace-format +msgid "{username}'s followers" +msgstr "Abonnés de {username}" + +#: controller/buffers/mastodon/base.py:62 +#, python-brace-format +msgid "{username}'s following" +msgstr "Abonnements de {username}" + +#: controller/buffers/mastodon/base.py:64 +msgid "Unknown buffer" +msgstr "Tampon inconnu" + +#: controller/buffers/mastodon/base.py:67 +#: controller/buffers/mastodon/base.py:645 wxUI/buffers/mastodon/base.py:24 +#: wxUI/buffers/mastodon/conversationList.py:24 +#: wxUI/buffers/mastodon/notifications.py:22 wxUI/buffers/mastodon/user.py:18 +#: wxUI/dialogs/mastodon/postDialogs.py:5 +#: wxUI/dialogs/mastodon/postDialogs.py:194 wxUI/sysTrayIcon.py:35 +msgid "Post" +msgstr "Post" + +#: controller/buffers/mastodon/base.py:68 +#: controller/buffers/mastodon/base.py:646 +msgid "Write your post here" +msgstr "Écrivez votre post ici" + +#: controller/buffers/mastodon/base.py:153 +#, python-brace-format +msgid "New post in {0}" +msgstr "Nouveau post dans {0}" + +#: controller/buffers/mastodon/base.py:159 +#, python-brace-format +msgid "{0} new posts in {1}." +msgstr "{0} nouveaux posts dans {1}." + +#: controller/buffers/mastodon/base.py:198 +#: controller/buffers/mastodon/community.py:90 +#: controller/buffers/mastodon/conversations.py:100 +#: controller/buffers/mastodon/mentions.py:82 +#: controller/buffers/mastodon/users.py:139 +#, python-format +msgid "%s items retrieved" +msgstr "%s éléments récupérés" + +#: controller/buffers/mastodon/base.py:216 +#: controller/buffers/mastodon/users.py:206 +msgid "This buffer is not a timeline; it can't be deleted." +msgstr "Ce tampon n'est pas une chronologie ; Impossible de le supprimé." + +#: controller/buffers/mastodon/base.py:346 +#: controller/buffers/mastodon/base.py:384 +#, python-brace-format +msgid "Conversation with {}" +msgstr "Conversation avec {}" + +#: controller/buffers/mastodon/base.py:347 +#: controller/buffers/mastodon/base.py:385 +#: controller/buffers/mastodon/conversations.py:181 +#: controller/buffers/mastodon/notifications.py:122 +#: controller/buffers/mastodon/users.py:52 +msgid "Write your message here" +msgstr "Écrivez votre message ici" + +#: controller/buffers/mastodon/base.py:349 +#, python-brace-format +msgid "Reply to {}" +msgstr "Répondre à {}" + +#: controller/buffers/mastodon/base.py:350 +msgid "Write your reply here" +msgstr "Écrivez votre réponse ici" + +#: controller/buffers/mastodon/base.py:412 +msgid "This action is not supported on conversations." +msgstr "Cette action n'est pas supportée sur les conversations." + +#: controller/buffers/mastodon/base.py:477 +msgid "Opening URL..." +msgstr "Ouverture de l'URL..." + +#: controller/buffers/mastodon/base.py:490 +msgid "You can delete only your own posts." +msgstr "Vous pouvez seulement supprimer vos propres posts." + +#: controller/buffers/mastodon/base.py:519 +msgid "Opening item in web browser..." +msgstr "Ouverture de l'élément dans le navigateur Web..." + +#: controller/buffers/mastodon/base.py:527 +#: controller/buffers/mastodon/base.py:547 +msgid "Adding to favorites..." +msgstr "Ajout aux favoris…" + +#: controller/buffers/mastodon/base.py:534 +#: controller/buffers/mastodon/base.py:549 +msgid "Removing from favorites..." +msgstr "Suppression des favoris…" + +#: controller/buffers/mastodon/base.py:544 +#: controller/buffers/mastodon/base.py:559 +#: controller/buffers/mastodon/base.py:573 +#: controller/buffers/mastodon/conversations.py:213 +msgid "No status found with that ID" +msgstr "Aucun Tweet trouvée avec cet ID" + +#: controller/buffers/mastodon/base.py:562 +msgid "Adding to bookmarks..." +msgstr "Ajout aux marque-pages…" + +#: controller/buffers/mastodon/base.py:564 +msgid "Removing from bookmarks..." +msgstr "Suppression des marque-pages…" + +#: controller/buffers/mastodon/base.py:586 +#, python-brace-format +msgid "Picture {0}" +msgstr "Photo {0}" + +#: controller/buffers/mastodon/base.py:587 +msgid "Select the picture" +msgstr "Sélectionner la photo" + +#: controller/buffers/mastodon/base.py:610 +msgid "Unable to extract text" +msgstr "Impossible d'extraire le texte" + +#: controller/buffers/mastodon/base.py:612 +msgid "OCR Result" +msgstr "Résultat d'OCR" + +#: controller/buffers/mastodon/base.py:627 +msgid "this poll no longer exists." +msgstr "Ce sondage n'existe plus." + +#: controller/buffers/mastodon/base.py:630 +msgid "This poll has already expired." +msgstr "Ce sondage a déjà expiré." + +#: controller/buffers/mastodon/base.py:633 +msgid "You have already voted on this poll." +msgstr "Vous avez déjà voté pour ce sondage." + +#: controller/buffers/mastodon/base.py:642 +msgid "Sending vote..." +msgstr "Envoi du vote..." + +#: controller/buffers/mastodon/conversations.py:180 +#, python-brace-format +msgid "Reply to conversation with {}" +msgstr "Répondre à la conversation avec {}" + +#: controller/buffers/mastodon/notifications.py:121 +#: controller/buffers/mastodon/users.py:51 +#, python-brace-format +msgid "New conversation with {}" +msgstr "Nouvelle conversation avec {}" + +#: controller/buffers/mastodon/notifications.py:151 +msgid "Notification dismissed." +msgstr "Notification masquée." + +#: controller/buffers/mastodon/users.py:110 +msgid "There are no more items in this buffer." +msgstr "Il n'y a plus d'élément dans ce tampon." + +#: controller/mastodon/handler.py:30 wxUI/dialogs/mastodon/updateProfile.py:35 +msgid "Update Profile" +msgstr "Actualiser le profil" + +#: controller/mastodon/handler.py:31 wxUI/dialogs/mastodon/search.py:10 +#: wxUI/view.py:19 +msgid "&Search" +msgstr "&Rechercher" + +#: controller/mastodon/handler.py:33 wxUI/view.py:22 +msgid "Manage user aliases" +msgstr "Gérer les alias utilisateur" + +#: controller/mastodon/handler.py:35 controller/mastodon/handler.py:59 +#: wxUI/view.py:30 +msgid "&Post" +msgstr "&Post" + +#: controller/mastodon/handler.py:36 wxUI/dialogs/mastodon/menus.py:9 +#: wxUI/dialogs/mastodon/menus.py:37 wxUI/view.py:31 +msgid "Re&ply" +msgstr "Ré&pondre" + +#: controller/mastodon/handler.py:37 wxUI/dialogs/mastodon/menus.py:7 +#: wxUI/dialogs/mastodon/menus.py:35 wxUI/view.py:32 +msgid "&Boost" +msgstr "&Partager" + +#: controller/mastodon/handler.py:38 wxUI/dialogs/mastodon/menus.py:11 +#: wxUI/dialogs/mastodon/menus.py:39 wxUI/view.py:33 +msgid "&Add to favorites" +msgstr "&Ajouter aux favoris" + +#: controller/mastodon/handler.py:39 +msgid "Remove from favorites" +msgstr "Supprimer des favoris" + +#: controller/mastodon/handler.py:40 wxUI/dialogs/mastodon/menus.py:21 +#: wxUI/dialogs/mastodon/menus.py:49 wxUI/view.py:35 +msgid "&Show post" +msgstr "&Afficher le post" + +#: controller/mastodon/handler.py:41 wxUI/view.py:36 +msgid "View conversa&tion" +msgstr "Voir &conversation" + +#: controller/mastodon/handler.py:42 wxUI/view.py:37 +msgid "Read text in picture" +msgstr "Lire le texte dans l'&image" + +#: controller/mastodon/handler.py:43 wxUI/dialogs/mastodon/menus.py:25 +#: wxUI/view.py:39 +msgid "&Delete" +msgstr "&Supprimer" + +#: controller/mastodon/handler.py:45 wxUI/view.py:43 +msgid "&Actions..." +msgstr "&Actions..." + +#: controller/mastodon/handler.py:46 wxUI/view.py:44 +msgid "&View timeline..." +msgstr "Voir &chronologie..." + +#: controller/mastodon/handler.py:47 wxUI/view.py:45 +msgid "Direct me&ssage" +msgstr "&Message" + +#: controller/mastodon/handler.py:48 wxUI/view.py:46 +msgid "Add a&lias" +msgstr "Ajouter un a&lias" + +#: controller/mastodon/handler.py:51 +msgid "Show user profile" +msgstr "Voir le &profil de l'utilisateur" + +#: controller/mastodon/handler.py:54 +msgid "Create c&ommunity timeline" +msgstr "Créer une chronologie de c&ommunauté" + +#: controller/mastodon/handler.py:55 wxUI/view.py:57 +msgid "Create a &filter" +msgstr "Créer un &filtre" + +#: controller/mastodon/handler.py:56 wxUI/view.py:58 +msgid "&Manage filters" +msgstr "&Gérer les filtres" + +#: controller/mastodon/handler.py:95 +msgid "Timelines" +msgstr "Chronologies" + +#: controller/mastodon/handler.py:107 +msgid "Searches" +msgstr "Recherches" + +#: controller/mastodon/handler.py:110 controller/mastodon/handler.py:191 +#: controller/mastodon/handler.py:196 +#, python-brace-format +msgid "Search for {}" +msgstr "Recherche de {}" + +#: controller/mastodon/handler.py:111 +msgid "Communities" +msgstr "Communautés" + +#: controller/mastodon/handler.py:114 +msgid "federated" +msgstr "fédéré" + +#: controller/mastodon/handler.py:143 +#, python-brace-format +msgid "Conversation with {0}" +msgstr "Conversation avec {0}" + +#: controller/mastodon/handler.py:299 +msgid "Add an user alias" +msgstr "Ajoute un alias pour l'utilisateur" + +#: controller/mastodon/handler.py:311 +#, python-brace-format +msgid "Alias has been set correctly for {}." +msgstr "L'alias pour {} a correctement été définie." + +#: controller/mastodon/handler.py:342 +msgid "Update profile" +msgstr "Actualiser le profil" + +#: controller/mastodon/messages.py:115 +#, python-format +msgid "%s - %s of %d characters" +msgstr "%s - %s/%d caractères" + +#: controller/mastodon/messages.py:239 +#, python-brace-format +msgid "Poll with {} options" +msgstr "Sondage avec {} options" + +#: controller/mastodon/messages.py:272 +#, python-brace-format +msgid "Post from {}" +msgstr "Post de {}" + +#: controller/mastodon/messages.py:276 sessions/mastodon/templates.py:82 +#: wxUI/dialogs/mastodon/postDialogs.py:49 +msgid "Public" +msgstr "Public" + +#: controller/mastodon/messages.py:276 sessions/mastodon/templates.py:82 +#: wxUI/dialogs/mastodon/postDialogs.py:49 +msgid "Not listed" +msgstr "Non listé" + +#: controller/mastodon/messages.py:276 +msgid "followers only" +msgstr "Abonnés uniquement" + +#: controller/mastodon/messages.py:276 sessions/mastodon/templates.py:82 +#: wxUI/dialogs/mastodon/postDialogs.py:49 +msgid "Direct" +msgstr "Direct" + +#: controller/mastodon/messages.py:283 +msgid "Remote instance" +msgstr "Instance distante" + +#: controller/mastodon/messages.py:291 controller/mastodon/messages.py:319 +msgid "Unmute conversation" +msgstr "Voir conversation" + +#: controller/mastodon/messages.py:315 wxUI/dialogs/mastodon/postDialogs.py:237 +msgid "Mute conversation" +msgstr "Voir conversation" + +#: controller/mastodon/messages.py:316 +msgid "Conversation unmuted." +msgstr "Conversation avec {}" + +#: controller/mastodon/messages.py:320 +msgid "Conversation muted." +msgstr "Conversation avec {}" + +#: controller/mastodon/messages.py:331 +msgid "people who boosted this post" +msgstr "personnes qui ont partagé ce post" + +#: controller/mastodon/messages.py:336 +msgid "people who favorited this post" +msgstr "personnes qui ont ajouté ce post aux favoris" + +#: controller/mastodon/messages.py:342 +msgid "Link copied to clipboard." +msgstr "Lien copié dans le presse-papiers" + +#: controller/mastodon/settings.py:82 +#, python-format +msgid "Account settings for %s" +msgstr "Paramètres du compte de %s" + +#: controller/mastodon/settings.py:92 +#, python-brace-format +msgid "Edit template for posts. Current template: {}" +msgstr "Éditer le modèle pour les posts. Modèle actuel : {}" + +#: controller/mastodon/settings.py:101 +#, python-brace-format +msgid "Edit template for conversations. Current template: {}" +msgstr "Éditer le modèle pour les conversations. Modèle actuel : {}" + +#: controller/mastodon/settings.py:110 +#, python-brace-format +msgid "Edit template for persons. Current template: {}" +msgstr "Éditer le modèles pour les personnes. Modèle actuel : {}" + +#: controller/mastodon/settings.py:198 +msgid "Direct Messages" +msgstr "Messages" + +#: controller/mastodon/filters/create_filter.py:75 +#, python-brace-format +msgid "Update Filter: {}" +msgstr "Mettre à jour le filtre: {}" + +#: controller/mastodon/filters/manage_filters.py:57 +#: wxUI/dialogs/mastodon/filters/create_filter.py:90 +msgid "Never" +msgstr "Jamais" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:4 +msgid "Audio tweet." +msgstr "Tweet audio." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:5 +msgid "User timeline buffer created." +msgstr "Tampon de chronologie utilisateur créé." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:6 +msgid "Buffer destroied." +msgstr "Tampon détruit." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:7 +msgid "Direct message received." +msgstr "Message reçu." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:8 +msgid "Direct message sent." +msgstr "Message envoyé." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:9 +msgid "Error." +msgstr "Erreur." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:10 +msgid "Tweet liked." +msgstr "Tweet aimé." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:11 +msgid "Likes buffer updated." +msgstr "Tampon des favoris mis à jour." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:12 +msgid "Geotweet." +msgstr "Tweet avec géolocalisation." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:13 +msgid "Tweet contains one or more images" +msgstr "Ce tweet contient une ou plusieurs images" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:14 +msgid "Boundary reached." +msgstr "Limite atteinte." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:15 +msgid "List updated." +msgstr "Liste mise à jour." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:16 +msgid "Too many characters." +msgstr "Trop de caractères." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:17 +msgid "Mention received." +msgstr "Mention reçue." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:18 +msgid "New event." +msgstr "Nouvel évènement." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:19 +#, python-brace-format +msgid "{0} is ready." +msgstr "{0} est prêt." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:20 +msgid "Mention sent." +msgstr "Mention envoyée." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:21 +msgid "Tweet retweeted." +msgstr "Tweet retweeté." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:22 +msgid "Search buffer updated." +msgstr "Tampon de recherche mis à jour." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:23 +msgid "Tweet received." +msgstr "Tweet reçu." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:24 +msgid "Tweet sent." +msgstr "Tweet envoyé." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:25 +msgid "Trending topics buffer updated." +msgstr "Tampon de tendances mis à jour." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:26 +msgid "New tweet in user timeline buffer." +msgstr "Nouveau tweet dans un tampon de chronologie utilisateur." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:27 +msgid "New follower." +msgstr "Nouvel abonné." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:28 +msgid "Volume changed." +msgstr "Volume changé." + +#: extra/SoundsTutorial/wx_ui.py:8 +msgid "Sounds tutorial" +msgstr "Apprentissage des sons" + +#: extra/SoundsTutorial/wx_ui.py:11 +msgid "Press enter to listen to the sound for the selected event" +msgstr "Pressez entrée pour entendre le son lié à l'évènement sélectionné" + +#: extra/SpellChecker/spellchecker.py:56 +#, python-format +msgid "Misspelled word: %s" +msgstr "Mot mal orthographié: %s" + +#: extra/SpellChecker/wx_ui.py:27 +msgid "Misspelled word" +msgstr "Mot mal orthographié" + +#: extra/SpellChecker/wx_ui.py:32 +msgid "Context" +msgstr "Contexte" + +#: extra/SpellChecker/wx_ui.py:37 +msgid "Suggestions" +msgstr "Suggestions" + +#: extra/SpellChecker/wx_ui.py:42 +msgid "&Ignore" +msgstr "&Ignorer" + +#: extra/SpellChecker/wx_ui.py:43 +msgid "I&gnore all" +msgstr "I&gnorer tout" + +#: extra/SpellChecker/wx_ui.py:44 +msgid "&Replace" +msgstr "&Remplacer" + +#: extra/SpellChecker/wx_ui.py:45 +msgid "R&eplace all" +msgstr "R&emplacer tout" + +#: extra/SpellChecker/wx_ui.py:46 +msgid "&Add to personal dictionary" +msgstr "&Ajouter au dictionnaire personnel" + +#: extra/SpellChecker/wx_ui.py:79 +#, python-brace-format +msgid "" +"An error has occurred. There are no dictionaries available for the " +"selected language in {0}" +msgstr "" +"Une erreur s'est produite. Il n'existe aucun dictionnaires disponibles " +"pour la langue sélectionnée dans {0}" + +#: extra/SpellChecker/wx_ui.py:79 +#: extra/autocompletionUsers/mastodon/wx_scan.py:44 +#: wxUI/commonMessageDialogs.py:23 wxUI/commonMessageDialogs.py:36 +#: wxUI/commonMessageDialogs.py:45 wxUI/commonMessageDialogs.py:52 +#: wxUI/commonMessageDialogs.py:55 wxUI/commonMessageDialogs.py:61 +#: wxUI/dialogs/mastodon/dialogs.py:38 wxUI/dialogs/mastodon/dialogs.py:43 +#: wxUI/dialogs/mastodon/dialogs.py:48 wxUI/dialogs/mastodon/dialogs.py:53 +#: wxUI/dialogs/mastodon/dialogs.py:60 +msgid "Error" +msgstr "Erreur" + +#: extra/SpellChecker/wx_ui.py:82 +msgid "Spell check complete." +msgstr "Vérification orthographique terminée." + +#: extra/autocompletionUsers/completion.py:39 +#: extra/autocompletionUsers/completion.py:57 +msgid "You have to start writing" +msgstr "Vous devez commencer à écrire" + +#: extra/autocompletionUsers/completion.py:49 +#: extra/autocompletionUsers/completion.py:66 +msgid "There are no results in your users database" +msgstr "Il n'y a pas de résultat dans votre base de données d'utilisateurs" + +#: extra/autocompletionUsers/completion.py:51 +msgid "Autocompletion only works for users." +msgstr "L'autocomplétion ne fonctionne que pour les utilisateurs" + +#: extra/autocompletionUsers/wx_manage.py:9 +msgid "Manage Autocompletion database" +msgstr "Gérer la base de données d'autocomplétion" + +#: extra/autocompletionUsers/wx_manage.py:12 +#, python-brace-format +msgid "Editing {0} users database" +msgstr "Éditer la base de données d'utilisateurs de {0}" + +#: extra/autocompletionUsers/wx_manage.py:13 +msgid "Username" +msgstr "Nom d'utilisateur" + +#: extra/autocompletionUsers/wx_manage.py:13 wxUI/dialogs/configuration.py:108 +msgid "Name" +msgstr "Nom" + +#: extra/autocompletionUsers/wx_manage.py:16 +msgid "Add user" +msgstr "Ajouter un utilisateur" + +#: extra/autocompletionUsers/wx_manage.py:17 +msgid "Remove user" +msgstr "Supprimer l'utilisateur" + +#: extra/autocompletionUsers/wx_manage.py:38 +msgid "Twitter username" +msgstr "Nom d'utilisateur Twitter" + +#: extra/autocompletionUsers/wx_manage.py:38 +msgid "Add user to database" +msgstr "Ajoute un utilisateur à la base de données" + +#: extra/autocompletionUsers/wx_manage.py:44 +msgid "The user does not exist" +msgstr "L'utilisateur n'existe pas" + +#: extra/autocompletionUsers/wx_manage.py:44 +msgid "Error!" +msgstr "Erreur!" + +#: extra/autocompletionUsers/mastodon/scan.py:49 +msgid "" +"Updating database... You can close this window now. A message will tell " +"you when the process finishes." +msgstr "" +"Mise à jour de la base de données… Vous pouvez fermer cette fenêtre. Un " +"message vous avertira de la fin du processus." + +#: extra/autocompletionUsers/mastodon/wx_scan.py:8 +msgid "Autocomplete users' settings" +msgstr "Paramètres d'autocomplétion utilisateurs" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:11 +msgid "Add &followers to database" +msgstr "Ajouter des &abonnés à la base de données" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:12 +msgid "Add f&ollowing to database" +msgstr "Ajouter un ab&onnement à la base de données" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:26 +msgid "Updating autocompletion database" +msgstr "Mise à jour de la base de données d'utilisateurs" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:34 +msgid "" +"This process will retrieve the users you selected from your Mastodon " +"account, and add them to the user autocomplete database. Please note that" +" if there are many users or you have tried to perform this action less " +"than 15 minutes ago, TWBlue may reach a limit in API calls when trying to" +" load the users into the database. If this happens, we will show you an " +"error, in which case you will have to try this process again in a few " +"minutes. If this process ends with no error, you will be redirected back " +"to the account settings dialog. Do you want to continue?" +msgstr "" +"Ce processus récupérera les utilisateurs que vous avez sélectionnés dans " +"votre compte Mastodon et les ajoutera à la base de données " +"d'autocomplétion des utilisateurs. Veuillez noter que s'il y a de " +"nombreux utilisateurs ou si vous avez essayé d'effectuer cette action il " +"y a moins de 15 minutes, TWBlue peut atteindre une limite d'appels API " +"lors de la tentative de chargement des utilisateurs dans la base de " +"données. Si cela se produit, nous vous afficherons une erreur, auquel cas" +" vous devrez réessayer ce processus dans quelques minutes. Si ce " +"processus se termine sans erreur, vous serez redirigé vers la boîte de " +"dialogue des paramètres du compte. Voulez-vous continuer?" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:34 +#: wxUI/commonMessageDialogs.py:20 +msgid "Attention" +msgstr "Attention" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:40 +#, python-brace-format +msgid "TWBlue has imported {} users successfully." +msgstr "TWBlue a importé les utilisateurs {} correctement." + +#: extra/autocompletionUsers/mastodon/wx_scan.py:40 +msgid "Done" +msgstr "Terminé" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:44 +msgid "Error adding users from Mastodon. Please try again in about 15 minutes." +msgstr "" +"Erreur lors de l'ajout des utilisateurs depuis Mastodon. Veuillez " +"réessayer dans environ 15 minutes." + +#: extra/ocr/OCRSpace.py:7 +msgid "Detect automatically" +msgstr "Détecter automatiquement" + +#: extra/ocr/OCRSpace.py:7 +msgid "Danish" +msgstr "Danois" + +#: extra/ocr/OCRSpace.py:7 +msgid "Dutch" +msgstr "Néerlandais" + +#: extra/ocr/OCRSpace.py:7 +msgid "English" +msgstr "Anglais" + +#: extra/ocr/OCRSpace.py:7 +msgid "Finnish" +msgstr "Finnois" + +#: extra/ocr/OCRSpace.py:7 +msgid "French" +msgstr "Français" + +#: extra/ocr/OCRSpace.py:7 +msgid "German" +msgstr "Allemand" + +#: extra/ocr/OCRSpace.py:7 +msgid "Hungarian" +msgstr "Hongrois" + +#: extra/ocr/OCRSpace.py:7 +msgid "Korean" +msgstr "Coréen" + +#: extra/ocr/OCRSpace.py:7 +msgid "Italian" +msgstr "Italien" + +#: extra/ocr/OCRSpace.py:7 +msgid "Japanese" +msgstr "Japonais" + +#: extra/ocr/OCRSpace.py:7 +msgid "Polish" +msgstr "Polonais" + +#: extra/ocr/OCRSpace.py:7 +msgid "Portuguese" +msgstr "Portugais" + +#: extra/ocr/OCRSpace.py:7 +msgid "Russian" +msgstr "Russe" + +#: extra/ocr/OCRSpace.py:7 +msgid "Spanish" +msgstr "Espagnol" + +#: extra/ocr/OCRSpace.py:7 +msgid "Turkish" +msgstr "Turc" + +#: extra/translator/wx_ui.py:25 +msgid "Translate message" +msgstr "Traduire le message" + +#: extra/translator/wx_ui.py:29 +msgid "Translation engine" +msgstr "&Traduire" + +#: extra/translator/wx_ui.py:32 +msgid "Target language" +msgstr "Langue cible" + +#: keystrokeEditor/wx_ui.py:8 +msgid "Keystroke editor" +msgstr "Modificateur de raccourci" + +#: keystrokeEditor/wx_ui.py:11 +msgid "Select a keystroke to edit" +msgstr "Sélectionnez un raccourci à modifier" + +#: keystrokeEditor/wx_ui.py:12 +#: wxUI/dialogs/mastodon/filters/manage_filters.py:18 +#: wxUI/dialogs/mastodon/userActions.py:9 +#: wxUI/dialogs/mastodon/userActions.py:18 +#: wxUI/dialogs/mastodon/userActions.py:19 +msgid "Action" +msgstr "Action" + +#: keystrokeEditor/wx_ui.py:12 +msgid "Keystroke" +msgstr "Raccourci" + +#: keystrokeEditor/wx_ui.py:17 +#: wxUI/dialogs/mastodon/filters/manage_filters.py:23 +#: wxUI/dialogs/userAliasDialogs.py:53 +msgid "Edit" +msgstr "Modifier" + +#: keystrokeEditor/wx_ui.py:19 keystrokeEditor/wx_ui.py:49 +msgid "Undefine keystroke" +msgstr "Indéfinir le raccourcis clavier" + +#: keystrokeEditor/wx_ui.py:20 +msgid "Execute action" +msgstr "Exécuter une action" + +#: keystrokeEditor/wx_ui.py:21 wxUI/dialogs/userAliasDialogs.py:25 +msgid "Close" +msgstr "Fermer" + +#: keystrokeEditor/wx_ui.py:41 +msgid "Undefined" +msgstr "Non défini" + +#: keystrokeEditor/wx_ui.py:49 +msgid "Are you sure you want to undefine this keystroke?" +msgstr "Êtes-vous sûr de vouloir indéfinir ce raccourcis ?" + +#: keystrokeEditor/wx_ui.py:53 +msgid "Editing keystroke" +msgstr "Modification en cours d'un raccourci" + +#: keystrokeEditor/wx_ui.py:56 +msgid "Control" +msgstr "Contrôle" + +#: keystrokeEditor/wx_ui.py:57 +msgid "Alt" +msgstr "Alt" + +#: keystrokeEditor/wx_ui.py:58 +msgid "Shift" +msgstr "Maj" + +#: keystrokeEditor/wx_ui.py:59 +msgid "Windows" +msgstr "Windows" + +#: keystrokeEditor/wx_ui.py:65 +msgid "Key" +msgstr "Touche" + +#: keystrokeEditor/wx_ui.py:70 wxUI/dialogs/find.py:21 +#: wxUI/dialogs/mastodon/showUserProfile.py:31 +#: wxUI/dialogs/userAliasDialogs.py:23 +msgid "OK" +msgstr "OK" + +#: keystrokeEditor/wx_ui.py:83 +msgid "You need to use the Windows key" +msgstr "Vous devez utiliser la touche Windows" + +#: keystrokeEditor/wx_ui.py:83 keystrokeEditor/wx_ui.py:86 +msgid "Invalid keystroke" +msgstr "Raccourci invalide" + +#: keystrokeEditor/wx_ui.py:86 +msgid "You must provide a character for the keystroke" +msgstr "Vous devez fournir une lettre pour le raccourci" + +#: keystrokeEditor/actions/mastodon.py:3 +msgid "Go up in the current buffer" +msgstr "Parcourir le tampon actuel vers le haut" + +#: keystrokeEditor/actions/mastodon.py:4 +msgid "Go down in the current buffer" +msgstr "Parcourir le tampon actuel vers le bas" + +#: keystrokeEditor/actions/mastodon.py:5 +msgid "Go to the previous buffer" +msgstr "Aller au tampon précédent" + +#: keystrokeEditor/actions/mastodon.py:6 +msgid "Go to the next buffer" +msgstr "Aller au tampon suivant" + +#: keystrokeEditor/actions/mastodon.py:7 +msgid "Focus the next session" +msgstr "Focus dans la session suivante" + +#: keystrokeEditor/actions/mastodon.py:8 +msgid "Focus the previous session" +msgstr "Focus dans la session précédente" + +#: keystrokeEditor/actions/mastodon.py:9 +msgid "Show or hide the GUI" +msgstr "Afficher ou masquer l'interface graphique" + +#: keystrokeEditor/actions/mastodon.py:10 +msgid "Make a new post" +msgstr "Créer un nouveau post" + +#: keystrokeEditor/actions/mastodon.py:11 wxUI/buffers/mastodon/base.py:26 +#: wxUI/buffers/mastodon/conversationList.py:25 +msgid "Reply" +msgstr "Répondre" + +#: keystrokeEditor/actions/mastodon.py:12 wxUI/buffers/mastodon/base.py:25 +#: wxUI/dialogs/mastodon/dialogs.py:7 +msgid "Boost" +msgstr "Partager" + +#: keystrokeEditor/actions/mastodon.py:13 +msgid "Send direct message" +msgstr "Envoyer un message" + +#: keystrokeEditor/actions/mastodon.py:14 +msgid "Add post to favorites" +msgstr "Ajouter le post aux favoris" + +#: keystrokeEditor/actions/mastodon.py:15 +msgid "Remove post from favorites" +msgstr "Supprimer le post des favoris" + +#: keystrokeEditor/actions/mastodon.py:16 +msgid "Add/remove post from favorites" +msgstr "Ajouter/supprimer le post des favoris" + +#: keystrokeEditor/actions/mastodon.py:17 +msgid "Open the user actions dialogue" +msgstr "Ouvrir la boîte de dialogue des actions utilisateur" + +#: keystrokeEditor/actions/mastodon.py:18 +msgid "See user details" +msgstr "Voir les détails de l'utilisateur" + +#: keystrokeEditor/actions/mastodon.py:19 +msgid "Show post" +msgstr "Afficher le post" + +#: keystrokeEditor/actions/mastodon.py:20 +msgid "Quit" +msgstr "Quitter" + +#: keystrokeEditor/actions/mastodon.py:21 +msgid "Open user timeline" +msgstr "Ouvrir la chronologie d'un utilisateur" + +#: keystrokeEditor/actions/mastodon.py:22 +msgid "Destroy buffer" +msgstr "Détruire le tampon" + +#: keystrokeEditor/actions/mastodon.py:23 +msgid "Interact with the currently focused post." +msgstr "Interagir avec le post actuellement en focus." + +#: keystrokeEditor/actions/mastodon.py:24 +msgid "Open URL" +msgstr "Ouvrir l'URL" + +#: keystrokeEditor/actions/mastodon.py:25 +msgid "View in browser" +msgstr "Voir dans le navigateur" + +#: keystrokeEditor/actions/mastodon.py:26 +msgid "Increase volume by 5%" +msgstr "Augmenter le volume de 5%" + +#: keystrokeEditor/actions/mastodon.py:27 +msgid "Decrease volume by 5%" +msgstr "Diminuer le volume de 5%" + +#: keystrokeEditor/actions/mastodon.py:28 +msgid "Jump to the first element of a buffer" +msgstr "Aller au premier élément du tampon actuel" + +#: keystrokeEditor/actions/mastodon.py:29 +msgid "Jump to the last element of the current buffer" +msgstr "Aller au dernier élément du tampon actuel" + +#: keystrokeEditor/actions/mastodon.py:30 +msgid "Jump 20 elements up in the current buffer" +msgstr "Sauter de 20 éléments vers le haut dans le tampon actuel" + +#: keystrokeEditor/actions/mastodon.py:31 +msgid "Jump 20 elements down in the current buffer" +msgstr "Sauter de 20 éléments vers le bas dans le tampon actuel" + +#: keystrokeEditor/actions/mastodon.py:33 +msgid "Delete post" +msgstr "Supprimer le post" + +#: keystrokeEditor/actions/mastodon.py:34 +msgid "Empty the current buffer" +msgstr "Vider le tampon actuel" + +#: keystrokeEditor/actions/mastodon.py:35 +msgid "Repeat last item" +msgstr "Répéter le dernier élément" + +#: keystrokeEditor/actions/mastodon.py:36 +msgid "Copy to clipboard" +msgstr "Copier dans le Presse-papiers" + +#: keystrokeEditor/actions/mastodon.py:39 +msgid "Mute/unmute the active buffer" +msgstr "Activer muet / désactiver muet dans le tampon actuel" + +#: keystrokeEditor/actions/mastodon.py:40 +msgid "Mute/unmute the current session" +msgstr "Activer muet / désactiver muet dans la session actuelle" + +#: keystrokeEditor/actions/mastodon.py:41 +msgid "toggle the automatic reading of incoming tweets in the active buffer" +msgstr "Basculer la lecture automatique des nouveaux tweets dans le tampon actif." + +#: keystrokeEditor/actions/mastodon.py:42 +msgid "Search on instance" +msgstr "Rechercher sur l'instance" + +#: keystrokeEditor/actions/mastodon.py:43 +msgid "Find a string in the currently focused buffer" +msgstr "Trouver une chaîne dans le tampon ayant actuellement le focus" + +#: keystrokeEditor/actions/mastodon.py:44 +msgid "Show the keystroke editor" +msgstr "Afficher le modificateur de raccourci" + +#: keystrokeEditor/actions/mastodon.py:46 +msgid "load previous items" +msgstr "charger les éléments précédents" + +#: keystrokeEditor/actions/mastodon.py:48 +msgid "View conversation" +msgstr "Voir conversation" + +#: keystrokeEditor/actions/mastodon.py:49 +msgid "Check and download updates" +msgstr "Vérifier et télécharger les mises à jour" + +#: keystrokeEditor/actions/mastodon.py:50 +msgid "Opens the global settings dialogue" +msgstr "Ouvrir le dialogue Paramètres globaux" + +#: keystrokeEditor/actions/mastodon.py:52 +msgid "Opens the account settings dialogue" +msgstr "Ouvrir le dialogue Paramètres du compte" + +#: keystrokeEditor/actions/mastodon.py:53 +msgid "Try to play a media file" +msgstr "Essayer de lire un fichier média" + +#: keystrokeEditor/actions/mastodon.py:54 +msgid "Updates the buffer and retrieves possible lost items there." +msgstr "Mettre à jour le tampon et récupérer les éléments possiblement perdus." + +#: keystrokeEditor/actions/mastodon.py:55 +msgid "Extracts the text from a picture and displays the result in a dialog." +msgstr "" +"Extraire le texte d'une photo et afficher le résultat dans une boîte de " +"dialogue." + +#: keystrokeEditor/actions/mastodon.py:56 +msgid "Adds an alias to an user" +msgstr "Ajouter un alias à un utilisateur" + +#: sessionmanager/sessionManager.py:69 +#, python-brace-format +msgid "{account_name}@{instance} (Mastodon)" +msgstr "{account_name}@{instance} (Mastodon)" + +#: sessionmanager/wxUI.py:11 +msgid "Session manager" +msgstr "Gestion des comptes" + +#: sessionmanager/wxUI.py:14 +msgid "Accounts list" +msgstr "Liste des comptes" + +#: sessionmanager/wxUI.py:16 +msgid "Account" +msgstr "Compte" + +#: sessionmanager/wxUI.py:20 +msgid "New account" +msgstr "Nouveau compte" + +#: sessionmanager/wxUI.py:22 sessionmanager/wxUI.py:79 +msgid "Remove account" +msgstr "Supprimer le compte" + +#: sessionmanager/wxUI.py:24 +msgid "Global Settings" +msgstr "Paramètres Globaux" + +#: sessionmanager/wxUI.py:48 +msgid "You need to configure an account." +msgstr "Vous devez configurer un compte." + +#: sessionmanager/wxUI.py:48 +msgid "Account Error" +msgstr "Erreur dans le Compte" + +#: sessionmanager/wxUI.py:54 +msgid "Mastodon" +msgstr "Mastodon" + +#: sessionmanager/wxUI.py:59 +msgid "" +"You will be prompted for your Mastodon data (instance URL, email address " +"and password) so we can authorise TWBlue in your instance. Would you like" +" to authorise your account now?" +msgstr "" +"Les informations de votre instance Mastodon (URL, adresse e-mail et mot " +"de passe) vont vous être demandées afin de pouvoir autoriser TWBlue sur " +"votre instance. Voulez-vous autoriser votre compte maintenant ?" + +#: sessionmanager/wxUI.py:59 +msgid "Authorization" +msgstr "Autorisation" + +#: sessionmanager/wxUI.py:67 +#, python-format +msgid "Authorized account %d" +msgstr "Compte autorisé %d" + +#: sessionmanager/wxUI.py:73 +msgid "" +"Your access token is invalid or the authorization has failed. Please try " +"again." +msgstr "" +"Votre code d'accès est incorrect ou l'autorisation a échoué. S'il vous " +"plaît essayer de nouveau." + +#: sessionmanager/wxUI.py:73 +msgid "Invalid user token" +msgstr "Code d'accès invalide" + +#: sessionmanager/wxUI.py:79 +msgid "Do you really want to delete this account?" +msgstr "Voulez-vous vraiment supprimer ce compte ?" + +#: sessions/base.py:125 +#, python-brace-format +msgid "" +"An exception occurred while saving the {app} database. It will be deleted" +" and rebuilt automatically. If this error persists, send the error log to" +" the {app} developers." +msgstr "" +"Une erreur est survenue lors de l'enregistrement de la base de données de" +" {app}, elle va être détruite et recréée automatiquement. Si ce problème " +"perciste, veuillez envoyer le journal d'erreur aux développeurs de {app}." + +#: sessions/base.py:165 +#, python-brace-format +msgid "" +"An exception occurred while loading the {app} database. It will be " +"deleted and rebuilt automatically. If this error persists, send the error" +" log to the {app} developers." +msgstr "" +"Une erreur est survenue lors du chargement de la base de données de " +"{app}, elle va être détruite et recréée automatiquement. Si ce problème " +"perciste, veuillez envoyer le journal d'erreur aux développeurs de {app}." + +#: sessions/mastodon/compose.py:15 sessions/mastodon/compose.py:61 +msgid "dddd, MMMM D, YYYY H:m" +msgstr "dddd D MMMM YYYY à HH:mm" + +#: sessions/mastodon/compose.py:17 sessions/mastodon/templates.py:74 +#: sessions/mastodon/templates.py:75 +#, python-brace-format +msgid "Boosted from @{}: {}" +msgstr "Partage de @{} : {}" + +#: sessions/mastodon/compose.py:22 sessions/mastodon/compose.py:81 +#: sessions/mastodon/templates.py:81 sessions/mastodon/templates.py:176 +#, python-brace-format +msgid "hidden by filter {}" +msgstr "Masquer par le filtre {}" + +#: sessions/mastodon/compose.py:36 sessions/mastodon/templates.py:28 +msgid "dddd, MMMM D, YYYY H:m:s" +msgstr "dddd D MMMM YYYY à HH:mm:ss" + +#: sessions/mastodon/compose.py:38 +#, python-format +msgid "%s (@%s). %s followers, %s following, %s posts. Joined %s" +msgstr "%s (@%s). %s abonnés, %s abonnements, %s posts. A rejoint le %s" + +#: sessions/mastodon/compose.py:49 +#, python-brace-format +msgid "Last message from {}: {}" +msgstr "Dernier message de {} : {}" + +#: sessions/mastodon/compose.py:64 +#, python-brace-format +msgid "{username} has posted: {status}" +msgstr "{username} a posté : {status}" + +#: sessions/mastodon/compose.py:66 +#, python-brace-format +msgid "{username} has mentioned you: {status}" +msgstr "{username} vous a mensionné : {status}" + +#: sessions/mastodon/compose.py:68 +#, python-brace-format +msgid "{username} has boosted: {status}" +msgstr "{username} a partagé : {status}" + +#: sessions/mastodon/compose.py:70 +#, python-brace-format +msgid "{username} has added to favorites: {status}" +msgstr "{username} a ajouté aux favoris : {status}" + +#: sessions/mastodon/compose.py:72 +#, python-brace-format +msgid "{username} has followed you." +msgstr "{username} vous a suivi." + +#: sessions/mastodon/compose.py:74 +#, python-brace-format +msgid "{username} has joined the instance." +msgstr "{username} a rejoint l'instance." + +#: sessions/mastodon/compose.py:76 sessions/mastodon/templates.py:171 +#, python-brace-format +msgid "A poll in which you have voted has expired: {status}" +msgstr "Un sondage où vous avez voté a expiré : {status}" + +#: sessions/mastodon/compose.py:78 +#, python-brace-format +msgid "{username} wants to follow you." +msgstr "{username} souhaite vous suivre." + +#: sessions/mastodon/session.py:69 +msgid "Please enter your instance URL." +msgstr "Veuillez entrer l'URL de votre instance." + +#: sessions/mastodon/session.py:69 +msgid "Mastodon instance" +msgstr "Instance Mastodon" + +#: sessions/mastodon/session.py:80 +msgid "" +"We could not connect to your mastodon instance. Please verify that the " +"domain exists and the instance is accessible via a web browser." +msgstr "" +"Nous ne pouvons pas nous connecter à votre instance, veuillez vérifier " +"que le domaine existe et que l'instance est accessible depuis un " +"navigateur web." + +#: sessions/mastodon/session.py:80 +msgid "Instance error" +msgstr "Erreur de l'instance" + +#: sessions/mastodon/session.py:85 +msgid "Enter the verification code" +msgstr "Entrer le code de vérification" + +#: sessions/mastodon/session.py:85 +msgid "PIN code authorization" +msgstr "Code PIN d'autorisation" + +#: sessions/mastodon/session.py:94 +msgid "" +"We could not authorice your mastodon account to be used in TWBlue. This " +"might be caused due to an incorrect verification code. Please try to add " +"the session again." +msgstr "" +"Nous ne pouvons pas autoriser votre compte à être utilisé dans TWBlue, " +"cela peut être dû à un code d'autorisation incorrect. Veuillez réessayer " +"d'ajouter votre compte." + +#: sessions/mastodon/session.py:94 +msgid "Authorization error" +msgstr "Erreur d'autorisation" + +#: sessions/mastodon/session.py:215 +#, python-format +msgid "%s succeeded." +msgstr "%s réussi." + +#: sessions/mastodon/templates.py:18 +msgid "$display_name, $text $image_descriptions $date. $source" +msgstr "$display_name, $text $image_descriptions $date. $source" + +#: sessions/mastodon/templates.py:19 +msgid "Dm to $recipient_display_name, $text $date" +msgstr "MP à $recipient_display_name, $text $date" + +#: sessions/mastodon/templates.py:20 +msgid "" +"$display_name (@$screen_name). $followers followers, $following " +"following, $posts posts. Joined $created_at." +msgstr "" +"$display_name (@$screen_name). $followers abonnés, $following " +"abonnements, $posts posts. A rejoint le $created_at." + +#: sessions/mastodon/templates.py:21 +msgid "$display_name $text, $date" +msgstr "$display_name $text, $date" + +#: sessions/mastodon/templates.py:34 +#, python-brace-format +msgid "Content warning: {}" +msgstr "Avertissement de contenu : {}" + +#: sessions/mastodon/templates.py:45 +#, python-brace-format +msgid "Media description: {}" +msgstr "Description du média : {}" + +#: sessions/mastodon/templates.py:82 wxUI/dialogs/mastodon/postDialogs.py:49 +msgid "Followers only" +msgstr "Seulement les abonnés" + +#: sessions/mastodon/templates.py:94 +msgid "Pinned." +msgstr "Épinglé." + +#: sessions/mastodon/templates.py:157 +#, python-brace-format +msgid "has posted: {status}" +msgstr "A posté : {status}" + +#: sessions/mastodon/templates.py:159 +#, python-brace-format +msgid "has mentioned you: {status}" +msgstr "vous a mensionné : {status}" + +#: sessions/mastodon/templates.py:161 +#, python-brace-format +msgid "has boosted: {status}" +msgstr "a partagé : {status}" + +#: sessions/mastodon/templates.py:163 +#, python-brace-format +msgid "has added to favorites: {status}" +msgstr "a ajouté aux favoris : {status}" + +#: sessions/mastodon/templates.py:165 +#, python-brace-format +msgid "has updated a status: {status}" +msgstr "a mis à jour un statut : {status}" + +#: sessions/mastodon/templates.py:167 +msgid "has followed you." +msgstr "vous a suivi." + +#: sessions/mastodon/templates.py:169 +msgid "has joined the instance." +msgstr "A rejoint l'instance." + +#: sessions/mastodon/templates.py:173 +msgid "wants to follow you." +msgstr "souhaite vous suivre." + +#: update/utils.py:29 +#, python-format +msgid "%d day, " +msgstr "%d jour, " + +#: update/utils.py:31 +#, python-format +msgid "%d days, " +msgstr "%d jours, " + +#: update/utils.py:33 +#, python-format +msgid "%d hour, " +msgstr "%d heure, " + +#: update/utils.py:35 +#, python-format +msgid "%d hours, " +msgstr "%d heures, " + +#: update/utils.py:37 +#, python-format +msgid "%d minute, " +msgstr "%d minute, " + +#: update/utils.py:39 +#, python-format +msgid "%d minutes, " +msgstr "%d minutes, " + +#: update/utils.py:41 +#, python-format +msgid "%s second" +msgstr "%s seconde" + +#: update/utils.py:43 +#, python-format +msgid "%s seconds" +msgstr "%s secondes" + +#: update/wxUpdater.py:11 +#, python-format +msgid "" +"There's a new %s version available, released on %s. Would you like to " +"download it now?\n" +"\n" +" %s version: %s\n" +"\n" +"Changes:\n" +"%s" +msgstr "" +"Une nouvelle version de %s est disponible, publiée le %s. Voulez-vous la " +"télécharger maintenant ?\n" +"\n" +"%s version: %s\n" +"\n" +"Changements:\n" +"%s" + +#: update/wxUpdater.py:14 +#, python-format +msgid "" +"There's a new %s version available, released on %s. Updates are not " +"automatic in Windows 7, so you would need to visit TWBlue's download " +"website to get the latest version.\n" +"\n" +" %s version: %s\n" +"\n" +"Changes:\n" +"%s" +msgstr "" +"Une nouvelle version de %s est disponible, publiée le %s. Les mises à " +"jour ne sont pas automatiques sous Windows 7, vous devrez visiter le site" +" de téléchargement de TWBlue pour obtenir la dernière version.\n" +"\n" +"%s version : %s\n" +"\n" +"Changements:\n" +"%s" + +#: update/wxUpdater.py:16 +#, python-format +msgid "New version for %s" +msgstr "Nouvelle version de %s" + +#: update/wxUpdater.py:23 +msgid "Download in Progress" +msgstr "Téléchargement en cours" + +#: update/wxUpdater.py:23 +msgid "Downloading the new version..." +msgstr "Téléchargement de la nouvelle version en cours..." + +#: update/wxUpdater.py:33 +#, python-format +msgid "Updating... %s of %s" +msgstr "Mise à jour en cours... %s sur %s" + +#: update/wxUpdater.py:36 +msgid "" +"The update has been downloaded and installed successfully. Press OK to " +"continue." +msgstr "" +"La mise à jour a été téléchargé et installé avec succès. Appuyez sur OK " +"pour continuer." + +#: update/wxUpdater.py:36 +msgid "Done!" +msgstr "Terminé !" + +#: wxUI/commonMessageDialogs.py:6 +#, python-brace-format +msgid "Do you really want to close {0}?" +msgstr "Voulez-vous vraiment quitter {0} ?" + +#: wxUI/commonMessageDialogs.py:6 +msgid "Exit" +msgstr "Quitter" + +#: wxUI/commonMessageDialogs.py:10 +#, python-brace-format +msgid " {0} must be restarted for these changes to take effect." +msgstr " {0} doit être redémarré pour que ces modifications prennent effet." + +#: wxUI/commonMessageDialogs.py:10 +#, python-brace-format +msgid "Restart {0} " +msgstr "Redémarrez {0} " + +#: wxUI/commonMessageDialogs.py:13 +msgid "" +"Are you sure you want to delete this user from the database? This user " +"will not appear in autocomplete results anymore." +msgstr "" +"Êtes-vous sûr de vouloir supprimer cet utilisateur de la base de données " +"? Cet utilisateur n'apparaîtra plus dans les résultats lors de La saisie " +"automatique." + +#: wxUI/commonMessageDialogs.py:13 +msgid "Confirm" +msgstr "Confirmer" + +#: wxUI/commonMessageDialogs.py:16 +msgid "" +"Do you really want to empty this buffer? It's items will be removed from" +" the list but not from Twitter" +msgstr "" +"Voulez-vous vraiment vider ce tampon ? Ces éléments seront supprimés de " +"la liste, mais pas de Twitter" + +#: wxUI/commonMessageDialogs.py:16 wxUI/dialogs/mastodon/dialogs.py:31 +msgid "Empty buffer" +msgstr "Tampon Vide" + +#: wxUI/commonMessageDialogs.py:20 +msgid "Do you really want to destroy this buffer?" +msgstr "Voulez-vous vraiment détruire ce tampon ?" + +#: wxUI/commonMessageDialogs.py:23 +msgid "That user does not exist" +msgstr "Cet utilisateur n'existe pas" + +#: wxUI/commonMessageDialogs.py:26 +msgid "A timeline for this user already exists. You can't open another" +msgstr "" +"Une chronologie pour cet utilisateur existe déjà. Vous ne pouvez pas " +"ouvrir une autre" + +#: wxUI/commonMessageDialogs.py:26 +msgid "Existing timeline" +msgstr "Chronologie existante" + +#: wxUI/commonMessageDialogs.py:29 +#, python-brace-format +msgid "" +"If you like {0} we need your help to keep it going. Help us by donating " +"to the project. This will help us pay for the server, the domain and some" +" other things to ensure that {0} will be actively maintained. Your " +"donation will give us the means to continue the development of {0}, and " +"to keep {0} free. Would you like to donate now?" +msgstr "" +"Si vous aimez {0} Nous avons besoin de votre aide pour maintenir le " +"fonctionnement de celui-ci. Aidez-nous en faisant un don au projet. Cela " +"nous aidera à payer le serveur, le domaine et autres choses pour assurer " +"que {0} sera activement maintenue. Votre don nous donnera les moyens de " +"poursuivre le développement de {0}, et de garder {0} gratuit. Vous " +"souhaitez faire un don maintenant ?" + +#: wxUI/commonMessageDialogs.py:29 +msgid "We need your help" +msgstr "Nous avons besoin de votre aide" + +#: wxUI/commonMessageDialogs.py:33 wxUI/dialogs/mastodon/postDialogs.py:207 +msgid "Information" +msgstr "Information" + +#: wxUI/commonMessageDialogs.py:36 +msgid "The configuration file is invalid." +msgstr "Le fichier de configuration est invalide." + +#: wxUI/commonMessageDialogs.py:39 +#, python-brace-format +msgid "" +"{0} quit unexpectedly the last time it was run. If the problem persists, " +"please report it to the {0} developers." +msgstr "" +"{0} a été quitté inopinément lors de sa dernière exécution. Si ce " +"problème perciste, veuillez le signaler aux développeurs de {0}." + +#: wxUI/commonMessageDialogs.py:39 +msgid "Warning" +msgstr "Attention" + +#: wxUI/commonMessageDialogs.py:45 +#, python-brace-format +msgid "Sorry, you can't update while running {} from source." +msgstr "" +"Désolé, vous ne pouvez pas mettre à jour lors de l'exécution depuis les " +"sources." + +#: wxUI/commonMessageDialogs.py:49 +msgid "the provided instance is invalid. Please try again." +msgstr "L'instance fournie est invalide. Veuillez réessayer." + +#: wxUI/commonMessageDialogs.py:49 +msgid "Invalid instance" +msgstr "Instance Mastodon" + +#: wxUI/commonMessageDialogs.py:52 +msgid "" +"TWBlue was unable to add or update the filter with the specified " +"settings. Please try again." +msgstr "" +"TWBlue n'est pas parvenu à ajouter ou mettre à jour le filtre avec les " +"paramètres spécifiés. Veuillez réessayer." + +#: wxUI/commonMessageDialogs.py:55 +msgid "" +"TWBlue was unable to load your filters from the instance. Please try " +"again." +msgstr "" +"TWBlue n'est pas parvenu à charger vos filtres depuis l'instance. " +"Veuillez réessayer." + +#: wxUI/commonMessageDialogs.py:58 +msgid "Do you really want to delete this filter ?" +msgstr "Voulez-vous vraiment supprimer ce filtre ?" + +#: wxUI/commonMessageDialogs.py:58 +msgid "Delete filter" +msgstr "Supprimer le filtre" + +#: wxUI/commonMessageDialogs.py:61 +msgid "TWBlue was unable to remove the filter you specified. Please try again." +msgstr "" +"TWBlue n'est pas parvenu à supprimer le filtre que vous avez spécifié. " +"Veuillez réessayer." + +#: wxUI/sysTrayIcon.py:36 wxUI/view.py:25 +msgid "&Global settings" +msgstr "Paramètres &globaux" + +#: wxUI/sysTrayIcon.py:37 wxUI/view.py:24 +msgid "Account se&ttings" +msgstr "Paramètres du c&ompte" + +#: wxUI/sysTrayIcon.py:39 +msgid "&Show / hide" +msgstr "&Afficher / masquer" + +#: wxUI/sysTrayIcon.py:40 wxUI/view.py:74 +msgid "&Documentation" +msgstr "&Documentation" + +#: wxUI/sysTrayIcon.py:41 +msgid "Check for &updates" +msgstr "Vérifier les &mises à jour" + +#: wxUI/sysTrayIcon.py:42 +msgid "&Exit" +msgstr "&Quitter" + +#: wxUI/view.py:16 +msgid "&Manage accounts" +msgstr "Gérer les &comptes" + +#: wxUI/view.py:17 +msgid "&Update profile" +msgstr "Actualiser le &profil" + +#: wxUI/view.py:18 +msgid "&Hide window" +msgstr "Masquer la &fenêtre" + +#: wxUI/view.py:20 +msgid "&Lists manager" +msgstr "Gérer les &listes" + +#: wxUI/view.py:23 +msgid "&Edit keystrokes" +msgstr "&Éditer les raccourcis clavier" + +#: wxUI/view.py:26 +msgid "E&xit" +msgstr "&Quitter" + +#: wxUI/view.py:34 +msgid "&Remove from favorites" +msgstr "&Supprimer des favoris" + +#: wxUI/view.py:47 +msgid "&Add to list" +msgstr "A&jouter à la liste" + +#: wxUI/view.py:48 +msgid "R&emove from list" +msgstr "S&upprimer de la liste" + +#: wxUI/view.py:49 +msgid "Show user &profile" +msgstr "Voir le &profil de l'utilisateur" + +#: wxUI/view.py:50 +msgid "V&iew likes" +msgstr "Voir &favoris" + +#: wxUI/view.py:54 +msgid "&Update buffer" +msgstr "&Mise à jour du tampon" + +#: wxUI/dialogs/mastodon/communityTimeline.py:9 wxUI/view.py:55 +msgid "Create community timeline" +msgstr "Créer une chronologie de communauté" + +#: wxUI/view.py:56 +msgid "New &trending topics buffer..." +msgstr "Nouveau tampon de &tendances..." + +#: wxUI/view.py:59 +msgid "Find a string in the currently focused buffer..." +msgstr "Trouver une chaîne dans le tampon ayant actuellement le f&ocus..." + +#: wxUI/view.py:60 +msgid "&Load previous items" +msgstr "&Charger les éléments précédents" + +#: wxUI/dialogs/mastodon/userActions.py:21 wxUI/view.py:62 +msgid "&Mute" +msgstr "&Masquer" + +#: wxUI/view.py:63 +msgid "&Autoread" +msgstr "&Lecture automatique" + +#: wxUI/view.py:64 +msgid "&Clear buffer" +msgstr "&Vider le tampon" + +#: wxUI/view.py:65 +msgid "&Destroy" +msgstr "&Détruire" + +#: wxUI/view.py:69 +msgid "&Seek back 5 seconds" +msgstr "&Reculer de 5 secondes" + +#: wxUI/view.py:70 +msgid "&Seek forward 5 seconds" +msgstr "&Avancer de 5 secondes" + +#: wxUI/view.py:75 +msgid "Sounds &tutorial" +msgstr "&Apprentissage des sons" + +#: wxUI/view.py:76 +msgid "&What's new in this version?" +msgstr "&Quoi de neuf dans cette version ?" + +#: wxUI/view.py:77 +msgid "&Check for updates" +msgstr "&Vérifier les mises à jour" + +#: wxUI/view.py:78 +msgid "&Report an error" +msgstr "&Signaler une erreur" + +#: wxUI/view.py:79 +#, python-brace-format +msgid "{0}'s &website" +msgstr "Site &Web de {0}" + +#: wxUI/view.py:80 +msgid "Get soundpacks for TWBlue" +msgstr "Obtenir des packs de son pour TWBlue" + +#: wxUI/view.py:81 +#, python-brace-format +msgid "About &{0}" +msgstr "À propos de &{0}" + +#: wxUI/view.py:84 +msgid "&Application" +msgstr "&Application" + +#: wxUI/view.py:85 +msgid "&Tweet" +msgstr "&Tweet" + +#: wxUI/dialogs/mastodon/userActions.py:10 wxUI/view.py:86 +msgid "&User" +msgstr "&Utilisateur" + +#: wxUI/view.py:87 +msgid "&Buffer" +msgstr "Ta&mpon" + +#: wxUI/view.py:88 +msgid "&Audio" +msgstr "Au&dio" + +#: wxUI/view.py:89 +msgid "&Help" +msgstr "A&ide" + +#: wxUI/view.py:175 +msgid "Address" +msgstr "Adresse" + +#: wxUI/view.py:206 +#, python-brace-format +msgid "Your {0} version is up to date" +msgstr "Votre version de {0} est à jour" + +#: wxUI/view.py:206 +msgid "Update" +msgstr "Mise à jour" + +#: wxUI/buffers/panels.py:12 wxUI/buffers/panels.py:20 +msgid "Login" +msgstr "Connexion" + +#: wxUI/buffers/panels.py:14 +msgid "Log in automatically" +msgstr "Connexion automatique" + +#: wxUI/buffers/panels.py:22 +msgid "Logout" +msgstr "Déconnexion" + +#: wxUI/buffers/mastodon/base.py:11 +#: wxUI/buffers/mastodon/conversationList.py:11 wxUI/buffers/mastodon/user.py:8 +#: wxUI/dialogs/mastodon/userTimeline.py:10 wxUI/dialogs/userAliasDialogs.py:14 +msgid "User" +msgstr "Utilisateur" + +#: wxUI/buffers/mastodon/base.py:11 +#: wxUI/buffers/mastodon/conversationList.py:11 +#: wxUI/buffers/mastodon/notifications.py:11 +#: wxUI/dialogs/mastodon/postDialogs.py:37 +#: wxUI/dialogs/mastodon/postDialogs.py:272 +msgid "Text" +msgstr "Texte" + +#: wxUI/buffers/mastodon/base.py:11 +#: wxUI/buffers/mastodon/conversationList.py:11 +#: wxUI/buffers/mastodon/notifications.py:11 +#: wxUI/dialogs/mastodon/postDialogs.py:216 +msgid "Date" +msgstr "Date" + +#: wxUI/buffers/mastodon/base.py:11 +#: wxUI/buffers/mastodon/conversationList.py:11 +msgid "Client" +msgstr "Client" + +#: wxUI/buffers/mastodon/base.py:27 +msgid "Favorite" +msgstr "Favori" + +#: wxUI/buffers/mastodon/base.py:28 +msgid "Bookmark" +msgstr "Marque-page" + +#: wxUI/buffers/mastodon/base.py:29 +msgid "Direct message" +msgstr "Message" + +#: wxUI/buffers/mastodon/notifications.py:23 +#: wxUI/dialogs/mastodon/dialogs.py:23 +msgid "Dismiss" +msgstr "Masqué" + +#: wxUI/buffers/mastodon/user.py:19 wxUI/dialogs/userAliasDialogs.py:48 +msgid "Actions" +msgstr "Actions" + +#: wxUI/buffers/mastodon/user.py:20 +msgid "Message" +msgstr "Message" + +#: wxUI/dialogs/configuration.py:15 +msgid "&Language" +msgstr "&Langue" + +#: wxUI/dialogs/configuration.py:22 +#, python-brace-format +msgid "&Ask before exiting {0}" +msgstr "&Demander avant de quitter {0}" + +#: wxUI/dialogs/configuration.py:24 +msgid "&Disable Streaming functions" +msgstr "D&ésactiver les fonctions de streaming" + +#: wxUI/dialogs/configuration.py:27 +msgid "&Buffer update interval, in minutes" +msgstr "&Intervalle de mise à jour des tampons, en minutes" + +#: wxUI/dialogs/configuration.py:33 +#, python-brace-format +msgid "Pla&y a sound when {0} launches" +msgstr "&Jouer un son lorsque {0} démarre" + +#: wxUI/dialogs/configuration.py:35 +#, python-brace-format +msgid "Sp&eak a message when {0} launches" +msgstr "Dire un &message lorsque {0} démarre" + +#: wxUI/dialogs/configuration.py:37 +msgid "&Use invisible interface's keyboard shortcuts while GUI is visible" +msgstr "" +"Utilisez les raccourcis clavier de l'interface invisible lorsque " +"l'interface &graphique est affichée" + +#: wxUI/dialogs/configuration.py:39 +msgid "A&ctivate Sapi5 when any other screen reader is not being run" +msgstr "" +"Activer Sapi&5 lorsqu'aucun autre lecteur d'écran n'est en cours " +"d'exécution" + +#: wxUI/dialogs/configuration.py:41 +msgid "&Hide GUI on launch" +msgstr "&Masquer l'interface graphique au démarrage" + +#: wxUI/dialogs/configuration.py:43 +msgid "&Read long posts in GUI" +msgstr "&Lire les posts longs dans l'interface graphique" + +#: wxUI/dialogs/configuration.py:46 +msgid "&Keymap" +msgstr "&Configuration clavier" + +#: wxUI/dialogs/configuration.py:51 +#, python-brace-format +msgid "Check for u&pdates when {0} launches" +msgstr "Vérifier les mises &à jour lorsque {0} démarre" + +#: wxUI/dialogs/configuration.py:61 +msgid "Proxy &type: " +msgstr "T&ype de proxy : " + +#: wxUI/dialogs/configuration.py:68 +msgid "Proxy s&erver: " +msgstr "&Serveur proxy : " + +#: wxUI/dialogs/configuration.py:74 +msgid "&Port: " +msgstr "&Port : " + +#: wxUI/dialogs/configuration.py:80 +msgid "&User: " +msgstr "&Utilisateur : " + +#: wxUI/dialogs/configuration.py:86 +msgid "P&assword: " +msgstr "&Mot de passe : " + +#: wxUI/dialogs/configuration.py:98 +msgid "Enable automatic s&peech feedback" +msgstr "Activer le retour automatique par la &parole" + +#: wxUI/dialogs/configuration.py:100 +msgid "Enable automatic &Braille feedback" +msgstr "Activer le retour automatique en &Braille" + +#: wxUI/dialogs/configuration.py:108 +msgid "Buffer" +msgstr "Tampon" + +#: wxUI/dialogs/configuration.py:108 +msgid "Status" +msgstr "Statut" + +#: wxUI/dialogs/configuration.py:111 +msgid "S&how/hide" +msgstr "&Afficher/masquer" + +#: wxUI/dialogs/configuration.py:112 +msgid "Move &up" +msgstr "Déplacer vers le &haut" + +#: wxUI/dialogs/configuration.py:113 +msgid "Move &down" +msgstr "Déplacer vers le &bas" + +#: wxUI/dialogs/configuration.py:123 wxUI/dialogs/configuration.py:188 +#: wxUI/dialogs/configuration.py:191 wxUI/dialogs/configuration.py:196 +msgid "Show" +msgstr "Afficher" + +#: wxUI/dialogs/configuration.py:125 wxUI/dialogs/configuration.py:135 +#: wxUI/dialogs/configuration.py:159 wxUI/dialogs/configuration.py:189 +msgid "Hide" +msgstr "Masquer" + +#: wxUI/dialogs/configuration.py:133 wxUI/dialogs/configuration.py:157 +msgid "Select a buffer first." +msgstr "Tout d'abord sélectionnez un tampon." + +#: wxUI/dialogs/configuration.py:136 wxUI/dialogs/configuration.py:160 +msgid "The buffer is hidden, show it first." +msgstr "Le tampon est masqué, Vous devez tout d'abord l'afficher." + +#: wxUI/dialogs/configuration.py:139 +msgid "The buffer is already at the top of the list." +msgstr "Le tampon est déjà en haut de la liste." + +#: wxUI/dialogs/configuration.py:163 +msgid "The buffer is already at the bottom of the list." +msgstr "Le tampon est déjà en bas de la liste." + +#: wxUI/dialogs/configuration.py:205 +msgid "&LibreTranslate API URL: " +msgstr "URL de l'API &LibreTranslate : " + +#: wxUI/dialogs/configuration.py:211 +msgid "LibreTranslate API &Key (optional): " +msgstr "&Clé API LibreTranslate (facultatif) : " + +#: wxUI/dialogs/configuration.py:217 +msgid "&DeepL API Key: " +msgstr "Clé API &DeepL : " + +#: wxUI/dialogs/configuration.py:231 +#, python-brace-format +msgid "{0} preferences" +msgstr "Préférences de {0}" + +#: wxUI/dialogs/configuration.py:237 wxUI/dialogs/mastodon/configuration.py:144 +msgid "General" +msgstr "Général" + +#: wxUI/dialogs/configuration.py:242 +msgid "Proxy" +msgstr "Proxy" + +#: wxUI/dialogs/configuration.py:246 +msgid "Translation services" +msgstr "&Traduire" + +#: wxUI/dialogs/configuration.py:251 wxUI/dialogs/mastodon/configuration.py:170 +msgid "&Save" +msgstr "&Enregistrer" + +#: wxUI/dialogs/configuration.py:253 +#: wxUI/dialogs/mastodon/communityTimeline.py:27 +#: wxUI/dialogs/mastodon/configuration.py:172 +#: wxUI/dialogs/mastodon/search.py:26 +#: wxUI/dialogs/mastodon/showUserProfile.py:170 +#: wxUI/dialogs/mastodon/updateProfile.py:132 +#: wxUI/dialogs/mastodon/userActions.py:38 +#: wxUI/dialogs/mastodon/userTimeline.py:32 +msgid "&Close" +msgstr "&Fermer" + +#: wxUI/dialogs/find.py:13 +msgid "Find in current buffer" +msgstr "Trouver dans le tampon actuel" + +#: wxUI/dialogs/find.py:14 +msgid "String" +msgstr "Chaîne" + +#: wxUI/dialogs/find.py:23 wxUI/dialogs/mastodon/showUserProfile.py:33 +msgid "Cancel" +msgstr "Annuler" + +#: wxUI/dialogs/templateDialogs.py:8 +msgid "Edit Template" +msgstr "Éditer le Modèle" + +#: wxUI/dialogs/templateDialogs.py:13 +msgid "Edit template" +msgstr "Éditer le modèle" + +#: wxUI/dialogs/templateDialogs.py:17 +msgid "Available variables" +msgstr "Variables disponibles" + +#: wxUI/dialogs/templateDialogs.py:29 +msgid "Restore template" +msgstr "Restaurer le modèle" + +#: wxUI/dialogs/templateDialogs.py:48 +#, python-brace-format +msgid "Restored template to {}." +msgstr "Modèle restauré à {}." + +#: wxUI/dialogs/templateDialogs.py:52 +msgid "" +"the template you have specified include variables that do not exists for " +"the object. Please fix the template and try again. For your reference, " +"you can see a list of all available variables in the variables list while" +" editing your template." +msgstr "" +"le modèle que vous avez spécifié inclut des variables qui n'existent pas " +"pour l'élément. Veuillez corriger le modèle et réessayer. Pour référence," +" vous pouvez voir une liste de toutes les variables disponibles dans la " +"liste des variables lors de la modification de votre modèle." + +#: wxUI/dialogs/templateDialogs.py:52 +msgid "Invalid template" +msgstr "Modèle invalide" + +#: wxUI/dialogs/urlList.py:6 +msgid "Select URL" +msgstr "Sélectionnez l'URL" + +#: wxUI/dialogs/mastodon/userActions.py:13 +#: wxUI/dialogs/mastodon/userTimeline.py:13 wxUI/dialogs/userAliasDialogs.py:13 +msgid "&Autocomplete users" +msgstr "&Saisie automatique utilisateurs" + +#: wxUI/dialogs/userAliasDialogs.py:18 +msgid "Alias" +msgstr "Alias" + +#: wxUI/dialogs/userAliasDialogs.py:41 +msgid "Edit user aliases" +msgstr "Éditer les alias utilisateur" + +#: wxUI/dialogs/mastodon/search.py:19 wxUI/dialogs/userAliasDialogs.py:43 +msgid "Users" +msgstr "Utilisateurs" + +#: wxUI/dialogs/userAliasDialogs.py:50 +msgid "Add alias" +msgstr "Ajouter un alias" + +#: wxUI/dialogs/userAliasDialogs.py:51 +msgid "Adds a new user alias" +msgstr "Ajoute un nouvel alias utilisateur" + +#: wxUI/dialogs/userAliasDialogs.py:54 +msgid "Edit the currently focused user Alias." +msgstr "Éditer l'alias utilisateur ayant actuellement le focus." + +#: wxUI/dialogs/mastodon/filters/create_filter.py:26 +#: wxUI/dialogs/mastodon/filters/manage_filters.py:24 +#: wxUI/dialogs/userAliasDialogs.py:57 +msgid "Remove" +msgstr "Effacer" + +#: wxUI/dialogs/userAliasDialogs.py:58 +msgid "Remove the currently focused user alias." +msgstr "Supprimer l'alias utilisateur ayant actuellement le focus." + +#: wxUI/dialogs/userAliasDialogs.py:82 +msgid "Are you sure you want to delete this user alias?" +msgstr "Êtes-vous sûr de vouloir supprimer cet alias utilisateur ?" + +#: wxUI/dialogs/userAliasDialogs.py:82 +msgid "Remove user alias" +msgstr "Supprimer l'alias utilisateur" + +#: wxUI/dialogs/userAliasDialogs.py:93 +msgid "User alias" +msgstr "Alias utilisateur" + +#: wxUI/dialogs/userList.py:27 +msgid "View profile" +msgstr "Actualiser le profil" + +#: wxUI/dialogs/mastodon/communityTimeline.py:10 +msgid "Community URL" +msgstr "Contrôle" + +#: wxUI/dialogs/mastodon/communityTimeline.py:16 +#: wxUI/dialogs/mastodon/userTimeline.py:18 +msgid "Buffer type" +msgstr "Type de tampon" + +#: wxUI/dialogs/mastodon/communityTimeline.py:17 +msgid "&Local timeline" +msgstr "Chronologie &Local" + +#: wxUI/dialogs/mastodon/communityTimeline.py:18 +msgid "&Federated Timeline" +msgstr "Chronologie &Fédérée" + +#: wxUI/dialogs/mastodon/communityTimeline.py:25 +#: wxUI/dialogs/mastodon/search.py:24 +#: wxUI/dialogs/mastodon/updateProfile.py:130 +#: wxUI/dialogs/mastodon/userActions.py:36 +#: wxUI/dialogs/mastodon/userTimeline.py:30 +msgid "&OK" +msgstr "&OK" + +#: wxUI/dialogs/mastodon/configuration.py:14 +msgid "User autocompletion settings" +msgstr "Paramètres d'autocomplétion utilisateur" + +#: wxUI/dialogs/mastodon/configuration.py:15 +msgid "" +"Scan acc&ount and add followers and following users to the user " +"autocompletion database" +msgstr "" +"&Scanner le compte et ajouter les abonnés et abonnements à la base de " +"données d'autocomplétion des utilisateurs" + +#: wxUI/dialogs/mastodon/configuration.py:16 +msgid "&Manage autocompletion database" +msgstr "&Gérer la base de données d'autocomplétion" + +#: wxUI/dialogs/mastodon/configuration.py:21 +msgid "&Disable Streaming API endpoints" +msgstr "Désactiver les fonctionnalités de l'API de &streaming" + +#: wxUI/dialogs/mastodon/configuration.py:23 +msgid "&Relative timestamps" +msgstr "&Temps relatifs" + +#: wxUI/dialogs/mastodon/configuration.py:25 +msgid "" +"R&ead preferences from instance (default visibility when publishing and " +"displaying sensitive content)" +msgstr "" +"&Lire les préférences depuis l'instance (visibillité par défaut lors de " +"la publication et de l'affichage de contenu sensible)" + +#: wxUI/dialogs/mastodon/configuration.py:28 +msgid "&Items on each API call" +msgstr "&Éléments pour chaque appel à l'API" + +#: wxUI/dialogs/mastodon/configuration.py:34 +msgid "" +"I&nverted buffers: The newest items will be shown at the beginning while " +"the oldest at the end" +msgstr "" +"Tampons &inversés : Les nouveaux éléments seront affichés au début et les" +" plus anciens à la fin." + +#: wxUI/dialogs/mastodon/configuration.py:36 +msgid "&Ask confirmation before boosting a post" +msgstr "Demander &une confirmation avant de partager un post" + +#: wxUI/dialogs/mastodon/configuration.py:38 +msgid "S&how screen names instead of full names" +msgstr "Afficher les noms d'&affichage à la place des noms complets" + +#: wxUI/dialogs/mastodon/configuration.py:40 +msgid "Hide e&mojis in usernames" +msgstr "Cacher les &émojis dans les noms d'utilisateur" + +#: wxUI/dialogs/mastodon/configuration.py:42 +msgid "" +"&Number of items per buffer to cache in database (0 to disable caching, " +"blank for unlimited)" +msgstr "" +"&Nombre d'éléments par tampon en cache dans la base de données (0 pour " +"désactiver la mise en cache, blanc pour illimité)" + +#: wxUI/dialogs/mastodon/configuration.py:46 +msgid "" +"&Load cache for items in memory (much faster in big datasets but requires" +" more RAM)" +msgstr "" +"&Charger le cache des éléments en mémoire (plus rapide sur les grosses " +"bases de données mais nécessite plus de RAM)" + +#: wxUI/dialogs/mastodon/configuration.py:53 +#, python-brace-format +msgid "Edit template for &posts. Current template: {}" +msgstr "Éditer le modèle pour les &posts. Modèle actuel : {}" + +#: wxUI/dialogs/mastodon/configuration.py:55 +#, python-brace-format +msgid "Edit template for c&onversations. Current template: {}" +msgstr "Éditer le modèle pour les c&onversations. Modèle actuel : {}" + +#: wxUI/dialogs/mastodon/configuration.py:57 +#, python-brace-format +msgid "Edit template for p&ersons. Current template: {}" +msgstr "Éditer le modèles pour les p&ersonnes. Modèle actuel : {}" + +#: wxUI/dialogs/mastodon/configuration.py:65 +msgid "&Volume" +msgstr "&Volume" + +#: wxUI/dialogs/mastodon/configuration.py:76 +msgid "S&ession mute" +msgstr "&Session muette" + +#: wxUI/dialogs/mastodon/configuration.py:78 +msgid "&Output device" +msgstr "Périphérique de &sortie" + +#: wxUI/dialogs/mastodon/configuration.py:85 +msgid "&Input device" +msgstr "Périphérique d'&entrée" + +#: wxUI/dialogs/mastodon/configuration.py:93 +msgid "Sound &pack" +msgstr "&Pack de sons" + +#: wxUI/dialogs/mastodon/configuration.py:99 +msgid "Indicate &audio or video in posts with sound" +msgstr "Indiquer les posts &audio ou vidéo par un son" + +#: wxUI/dialogs/mastodon/configuration.py:101 +msgid "Indicate posts containing i&mages with sound" +msgstr "Indiquer les posts contenants des &images par un son" + +#: wxUI/dialogs/mastodon/configuration.py:124 +msgid "&Language for OCR" +msgstr "Langue pour la &ROC" + +#: wxUI/dialogs/mastodon/configuration.py:149 +msgid "Feedback" +msgstr "Retour" + +#: wxUI/dialogs/mastodon/configuration.py:153 +msgid "Buffers" +msgstr "Tampons" + +#: wxUI/dialogs/mastodon/configuration.py:157 +msgid "Templates" +msgstr "Modèles" + +#: wxUI/dialogs/mastodon/configuration.py:161 +msgid "Sound" +msgstr "Audio" + +#: wxUI/dialogs/mastodon/configuration.py:165 +msgid "Extras" +msgstr "Supplémentaires" + +#: wxUI/dialogs/mastodon/dialogs.py:7 +msgid "Would you like to share this post?" +msgstr "Souhaitez vous partager ce post ?" + +#: wxUI/dialogs/mastodon/dialogs.py:15 +msgid "" +"Do you really want to delete this post? It will be deleted from the " +"instance as well." +msgstr "" +"Voulez-vous vraiment supprimer ce post ? Il sera également supprimer de " +"l'instance." + +#: wxUI/dialogs/mastodon/dialogs.py:15 +msgid "Delete" +msgstr "Supprimer Tweet" + +#: wxUI/dialogs/mastodon/dialogs.py:23 +msgid "" +"Are you sure you want to dismiss this notification? If you dismiss a " +"mention notification, it also disappears from your mentions buffer. The " +"post is not going to be deleted from the instance, though." +msgstr "" +"Êtes vous sûr·e de vouloir masquer cette notification ? Masquer une " +"notification de mension fera également disparaître le post de mension de " +"votre tampon de mensions, cependant le post ne sera pas supprimé de votre" +" instance." + +#: wxUI/dialogs/mastodon/dialogs.py:31 +msgid "" +"Do you really want to empty this buffer? It's items will be removed from" +" the list but not from the instance" +msgstr "" +"Souhaitez-vous vraiment vider ce tampon ? Ses éléments seront supprimés " +"localement mais pas de l'instance." + +#: wxUI/dialogs/mastodon/dialogs.py:38 +#, python-brace-format +msgid "This user has no posts. {0} can't create a timeline." +msgstr "Cet utilisateur n'a aucun post. {0} ne peut pas créer de chronologie." + +#: wxUI/dialogs/mastodon/dialogs.py:43 +#, python-brace-format +msgid "This user has no favorited posts. {0} can't create a timeline." +msgstr "" +"Cet utilisateur n'a aucun post favori. {0} ne peut pas créer de " +"chronologie." + +#: wxUI/dialogs/mastodon/dialogs.py:48 +#, python-brace-format +msgid "This user has no followers yet. {0} can't create a timeline." +msgstr "" +"Cet utilisateur n'a pas encore d'abonné. {0} ne peut pas créer de " +"chronologie." + +#: wxUI/dialogs/mastodon/dialogs.py:53 +#, python-brace-format +msgid "This user is not following anyone. {0} can't create a timeline." +msgstr "Cet utilisateur ne suit personne. {0} ne peut pas créer de chronologie." + +#: wxUI/dialogs/mastodon/dialogs.py:60 +#, python-brace-format +msgid "The focused item has no user in it. {} ca't open a user profile" +msgstr "" +"L'élément en focus ne contient pas d'utilisateur. {} ne peut pas ouvrir " +"de profil utilisateur" + +#: wxUI/dialogs/mastodon/menus.py:13 wxUI/dialogs/mastodon/menus.py:41 +msgid "R&emove from favorites" +msgstr "S&upprimer des favoris" + +#: wxUI/dialogs/mastodon/menus.py:15 wxUI/dialogs/mastodon/menus.py:43 +msgid "&Open URL" +msgstr "&Ouvrir l'URL" + +#: wxUI/dialogs/mastodon/menus.py:17 wxUI/dialogs/mastodon/menus.py:47 +msgid "&Open in instance" +msgstr "Rechercher sur l'instance" + +#: wxUI/dialogs/mastodon/menus.py:19 wxUI/dialogs/mastodon/menus.py:45 +msgid "&Play audio" +msgstr "&Lire audio" + +#: wxUI/dialogs/mastodon/menus.py:23 wxUI/dialogs/mastodon/menus.py:51 +msgid "&Copy to clipboard" +msgstr "&Copier dans le Presse-papiers" + +#: wxUI/dialogs/mastodon/menus.py:27 wxUI/dialogs/mastodon/menus.py:55 +msgid "&User actions..." +msgstr "&Actions de l'utilisateur..." + +#: wxUI/dialogs/mastodon/menus.py:53 +msgid "&Dismiss" +msgstr "Masqué" + +#: wxUI/dialogs/mastodon/postDialogs.py:20 +#: wxUI/dialogs/mastodon/postDialogs.py:38 +msgid "Attachments" +msgstr "Fichiers joints" + +#: wxUI/dialogs/mastodon/postDialogs.py:24 +msgid "File" +msgstr "Fichier" + +#: wxUI/dialogs/mastodon/postDialogs.py:25 +msgid "Type" +msgstr "Type" + +#: wxUI/dialogs/mastodon/postDialogs.py:26 +#: wxUI/dialogs/mastodon/postDialogs.py:141 +msgid "Description" +msgstr "Description" + +#: wxUI/dialogs/mastodon/postDialogs.py:28 +msgid "Remove Attachment" +msgstr "Supprimer la pièce jointe" + +#: wxUI/dialogs/mastodon/postDialogs.py:33 +msgid "Post in the thread" +msgstr "Poster dans le sujet" + +#: wxUI/dialogs/mastodon/postDialogs.py:40 +msgid "Remove post" +msgstr "Supprimer le post" + +#: wxUI/dialogs/mastodon/postDialogs.py:47 +msgid "&Visibility" +msgstr "&Visibilité" + +#: wxUI/dialogs/mastodon/postDialogs.py:54 +msgid "Language" +msgstr "Langue" + +#: wxUI/dialogs/mastodon/postDialogs.py:58 +msgid "A&dd" +msgstr "A&jouter" + +#: wxUI/dialogs/mastodon/postDialogs.py:59 +msgid "S&ensitive content" +msgstr "Contenu s&ensible" + +#: wxUI/dialogs/mastodon/postDialogs.py:64 +msgid "Content warning" +msgstr "Avertissement de contenu" + +#: wxUI/dialogs/mastodon/postDialogs.py:71 +msgid "Add p&ost" +msgstr "Ajouter un p&ost" + +#: wxUI/dialogs/mastodon/postDialogs.py:75 +msgid "Auto&complete users" +msgstr "Sai&sie automatique utilisateurs" + +#: wxUI/dialogs/mastodon/postDialogs.py:77 +msgid "Check &spelling" +msgstr "Vérifier l'ort&hographe" + +#: wxUI/dialogs/mastodon/postDialogs.py:79 +msgid "&Translate" +msgstr "&Traduire" + +#: wxUI/dialogs/mastodon/postDialogs.py:106 +#, python-brace-format +msgid "Post - {} characters" +msgstr "Post - {} caractères" + +#: wxUI/dialogs/mastodon/postDialogs.py:130 +msgid "Image" +msgstr "Image" + +#: wxUI/dialogs/mastodon/postDialogs.py:132 +msgid "Video" +msgstr "Vidéo" + +#: wxUI/dialogs/mastodon/postDialogs.py:134 +msgid "Audio" +msgstr "Audio" + +#: wxUI/dialogs/mastodon/postDialogs.py:136 +msgid "Poll" +msgstr "Sondage" + +#: wxUI/dialogs/mastodon/postDialogs.py:141 +msgid "please provide a description" +msgstr "Veuillez fournir une description" + +#: wxUI/dialogs/mastodon/postDialogs.py:148 +msgid "Select the picture to be uploaded" +msgstr "Sélectionnez la photo à charger" + +#: wxUI/dialogs/mastodon/postDialogs.py:148 +msgid "Image files (*.png, *.jpg, *.gif)|*.png; *.jpg; *.gif" +msgstr "Fichiers image (*.png, *.jpg, *.gif)|*.png; *.jpg; *.gif" + +#: wxUI/dialogs/mastodon/postDialogs.py:155 +msgid "Select the video to be uploaded" +msgstr "Sélectionnez la vidéo à téléverser" + +#: wxUI/dialogs/mastodon/postDialogs.py:155 +msgid "Video files (*.mp4, *.mov, *.m4v, *.webm)| *.mp4; *.m4v; *.mov; *.webm" +msgstr "Fichiers vidéo (*.mp4, *.mov, *.m4v, *.webm)| *.mp4; *.m4v; *.mov; *.webm" + +#: wxUI/dialogs/mastodon/postDialogs.py:162 +msgid "Select the audio file to be uploaded" +msgstr "Sélectionnez le fichier audio que vous souhaitez charger" + +#: wxUI/dialogs/mastodon/postDialogs.py:162 +msgid "" +"Audio files (*.mp3, *.ogg, *.wav, *.flac, *.opus, *.aac, *.m4a, " +"*.3gp)|*.mp3; *.ogg; *.wav; *.flac; *.opus; *.aac; *.m4a; *.3gp" +msgstr "" +"Fichiers audio (*.mp3, *.ogg, *.wav, *.flac, *.opus, *.aac, *.m4a, " +"*.3gp)|*.mp3; *.ogg; *.wav; *.flac; *.opus; *.aac; *.m4a; *.3gp" + +#: wxUI/dialogs/mastodon/postDialogs.py:169 +msgid "" +"It is not possible to add more attachments. Please take into account that" +" You can add only a maximum of 4 images, or one audio, video or poll per" +" post. Please remove other attachments before continuing." +msgstr "" +"Vous ne pouvez plus ajouter de pièces jointes. Veuillez noter que vous " +"pouvez seulement ajouter 4 images, ou un audio, une vidéo ou un sondage " +"par post. Veuillez retirer toute autre pièce jointe avant de continuer." + +#: wxUI/dialogs/mastodon/postDialogs.py:169 +msgid "Error adding attachment" +msgstr "Erreur à l'ajout de la pièce jointe" + +#: wxUI/dialogs/mastodon/postDialogs.py:172 +msgid "" +"You can add a poll or media files. In order to add your poll, please " +"remove other attachments first." +msgstr "" +"Vous pouvez ajouter un sondage ou des fichiers audio. Afin d'ajouter " +"votre sondage, veuillez retirer toute autre pièce jointe avant." + +#: wxUI/dialogs/mastodon/postDialogs.py:172 +msgid "Error adding poll" +msgstr "Erreur à l'ajout du sondage" + +#: wxUI/dialogs/mastodon/postDialogs.py:177 +#, python-format +msgid "Post - %i characters " +msgstr "Post - %i caractères " + +#: wxUI/dialogs/mastodon/postDialogs.py:200 +msgid "Image description" +msgstr "Description de l'image" + +#: wxUI/dialogs/mastodon/postDialogs.py:210 +msgid "Privacy" +msgstr "Confidentialité" + +#: wxUI/dialogs/mastodon/postDialogs.py:214 +msgid "Source" +msgstr "Source:" + +#: wxUI/dialogs/mastodon/postDialogs.py:222 +msgid "Boosts" +msgstr "Partages :" + +#: wxUI/dialogs/mastodon/postDialogs.py:224 +msgid "View users who boosted this post" +msgstr "Voir les utilisateurs ayant partagé ce post" + +#: wxUI/dialogs/mastodon/postDialogs.py:231 +msgid "View users who favorited this post" +msgstr "Voir les utilisateurs ayant ajouté ce post aux favoris" + +#: wxUI/dialogs/mastodon/postDialogs.py:239 +msgid "Copy link to clipboard" +msgstr "Copier le lien dans le Presse-papiers" + +#: wxUI/dialogs/mastodon/postDialogs.py:241 +#: wxUI/dialogs/mastodon/postDialogs.py:280 +msgid "Check &spelling..." +msgstr "Correction &orthographique..." + +#: wxUI/dialogs/mastodon/postDialogs.py:242 +#: wxUI/dialogs/mastodon/postDialogs.py:281 +msgid "&Translate..." +msgstr "&Traduire..." + +#: wxUI/dialogs/mastodon/postDialogs.py:243 +#: wxUI/dialogs/mastodon/postDialogs.py:282 +msgid "C&lose" +msgstr "F&ermer" + +#: wxUI/dialogs/mastodon/postDialogs.py:294 +msgid "Add a poll" +msgstr "Ajouter un sondage" + +#: wxUI/dialogs/mastodon/postDialogs.py:298 +msgid "Participation time" +msgstr "Temps de participation" + +#: wxUI/dialogs/mastodon/postDialogs.py:300 +msgid "5 minutes" +msgstr "5 minutes" + +#: wxUI/dialogs/mastodon/postDialogs.py:300 +msgid "30 minutes" +msgstr "30 minutes" + +#: wxUI/dialogs/mastodon/postDialogs.py:300 +msgid "1 hour" +msgstr "1 heure" + +#: wxUI/dialogs/mastodon/postDialogs.py:300 +msgid "6 hours" +msgstr "6 heures" + +#: wxUI/dialogs/mastodon/postDialogs.py:300 +msgid "1 day" +msgstr "1 jour" + +#: wxUI/dialogs/mastodon/postDialogs.py:300 +msgid "2 days" +msgstr "2 jours" + +#: wxUI/dialogs/mastodon/postDialogs.py:300 +msgid "3 days" +msgstr "3 jours" + +#: wxUI/dialogs/mastodon/postDialogs.py:300 +msgid "4 days" +msgstr "4 jours" + +#: wxUI/dialogs/mastodon/postDialogs.py:300 +msgid "5 days" +msgstr "5 jours" + +#: wxUI/dialogs/mastodon/postDialogs.py:300 +msgid "6 days" +msgstr "6 jours" + +#: wxUI/dialogs/mastodon/postDialogs.py:300 +msgid "7 days" +msgstr "7 jours" + +#: wxUI/dialogs/mastodon/postDialogs.py:304 +msgid "Choices" +msgstr "Choix" + +#: wxUI/dialogs/mastodon/postDialogs.py:308 +msgid "Option 1" +msgstr "Option 1" + +#: wxUI/dialogs/mastodon/postDialogs.py:315 +msgid "Option 2" +msgstr "Option 2" + +#: wxUI/dialogs/mastodon/postDialogs.py:322 +msgid "Option 3" +msgstr "Option 3" + +#: wxUI/dialogs/mastodon/postDialogs.py:329 +msgid "Option 4" +msgstr "Option 4" + +#: wxUI/dialogs/mastodon/postDialogs.py:334 +msgid "Allow multiple choices per user" +msgstr "Autoriser plusieurs choix par utilisateur" + +#: wxUI/dialogs/mastodon/postDialogs.py:337 +msgid "Hide votes count until the poll expires" +msgstr "Masquer le nombre de votes jusqu'à ce que le sondage expire" + +#: wxUI/dialogs/mastodon/postDialogs.py:363 +msgid "Please make sure you have provided at least two options for the poll." +msgstr "Assurez-vous d'avoir spécifier au moins 2 options pour le sondage." + +#: wxUI/dialogs/mastodon/postDialogs.py:363 +msgid "Not enough information" +msgstr "Pas assez d'informations" + +#: wxUI/dialogs/mastodon/postDialogs.py:368 +msgid "Vote in this poll" +msgstr "Voter pour ce sondage" + +#: wxUI/dialogs/mastodon/postDialogs.py:371 +msgid "Options" +msgstr "Options" + +#: wxUI/dialogs/mastodon/search.py:9 +msgid "Search" +msgstr "Rechercher" + +#: wxUI/dialogs/mastodon/search.py:18 +msgid "Posts" +msgstr "Posts" + +#: wxUI/dialogs/mastodon/showUserProfile.py:22 +msgid "Select user" +msgstr "Sélectionner un utilisateur" + +#: wxUI/dialogs/mastodon/showUserProfile.py:73 +#, python-brace-format +msgid "{}'s Profile" +msgstr "Actualiser le profil" + +#: wxUI/dialogs/mastodon/showUserProfile.py:79 +msgid "&Name: " +msgstr "&Nom : " + +#: wxUI/dialogs/mastodon/showUserProfile.py:84 +msgid "&URL: " +msgstr "&URL : " + +#: wxUI/dialogs/mastodon/showUserProfile.py:89 +msgid "&Bio: " +msgstr "&Bio : " + +#: wxUI/dialogs/mastodon/showUserProfile.py:94 +msgid "&Joined at: " +msgstr "&A rejoint le : " + +#: wxUI/dialogs/mastodon/showUserProfile.py:99 +msgid "&Actions" +msgstr "&Actions" + +#: wxUI/dialogs/mastodon/showUserProfile.py:104 +msgid "Header: " +msgstr "En-tête " + +#: wxUI/dialogs/mastodon/showUserProfile.py:112 +msgid "Avatar: " +msgstr "Avatar " + +#: wxUI/dialogs/mastodon/showUserProfile.py:122 +#, python-brace-format +msgid "Field &{} - Label: " +msgstr "Champ &{} - Label : " + +#: wxUI/dialogs/mastodon/showUserProfile.py:129 +msgid "Content: " +msgstr "Contenu " + +#: wxUI/dialogs/mastodon/filters/create_filter.py:43 +#: wxUI/dialogs/mastodon/filters/create_filter.py:65 +#: wxUI/dialogs/mastodon/showUserProfile.py:135 +msgid "Yes" +msgstr "Oui" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:43 +#: wxUI/dialogs/mastodon/filters/create_filter.py:65 +#: wxUI/dialogs/mastodon/filters/create_filter.py:69 +#: wxUI/dialogs/mastodon/showUserProfile.py:135 +msgid "No" +msgstr "Non" + +#: wxUI/dialogs/mastodon/showUserProfile.py:137 +msgid "&Private account: " +msgstr "&Compte Privé : " + +#: wxUI/dialogs/mastodon/showUserProfile.py:144 +msgid "&Bot account: " +msgstr "&Compte Robot : " + +#: wxUI/dialogs/mastodon/showUserProfile.py:151 +msgid "&Discoverable account: " +msgstr "&Compte Découvrable : " + +#: wxUI/dialogs/mastodon/showUserProfile.py:157 +#, python-brace-format +msgid "{} p&osts. Click to open posts timeline" +msgstr "{} p&osts. Cliquez pour ouvrir la chronologie des posts" + +#: wxUI/dialogs/mastodon/showUserProfile.py:162 +#, python-brace-format +msgid "{} &following. Click to open Following timeline" +msgstr "{} &abonnements. Cliquez pour ouvrir la chronologie des abonnements" + +#: wxUI/dialogs/mastodon/showUserProfile.py:166 +#, python-brace-format +msgid "{} fo&llowers. Click to open followers timeline" +msgstr "{} a&bonnés. Cliquez pour ouvrir la chronologie des abonnés" + +#: wxUI/dialogs/mastodon/updateProfile.py:43 +msgid "&Display Name" +msgstr "&Nom d'affichage" + +#: wxUI/dialogs/mastodon/updateProfile.py:50 +msgid "&Bio" +msgstr "&Bio" + +#: wxUI/dialogs/mastodon/updateProfile.py:58 +msgid "Header" +msgstr "En-tête" + +#: wxUI/dialogs/mastodon/updateProfile.py:71 +msgid "Change &header" +msgstr "C&hanger d'en-tête" + +#: wxUI/dialogs/mastodon/updateProfile.py:79 +msgid "Avatar" +msgstr "Avatar" + +#: wxUI/dialogs/mastodon/updateProfile.py:92 +msgid "Change &avatar" +msgstr "Changer d'&avatar" + +#: wxUI/dialogs/mastodon/updateProfile.py:102 +#, python-brace-format +msgid "Field &{}: Label" +msgstr "Champ &{} : Label" + +#: wxUI/dialogs/mastodon/updateProfile.py:110 +msgid "Content" +msgstr "Contenu" + +#: wxUI/dialogs/mastodon/updateProfile.py:120 +msgid "&Private account" +msgstr "&Compte privé" + +#: wxUI/dialogs/mastodon/updateProfile.py:122 +msgid "&Bot account" +msgstr "Compte &Robot" + +#: wxUI/dialogs/mastodon/updateProfile.py:124 +msgid "&Discoverable account" +msgstr "Compte &Découvrable" + +#: wxUI/dialogs/mastodon/updateProfile.py:167 +msgid "Select header image - max 2MB" +msgstr "Sélectionner une image d'en-tête - 2Mo maximum" + +#: wxUI/dialogs/mastodon/updateProfile.py:172 +#: wxUI/dialogs/mastodon/updateProfile.py:194 +msgid "The selected file is larger than 2MB. Do you want to select another file?" +msgstr "" +"Le fichier sélectionné est plus gros que 2Mo. Voulez-vous sélectionner un" +" autre fichier ?" + +#: wxUI/dialogs/mastodon/updateProfile.py:173 +#: wxUI/dialogs/mastodon/updateProfile.py:195 +msgid "File more than 2MB" +msgstr "Fichier plus gros que 2Mo" + +#: wxUI/dialogs/mastodon/updateProfile.py:189 +msgid "Select avatar image - max 2MB" +msgstr "Sélectionner une image d'avatar - 2Mo maximum" + +#: wxUI/dialogs/mastodon/userActions.py:19 +msgid "&Follow" +msgstr "&Suivre" + +#: wxUI/dialogs/mastodon/userActions.py:20 +msgid "U&nfollow" +msgstr "Ne pas su&ivre" + +#: wxUI/dialogs/mastodon/userActions.py:22 +msgid "Unmu&te" +msgstr "&Démasquer" + +#: wxUI/dialogs/mastodon/userActions.py:23 +msgid "&Block" +msgstr "&Bloquer" + +#: wxUI/dialogs/mastodon/userActions.py:24 +msgid "Unbl&ock" +msgstr "Débl&oquer" + +#: wxUI/dialogs/mastodon/userTimeline.py:9 +#, python-format +msgid "Timeline for %s" +msgstr "Chronologie pour %s" + +#: wxUI/dialogs/mastodon/userTimeline.py:19 +msgid "&Posts" +msgstr "&Posts" + +#: wxUI/dialogs/mastodon/userTimeline.py:20 +msgid "&Followers" +msgstr "&Abonnés" + +#: wxUI/dialogs/mastodon/userTimeline.py:21 +msgid "Fo&llowing" +msgstr "Abo&nnement" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:12 +msgid "Keyword" +msgstr "Mot clé" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:13 +#: wxUI/dialogs/mastodon/filters/create_filter.py:24 +msgid "Whole word" +msgstr "Mot entier" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:19 +msgid "Keyword:" +msgstr "Mot clé :" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:25 +#: wxUI/dialogs/mastodon/filters/manage_filters.py:22 +msgid "Add" +msgstr "Ajouter" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:34 +msgid "Palabras clave a filtrar:" +msgstr "Mots clés à filtrer :" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:74 +msgid "New filter" +msgstr "Nouveau filtre" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:78 +msgid "Home timeline" +msgstr "Chronologie d'accueil" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:79 +msgid "Public statuses" +msgstr "Statuts publics" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:81 +msgid "Threads" +msgstr "Fils" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:82 +msgid "Profiles" +msgstr "Profils" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:86 +msgid "Hide posts" +msgstr "Masquer les posts" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:87 +msgid "Set a content warning to posts" +msgstr "Définir un avertissement de contenu sur les posts" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:91 +msgid "Hours" +msgstr "Heures" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:92 +msgid "Days" +msgstr "Jours" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:93 +msgid "Weeks" +msgstr "Semaines" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:94 +msgid "months" +msgstr "Mois" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:97 +msgid "Title:" +msgstr "Titre :" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:104 +msgid "Apply to:" +msgstr "Appliquer à :" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:114 +msgid "Action:" +msgstr "Action :" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:122 +msgid "Expires in:" +msgstr "Expire dans:" + +#: wxUI/dialogs/mastodon/filters/manage_filters.py:10 +msgid "Filters" +msgstr "Filtres" + +#: wxUI/dialogs/mastodon/filters/manage_filters.py:15 +msgid "Title" +msgstr "Titre" + +#: wxUI/dialogs/mastodon/filters/manage_filters.py:16 +msgid "Keywords" +msgstr "Mots clés" + +#: wxUI/dialogs/mastodon/filters/manage_filters.py:17 +msgid "Contexts" +msgstr "Contextes" + +#: wxUI/dialogs/mastodon/filters/manage_filters.py:19 +msgid "Expires" +msgstr "Expiration" + +#~ msgid "Unable to find address in OpenStreetMap." +#~ msgstr "Impossible de trouver l'adresse dans OpenStreetMap" + +#~ msgid "There are no results for the coordinates in this tweet" +#~ msgstr "Il n'y a aucun résultat pour les coordonnées dans ce tweet" + +#~ msgid "This list is already opened" +#~ msgstr "Cette liste est déjà ouverte" + +#~ msgid "Timelines for {}" +#~ msgstr "Chronologies de {}" + +#~ msgid "URL of mastodon instance:" +#~ msgstr "URL de l'instance Mastodon :" + +#~ msgid "Email address:" +#~ msgstr "Adresse e-mail :" + +#~ msgid "Password:" +#~ msgstr "Mot de passe :" + +#~ msgid "&Item" +#~ msgstr "&Élément" + +#~ msgid "Likes for {}" +#~ msgstr "Favoris de {}" + +#~ msgid "Trending topics for %s" +#~ msgstr "Tendances pour %s" + +#~ msgid "Select user" +#~ msgstr "Sélectionnez l'utilisateur" + +#~ msgid "Sent direct messages" +#~ msgstr "Messages envoyés" + +#~ msgid "Sent tweets" +#~ msgstr "Tweets envoyés" + +#~ msgid "Likes" +#~ msgstr "Favoris" + +#~ msgid "Friends" +#~ msgstr "Abonnements" + +#~ msgid "{username}'s likes" +#~ msgstr "Favoris de {username}" + +#~ msgid "{username}'s friends" +#~ msgstr "Abonnements de {username}" + +#~ msgid "Tweet" +#~ msgstr "Tweet" + +#~ msgid "Write the tweet here" +#~ msgstr "Écrivez le tweet ici" + +#~ msgid "New tweet in {0}" +#~ msgstr "Nouveau tweet dans {0}" + +#~ msgid "{0} new tweets in {1}." +#~ msgstr "{0} nouveau tweet dans {1}" + +#~ msgid "Reply to {arg0}" +#~ msgstr "Répondre à {arg0}" + +#~ msgid "Reply to %s" +#~ msgstr "Répondre à %s" + +#~ msgid "Direct message to %s" +#~ msgstr "Message à %s" + +#~ msgid "New direct message" +#~ msgstr "Nouveau message" + +#~ msgid "This action is not supported on protected accounts." +#~ msgstr "Cette action n'est pas supportée pour les comptes protégés." + +#~ msgid "Quote" +#~ msgstr "Citer" + +#~ msgid "Add your comment to the tweet" +#~ msgstr "Ajoutez votre commentaire au tweet" + +#~ msgid "User details" +#~ msgstr "Détails de l'utilisateur" + +#~ msgid "MMM D, YYYY. H:m" +#~ msgstr "D MMM YYYY à H:m" + +#~ msgid "There are no coordinates in this tweet" +#~ msgstr "Il n'y a aucune coordonnée dans ce tweet" + +#~ msgid "Error decoding coordinates. Try again later." +#~ msgstr "Erreur pendant le décodage des coordonnées. Réessayez plus tard." + +#~ msgid "Invalid buffer" +#~ msgstr "Tampon invalide" + +#~ msgid "{0} new direct messages." +#~ msgstr "{0} nouveau message" + +#~ msgid "This action is not supported in the buffer yet." +#~ msgstr "Cette action n'est pas encore supportée dans ce tampon" + +#~ msgid "" +#~ "Getting more items cannot be done " +#~ "in this buffer. Use the direct " +#~ "messages buffer instead." +#~ msgstr "" +#~ "Récupérer plus d'élément est impossible " +#~ "dans ce tampon, utilisez le tampon " +#~ "des messages à la place." + +#~ msgid "Mention" +#~ msgstr "Mention" + +#~ msgid "Mention to %s" +#~ msgstr "Mention pour %s" + +#~ msgid "{0} new followers." +#~ msgstr "{0} nouvel abonné" + +#~ msgid "This action is not supported in the buffer, yet." +#~ msgstr "Cette action n'est pas supportée dans ce tampon, pour le moment" + +#~ msgid "&Retweet" +#~ msgstr "&Retweet" + +#~ msgid "&Like" +#~ msgstr "A&jouter aux favoris" + +#~ msgid "&Unlike" +#~ msgstr "S&upprimer des favoris" + +#~ msgid "View &address" +#~ msgstr "Voir &adresse" + +#~ msgid "&View lists" +#~ msgstr "&Voir listes" + +#~ msgid "View likes" +#~ msgstr "Voir les j'aime" + +#~ msgid "Likes timelines" +#~ msgstr "Chronologies des favoris" + +# | msgid "Followers timelines" +#~ msgid "Followers timelines" +#~ msgstr "Chronologies des abonnés" + +#~ msgid "Following timelines" +#~ msgstr "Chronologies des abonnements" + +#~ msgid "Lists" +#~ msgstr "Listes" + +#~ msgid "List for {}" +#~ msgstr "Liste {}" + +#~ msgid "Filters cannot be applied on this buffer" +#~ msgstr "Les filtres ne peuvent pas s'appliquer à ce tampon" + +#~ msgid "View item" +#~ msgstr "Voir l'élément" + +#~ msgid "Ask" +#~ msgstr "Demander" + +#~ msgid "Retweet without comments" +#~ msgstr "Retweet sans commentaires" + +#~ msgid "Retweet with comments" +#~ msgstr "Retweet avec commentaires" + +#~ msgid "Edit template for tweets. Current template: {}" +#~ msgstr "Éditer le modèle des tweets. Modèle actuel : {}" + +#~ msgid "Edit template for direct messages. Current template: {}" +#~ msgstr "Éditer le modèle pour les messages. Modèle actuel : {}" + +#~ msgid "Edit template for sent direct messages. Current template: {}" +#~ msgstr "Éditer le modèle des messages envoyés. Modèle actuel : {}" + +#~ msgid "User has been suspended" +#~ msgstr "L'utilisateur a été suspendu" + +#~ msgid "Information for %s" +#~ msgstr "Détails de %s" + +#~ msgid "Discarded" +#~ msgstr "Ignoré" + +#~ msgid "Username: @%s\n" +#~ msgstr "Nom d'utilisateur: @%s\n" + +#~ msgid "Name: %s\n" +#~ msgstr "Nom: %s\n" + +#~ msgid "Location: %s\n" +#~ msgstr "Localisation: %s\n" + +#~ msgid "URL: %s\n" +#~ msgstr "Site Web: %s\n" + +#~ msgid "Bio: %s\n" +#~ msgstr "Biographie: %s\n" + +#~ msgid "Yes" +#~ msgstr "Oui" + +#~ msgid "No" +#~ msgstr "Non" + +#~ msgid "Protected: %s\n" +#~ msgstr "Protégé: %s\n" + +#~ msgid "Relationship: " +#~ msgstr "Relation : " + +#~ msgid "You follow {0}. " +#~ msgstr "Vous suivez {0}. " + +#~ msgid "{0} is following you." +#~ msgstr "{0} vous suit." + +#~ msgid "" +#~ "Followers: %s\n" +#~ " Friends: %s\n" +#~ msgstr "" +#~ "Abonnés: %s\n" +#~ "Abonnements: %s\n" + +#~ msgid "Verified: %s\n" +#~ msgstr "Vérifié : %s\n" + +#~ msgid "Tweets: %s\n" +#~ msgstr "Tweets: %s\n" + +#~ msgid "Likes: %s" +#~ msgstr "Favoris: %s" + +#~ msgid "You can't ignore direct messages" +#~ msgstr "Vous ne pouvez pas ignorer les messages" + +#~ msgid "Attaching..." +#~ msgstr "Ajout en cours..." + +#~ msgid "Pause" +#~ msgstr "Pause" + +#~ msgid "&Resume" +#~ msgstr "&Reprendre" + +#~ msgid "Resume" +#~ msgstr "Reprendre" + +#~ msgid "&Pause" +#~ msgstr "&Pause" + +#~ msgid "&Stop" +#~ msgstr "&Arrêter" + +#~ msgid "Recording" +#~ msgstr "Enregistrement en cours" + +#~ msgid "Stopped" +#~ msgstr "Arrêté" + +#~ msgid "&Record" +#~ msgstr "&Enregistrer" + +#~ msgid "&Play" +#~ msgstr "&Lire" + +#~ msgid "Recoding audio..." +#~ msgstr "Recodage audio..." + +#~ msgid "Error in file upload: {0}" +#~ msgstr "Erreur lors du téléversement du fichier: {0}" + +#~ msgid "Transferred" +#~ msgstr "Transféré" + +#~ msgid "Total file size" +#~ msgstr "Taille totale du fichier" + +#~ msgid "Transfer rate" +#~ msgstr "Vitesse du transfert" + +#~ msgid "Time left" +#~ msgstr "Temps restant" + +#~ msgid "Attach audio" +#~ msgstr "Joindre un audio" + +#~ msgid "&Add an existing file" +#~ msgstr "&Ajouter un fichier existant" + +#~ msgid "&Discard" +#~ msgstr "&Ignorer" + +#~ msgid "Upload to" +#~ msgstr "Charger" + +#~ msgid "Attach" +#~ msgstr "Joindre" + +#~ msgid "&Cancel" +#~ msgstr "&Annuler" + +#~ msgid "Audio Files (*.mp3, *.ogg, *.wav)|*.mp3; *.ogg; *.wav" +#~ msgstr "Fichiers audio (*.mp3, *.ogg, *.wav)|*.mp3; *.ogg; *.wav" + +#~ msgid "You have to start writing" +#~ msgstr "Vous devez commencer à écrire" + +#~ msgid "There are no results in your users database" +#~ msgstr "Il n'y a aucun résultat dans votre base de données des utilisateurs" + +#~ msgid "Autocompletion only works for users." +#~ msgstr "La saisie automatique fonctionne uniquement pour les utilisateurs." + +#~ msgid "" +#~ "Updating database... You can close this" +#~ " window now. A message will tell " +#~ "you when the process finishes." +#~ msgstr "" +#~ "Mise à jour de la base de " +#~ "données en cours... Vous pouvez fermer" +#~ " cette fenêtre maintenant. Un message " +#~ "vous avertira lorsque le processus est" +#~ " terminé." + +#~ msgid "Manage Autocompletion database" +#~ msgstr "Gérer la base de données pour la saisie automatique" + +#~ msgid "Editing {0} users database" +#~ msgstr "Modification de la base de données des utilisateurs de {0}" + +#~ msgid "Username" +#~ msgstr "Nom d'utilisateur" + +#~ msgid "Add user" +#~ msgstr "Ajouter l'utilisateur" + +#~ msgid "Remove user" +#~ msgstr "Supprimer l'utilisateur" + +#~ msgid "Twitter username" +#~ msgstr "Nom d'utilisateur de Twitter" + +#~ msgid "Add user to database" +#~ msgstr "Ajouter l'utilisateur à la base de données" + +#~ msgid "The user does not exist" +#~ msgstr "Cet utilisateur n'existe pas sur Twitter" + +#~ msgid "Error!" +#~ msgstr "Erreur !" + +#~ msgid "Autocomplete users' settings" +#~ msgstr "Paramètres pour la saisie automatique des utilisateurs" + +#~ msgid "Add followers to database" +#~ msgstr "Ajouter l'utilisateur à la base de données" + +#~ msgid "Add friends to database" +#~ msgstr "Ajouter les abonnements à la base de données" + +#~ msgid "Updating autocompletion database" +#~ msgstr "Mise à jour de la base de données d'autocomplétion" + +#~ msgid "" +#~ "This process will retrieve the users " +#~ "you selected from Twitter, and add " +#~ "them to the user autocomplete database." +#~ " Please note that if there are " +#~ "many users or you have tried to" +#~ " perform this action less than 15 " +#~ "minutes ago, TWBlue may reach a " +#~ "limit in Twitter API calls when " +#~ "trying to load the users into the" +#~ " database. If this happens, we will" +#~ " show you an error, in which " +#~ "case you will have to try this " +#~ "process again in a few minutes. If" +#~ " this process ends with no error, " +#~ "you will be redirected back to the" +#~ " account settings dialog. Do you want" +#~ " to continue?" +#~ msgstr "" +#~ "Ce processus va récupérer les " +#~ "utilisateurs que vous avez sélectionnés " +#~ "depuis Twitter, et les ajouter à " +#~ "la base de données d'autocomplétion. " +#~ "Notez que si il y a beaucoup " +#~ "d'utilisateurs ou que vous avez tenté" +#~ " cette action il y a moins de" +#~ " 15 minutes, TWBlue pourrait rencontrer " +#~ "une limite lors de l'appel à l'API" +#~ " de Twitter. Dans ce cas, nous " +#~ "vous afficherons une erreur, auquel cas" +#~ " vous devrez retenter l'action dans " +#~ "quelques minutes. Si le processus se " +#~ "termine sans erreur, vous serez redirigé" +#~ " vers le dialogue de paramétrage du" +#~ " compte. Voulez-vous continuer ?" + +#~ msgid "TWBlue has imported {} users successfully." +#~ msgstr "TWBlue a correctement importé les utilisateurs {}." + +#~ msgid "Done" +#~ msgstr "Terminé" + +#~ msgid "Error adding users from Twitter. Please try again in about 15 minutes." +#~ msgstr "" +#~ "Erreur lors de l'import des utilisateurs" +#~ " depuis Twitter. Veuillez réessayer dans" +#~ " environ 15 minutes." + +#~ msgid "New tweet" +#~ msgstr "Nouveau tweet" + +#~ msgid "Retweet" +#~ msgstr "Retweet" + +#~ msgid "Like a tweet" +#~ msgstr "Aimer un tweet" + +#~ msgid "Like/unlike a tweet" +#~ msgstr "Aimer/ne plus aimer un tweet" + +#~ msgid "Unlike a tweet" +#~ msgstr "Ne plus aimer un tweet" + +#~ msgid "See user details" +#~ msgstr "Voir les détails d'un utilisateur" + +#~ msgid "Show tweet" +#~ msgstr "Voir tweet" + +#~ msgid "Interact with the currently focused tweet." +#~ msgstr "Interagir avec le tweet ayant actuellement le focus." + +#~ msgid "View in Twitter" +#~ msgstr "Voir sur Twitter" + +#~ msgid "Edit profile" +#~ msgstr "Modifier le profil" + +#~ msgid "Delete a tweet or direct message" +#~ msgstr "Supprimer un tweet ou un message" + +#~ msgid "Add to list" +#~ msgstr "Ajouter à la liste" + +#~ msgid "Remove from list" +#~ msgstr "Supprimer de la liste" + +#~ msgid "Search on twitter" +#~ msgstr "Rechercher sur twitter" + +#~ msgid "Show lists for a specified user" +#~ msgstr "Afficher les listes d'un utilisateur spécifié" + +#~ msgid "Get geolocation" +#~ msgstr "Obtenir la géolocalisation" + +#~ msgid "Display the tweet's geolocation in a dialog" +#~ msgstr "Afficher la géolocalisation du tweet dans une boîte de dialogue" + +#~ msgid "Create a trending topics buffer" +#~ msgstr "Créer un tampon de tendances" + +#~ msgid "" +#~ "Opens the list manager, which allows " +#~ "you to create, edit, delete and " +#~ "open lists in buffers." +#~ msgstr "" +#~ "Ouvrir le gestionnaire de listes, ce " +#~ "qui permet de créer, de modifier, " +#~ "de supprimer et d'ouvrir les listes " +#~ "dans des tampons." + +#~ msgid "Opens the list manager" +#~ msgstr "Ouvrir le gestionnaire de listes" + +#~ msgid "{account_name} (Twitter)" +#~ msgstr "{account_name} (Twitter)" + +#~ msgid "Twitter" +#~ msgstr "Twitter" + +#~ msgid "" +#~ "The request to authorize your Twitter" +#~ " account will be opened in your " +#~ "browser. You only need to do this" +#~ " once. Would you like to continue?" +#~ msgstr "" +#~ "Une demande pour autoriser votre compte" +#~ " Twitter va s'ouvrir dans votre " +#~ "navigateur. Vous devrez seulement réaliser " +#~ "ceci une fois. Souhaitez-vous continuer" +#~ " ?" + +#~ msgid "" +#~ "TWBlue is unable to authenticate the " +#~ "account for {} in Twitter. It " +#~ "might be due to an invalid or " +#~ "expired token, revoqued access to the" +#~ " application, or after an account " +#~ "reactivation. Please remove the account " +#~ "manually from your Twitter sessions in" +#~ " order to stop seeing this message." +#~ msgstr "" +#~ "TWBlue ne parvient pas à authentifier" +#~ " le compte pour {} sur Twitter. " +#~ "Cela peut être dû à un jeton " +#~ "d'accès incorrect, un accès d'application " +#~ "révoqué, ou après la réactivation d'un" +#~ " compte. Veuillez supprimer manuellement ce" +#~ " compte depuis votre session Twitter " +#~ "pour ne plus voir ce message." + +#~ msgid "Authentication error for session {}" +#~ msgstr "Erreur d'authentification pour la session {}" + +#~ msgid "Dm to %s " +#~ msgstr "Mp à %s " + +#~ msgid "{0}. Quoted tweet from @{1}: {2}" +#~ msgstr "{0}. Tweet de @{1} cité : {2}" + +#~ msgid "Unavailable" +#~ msgstr "Indisponible" + +#~ msgid "" +#~ "%s (@%s). %s followers, %s friends, " +#~ "%s tweets. Last tweeted %s. Joined " +#~ "Twitter %s" +#~ msgstr "" +#~ "%s (@%s). %s abonnés, %s abonnements," +#~ " %s tweets. Dernier tweet envoyé %s." +#~ " À rejoint Twitter %s" + +#~ msgid "No description available" +#~ msgstr "Aucune description disponible" + +#~ msgid "private" +#~ msgstr "privé" + +#~ msgid "public" +#~ msgstr "public" + +#~ msgid "Enter your PIN code here" +#~ msgstr "Entrer votre code PIN ici" + +#~ msgid "Authorising account..." +#~ msgstr "Compte en cours d'autorisation..." + +#~ msgid "" +#~ "We could not authorice your Twitter " +#~ "account to be used in TWBlue. This" +#~ " might be caused due to an " +#~ "incorrect verification code. Please try " +#~ "to add the session again." +#~ msgstr "" +#~ "Nous ne pouvons pas autoriser votre " +#~ "compte Twitter à être utilisé dans " +#~ "TWBlue, cela peut être dû à un " +#~ "code d'autorisation incorrect. Veuillez " +#~ "réessayer d'ajouter le compte." + +#~ msgid "%s failed. Reason: %s" +#~ msgstr "Erreur %s. Motif: %s" + +#~ msgid "Deleted account" +#~ msgstr "Compte supprimé" + +#~ msgid "$sender_display_name, $text $date" +#~ msgstr "$sender_display_name, $text $date" + +#~ msgid "" +#~ "$display_name (@$screen_name). $followers followers," +#~ " $following following, $tweets tweets. " +#~ "Joined Twitter $created_at." +#~ msgstr "" +#~ "$display_name (@$screen_name). $followers abonnés," +#~ " $following abonnements, $tweets tweets. À" +#~ " rejoint Twitter $created_at." + +#~ msgid "Image description: {}." +#~ msgstr "Description de l'image: {}." + +#~ msgid "RT @{}: {} Quote from @{}: {}" +#~ msgstr "{0}. Tweet de @{1} cité : {2}" + +#~ msgid "RT @{}: {}" +#~ msgstr "Partage de @{} : {}" + +#~ msgid "{} Quote from @{}: {}" +#~ msgstr "Partage de @{} : {}" + +#~ msgid "Sorry, you are not authorised to see this status." +#~ msgstr "Désolé, vous n'êtes pas autorisé à voir ce Tweet." + +# | msgid "Error {0}" +#~ msgid "Error {0}" +#~ msgstr "Erreur {0}" + +#~ msgid "{user_1}, {user_2} and {all_users} more: {text}" +#~ msgstr "{user_1}, {user_2} et {all_users} de plus : {text}" + +#~ msgid "" +#~ "This retweet is over 140 characters. " +#~ "Would you like to post it as " +#~ "a mention to the poster with your" +#~ " comments and a link to the " +#~ "original tweet?" +#~ msgstr "" +#~ "Ce retweet contient plus de 140 " +#~ "caractères. Souhaitez-vous publier vos " +#~ "commentaires avec en mentionnant l'utilisateur" +#~ " qui a publié le tweet original " +#~ "et un lien vers celui-ci ?" + +#~ msgid "Would you like to add a comment to this tweet?" +#~ msgstr "Souhaitez-vous ajouter un commentaire à ce tweet ?" + +#~ msgid "" +#~ "Do you really want to delete this" +#~ " tweet? It will be deleted from " +#~ "Twitter as well." +#~ msgstr "" +#~ "Voulez-vous vraiment supprimer ce tweet" +#~ " ? Il sera également supprimé de " +#~ "Twitter." + +#~ msgid "Enter the name of the client : " +#~ msgstr "Entrez le nom du client: " + +#~ msgid "Add client" +#~ msgstr "Ajouter un client" + +#~ msgid "This user has no tweets, so you can't open a timeline for them." +#~ msgstr "" +#~ "Cet utilisateur n'a aucun tweets, vous" +#~ " ne pouvez donc pas ouvrir de " +#~ "chronologie pour lui." + +#~ msgid "" +#~ "This is a protected Twitter user, " +#~ "which means you can't open a " +#~ "timeline using the Streaming API. The" +#~ " user's tweets will not update due" +#~ " to a twitter policy. Do you " +#~ "want to continue?" +#~ msgstr "" +#~ "C'est un utilisateur de Twitter protégé," +#~ " ce qui signifie que vous ne " +#~ "pouvez pas ouvrir une chronologie à " +#~ "l'aide de l'API en Streaming. " +#~ "l'utilisateur des tweets ne mettra pas" +#~ " à jour en raison d'une politique " +#~ "de twitter. Voulez-vous continuer ?" + +#~ msgid "" +#~ "This is a protected user account, " +#~ "you need to follow this user to" +#~ " view their tweets or likes." +#~ msgstr "" +#~ "Ce compte utilisateur est protégé, vous" +#~ " devez suivre cet utilisateur pour " +#~ "afficher ces tweets ou favoris." + +#~ msgid "This user has no tweets. {0} can't create a timeline." +#~ msgstr "" +#~ "Cet utilisateur n'a aucun tweets. {0}" +#~ " ne peut pas créer une chronologie." + +#~ msgid "This user has no favorited tweets. {0} can't create a timeline." +#~ msgstr "" +#~ "Cet utilisateur n'a aucun tweets marqué" +#~ " comme favori. {0} ne peut pas " +#~ "créer une chronologie." + +#~ msgid "This user has no followers. {0} can't create a timeline." +#~ msgstr "" +#~ "Cet utilisateur n'a aucun abonnés. {0}" +#~ " ne peut pas créer une chronologie." + +#~ msgid "This user has no friends. {0} can't create a timeline." +#~ msgstr "" +#~ "Cet utilisateur n'a aucun abonnements. " +#~ "{0} ne peut pas créer une " +#~ "chronologie." + +#~ msgid "Geolocation data: {0}" +#~ msgstr "Données de géolocalisation: {0}" + +#~ msgid "Geo data for this tweet" +#~ msgstr "Données de géolocalisation pour ce tweet" + +#~ msgid "You have been blocked from viewing this content" +#~ msgstr "Vous avez été bloqué de voir ce contenu" + +#~ msgid "" +#~ "You have been blocked from viewing " +#~ "someone's content. In order to avoid " +#~ "conflicts with the full session, TWBlue" +#~ " will remove the affected timeline." +#~ msgstr "" +#~ "Vous avez été bloqué de voir le" +#~ " contenu de quelqu'un. Afin d'éviter " +#~ "les conflits avec la session complète," +#~ " TWBlue supprime la chronologie affecté." + +#~ msgid "" +#~ "TWBlue cannot load this timeline because" +#~ " the user has been suspended from " +#~ "Twitter." +#~ msgstr "" +#~ "TWBlue ne peut pas charger cette " +#~ "chronologie car l'utilisateur a été " +#~ "suspendu de Twitter." + +#~ msgid "Do you really want to delete this filter?" +#~ msgstr "Voulez-vous vraiment supprimer ce filtre ?" + +#~ msgid "This filter already exists. Please use a different title" +#~ msgstr "Ce filtre existe déjà. Veuillez utiliser un titre différent" + +#~ msgid "&Show direct message" +#~ msgstr "&Afficher le message" + +#~ msgid "&Show event" +#~ msgstr "&Afficher l'évènement" + +#~ msgid "Direct &message" +#~ msgstr "&Message" + +#~ msgid "&Show user" +#~ msgstr "&Afficher l'utilisateur" + +#~ msgid "Search topic" +#~ msgstr "Recherche tendance" + +#~ msgid "&Tweet about this trend" +#~ msgstr "&Tweet sur cette tendance" + +#~ msgid "&Show item" +#~ msgstr "&Afficher l'élément" + +#~ msgid "Update &profile" +#~ msgstr "&Actualiser le profil" + +#~ msgid "Event" +#~ msgstr "Évènement" + +#~ msgid "Remove event" +#~ msgstr "Supprimer l'évènement" + +#~ msgid "Trending topic" +#~ msgstr "Tendance" + +#~ msgid "Tweet about this trend" +#~ msgstr "Tweet sur cette tendance" + +#~ msgid "" +#~ "Scan account and add friends and " +#~ "followers to the user autocompletion " +#~ "database" +#~ msgstr "" +#~ "Scanner le compte et ajouter les " +#~ "abonnés et abonnements dans la base " +#~ "de données d'autocomplétion des utilisateurs." + +#~ msgid "" +#~ "Inverted buffers: The newest tweets will" +#~ " be shown at the beginning while " +#~ "the oldest at the end" +#~ msgstr "" +#~ "Tampons inversés: les tweets plus " +#~ "récents seront affichées au début et " +#~ "les plus ancien à la fin" + +#~ msgid "Retweet mode" +#~ msgstr "Mode retweet" + +#~ msgid "" +#~ "Load cache for tweets in memory " +#~ "(much faster in big datasets but " +#~ "requires more RAM)" +#~ msgstr "" +#~ "Charger le cache des tweets en " +#~ "mémoire (plus rapide pour les gros " +#~ "ensembles de données mais nécessite plus" +#~ " de RAM)" + +#~ msgid "Ignored clients" +#~ msgstr "Clients ignorés" + +#~ msgid "Remove client" +#~ msgstr "Supprimer le client" + +#~ msgid "Indicate audio tweets with sound" +#~ msgstr "Indiquer les tweets audio par un son" + +#~ msgid "Indicate geotweets with sound" +#~ msgstr "Indiquer les Tweets géolocalisés par un son" + +#~ msgid "Indicate tweets containing images with sound" +#~ msgstr "Indiquer les tweets contenant des images par un son" + +#~ msgid "API Key for SndUp" +#~ msgstr "Clé API pour SndUp" + +#~ msgid "Create a filter for this buffer" +#~ msgstr "Créer un filtre pour ce tampon" + +#~ msgid "Filter title" +#~ msgstr "Titre du filtre" + +#~ msgid "Filter by word" +#~ msgstr "Filtrer par mot" + +#~ msgid "Ignore tweets wich contain the following word" +#~ msgstr "Ignorer les tweets contenant le mot suivant" + +#~ msgid "Ignore tweets without the following word" +#~ msgstr "Ignorer les tweets ne contenant pas le mot suivant" + +#~ msgid "word" +#~ msgstr "Mot" + +#~ msgid "Allow retweets" +#~ msgstr "Permettre les retweets" + +#~ msgid "Allow quoted tweets" +#~ msgstr "Permettre les tweets cités" + +#~ msgid "Allow replies" +#~ msgstr "Permettre les réponses" + +#~ msgid "Use this term as a regular expression" +#~ msgstr "Utiliser ce terme comme une expression régulière" + +#~ msgid "Filter by language" +#~ msgstr "Filtrer par langue" + +#~ msgid "Load tweets in the following languages" +#~ msgstr "Charger tweets dans les suivantes langues" + +#~ msgid "Ignore tweets in the following languages" +#~ msgstr "Ignorer tweets dans les suivantes langues" + +#~ msgid "Don't filter by language" +#~ msgstr "Ne pas filtrer par langue" + +#~ msgid "Supported languages" +#~ msgstr "Langues supportées" + +#~ msgid "Add selected language to filter" +#~ msgstr "Ajouter la langue sélectionnée au filtre" + +#~ msgid "Selected languages" +#~ msgstr "Langue sélectionnée" + +#~ msgid "You must define a name for the filter before creating it." +#~ msgstr "Vous devez définir un nom pour le filtre avant de le créer." + +#~ msgid "Missing filter name" +#~ msgstr "Nom de filtre manquant" + +#~ msgid "Manage filters" +#~ msgstr "Gérer les filtres" + +#~ msgid "Filters" +#~ msgstr "Filtres" + +#~ msgid "Filter" +#~ msgstr "Filtre" + +#~ msgid "Lists manager" +#~ msgstr "Gestionnaire de listes" + +#~ msgid "List" +#~ msgstr "Liste" + +#~ msgid "Owner" +#~ msgstr "Propriétaire" + +#~ msgid "Members" +#~ msgstr "Membres" + +#~ msgid "mode" +#~ msgstr "mode" + +#~ msgid "Create a new list" +#~ msgstr "Créer une nouvelle liste" + +#~ msgid "Open in buffer" +#~ msgstr "Ouvrir dans un tampon" + +#~ msgid "Viewing lists for %s" +#~ msgstr "Affichage des listes pour %s" + +#~ msgid "Subscribe" +#~ msgstr "S'abonner" + +#~ msgid "Unsubscribe" +#~ msgstr "Se désabonner" + +#~ msgid "Name (20 characters maximun)" +#~ msgstr "Nom (maximum 20 caractères)" + +#~ msgid "Mode" +#~ msgstr "Mode" + +#~ msgid "Private" +#~ msgstr "Privé" + +#~ msgid "Editing the list %s" +#~ msgstr "Modification de la liste %s" + +#~ msgid "Select a list to add the user" +#~ msgstr "Sélectionnez une liste pour ajouter l'utilisateur" + +#~ msgid "Add" +#~ msgstr "Ajouter" + +#~ msgid "Select a list to remove the user" +#~ msgstr "Sélectionnez une liste pour supprimer l'utilisateur" + +#~ msgid "Do you really want to delete this list?" +#~ msgstr "Voulez-vous vraiment supprimer cette liste ?" + +#~ msgid "Search on Twitter" +#~ msgstr "Rechercher sur Twitter" + +#~ msgid "Tweets" +#~ msgstr "Tweets" + +#~ msgid "&Language for results: " +#~ msgstr "&Langue pour les résultats: " + +#~ msgid "any" +#~ msgstr "n'importe quel" + +#~ msgid "Results &type: " +#~ msgstr "&Type de résultats: " + +#~ msgid "Mixed" +#~ msgstr "Mixte" + +#~ msgid "Recent" +#~ msgstr "Récents" + +#~ msgid "Popular" +#~ msgstr "Populaire" + +#~ msgid "Details" +#~ msgstr "Détails" + +#~ msgid "&Go to URL" +#~ msgstr "&Aller à l'URL" + +#~ msgid "View trending topics" +#~ msgstr "Afficher les tendances" + +#~ msgid "Trending topics by" +#~ msgstr "Tendances par" + +#~ msgid "Country" +#~ msgstr "Pays" + +#~ msgid "City" +#~ msgstr "Ville" + +#~ msgid "&Location" +#~ msgstr "&Localisation" + +#~ msgid "Update your profile" +#~ msgstr "Actualiser votre profil" + +#~ msgid "&Name (50 characters maximum)" +#~ msgstr "&Nom (50 caractères maximum)" + +#~ msgid "&Website" +#~ msgstr "Site &Web" + +#~ msgid "&Bio (160 characters maximum)" +#~ msgstr "&Biographie (maximum 160 caractères)" + +#~ msgid "Upload a &picture" +#~ msgstr "Charger une &photo" + +#~ msgid "Upload a picture" +#~ msgstr "Charger une photo" + +#~ msgid "Discard image" +#~ msgstr "Ignorer la photo" + +#~ msgid "&Report as spam" +#~ msgstr "&Signaler comme spam" + +#~ msgid "&Ignore tweets from this client" +#~ msgstr "&Ignorer les tweets de ce client" + +#~ msgid "&Tweets" +#~ msgstr "&Tweets" + +#~ msgid "&Likes" +#~ msgstr "&Favoris" + +#~ msgid "F&riends" +#~ msgstr "A&bonnements" + +# | msgid "Delete attachment" +#~ msgid "Delete attachment" +#~ msgstr "Supprimer la pièce jointe" + +#~ msgid "Added Tweets" +#~ msgstr "Tweets ajoutés" + +#~ msgid "Delete tweet" +#~ msgstr "Supprimer le tweet" + +#~ msgid "A&dd..." +#~ msgstr "&Ajouter" + +#~ msgid "Add t&weet" +#~ msgstr "A&jouter un tweet" + +#~ msgid "&Attach audio..." +#~ msgstr "&Joindre un audio..." + +#~ msgid "Sen&d" +#~ msgstr "Envoye&r" + +#~ msgid "Video files (*.mp4)|*.mp4" +#~ msgstr "Fichiers vidéo (*.mp4)|*.mp4" + +#~ msgid "" +#~ "It is not possible to add more " +#~ "attachments. Please make sure your tweet" +#~ " complies with Twitter'S attachment rules." +#~ " You can add only one video or" +#~ " GIF in every tweet, and a " +#~ "maximum of 4 photos." +#~ msgstr "" +#~ "Il est impossible de joindre plus " +#~ "de contenu. Assurez-vous que votre " +#~ "tweet respecte les règles d'attachement " +#~ "de Twitter. Vous pouvez seulement " +#~ "inclure une vidéo ou un GIF par" +#~ " tweet, et 4 photos au maximum." + +#~ msgid "&Mention to all" +#~ msgstr "&Répondre à tous" + +#~ msgid "&Recipient" +#~ msgstr "&Destinataire" + +#~ msgid "Tweet - %i characters " +#~ msgstr "Tweet - %i caractères " + +#~ msgid "Retweets: " +#~ msgstr "Retweets: " + +#~ msgid "Likes: " +#~ msgstr "Favoris: " + +#~ msgid "View" +#~ msgstr "Voir" + +#~ msgid "Item" +#~ msgstr "Élément" + +#~ msgid "&Expand URL" +#~ msgstr "&Étendre l'URL" + +#~ msgid "Participation time (in days)" +#~ msgstr "Temps de participation (en jours)" + +#~ msgid "{username} has mentionned you: {status}" +#~ msgstr "{username} vous a mensionné : {status}" + +#~ msgid "has mentionned you: {status}" +#~ msgstr "vous a mensionné : {status}" + +#~ msgid "&Open in Twitter" +#~ msgstr "Ou&vrir dans Twitter" + +#~ msgid "&Show tweet" +#~ msgstr "A&fficher tweet" + +#~ msgid "Translated" +#~ msgstr "Traduit" + +#~ msgid "Afrikaans" +#~ msgstr "Africain" + +#~ msgid "Albanian" +#~ msgstr "Albanais" + +#~ msgid "Amharic" +#~ msgstr "Amharique" + +#~ msgid "Arabic" +#~ msgstr "Arabe" + +#~ msgid "Armenian" +#~ msgstr "Arménien" + +#~ msgid "Azerbaijani" +#~ msgstr "Azerbaïdjanais" + +#~ msgid "Basque" +#~ msgstr "Basque" + +#~ msgid "Belarusian" +#~ msgstr "Biélorusse" + +#~ msgid "Bengali" +#~ msgstr "Bengali" + +#~ msgid "Bihari" +#~ msgstr "Bihari" + +#~ msgid "Bulgarian" +#~ msgstr "Bulgare" + +#~ msgid "Burmese" +#~ msgstr "Birman" + +#~ msgid "Catalan" +#~ msgstr "Catalan" + +#~ msgid "Cherokee" +#~ msgstr "Cherokee" + +#~ msgid "Chinese" +#~ msgstr "Chinois" + +#~ msgid "Chinese_simplified" +#~ msgstr "Chinois simplifié" + +#~ msgid "Chinese_traditional" +#~ msgstr "Chinois traditionnel" + +#~ msgid "Croatian" +#~ msgstr "Croate" + +#~ msgid "Czech" +#~ msgstr "Tchèque" + +#~ msgid "Dhivehi" +#~ msgstr "Dhivehi" + +#~ msgid "Esperanto" +#~ msgstr "Esperanto" + +#~ msgid "Estonian" +#~ msgstr "Estonien" + +#~ msgid "Filipino" +#~ msgstr "Filipino" + +#~ msgid "Galician" +#~ msgstr "Galicien" + +#~ msgid "Georgian" +#~ msgstr "Géorgien" + +#~ msgid "Greek" +#~ msgstr "Grec" + +#~ msgid "Guarani" +#~ msgstr "Guarani" + +#~ msgid "Gujarati" +#~ msgstr "Gujarâtî" + +#~ msgid "Hebrew" +#~ msgstr "Hébreu" + +#~ msgid "Hindi" +#~ msgstr "Hindi" + +#~ msgid "Icelandic" +#~ msgstr "Islandais" + +#~ msgid "Indonesian" +#~ msgstr "Indonésien" + +#~ msgid "Inuktitut" +#~ msgstr "Inuktitut" + +#~ msgid "Irish" +#~ msgstr "Irlandais" + +#~ msgid "Kannada" +#~ msgstr "Canara" + +#~ msgid "Kazakh" +#~ msgstr "Kazakh" + +#~ msgid "Khmer" +#~ msgstr "Cambodgien" + +#~ msgid "Kurdish" +#~ msgstr "Kurde" + +#~ msgid "Kyrgyz" +#~ msgstr "Kirghiz" + +#~ msgid "Laothian" +#~ msgstr "Laotien" + +#~ msgid "Latvian" +#~ msgstr "Letton" + +#~ msgid "Lithuanian" +#~ msgstr "Lituanien" + +#~ msgid "Macedonian" +#~ msgstr "Macédonien" + +#~ msgid "Malay" +#~ msgstr "Malaisien" + +#~ msgid "Malayalam" +#~ msgstr "Malayalam" + +#~ msgid "Maltese" +#~ msgstr "Maltais" + +#~ msgid "Marathi" +#~ msgstr "Marathi" + +#~ msgid "Mongolian" +#~ msgstr "Mongol" + +#~ msgid "Nepali" +#~ msgstr "Népali" + +#~ msgid "Norwegian" +#~ msgstr "Norvégien" + +#~ msgid "Oriya" +#~ msgstr "Oriya" + +#~ msgid "Pashto" +#~ msgstr "Pashto" + +#~ msgid "Persian" +#~ msgstr "Perse" + +#~ msgid "Punjabi" +#~ msgstr "Punjabi" + +#~ msgid "Romanian" +#~ msgstr "Roumain" + +#~ msgid "Sanskrit" +#~ msgstr "Sanscrit" + +#~ msgid "Serbian" +#~ msgstr "Serbe" + +#~ msgid "Sindhi" +#~ msgstr "Sindhi" + +#~ msgid "Sinhalese" +#~ msgstr "Cinghalais" + +#~ msgid "Slovak" +#~ msgstr "Slovaque" + +#~ msgid "Slovenian" +#~ msgstr "Slovène" + +#~ msgid "Swahili" +#~ msgstr "Swahili" + +#~ msgid "Swedish" +#~ msgstr "Suédois" + +#~ msgid "Tajik" +#~ msgstr "Tadjik" + +#~ msgid "Tamil" +#~ msgstr "Tamil" + +#~ msgid "Tagalog" +#~ msgstr "Tagalog" + +#~ msgid "Telugu" +#~ msgstr "Telugu" + +#~ msgid "Thai" +#~ msgstr "Thaï" + +#~ msgid "Tibetan" +#~ msgstr "Tibétain" + +#~ msgid "Ukrainian" +#~ msgstr "Ukrainien" + +#~ msgid "Urdu" +#~ msgstr "Urdu" + +#~ msgid "Uzbek" +#~ msgstr "Ouzbek" + +#~ msgid "Uighur" +#~ msgstr "Uighur" + +#~ msgid "Vietnamese" +#~ msgstr "Vietnamien" + +#~ msgid "Welsh" +#~ msgstr "Gallois" + +#~ msgid "Yiddish" +#~ msgstr "Yiddish" + +#~ msgid "" +#~ "TWBlue has detected that you're running" +#~ " windows 10 and has changed the " +#~ "default keymap to the Windows 10 " +#~ "keymap. It means that some keyboard " +#~ "shorcuts could be different. Please " +#~ "check the keystroke editor by pressing" +#~ " Alt+Win+K to see all available " +#~ "keystrokes for this keymap." +#~ msgstr "" +#~ "TWBlue a détecté que vous exécutez " +#~ "windows 10 et a changé la " +#~ "configuration clavier par défaut à la" +#~ " configuration clavier Windows 10. Cela " +#~ "signifie que certains raccourcis clavier " +#~ "peuvent être différents. S'il vous plaît" +#~ " vérifier le Modificateur de raccourci " +#~ "en appuyant sur Alt+Win+K pour voir " +#~ "tous les raccourcis disponibles pour " +#~ "cette configuration clavier." + +#~ msgid "Favorites: " +#~ msgstr "Favoris : " + +#~ msgid "Date: " +#~ msgstr "Date: " + +#~ msgid "Community for {}" +#~ msgstr "Communauté pour {}" + +#~ msgid "Run {0} at Windows startup" +#~ msgstr "Démarrer {0} en même temps que Windows" + +#~ msgid "Use Codeofdusk's longtweet handlers (may decrease client performance)" +#~ msgstr "" +#~ "Lecture complète de tweets longs (peut" +#~ " diminuer les performances du client)" + +#~ msgid "Remember state for mention all and long tweet" +#~ msgstr "Se souvenir de l'état pour \"Répondre à tous\" et \"Tweet long\"" + diff --git a/srcantiguo/locales/gl/LC_MESSAGES/twblue.mo b/srcantiguo/locales/gl/LC_MESSAGES/twblue.mo new file mode 100644 index 00000000..4e8e6ebc Binary files /dev/null and b/srcantiguo/locales/gl/LC_MESSAGES/twblue.mo differ diff --git a/srcantiguo/locales/gl/LC_MESSAGES/twblue.po b/srcantiguo/locales/gl/LC_MESSAGES/twblue.po new file mode 100644 index 00000000..396e4d50 --- /dev/null +++ b/srcantiguo/locales/gl/LC_MESSAGES/twblue.po @@ -0,0 +1,4939 @@ + +msgid "" +msgstr "" +"Project-Id-Version: TW Blue 0.80\n" +"Report-Msgid-Bugs-To: manuel@manuelcortez.net\n" +"POT-Creation-Date: 2025-04-13 01:18+0000\n" +"PO-Revision-Date: 2022-12-20 22:43+0000\n" +"Last-Translator: Anonymous \n" +"Language: gl\n" +"Language-Team: Galician " +"\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.17.0\n" + +#: languageHandler.py:61 +#, fuzzy +msgctxt "languageName" +msgid "Amharic" +msgstr "amárico" + +#: languageHandler.py:62 +#, fuzzy +msgctxt "languageName" +msgid "Aragonese" +msgstr "xaponés" + +#: languageHandler.py:63 +#, fuzzy +msgctxt "languageName" +msgid "Spanish" +msgstr "castelán" + +#: languageHandler.py:64 +#, fuzzy +msgctxt "languageName" +msgid "Portuguese" +msgstr "portugués" + +#: languageHandler.py:65 +#, fuzzy +msgctxt "languageName" +msgid "Russian" +msgstr "ruso" + +#: languageHandler.py:66 +#, fuzzy +msgctxt "languageName" +msgid "italian" +msgstr "italiano" + +#: languageHandler.py:67 +#, fuzzy +msgctxt "languageName" +msgid "Turkey" +msgstr "Característica" + +#: languageHandler.py:68 +#, fuzzy +msgctxt "languageName" +msgid "Galician" +msgstr "galego" + +#: languageHandler.py:69 +#, fuzzy +msgctxt "languageName" +msgid "Catala" +msgstr "catalán" + +#: languageHandler.py:70 +#, fuzzy +msgctxt "languageName" +msgid "Vasque" +msgstr "eusquera" + +#: languageHandler.py:71 +#, fuzzy +msgctxt "languageName" +msgid "polish" +msgstr "polaco" + +#: languageHandler.py:72 +#, fuzzy +msgctxt "languageName" +msgid "Arabic" +msgstr "árabe" + +#: languageHandler.py:73 +#, fuzzy +msgctxt "languageName" +msgid "Nepali" +msgstr "nepalí" + +#: languageHandler.py:74 +msgctxt "languageName" +msgid "Serbian (Latin)" +msgstr "" + +#: languageHandler.py:75 +#, fuzzy +msgctxt "languageName" +msgid "Japanese" +msgstr "xaponés" + +#: languageHandler.py:99 +msgid "User default" +msgstr "usuario por defecto" + +#: main.py:105 +#, fuzzy +msgid "https://twblue.mcvsoftware.com/donate" +msgstr "https://twblue.es/donate" + +#: main.py:118 +#, python-brace-format +msgid "" +"{0} is already running. Close the other instance before starting this " +"one. If you're sure that {0} isn't running, try deleting the file at {1}." +" If you're unsure of how to do this, contact the {0} developers." +msgstr "" +"{0} está xa a se executar. Pecha a outra instancia antes de comezar esta." +" Se estás seguro de que {0} non está en execución, tenta borrar o arquivo" +" en {1}. Se non estás seguro de como facer esto, contacta cos " +"desenvolvedores de {0}." + +#: sound.py:148 +msgid "Playing..." +msgstr "Reproducindo..." + +#: sound.py:161 +msgid "Stopped." +msgstr "Detido." + +#: controller/mainController.py:261 +msgid "Ready" +msgstr "Listo" + +#: controller/mainController.py:369 controller/mainController.py:654 +#: controller/mainController.py:673 controller/mainController.py:692 +#: controller/mainController.py:711 +msgid "" +"No session is currently in focus. Focus a session with the next or " +"previous session shortcut." +msgstr "" +"Non hai unha sesión actualmente no foco. Enfoca unha sesión co atallo de " +"teclado para sesión seguinte ou anterior." + +#: controller/mainController.py:373 +msgid "Empty buffer." +msgstr "Valdeirar búffer." + +#: controller/mainController.py:380 +#, python-brace-format +msgid "{0} not found." +msgstr "{0} non atopado." + +#: controller/mainController.py:702 controller/mainController.py:721 +#, python-format +msgid "%s, %s of %s" +msgstr "%s, %s de %s" + +#: controller/mainController.py:704 controller/mainController.py:723 +#: controller/mainController.py:751 controller/mainController.py:779 +#, python-format +msgid "%s. Empty" +msgstr "%s. Valeiro" + +#: controller/mainController.py:739 controller/mainController.py:743 +#: controller/mainController.py:767 +#, python-brace-format +msgid "{0}: This account is not logged into Twitter." +msgstr "{0}: Esta conta non está autentificada en Twitter." + +#: controller/mainController.py:749 controller/mainController.py:777 +#, python-format +msgid "%s. %s, %s of %s" +msgstr "%s. %s, %s de %s" + +#: controller/mainController.py:771 +#, python-brace-format +msgid "{0}: This account is not logged into twitter." +msgstr "{0}: Esta conta non está autentificada en twitter." + +#: controller/mainController.py:910 controller/mainController.py:926 +msgid "An error happened while trying to connect to the server. Please try later." +msgstr "" +"Ocorreu un erro mentres se trataba de conectar ao servidor. Por favor " +"téntao máis tarde." + +#: controller/mainController.py:957 +msgid "The auto-reading of new tweets is enabled for this buffer" +msgstr "a autolectura de novos chíos está activada neste bufer" + +#: controller/mainController.py:960 +msgid "The auto-reading of new tweets is disabled for this buffer" +msgstr "a autolectura de novos chíos está desactivada neste buffer" + +#: controller/mainController.py:967 +msgid "Session mute on" +msgstr "Sesión silenciada" + +#: controller/mainController.py:970 +msgid "Session mute off" +msgstr "Silenciar Sesión desactivado" + +#: controller/mainController.py:979 +msgid "Buffer mute on" +msgstr "silencio de buffer activo" + +#: controller/mainController.py:982 +msgid "Buffer mute off" +msgstr "silencio de buffer inactivo" + +#: controller/mainController.py:999 +msgid "Copied" +msgstr "Copiado" + +#: controller/mainController.py:1019 +msgid "Unable to update this buffer." +msgstr "Imposible actualizar este búfer." + +#: controller/mainController.py:1021 +msgid "Updating buffer..." +msgstr "Actualizando búfer..." + +#: controller/mainController.py:1024 +#, python-brace-format +msgid "{0} items retrieved" +msgstr "{0} elementos recuperados" + +#: controller/buffers/mastodon/base.py:137 controller/mainController.py:1028 +#: controller/mastodon/handler.py:98 controller/mastodon/handler.py:241 +#, python-brace-format +msgid "Timeline for {}" +msgstr "Liña temporal para {0}" + +#: controller/buffers/mastodon/users.py:93 controller/mainController.py:1030 +#: controller/mastodon/handler.py:100 controller/mastodon/handler.py:255 +#, python-brace-format +msgid "Followers for {}" +msgstr "Seguidores para {}" + +#: controller/mainController.py:1032 +#, python-brace-format +msgid "Friends for {}" +msgstr "Amigos para {}" + +# | msgid "Followers for {}" +#: controller/buffers/mastodon/users.py:95 controller/mainController.py:1034 +#: controller/mastodon/handler.py:102 controller/mastodon/handler.py:269 +#, fuzzy, python-brace-format +msgid "Following for {}" +msgstr "Seguidores para {}" + +#: controller/messages.py:18 +#, fuzzy +msgid "Translated" +msgstr "Traducido" + +#: controller/settings.py:60 +#, fuzzy +msgid "System default" +msgstr "usuario por defecto" + +#: controller/settings.py:60 +msgid "HTTP" +msgstr "" + +#: controller/settings.py:60 +msgid "SOCKS v4" +msgstr "" + +#: controller/settings.py:60 +msgid "SOCKS v4 with DNS support" +msgstr "" + +#: controller/settings.py:60 +msgid "SOCKS v5" +msgstr "" + +#: controller/settings.py:60 +msgid "SOCKS v5 with DNS support" +msgstr "" + +#: controller/userAlias.py:31 +#, fuzzy, python-brace-format +msgid "Edit alias for {}" +msgstr "Lista para {}" + +#: controller/buffers/base/base.py:91 +#: controller/buffers/mastodon/conversations.py:237 +#: controller/buffers/mastodon/search.py:80 +msgid "This action is not supported for this buffer" +msgstr "Esta acción non se atopa soportada para este buffer" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:70 +#: controller/mastodon/settings.py:194 +msgid "Home" +msgstr "Principal" + +#: controller/buffers/mastodon/base.py:52 +#: controller/buffers/mastodon/community.py:22 +#: controller/mastodon/handler.py:72 controller/mastodon/handler.py:114 +#: controller/mastodon/settings.py:195 +msgid "Local" +msgstr "" + +#: controller/buffers/mastodon/base.py:52 +#: controller/buffers/mastodon/community.py:22 +#: controller/mastodon/handler.py:74 controller/mastodon/settings.py:196 +msgid "Federated" +msgstr "" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:76 +#: controller/mastodon/settings.py:197 +msgid "Mentions" +msgstr "Mencións" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:84 +#: controller/mastodon/settings.py:201 +msgid "Bookmarks" +msgstr "" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:78 +msgid "Direct messages" +msgstr "Mensaxes directas" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:80 +#: controller/mastodon/settings.py:199 +msgid "Sent" +msgstr "" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:82 +#: controller/mastodon/settings.py:200 wxUI/dialogs/mastodon/postDialogs.py:229 +msgid "Favorites" +msgstr "" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:86 +#: controller/mastodon/settings.py:202 +msgid "Followers" +msgstr "Seguidores" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:88 +#: controller/mastodon/settings.py:203 +#, fuzzy +msgid "Following" +msgstr "Dei&xar de seguir" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:92 +#: controller/mastodon/settings.py:204 +msgid "Blocked users" +msgstr "Usuarios bloqueados" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:90 +#: controller/mastodon/settings.py:205 +msgid "Muted users" +msgstr "Usuarios silenciados" + +# | msgid "&Location" +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:94 +#: controller/mastodon/settings.py:206 +#: wxUI/dialogs/mastodon/filters/create_filter.py:80 +#, fuzzy +msgid "Notifications" +msgstr "&Ubicación" + +#: controller/buffers/mastodon/base.py:58 +#, python-brace-format +msgid "{username}'s timeline" +msgstr "Liña temporal de {username}" + +#: controller/buffers/mastodon/base.py:60 +#, python-brace-format +msgid "{username}'s followers" +msgstr "Seguedores do {username}" + +# | msgid "{username}'s followers" +#: controller/buffers/mastodon/base.py:62 +#, fuzzy, python-brace-format +msgid "{username}'s following" +msgstr "Seguedores do {username}" + +#: controller/buffers/mastodon/base.py:64 +msgid "Unknown buffer" +msgstr "Búfer descoñecido" + +#: controller/buffers/mastodon/base.py:67 +#: controller/buffers/mastodon/base.py:645 wxUI/buffers/mastodon/base.py:24 +#: wxUI/buffers/mastodon/conversationList.py:24 +#: wxUI/buffers/mastodon/notifications.py:22 wxUI/buffers/mastodon/user.py:18 +#: wxUI/dialogs/mastodon/postDialogs.py:5 +#: wxUI/dialogs/mastodon/postDialogs.py:194 wxUI/sysTrayIcon.py:35 +msgid "Post" +msgstr "" + +# | msgid "Write the tweet here" +#: controller/buffers/mastodon/base.py:68 +#: controller/buffers/mastodon/base.py:646 +#, fuzzy +msgid "Write your post here" +msgstr "Escribe o chío aquí" + +# | msgid "New tweet in {0}" +#: controller/buffers/mastodon/base.py:153 +#, fuzzy, python-brace-format +msgid "New post in {0}" +msgstr "Novo chío en {0}" + +# | msgid "{0} new tweets in {1}." +#: controller/buffers/mastodon/base.py:159 +#, fuzzy, python-brace-format +msgid "{0} new posts in {1}." +msgstr "{0} novos chíos en {1}." + +#: controller/buffers/mastodon/base.py:198 +#: controller/buffers/mastodon/community.py:90 +#: controller/buffers/mastodon/conversations.py:100 +#: controller/buffers/mastodon/mentions.py:82 +#: controller/buffers/mastodon/users.py:139 +#, python-format +msgid "%s items retrieved" +msgstr "%s elementos recuperados" + +#: controller/buffers/mastodon/base.py:216 +#: controller/buffers/mastodon/users.py:206 +msgid "This buffer is not a timeline; it can't be deleted." +msgstr "Este buffer non é unha liña temporal. Non pode ser eliminado." + +# | msgid "Conversation with {0}" +#: controller/buffers/mastodon/base.py:346 +#: controller/buffers/mastodon/base.py:384 +#, fuzzy, python-brace-format +msgid "Conversation with {}" +msgstr "Conversa con {0}" + +# | msgid "Write the tweet here" +#: controller/buffers/mastodon/base.py:347 +#: controller/buffers/mastodon/base.py:385 +#: controller/buffers/mastodon/conversations.py:181 +#: controller/buffers/mastodon/notifications.py:122 +#: controller/buffers/mastodon/users.py:52 +#, fuzzy +msgid "Write your message here" +msgstr "Escribe o chío aquí" + +# | msgid "Reply to {arg0}" +#: controller/buffers/mastodon/base.py:349 +#, fuzzy, python-brace-format +msgid "Reply to {}" +msgstr "Respostar a {arg0}" + +# | msgid "Write the tweet here" +#: controller/buffers/mastodon/base.py:350 +#, fuzzy +msgid "Write your reply here" +msgstr "Escribe o chío aquí" + +#: controller/buffers/mastodon/base.py:412 +#, fuzzy +msgid "This action is not supported on conversations." +msgstr "Esta acción non se soporta aínda para o búffer." + +#: controller/buffers/mastodon/base.py:477 +msgid "Opening URL..." +msgstr "Abrindo URL..." + +#: controller/buffers/mastodon/base.py:490 +msgid "You can delete only your own posts." +msgstr "" + +#: controller/buffers/mastodon/base.py:519 +msgid "Opening item in web browser..." +msgstr "Abrir elemento no navegador web..." + +#: controller/buffers/mastodon/base.py:527 +#: controller/buffers/mastodon/base.py:547 +msgid "Adding to favorites..." +msgstr "" + +# | msgid "Remove from list" +#: controller/buffers/mastodon/base.py:534 +#: controller/buffers/mastodon/base.py:549 +#, fuzzy +msgid "Removing from favorites..." +msgstr "Quitar de listaxe" + +#: controller/buffers/mastodon/base.py:544 +#: controller/buffers/mastodon/base.py:559 +#: controller/buffers/mastodon/base.py:573 +#: controller/buffers/mastodon/conversations.py:213 +msgid "No status found with that ID" +msgstr "Non se atopou o estado con ese ID" + +#: controller/buffers/mastodon/base.py:562 +msgid "Adding to bookmarks..." +msgstr "" + +#: controller/buffers/mastodon/base.py:564 +msgid "Removing from bookmarks..." +msgstr "" + +#: controller/buffers/mastodon/base.py:586 +#, python-brace-format +msgid "Picture {0}" +msgstr "Foto {0}" + +#: controller/buffers/mastodon/base.py:587 +msgid "Select the picture" +msgstr "Seleciona a foto" + +#: controller/buffers/mastodon/base.py:610 +msgid "Unable to extract text" +msgstr "Imposible extraer texto" + +#: controller/buffers/mastodon/base.py:612 +msgid "OCR Result" +msgstr "" + +#: controller/buffers/mastodon/base.py:627 +msgid "this poll no longer exists." +msgstr "" + +#: controller/buffers/mastodon/base.py:630 +msgid "This poll has already expired." +msgstr "" + +#: controller/buffers/mastodon/base.py:633 +msgid "You have already voted on this poll." +msgstr "" + +#: controller/buffers/mastodon/base.py:642 +#, fuzzy +msgid "Sending vote..." +msgstr "Recodificando audio..." + +# | msgid "Conversation with {0}" +#: controller/buffers/mastodon/conversations.py:180 +#, fuzzy, python-brace-format +msgid "Reply to conversation with {}" +msgstr "Conversa con {0}" + +# | msgid "Conversation with {0}" +#: controller/buffers/mastodon/notifications.py:121 +#: controller/buffers/mastodon/users.py:51 +#, fuzzy, python-brace-format +msgid "New conversation with {}" +msgstr "Conversa con {0}" + +#: controller/buffers/mastodon/notifications.py:151 +msgid "Notification dismissed." +msgstr "" + +# | msgid "There are no coordinates in this tweet" +#: controller/buffers/mastodon/users.py:110 +#, fuzzy +msgid "There are no more items in this buffer." +msgstr "Non hai coordinadas neste chío" + +#: controller/mastodon/handler.py:30 wxUI/dialogs/mastodon/updateProfile.py:35 +#, fuzzy +msgid "Update Profile" +msgstr "A&ctualizar perfil" + +#: controller/mastodon/handler.py:31 wxUI/dialogs/mastodon/search.py:10 +#: wxUI/view.py:19 +msgid "&Search" +msgstr "&Procurar" + +#: controller/mastodon/handler.py:33 wxUI/view.py:22 +msgid "Manage user aliases" +msgstr "" + +#: controller/mastodon/handler.py:35 controller/mastodon/handler.py:59 +#: wxUI/view.py:30 +msgid "&Post" +msgstr "" + +#: controller/mastodon/handler.py:36 wxUI/dialogs/mastodon/menus.py:9 +#: wxUI/dialogs/mastodon/menus.py:37 wxUI/view.py:31 +msgid "Re&ply" +msgstr "&Responder" + +#: controller/mastodon/handler.py:37 wxUI/dialogs/mastodon/menus.py:7 +#: wxUI/dialogs/mastodon/menus.py:35 wxUI/view.py:32 +msgid "&Boost" +msgstr "" + +# | msgid "&Add to list" +#: controller/mastodon/handler.py:38 wxUI/dialogs/mastodon/menus.py:11 +#: wxUI/dialogs/mastodon/menus.py:39 wxUI/view.py:33 +#, fuzzy +msgid "&Add to favorites" +msgstr "&Engadir á listaxe" + +# | msgid "Remove from list" +#: controller/mastodon/handler.py:39 +#, fuzzy +msgid "Remove from favorites" +msgstr "Quitar de listaxe" + +# | msgid "&Show user" +#: controller/mastodon/handler.py:40 wxUI/dialogs/mastodon/menus.py:21 +#: wxUI/dialogs/mastodon/menus.py:49 wxUI/view.py:35 +#, fuzzy +msgid "&Show post" +msgstr "&ver usuarios silenciados" + +#: controller/mastodon/handler.py:41 wxUI/view.py:36 +msgid "View conversa&tion" +msgstr "Ver conversa&ción" + +#: controller/mastodon/handler.py:42 wxUI/view.py:37 +msgid "Read text in picture" +msgstr "Ler texto en foto" + +#: controller/mastodon/handler.py:43 wxUI/dialogs/mastodon/menus.py:25 +#: wxUI/view.py:39 +msgid "&Delete" +msgstr "&Eliminar" + +#: controller/mastodon/handler.py:45 wxUI/view.py:43 +msgid "&Actions..." +msgstr "&Accións..." + +#: controller/mastodon/handler.py:46 wxUI/view.py:44 +msgid "&View timeline..." +msgstr "&Ver principal..." + +#: controller/mastodon/handler.py:47 wxUI/view.py:45 +msgid "Direct me&ssage" +msgstr "&Mensaxe directa" + +#: controller/mastodon/handler.py:48 wxUI/view.py:46 +msgid "Add a&lias" +msgstr "" + +#: controller/mastodon/handler.py:51 +#, fuzzy +msgid "Show user profile" +msgstr "Ver &perfil do usuario" + +#: controller/mastodon/handler.py:54 +msgid "Create c&ommunity timeline" +msgstr "" + +#: controller/mastodon/handler.py:55 wxUI/view.py:57 +msgid "Create a &filter" +msgstr "Crear un &filtro" + +#: controller/mastodon/handler.py:56 wxUI/view.py:58 +msgid "&Manage filters" +msgstr "&Xestionar filtros" + +#: controller/mastodon/handler.py:95 +msgid "Timelines" +msgstr "Liñas temporais" + +#: controller/mastodon/handler.py:107 +msgid "Searches" +msgstr "Procuras" + +#: controller/mastodon/handler.py:110 controller/mastodon/handler.py:191 +#: controller/mastodon/handler.py:196 +#, python-brace-format +msgid "Search for {}" +msgstr "Procurar {0}" + +#: controller/mastodon/handler.py:111 +msgid "Communities" +msgstr "" + +#: controller/mastodon/handler.py:114 +#, fuzzy +msgid "federated" +msgstr "Liña temporal de {username}" + +#: controller/mastodon/handler.py:143 +#, python-brace-format +msgid "Conversation with {0}" +msgstr "Conversa con {0}" + +#: controller/mastodon/handler.py:299 +msgid "Add an user alias" +msgstr "" + +#: controller/mastodon/handler.py:311 +#, python-brace-format +msgid "Alias has been set correctly for {}." +msgstr "" + +#: controller/mastodon/handler.py:342 +#, fuzzy +msgid "Update profile" +msgstr "A&ctualizar perfil" + +#: controller/mastodon/messages.py:115 +#, python-format +msgid "%s - %s of %d characters" +msgstr "%s - %s de %d caracteres" + +#: controller/mastodon/messages.py:239 +#, python-brace-format +msgid "Poll with {} options" +msgstr "" + +# | msgid "List for {}" +#: controller/mastodon/messages.py:272 +#, fuzzy, python-brace-format +msgid "Post from {}" +msgstr "Lista para {}" + +#: controller/mastodon/messages.py:276 sessions/mastodon/templates.py:82 +#: wxUI/dialogs/mastodon/postDialogs.py:49 +msgid "Public" +msgstr "Público" + +# | msgid "Accounts list" +#: controller/mastodon/messages.py:276 sessions/mastodon/templates.py:82 +#: wxUI/dialogs/mastodon/postDialogs.py:49 +#, fuzzy +msgid "Not listed" +msgstr "Lista de contas" + +# | msgid "Followers" +#: controller/mastodon/messages.py:276 +#, fuzzy +msgid "followers only" +msgstr "Seguidores" + +# | msgid "Direct message" +#: controller/mastodon/messages.py:276 sessions/mastodon/templates.py:82 +#: wxUI/dialogs/mastodon/postDialogs.py:49 +#, fuzzy +msgid "Direct" +msgstr "Mensaxe directa" + +# | msgid "Remove client" +#: controller/mastodon/messages.py:283 +#, fuzzy +msgid "Remote instance" +msgstr "Quitar cliente" + +#: controller/mastodon/messages.py:291 controller/mastodon/messages.py:319 +#, fuzzy +msgid "Unmute conversation" +msgstr "Ver conversación" + +#: controller/mastodon/messages.py:315 wxUI/dialogs/mastodon/postDialogs.py:237 +#, fuzzy +msgid "Mute conversation" +msgstr "Ver conversación" + +# | msgid "Conversation with {0}" +#: controller/mastodon/messages.py:316 +#, fuzzy +msgid "Conversation unmuted." +msgstr "Conversa con {0}" + +# | msgid "Conversation with {0}" +#: controller/mastodon/messages.py:320 +#, fuzzy +msgid "Conversation muted." +msgstr "Conversa con {0}" + +#: controller/mastodon/messages.py:331 +msgid "people who boosted this post" +msgstr "" + +#: controller/mastodon/messages.py:336 +msgid "people who favorited this post" +msgstr "" + +#: controller/mastodon/messages.py:342 +#, fuzzy +msgid "Link copied to clipboard." +msgstr "Copiar ao portapapeis" + +#: controller/mastodon/settings.py:82 +#, python-format +msgid "Account settings for %s" +msgstr "Opcions da conta para %s" + +#: controller/mastodon/settings.py:92 +#, python-brace-format +msgid "Edit template for posts. Current template: {}" +msgstr "" + +#: controller/mastodon/settings.py:101 +#, python-brace-format +msgid "Edit template for conversations. Current template: {}" +msgstr "" + +#: controller/mastodon/settings.py:110 +#, python-brace-format +msgid "Edit template for persons. Current template: {}" +msgstr "" + +#: controller/mastodon/settings.py:198 +msgid "Direct Messages" +msgstr "Mensaxes directas" + +#: controller/mastodon/filters/create_filter.py:75 +#, fuzzy, python-brace-format +msgid "Update Filter: {}" +msgstr "A&ctualizar perfil" + +#: controller/mastodon/filters/manage_filters.py:57 +#: wxUI/dialogs/mastodon/filters/create_filter.py:90 +msgid "Never" +msgstr "" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:4 +msgid "Audio tweet." +msgstr "Chío de Audio." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:5 +msgid "User timeline buffer created." +msgstr "Búfer de Liña temporal de usuario creado." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:6 +msgid "Buffer destroied." +msgstr "Búfer destruido." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:7 +msgid "Direct message received." +msgstr "Mensaxe directa recibida" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:8 +msgid "Direct message sent." +msgstr "Mensaxe directa enviada" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:9 +msgid "Error." +msgstr "Erro" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:10 +msgid "Tweet liked." +msgstr "Chío marcado como gústame." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:11 +msgid "Likes buffer updated." +msgstr "Búfer de marcados como gústame actualizado." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:12 +msgid "Geotweet." +msgstr "chío xeolocalizable" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:13 +msgid "Tweet contains one or more images" +msgstr "O chío contén una ou máis imaxes" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:14 +msgid "Boundary reached." +msgstr "Límite alcanzado" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:15 +msgid "List updated." +msgstr "Lista actualizada." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:16 +msgid "Too many characters." +msgstr "Demasiados carácteres." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:17 +msgid "Mention received." +msgstr "Mención recibida." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:18 +msgid "New event." +msgstr "Novo evento" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:19 +#, python-brace-format +msgid "{0} is ready." +msgstr "{0} está listo" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:20 +msgid "Mention sent." +msgstr "Mención enviada." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:21 +msgid "Tweet retweeted." +msgstr "Chío rechiado" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:22 +msgid "Search buffer updated." +msgstr "Búfer Procuras actualizado." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:23 +msgid "Tweet received." +msgstr "Chío recibido." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:24 +msgid "Tweet sent." +msgstr "Chío enviado" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:25 +msgid "Trending topics buffer updated." +msgstr "Búfer Tendencias actualizado." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:26 +msgid "New tweet in user timeline buffer." +msgstr "Novo chío no búfer liñas temporais de usuario." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:27 +msgid "New follower." +msgstr "Novo seguidor." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:28 +msgid "Volume changed." +msgstr "Volume cambiado." + +#: extra/SoundsTutorial/wx_ui.py:8 +msgid "Sounds tutorial" +msgstr "tutorial de sons" + +#: extra/SoundsTutorial/wx_ui.py:11 +msgid "Press enter to listen to the sound for the selected event" +msgstr "preme enter para escoitar o sonido correspondente ao evento selecionado" + +#: extra/SpellChecker/spellchecker.py:56 +#, python-format +msgid "Misspelled word: %s" +msgstr "Falta de ortografía: %s" + +#: extra/SpellChecker/wx_ui.py:27 +msgid "Misspelled word" +msgstr "Falta de ortografía" + +#: extra/SpellChecker/wx_ui.py:32 +msgid "Context" +msgstr "contexto" + +#: extra/SpellChecker/wx_ui.py:37 +msgid "Suggestions" +msgstr "suxerencias" + +#: extra/SpellChecker/wx_ui.py:42 +msgid "&Ignore" +msgstr "&Ignorar" + +#: extra/SpellChecker/wx_ui.py:43 +msgid "I&gnore all" +msgstr "I&gnorar todo" + +#: extra/SpellChecker/wx_ui.py:44 +msgid "&Replace" +msgstr "&Reemplazar" + +#: extra/SpellChecker/wx_ui.py:45 +msgid "R&eplace all" +msgstr "R&eemplazar todo" + +#: extra/SpellChecker/wx_ui.py:46 +msgid "&Add to personal dictionary" +msgstr "&Engadir ao dicionario persoal" + +#: extra/SpellChecker/wx_ui.py:79 +#, python-brace-format +msgid "" +"An error has occurred. There are no dictionaries available for the " +"selected language in {0}" +msgstr "" +"ocorreu un erro. Non hai diccionarios dispoñibles para a lingua " +"selecionada no {0}" + +#: extra/SpellChecker/wx_ui.py:79 +#: extra/autocompletionUsers/mastodon/wx_scan.py:44 +#: wxUI/commonMessageDialogs.py:23 wxUI/commonMessageDialogs.py:36 +#: wxUI/commonMessageDialogs.py:45 wxUI/commonMessageDialogs.py:52 +#: wxUI/commonMessageDialogs.py:55 wxUI/commonMessageDialogs.py:61 +#: wxUI/dialogs/mastodon/dialogs.py:38 wxUI/dialogs/mastodon/dialogs.py:43 +#: wxUI/dialogs/mastodon/dialogs.py:48 wxUI/dialogs/mastodon/dialogs.py:53 +#: wxUI/dialogs/mastodon/dialogs.py:60 +msgid "Error" +msgstr "Erro" + +#: extra/SpellChecker/wx_ui.py:82 +msgid "Spell check complete." +msgstr "Corrección ortográfica completada." + +#: extra/autocompletionUsers/completion.py:39 +#: extra/autocompletionUsers/completion.py:57 +msgid "You have to start writing" +msgstr "" + +# | msgid "There are no coordinates in this tweet" +#: extra/autocompletionUsers/completion.py:49 +#: extra/autocompletionUsers/completion.py:66 +#, fuzzy +msgid "There are no results in your users database" +msgstr "Non hai coordinadas neste chío" + +#: extra/autocompletionUsers/completion.py:51 +#, fuzzy +msgid "Autocompletion only works for users." +msgstr "Auto&completar usuarios" + +#: extra/autocompletionUsers/wx_manage.py:9 +#, fuzzy +msgid "Manage Autocompletion database" +msgstr "Xestionar a base de datos do autocompletado de usuarios" + +#: extra/autocompletionUsers/wx_manage.py:12 +#, fuzzy, python-brace-format +msgid "Editing {0} users database" +msgstr "Editando a base de dados de usuarios do {0} " + +#: extra/autocompletionUsers/wx_manage.py:13 +#, fuzzy +msgid "Username" +msgstr "Usuario" + +#: extra/autocompletionUsers/wx_manage.py:13 wxUI/dialogs/configuration.py:108 +msgid "Name" +msgstr "Nome" + +#: extra/autocompletionUsers/wx_manage.py:16 +#, fuzzy +msgid "Add user" +msgstr "Usuario" + +#: extra/autocompletionUsers/wx_manage.py:17 +#, fuzzy +msgid "Remove user" +msgstr "Quitar usuario" + +#: extra/autocompletionUsers/wx_manage.py:38 +msgid "Twitter username" +msgstr "" + +#: extra/autocompletionUsers/wx_manage.py:38 +msgid "Add user to database" +msgstr "" + +#: extra/autocompletionUsers/wx_manage.py:44 +#, fuzzy +msgid "The user does not exist" +msgstr "Ese usuario non existe" + +#: extra/autocompletionUsers/wx_manage.py:44 +#, fuzzy +msgid "Error!" +msgstr "Erro" + +#: extra/autocompletionUsers/mastodon/scan.py:49 +msgid "" +"Updating database... You can close this window now. A message will tell " +"you when the process finishes." +msgstr "" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:8 +#, fuzzy +msgid "Autocomplete users' settings" +msgstr "Auto&completar usuarios" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:11 +msgid "Add &followers to database" +msgstr "" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:12 +msgid "Add f&ollowing to database" +msgstr "" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:26 +#, fuzzy +msgid "Updating autocompletion database" +msgstr "Xestionar a base de datos do autocompletado de usuarios" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:34 +msgid "" +"This process will retrieve the users you selected from your Mastodon " +"account, and add them to the user autocomplete database. Please note that" +" if there are many users or you have tried to perform this action less " +"than 15 minutes ago, TWBlue may reach a limit in API calls when trying to" +" load the users into the database. If this happens, we will show you an " +"error, in which case you will have to try this process again in a few " +"minutes. If this process ends with no error, you will be redirected back " +"to the account settings dialog. Do you want to continue?" +msgstr "" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:34 +#: wxUI/commonMessageDialogs.py:20 +msgid "Attention" +msgstr "Atención" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:40 +#, python-brace-format +msgid "TWBlue has imported {} users successfully." +msgstr "" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:40 +#, fuzzy +msgid "Done" +msgstr "¡Feito!" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:44 +msgid "Error adding users from Mastodon. Please try again in about 15 minutes." +msgstr "" + +#: extra/ocr/OCRSpace.py:7 +msgid "Detect automatically" +msgstr "Detectar automáticamente" + +#: extra/ocr/OCRSpace.py:7 +msgid "Danish" +msgstr "dinamarqués" + +#: extra/ocr/OCRSpace.py:7 +msgid "Dutch" +msgstr "holandés" + +#: extra/ocr/OCRSpace.py:7 +msgid "English" +msgstr "inglés" + +#: extra/ocr/OCRSpace.py:7 +msgid "Finnish" +msgstr "finés" + +#: extra/ocr/OCRSpace.py:7 +msgid "French" +msgstr "francés" + +#: extra/ocr/OCRSpace.py:7 +msgid "German" +msgstr "alemán" + +#: extra/ocr/OCRSpace.py:7 +msgid "Hungarian" +msgstr "húngaro" + +#: extra/ocr/OCRSpace.py:7 +msgid "Korean" +msgstr "coreano" + +#: extra/ocr/OCRSpace.py:7 +msgid "Italian" +msgstr "italiano" + +#: extra/ocr/OCRSpace.py:7 +msgid "Japanese" +msgstr "xaponés" + +#: extra/ocr/OCRSpace.py:7 +msgid "Polish" +msgstr "polaco" + +#: extra/ocr/OCRSpace.py:7 +msgid "Portuguese" +msgstr "portugués" + +#: extra/ocr/OCRSpace.py:7 +msgid "Russian" +msgstr "ruso" + +#: extra/ocr/OCRSpace.py:7 +msgid "Spanish" +msgstr "castelán" + +#: extra/ocr/OCRSpace.py:7 +msgid "Turkish" +msgstr "Turco" + +#: extra/translator/wx_ui.py:25 +msgid "Translate message" +msgstr "Traducir mensaxe" + +#: extra/translator/wx_ui.py:29 +#, fuzzy +msgid "Translation engine" +msgstr "Traducido" + +#: extra/translator/wx_ui.py:32 +msgid "Target language" +msgstr "Idioma de destino" + +#: keystrokeEditor/wx_ui.py:8 +msgid "Keystroke editor" +msgstr "Editor de combinacións de teclado" + +#: keystrokeEditor/wx_ui.py:11 +msgid "Select a keystroke to edit" +msgstr "Seleciona unha combinación de teclado para editala" + +#: keystrokeEditor/wx_ui.py:12 +#: wxUI/dialogs/mastodon/filters/manage_filters.py:18 +#: wxUI/dialogs/mastodon/userActions.py:9 +#: wxUI/dialogs/mastodon/userActions.py:18 +#: wxUI/dialogs/mastodon/userActions.py:19 +msgid "Action" +msgstr "Acción" + +#: keystrokeEditor/wx_ui.py:12 +msgid "Keystroke" +msgstr "Combinacións de teclado" + +#: keystrokeEditor/wx_ui.py:17 +#: wxUI/dialogs/mastodon/filters/manage_filters.py:23 +#: wxUI/dialogs/userAliasDialogs.py:53 +msgid "Edit" +msgstr "Editar" + +#: keystrokeEditor/wx_ui.py:19 keystrokeEditor/wx_ui.py:49 +#, fuzzy +msgid "Undefine keystroke" +msgstr "Editando combinación de teclas" + +#: keystrokeEditor/wx_ui.py:20 +msgid "Execute action" +msgstr "Executar acción" + +#: keystrokeEditor/wx_ui.py:21 wxUI/dialogs/userAliasDialogs.py:25 +msgid "Close" +msgstr "Pechar" + +#: keystrokeEditor/wx_ui.py:41 +msgid "Undefined" +msgstr "" + +#: keystrokeEditor/wx_ui.py:49 +#, fuzzy +msgid "Are you sure you want to undefine this keystroke?" +msgstr "¿Realmente desexas eliminar esta listaxe?" + +#: keystrokeEditor/wx_ui.py:53 +msgid "Editing keystroke" +msgstr "Editando combinación de teclas" + +#: keystrokeEditor/wx_ui.py:56 +msgid "Control" +msgstr "Control" + +#: keystrokeEditor/wx_ui.py:57 +msgid "Alt" +msgstr "Alt" + +#: keystrokeEditor/wx_ui.py:58 +msgid "Shift" +msgstr "Shift" + +#: keystrokeEditor/wx_ui.py:59 +msgid "Windows" +msgstr "Windows" + +#: keystrokeEditor/wx_ui.py:65 +msgid "Key" +msgstr "Tecla" + +#: keystrokeEditor/wx_ui.py:70 wxUI/dialogs/find.py:21 +#: wxUI/dialogs/mastodon/showUserProfile.py:31 +#: wxUI/dialogs/userAliasDialogs.py:23 +msgid "OK" +msgstr "Aceptar" + +#: keystrokeEditor/wx_ui.py:83 +msgid "You need to use the Windows key" +msgstr "Precisas empregar a tecla de Windows" + +#: keystrokeEditor/wx_ui.py:83 keystrokeEditor/wx_ui.py:86 +msgid "Invalid keystroke" +msgstr "Combinación de teclado inválida" + +#: keystrokeEditor/wx_ui.py:86 +msgid "You must provide a character for the keystroke" +msgstr "Debes proporcionar unha tecla para o atallo do teclado" + +#: keystrokeEditor/actions/mastodon.py:3 +msgid "Go up in the current buffer" +msgstr "Vai arriba no búfer actual" + +#: keystrokeEditor/actions/mastodon.py:4 +msgid "Go down in the current buffer" +msgstr "vai abaixo no búfer actual" + +#: keystrokeEditor/actions/mastodon.py:5 +msgid "Go to the previous buffer" +msgstr "Vai ó anterior búfer" + +#: keystrokeEditor/actions/mastodon.py:6 +msgid "Go to the next buffer" +msgstr "Vai ó seguinte búfer" + +#: keystrokeEditor/actions/mastodon.py:7 +msgid "Focus the next session" +msgstr "Enfocar a seguinte sesión" + +#: keystrokeEditor/actions/mastodon.py:8 +msgid "Focus the previous session" +msgstr "Enfocar a anterior sesión" + +#: keystrokeEditor/actions/mastodon.py:9 +msgid "Show or hide the GUI" +msgstr "Amosar ou agochar a Interface gráfica" + +# | msgid "Create a new list" +#: keystrokeEditor/actions/mastodon.py:10 +#, fuzzy +msgid "Make a new post" +msgstr "Crear nova listaxe" + +#: keystrokeEditor/actions/mastodon.py:11 wxUI/buffers/mastodon/base.py:26 +#: wxUI/buffers/mastodon/conversationList.py:25 +msgid "Reply" +msgstr "Respostar" + +#: keystrokeEditor/actions/mastodon.py:12 wxUI/buffers/mastodon/base.py:25 +#: wxUI/dialogs/mastodon/dialogs.py:7 +msgid "Boost" +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:13 +msgid "Send direct message" +msgstr "Enviar mensaxe directa" + +#: keystrokeEditor/actions/mastodon.py:14 +msgid "Add post to favorites" +msgstr "" + +# | msgid "Remove from list" +#: keystrokeEditor/actions/mastodon.py:15 +#, fuzzy +msgid "Remove post from favorites" +msgstr "Quitar de listaxe" + +#: keystrokeEditor/actions/mastodon.py:16 +msgid "Add/remove post from favorites" +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:17 +msgid "Open the user actions dialogue" +msgstr "Abrir o diálogo de accións do Usuario" + +#: keystrokeEditor/actions/mastodon.py:18 +#, fuzzy +msgid "See user details" +msgstr "Quitar usuario" + +# | msgid "Show tweet" +#: keystrokeEditor/actions/mastodon.py:19 +#, fuzzy +msgid "Show post" +msgstr "Ver chío" + +#: keystrokeEditor/actions/mastodon.py:20 +msgid "Quit" +msgstr "saír" + +#: keystrokeEditor/actions/mastodon.py:21 +msgid "Open user timeline" +msgstr "Abrir líña temporal" + +#: keystrokeEditor/actions/mastodon.py:22 +msgid "Destroy buffer" +msgstr "Destruir o búfer" + +# | msgid "Interact with the currently focused tweet." +#: keystrokeEditor/actions/mastodon.py:23 +#, fuzzy +msgid "Interact with the currently focused post." +msgstr "Interactuar co chío enfocado actualmente." + +#: keystrokeEditor/actions/mastodon.py:24 +msgid "Open URL" +msgstr "Abrir URL" + +# | msgid "View in Twitter" +#: keystrokeEditor/actions/mastodon.py:25 +#, fuzzy +msgid "View in browser" +msgstr "Ver en Twitter" + +#: keystrokeEditor/actions/mastodon.py:26 +msgid "Increase volume by 5%" +msgstr "Subir o volumen nun 5%" + +#: keystrokeEditor/actions/mastodon.py:27 +msgid "Decrease volume by 5%" +msgstr "Baixar o volume nun 5%" + +#: keystrokeEditor/actions/mastodon.py:28 +msgid "Jump to the first element of a buffer" +msgstr "Saltar ó primeiro elemento do búfer actual" + +#: keystrokeEditor/actions/mastodon.py:29 +msgid "Jump to the last element of the current buffer" +msgstr "Saltar ó derradeiro elemento do búfer actual" + +#: keystrokeEditor/actions/mastodon.py:30 +msgid "Jump 20 elements up in the current buffer" +msgstr "Saltar 20 elementos cara arriba no búfer actual" + +#: keystrokeEditor/actions/mastodon.py:31 +msgid "Jump 20 elements down in the current buffer" +msgstr "Saltar 20 elementos cara abaixo no búfer actual" + +# | msgid "Delete" +#: keystrokeEditor/actions/mastodon.py:33 +#, fuzzy +msgid "Delete post" +msgstr "Eliminar" + +#: keystrokeEditor/actions/mastodon.py:34 +msgid "Empty the current buffer" +msgstr "Vaciar buffer actual" + +#: keystrokeEditor/actions/mastodon.py:35 +msgid "Repeat last item" +msgstr "Repetir último elemento" + +#: keystrokeEditor/actions/mastodon.py:36 +msgid "Copy to clipboard" +msgstr "Copiar ao portapapeis" + +#: keystrokeEditor/actions/mastodon.py:39 +msgid "Mute/unmute the active buffer" +msgstr "Silenciar ou desilenciar o buffer activo" + +#: keystrokeEditor/actions/mastodon.py:40 +msgid "Mute/unmute the current session" +msgstr "Silenciar/activbar o son na sesión actual" + +#: keystrokeEditor/actions/mastodon.py:41 +msgid "toggle the automatic reading of incoming tweets in the active buffer" +msgstr "Conmutar entre a lectura automática de novos chíos para o buffer actual" + +# | msgid "Search on twitter" +#: keystrokeEditor/actions/mastodon.py:42 +#, fuzzy +msgid "Search on instance" +msgstr "procurar en twitter" + +#: keystrokeEditor/actions/mastodon.py:43 +msgid "Find a string in the currently focused buffer" +msgstr "Atopar unha cadea no búfer enfocado actualmente" + +#: keystrokeEditor/actions/mastodon.py:44 +msgid "Show the keystroke editor" +msgstr "Mostrar o editor de combinacións de teclado" + +#: keystrokeEditor/actions/mastodon.py:46 +msgid "load previous items" +msgstr "cargar elementos anteriores" + +#: keystrokeEditor/actions/mastodon.py:48 +msgid "View conversation" +msgstr "Ver conversación" + +#: keystrokeEditor/actions/mastodon.py:49 +msgid "Check and download updates" +msgstr "Comprobar e descargar actualizacións" + +#: keystrokeEditor/actions/mastodon.py:50 +msgid "Opens the global settings dialogue" +msgstr "Abre o diálogo de opcións blobais" + +#: keystrokeEditor/actions/mastodon.py:52 +msgid "Opens the account settings dialogue" +msgstr "Abre o diálogo de opcións da conta" + +# | msgid "Try to play an audio file" +#: keystrokeEditor/actions/mastodon.py:53 +#, fuzzy +msgid "Try to play a media file" +msgstr "Tentar reproducir un ficheiro de audio" + +#: keystrokeEditor/actions/mastodon.py:54 +msgid "Updates the buffer and retrieves possible lost items there." +msgstr "Actualiza o búfer e recupera posibles elementos perdidos ahí." + +#: keystrokeEditor/actions/mastodon.py:55 +msgid "Extracts the text from a picture and displays the result in a dialog." +msgstr "Extrae o texto dende una foto e amosa o resultado nun diálogo." + +#: keystrokeEditor/actions/mastodon.py:56 +#, fuzzy +msgid "Adds an alias to an user" +msgstr "Seleciona unha listaxe para engadir o usuario" + +#: sessionmanager/sessionManager.py:69 +#, python-brace-format +msgid "{account_name}@{instance} (Mastodon)" +msgstr "" + +#: sessionmanager/wxUI.py:11 +msgid "Session manager" +msgstr "Xestor de sesión" + +#: sessionmanager/wxUI.py:14 +msgid "Accounts list" +msgstr "Lista de contas" + +#: sessionmanager/wxUI.py:16 +msgid "Account" +msgstr "Conta" + +#: sessionmanager/wxUI.py:20 +msgid "New account" +msgstr "Nova conta" + +#: sessionmanager/wxUI.py:22 sessionmanager/wxUI.py:79 +msgid "Remove account" +msgstr "Quitar conta" + +#: sessionmanager/wxUI.py:24 +msgid "Global Settings" +msgstr "Opcións Globais" + +#: sessionmanager/wxUI.py:48 +msgid "You need to configure an account." +msgstr "Precisas configurar unha conta" + +#: sessionmanager/wxUI.py:48 +msgid "Account Error" +msgstr "Erro na conta" + +#: sessionmanager/wxUI.py:54 +msgid "Mastodon" +msgstr "" + +#: sessionmanager/wxUI.py:59 +msgid "" +"You will be prompted for your Mastodon data (instance URL, email address " +"and password) so we can authorise TWBlue in your instance. Would you like" +" to authorise your account now?" +msgstr "" + +#: sessionmanager/wxUI.py:59 +msgid "Authorization" +msgstr "Autorización" + +#: sessionmanager/wxUI.py:67 +#, python-format +msgid "Authorized account %d" +msgstr "Conta autorizada %d" + +#: sessionmanager/wxUI.py:73 +msgid "" +"Your access token is invalid or the authorization has failed. Please try " +"again." +msgstr "" +"O teu token de aceso é inválido ou fallou a autorización. Por favor " +"téntao de novo." + +#: sessionmanager/wxUI.py:73 +msgid "Invalid user token" +msgstr "Código de acceso inválido" + +#: sessionmanager/wxUI.py:79 +msgid "Do you really want to delete this account?" +msgstr "Estás seguro de que desexas eliminar esta conta?" + +#: sessions/base.py:125 +#, python-brace-format +msgid "" +"An exception occurred while saving the {app} database. It will be deleted" +" and rebuilt automatically. If this error persists, send the error log to" +" the {app} developers." +msgstr "" + +#: sessions/base.py:165 +#, python-brace-format +msgid "" +"An exception occurred while loading the {app} database. It will be " +"deleted and rebuilt automatically. If this error persists, send the error" +" log to the {app} developers." +msgstr "" + +# | msgid "dddd, MMMM D, YYYY H:m:s" +#: sessions/mastodon/compose.py:15 sessions/mastodon/compose.py:61 +#, fuzzy +msgid "dddd, MMMM D, YYYY H:m" +msgstr "dddd, MMMM D, YYYY H:m:s" + +# | msgid "{0}. Quoted tweet from @{1}: {2}" +#: sessions/mastodon/compose.py:17 sessions/mastodon/templates.py:74 +#: sessions/mastodon/templates.py:75 +#, fuzzy, python-brace-format +msgid "Boosted from @{}: {}" +msgstr "{0}. chío citado dende @{1}: {2}" + +#: sessions/mastodon/compose.py:22 sessions/mastodon/compose.py:81 +#: sessions/mastodon/templates.py:81 sessions/mastodon/templates.py:176 +#, python-brace-format +msgid "hidden by filter {}" +msgstr "" + +#: sessions/mastodon/compose.py:36 sessions/mastodon/templates.py:28 +msgid "dddd, MMMM D, YYYY H:m:s" +msgstr "dddd, MMMM D, YYYY H:m:s" + +# | msgid "" +# | "%s (@%s). %s followers, %s friends, %s tweets. Last tweeted %s. Joined " +# | "Twitter %s" +#: sessions/mastodon/compose.py:38 +#, fuzzy, python-format +msgid "%s (@%s). %s followers, %s following, %s posts. Joined %s" +msgstr "" +"%s (@%s). %s seguidores, %s amigos, %s chíos. último chío %s. Unido a " +"Twitter %s" + +#: sessions/mastodon/compose.py:49 +#, python-brace-format +msgid "Last message from {}: {}" +msgstr "" + +# | msgid "{username}'s followers" +#: sessions/mastodon/compose.py:64 +#, fuzzy, python-brace-format +msgid "{username} has posted: {status}" +msgstr "Seguedores do {username}" + +# | msgid "{username}'s followers" +#: sessions/mastodon/compose.py:66 +#, fuzzy, python-brace-format +msgid "{username} has mentioned you: {status}" +msgstr "Seguedores do {username}" + +#: sessions/mastodon/compose.py:68 +#, python-brace-format +msgid "{username} has boosted: {status}" +msgstr "" + +#: sessions/mastodon/compose.py:70 +#, python-brace-format +msgid "{username} has added to favorites: {status}" +msgstr "" + +# | msgid "{username}'s followers" +#: sessions/mastodon/compose.py:72 +#, fuzzy, python-brace-format +msgid "{username} has followed you." +msgstr "Seguedores do {username}" + +# | msgid "{username}'s followers" +#: sessions/mastodon/compose.py:74 +#, fuzzy, python-brace-format +msgid "{username} has joined the instance." +msgstr "Seguedores do {username}" + +#: sessions/mastodon/compose.py:76 sessions/mastodon/templates.py:171 +#, python-brace-format +msgid "A poll in which you have voted has expired: {status}" +msgstr "" + +# | msgid "{username}'s followers" +#: sessions/mastodon/compose.py:78 +#, fuzzy, python-brace-format +msgid "{username} wants to follow you." +msgstr "Seguedores do {username}" + +#: sessions/mastodon/session.py:69 +msgid "Please enter your instance URL." +msgstr "" + +#: sessions/mastodon/session.py:69 +msgid "Mastodon instance" +msgstr "" + +#: sessions/mastodon/session.py:80 +msgid "" +"We could not connect to your mastodon instance. Please verify that the " +"domain exists and the instance is accessible via a web browser." +msgstr "" + +# | msgid "&Report an error" +#: sessions/mastodon/session.py:80 +#, fuzzy +msgid "Instance error" +msgstr "Reportar un &erro" + +#: sessions/mastodon/session.py:85 +msgid "Enter the verification code" +msgstr "" + +# | msgid "Authorization" +#: sessions/mastodon/session.py:85 +#, fuzzy +msgid "PIN code authorization" +msgstr "Autorización" + +#: sessions/mastodon/session.py:94 +msgid "" +"We could not authorice your mastodon account to be used in TWBlue. This " +"might be caused due to an incorrect verification code. Please try to add " +"the session again." +msgstr "" + +# | msgid "Authorization" +#: sessions/mastodon/session.py:94 +#, fuzzy +msgid "Authorization error" +msgstr "Autorización" + +#: sessions/mastodon/session.py:215 +#, python-format +msgid "%s succeeded." +msgstr "%s con éxito" + +#: sessions/mastodon/templates.py:18 +msgid "$display_name, $text $image_descriptions $date. $source" +msgstr "" + +#: sessions/mastodon/templates.py:19 +msgid "Dm to $recipient_display_name, $text $date" +msgstr "" + +#: sessions/mastodon/templates.py:20 +msgid "" +"$display_name (@$screen_name). $followers followers, $following " +"following, $posts posts. Joined $created_at." +msgstr "" + +#: sessions/mastodon/templates.py:21 +msgid "$display_name $text, $date" +msgstr "" + +#: sessions/mastodon/templates.py:34 +#, python-brace-format +msgid "Content warning: {}" +msgstr "" + +#: sessions/mastodon/templates.py:45 +#, fuzzy, python-brace-format +msgid "Media description: {}" +msgstr "Descrición de imaxe" + +# | msgid "Followers" +#: sessions/mastodon/templates.py:82 wxUI/dialogs/mastodon/postDialogs.py:49 +#, fuzzy +msgid "Followers only" +msgstr "Seguidores" + +#: sessions/mastodon/templates.py:94 +#, fuzzy +msgid "Pinned." +msgstr "Copiado" + +#: sessions/mastodon/templates.py:157 +#, python-brace-format +msgid "has posted: {status}" +msgstr "" + +#: sessions/mastodon/templates.py:159 +#, python-brace-format +msgid "has mentioned you: {status}" +msgstr "" + +#: sessions/mastodon/templates.py:161 +#, python-brace-format +msgid "has boosted: {status}" +msgstr "" + +#: sessions/mastodon/templates.py:163 +#, python-brace-format +msgid "has added to favorites: {status}" +msgstr "" + +#: sessions/mastodon/templates.py:165 +#, python-brace-format +msgid "has updated a status: {status}" +msgstr "" + +# | msgid "{0} is following you." +#: sessions/mastodon/templates.py:167 +#, fuzzy +msgid "has followed you." +msgstr "{0} estache a seguir." + +# | msgid "Remove client" +#: sessions/mastodon/templates.py:169 +#, fuzzy +msgid "has joined the instance." +msgstr "Quitar cliente" + +# | msgid "{0} is following you." +#: sessions/mastodon/templates.py:173 +#, fuzzy +msgid "wants to follow you." +msgstr "{0} estache a seguir." + +#: update/utils.py:29 +#, python-format +msgid "%d day, " +msgstr "%d día, " + +#: update/utils.py:31 +#, python-format +msgid "%d days, " +msgstr "%d días, " + +#: update/utils.py:33 +#, python-format +msgid "%d hour, " +msgstr "%d hora, " + +#: update/utils.py:35 +#, python-format +msgid "%d hours, " +msgstr "%d horas, " + +#: update/utils.py:37 +#, python-format +msgid "%d minute, " +msgstr "%d minuto, " + +#: update/utils.py:39 +#, python-format +msgid "%d minutes, " +msgstr "%d minutos, " + +#: update/utils.py:41 +#, python-format +msgid "%s second" +msgstr "%s segundo" + +#: update/utils.py:43 +#, python-format +msgid "%s seconds" +msgstr "%s segundos" + +#: update/wxUpdater.py:11 +#, python-format +msgid "" +"There's a new %s version available, released on %s. Would you like to " +"download it now?\n" +"\n" +" %s version: %s\n" +"\n" +"Changes:\n" +"%s" +msgstr "" +"Hai unha versión %s nova dispoñible, publicada en %s. ¿Gostaríache " +"descargala agora?\n" +"\n" +" %s versión: %s\n" +"\n" +"Cambios:\n" +"%s" + +# | msgid "" +# | "There's a new %s version available, released on %s. Would you like to " +# | "download it now?\n" +# | "\n" +# | " %s version: %s\n" +# | "Changes:\n" +# | "%s" +#: update/wxUpdater.py:14 +#, fuzzy, python-format +msgid "" +"There's a new %s version available, released on %s. Updates are not " +"automatic in Windows 7, so you would need to visit TWBlue's download " +"website to get the latest version.\n" +"\n" +" %s version: %s\n" +"\n" +"Changes:\n" +"%s" +msgstr "" +"Hai unha versión %s nova dispoñible, publicada en %s. ¿Gostaríache " +"descargala agora?\n" +"\n" +" %s versión: %s\n" +"\n" +"Cambios:\n" +"%s" + +#: update/wxUpdater.py:16 +#, python-format +msgid "New version for %s" +msgstr "Nova versión de %s" + +#: update/wxUpdater.py:23 +msgid "Download in Progress" +msgstr "Descarga en progreso" + +#: update/wxUpdater.py:23 +msgid "Downloading the new version..." +msgstr "Descargando a nova versión..." + +#: update/wxUpdater.py:33 +#, python-format +msgid "Updating... %s of %s" +msgstr "Actualizando... %s de %s" + +#: update/wxUpdater.py:36 +msgid "" +"The update has been downloaded and installed successfully. Press OK to " +"continue." +msgstr "" +"A nova versión de TW blue foi descargada e instalada con éxito. Preme " +"aceptar para iniciar a aplicación" + +#: update/wxUpdater.py:36 +msgid "Done!" +msgstr "¡Feito!" + +#: wxUI/commonMessageDialogs.py:6 +#, python-brace-format +msgid "Do you really want to close {0}?" +msgstr "Queres pechar de certo {0}?" + +#: wxUI/commonMessageDialogs.py:6 +msgid "Exit" +msgstr "Saír" + +#: wxUI/commonMessageDialogs.py:10 +#, python-brace-format +msgid " {0} must be restarted for these changes to take effect." +msgstr " débese reiniciar {0} para que estos cambios teñan lugar." + +#: wxUI/commonMessageDialogs.py:10 +#, python-brace-format +msgid "Restart {0} " +msgstr "Reiniciar {0} " + +#: wxUI/commonMessageDialogs.py:13 +msgid "" +"Are you sure you want to delete this user from the database? This user " +"will not appear in autocomplete results anymore." +msgstr "" +"Estás seguro de querer eliminar este usuario da base de datos? Este xa " +"non aparecerá nos resultados do autocompletado." + +#: wxUI/commonMessageDialogs.py:13 +msgid "Confirm" +msgstr "Confirmar" + +#: wxUI/commonMessageDialogs.py:16 +msgid "" +"Do you really want to empty this buffer? It's items will be removed from" +" the list but not from Twitter" +msgstr "" +"¿realmente queres borrar o contido deste buffer? Estes chíos borraranse " +"da listaxe, mais non de twitter" + +#: wxUI/commonMessageDialogs.py:16 wxUI/dialogs/mastodon/dialogs.py:31 +msgid "Empty buffer" +msgstr "Vaciar buffer" + +#: wxUI/commonMessageDialogs.py:20 +msgid "Do you really want to destroy this buffer?" +msgstr "Realmente queres eliminar este buffer?" + +#: wxUI/commonMessageDialogs.py:23 +msgid "That user does not exist" +msgstr "Ese usuario non existe" + +#: wxUI/commonMessageDialogs.py:26 +msgid "A timeline for this user already exists. You can't open another" +msgstr "Xa hai unha liña temporal para este usuario. Non podes abrir outra" + +#: wxUI/commonMessageDialogs.py:26 +msgid "Existing timeline" +msgstr "Liña temporal existente" + +#: wxUI/commonMessageDialogs.py:29 +#, python-brace-format +msgid "" +"If you like {0} we need your help to keep it going. Help us by donating " +"to the project. This will help us pay for the server, the domain and some" +" other things to ensure that {0} will be actively maintained. Your " +"donation will give us the means to continue the development of {0}, and " +"to keep {0} free. Would you like to donate now?" +msgstr "" +"Se che gosta {0} necesitamos da túa axuda para mantelo en camiño. " +"Axúdanos donando ó proxecto. Esto axudaranos a pagar o servidor, o " +"dominio e algunhas outras cousas para asegurarmos de que {0} se manterá " +"activo. A túa donación daranos unha razón para continuar o " +"desenvolvemento do {0}, e para manter a {0} libre. ¿Gostaríache donar " +"agora?" + +#: wxUI/commonMessageDialogs.py:29 +msgid "We need your help" +msgstr "Necesitamos da túa axuda" + +#: wxUI/commonMessageDialogs.py:33 wxUI/dialogs/mastodon/postDialogs.py:207 +msgid "Information" +msgstr "Información" + +#: wxUI/commonMessageDialogs.py:36 +msgid "The configuration file is invalid." +msgstr "" + +#: wxUI/commonMessageDialogs.py:39 +#, python-brace-format +msgid "" +"{0} quit unexpectedly the last time it was run. If the problem persists, " +"please report it to the {0} developers." +msgstr "" +"{0} saiu inesperadamente a última vez que se executou. se o problema " +"persiste, por favor infórmao aos desenvolvedores do {0}." + +#: wxUI/commonMessageDialogs.py:39 +msgid "Warning" +msgstr "Precaución" + +#: wxUI/commonMessageDialogs.py:45 +#, python-brace-format +msgid "Sorry, you can't update while running {} from source." +msgstr "" + +#: wxUI/commonMessageDialogs.py:49 +msgid "the provided instance is invalid. Please try again." +msgstr "" + +#: wxUI/commonMessageDialogs.py:49 +#, fuzzy +msgid "Invalid instance" +msgstr "Combinación de teclado inválida" + +#: wxUI/commonMessageDialogs.py:52 +msgid "" +"TWBlue was unable to add or update the filter with the specified " +"settings. Please try again." +msgstr "" + +#: wxUI/commonMessageDialogs.py:55 +msgid "" +"TWBlue was unable to load your filters from the instance. Please try " +"again." +msgstr "" + +#: wxUI/commonMessageDialogs.py:58 +#, fuzzy +msgid "Do you really want to delete this filter ?" +msgstr "Estás seguro de que desexas eliminar esta conta?" + +#: wxUI/commonMessageDialogs.py:58 +#, fuzzy +msgid "Delete filter" +msgstr "Crear un &filtro" + +#: wxUI/commonMessageDialogs.py:61 +msgid "TWBlue was unable to remove the filter you specified. Please try again." +msgstr "" + +#: wxUI/sysTrayIcon.py:36 wxUI/view.py:25 +msgid "&Global settings" +msgstr "Opcións &Globais" + +#: wxUI/sysTrayIcon.py:37 wxUI/view.py:24 +msgid "Account se&ttings" +msgstr "&opcións de conta" + +#: wxUI/sysTrayIcon.py:39 +msgid "&Show / hide" +msgstr "A&Mosar / agochar" + +#: wxUI/sysTrayIcon.py:40 wxUI/view.py:74 +msgid "&Documentation" +msgstr "&Documentación" + +#: wxUI/sysTrayIcon.py:41 +msgid "Check for &updates" +msgstr "Comprobar &actualizacións" + +#: wxUI/sysTrayIcon.py:42 +msgid "&Exit" +msgstr "&Saír" + +#: wxUI/view.py:16 +msgid "&Manage accounts" +msgstr "&Xestionar contas" + +#: wxUI/view.py:17 +msgid "&Update profile" +msgstr "A&ctualizar perfil" + +#: wxUI/view.py:18 +msgid "&Hide window" +msgstr "Agochar &xanela" + +#: wxUI/view.py:20 +msgid "&Lists manager" +msgstr "&Xestor de listaxes" + +#: wxUI/view.py:23 +msgid "&Edit keystrokes" +msgstr "Editar combinacións de &teclas" + +#: wxUI/view.py:26 +msgid "E&xit" +msgstr "&Saír" + +# | msgid "Remove from list" +#: wxUI/view.py:34 +#, fuzzy +msgid "&Remove from favorites" +msgstr "Quitar de listaxe" + +#: wxUI/view.py:47 +msgid "&Add to list" +msgstr "&Engadir á listaxe" + +#: wxUI/view.py:48 +msgid "R&emove from list" +msgstr "&Quitar de listaxe" + +#: wxUI/view.py:49 +msgid "Show user &profile" +msgstr "Ver &perfil do usuario" + +#: wxUI/view.py:50 +msgid "V&iew likes" +msgstr "&Ver marcados como gústame" + +#: wxUI/view.py:54 +msgid "&Update buffer" +msgstr "&Actualizar buffer" + +#: wxUI/dialogs/mastodon/communityTimeline.py:9 wxUI/view.py:55 +msgid "Create community timeline" +msgstr "" + +#: wxUI/view.py:56 +msgid "New &trending topics buffer..." +msgstr "Novo búfer &tendencias..." + +#: wxUI/view.py:59 +msgid "Find a string in the currently focused buffer..." +msgstr "Atopar unha cadea no búfer enfocado actualmente..." + +#: wxUI/view.py:60 +msgid "&Load previous items" +msgstr "&Cargar elementos anteriores" + +#: wxUI/dialogs/mastodon/userActions.py:21 wxUI/view.py:62 +msgid "&Mute" +msgstr "si&lenciar" + +#: wxUI/view.py:63 +msgid "&Autoread" +msgstr "&Autoleer" + +#: wxUI/view.py:64 +msgid "&Clear buffer" +msgstr "&Limpar buffer" + +#: wxUI/view.py:65 +msgid "&Destroy" +msgstr "&Destruir" + +#: wxUI/view.py:69 +msgid "&Seek back 5 seconds" +msgstr "&buscar 5 segudnos cara atrás" + +#: wxUI/view.py:70 +msgid "&Seek forward 5 seconds" +msgstr "&Buscar 5 segundos cara adiante" + +#: wxUI/view.py:75 +msgid "Sounds &tutorial" +msgstr "tutorial de &sons" + +#: wxUI/view.py:76 +msgid "&What's new in this version?" +msgstr "Qué hai de novo nesta &versión?" + +#: wxUI/view.py:77 +msgid "&Check for updates" +msgstr "Comprobar &actualizacións" + +#: wxUI/view.py:78 +msgid "&Report an error" +msgstr "Reportar un &erro" + +#: wxUI/view.py:79 +#, python-brace-format +msgid "{0}'s &website" +msgstr "Sitio &web do {0}" + +#: wxUI/view.py:80 +msgid "Get soundpacks for TWBlue" +msgstr "Obter paquetes de sons para o TWBlue" + +#: wxUI/view.py:81 +#, python-brace-format +msgid "About &{0}" +msgstr "Acerca do &{0}" + +#: wxUI/view.py:84 +msgid "&Application" +msgstr "&Aplicación" + +#: wxUI/view.py:85 +msgid "&Tweet" +msgstr "&Chío" + +#: wxUI/dialogs/mastodon/userActions.py:10 wxUI/view.py:86 +msgid "&User" +msgstr "&Usuario" + +#: wxUI/view.py:87 +msgid "&Buffer" +msgstr "&Buffer" + +#: wxUI/view.py:88 +msgid "&Audio" +msgstr "&Audio" + +#: wxUI/view.py:89 +msgid "&Help" +msgstr "A&xuda" + +#: wxUI/view.py:175 +msgid "Address" +msgstr "Enderezo" + +#: wxUI/view.py:206 +#, python-brace-format +msgid "Your {0} version is up to date" +msgstr "A túa versión {0} está ó día" + +#: wxUI/view.py:206 +msgid "Update" +msgstr "Actualización" + +#: wxUI/buffers/panels.py:12 wxUI/buffers/panels.py:20 +msgid "Login" +msgstr "Iniciar sesión" + +#: wxUI/buffers/panels.py:14 +msgid "Log in automatically" +msgstr "Comezar sesión automáticamente" + +#: wxUI/buffers/panels.py:22 +msgid "Logout" +msgstr "Pechar sesión" + +#: wxUI/buffers/mastodon/base.py:11 +#: wxUI/buffers/mastodon/conversationList.py:11 wxUI/buffers/mastodon/user.py:8 +#: wxUI/dialogs/mastodon/userTimeline.py:10 wxUI/dialogs/userAliasDialogs.py:14 +msgid "User" +msgstr "Usuario" + +#: wxUI/buffers/mastodon/base.py:11 +#: wxUI/buffers/mastodon/conversationList.py:11 +#: wxUI/buffers/mastodon/notifications.py:11 +#: wxUI/dialogs/mastodon/postDialogs.py:37 +#: wxUI/dialogs/mastodon/postDialogs.py:272 +msgid "Text" +msgstr "Texto" + +#: wxUI/buffers/mastodon/base.py:11 +#: wxUI/buffers/mastodon/conversationList.py:11 +#: wxUI/buffers/mastodon/notifications.py:11 +#: wxUI/dialogs/mastodon/postDialogs.py:216 +msgid "Date" +msgstr "Data" + +#: wxUI/buffers/mastodon/base.py:11 +#: wxUI/buffers/mastodon/conversationList.py:11 +msgid "Client" +msgstr "Cliente" + +#: wxUI/buffers/mastodon/base.py:27 +msgid "Favorite" +msgstr "" + +#: wxUI/buffers/mastodon/base.py:28 +msgid "Bookmark" +msgstr "" + +#: wxUI/buffers/mastodon/base.py:29 +msgid "Direct message" +msgstr "Mensaxe directa" + +#: wxUI/buffers/mastodon/notifications.py:23 +#: wxUI/dialogs/mastodon/dialogs.py:23 +msgid "Dismiss" +msgstr "" + +#: wxUI/buffers/mastodon/user.py:19 wxUI/dialogs/userAliasDialogs.py:48 +#, fuzzy +msgid "Actions" +msgstr "Acción" + +# | msgid "Direct Messages" +#: wxUI/buffers/mastodon/user.py:20 +#, fuzzy +msgid "Message" +msgstr "Mensaxes directas" + +#: wxUI/dialogs/configuration.py:15 +#, fuzzy +msgid "&Language" +msgstr "Idioma" + +#: wxUI/dialogs/configuration.py:22 +#, fuzzy, python-brace-format +msgid "&Ask before exiting {0}" +msgstr "Preguntar antes de saír do {0}" + +#: wxUI/dialogs/configuration.py:24 +#, fuzzy +msgid "&Disable Streaming functions" +msgstr "Desactivar funcións de Streaming" + +#: wxUI/dialogs/configuration.py:27 +#, fuzzy +msgid "&Buffer update interval, in minutes" +msgstr "Intervalo de actualización do búfer, en minutos" + +#: wxUI/dialogs/configuration.py:33 +#, fuzzy, python-brace-format +msgid "Pla&y a sound when {0} launches" +msgstr "Reproducir un son ó se lanzar {0}" + +#: wxUI/dialogs/configuration.py:35 +#, fuzzy, python-brace-format +msgid "Sp&eak a message when {0} launches" +msgstr "Falar unha mensaxe ó se lanzar {0}" + +#: wxUI/dialogs/configuration.py:37 +#, fuzzy +msgid "&Use invisible interface's keyboard shortcuts while GUI is visible" +msgstr "Empregar os atallos de teclado da interfaz invisible na xanela gráfica." + +#: wxUI/dialogs/configuration.py:39 +#, fuzzy +msgid "A&ctivate Sapi5 when any other screen reader is not being run" +msgstr "activar sappy 5 cando ningún outro lector se estea a executar" + +#: wxUI/dialogs/configuration.py:41 +#, fuzzy +msgid "&Hide GUI on launch" +msgstr "Agochar interfaz gráfica no lanzador" + +#: wxUI/dialogs/configuration.py:43 +msgid "&Read long posts in GUI" +msgstr "" + +#: wxUI/dialogs/configuration.py:46 +#, fuzzy +msgid "&Keymap" +msgstr "Mapa de teclado" + +#: wxUI/dialogs/configuration.py:51 +#, fuzzy, python-brace-format +msgid "Check for u&pdates when {0} launches" +msgstr "Procurar actualizacións cando se lance {0}" + +#: wxUI/dialogs/configuration.py:61 +#, fuzzy +msgid "Proxy &type: " +msgstr "Typo de proxy: " + +#: wxUI/dialogs/configuration.py:68 +#, fuzzy +msgid "Proxy s&erver: " +msgstr "Servidor Proxy: " + +#: wxUI/dialogs/configuration.py:74 +#, fuzzy +msgid "&Port: " +msgstr "Porto: " + +#: wxUI/dialogs/configuration.py:80 +#, fuzzy +msgid "&User: " +msgstr "Usuario" + +#: wxUI/dialogs/configuration.py:86 +#, fuzzy +msgid "P&assword: " +msgstr "Contrasinal" + +#: wxUI/dialogs/configuration.py:98 +#, fuzzy +msgid "Enable automatic s&peech feedback" +msgstr "Activar a retroalimentación automática da fala" + +#: wxUI/dialogs/configuration.py:100 +#, fuzzy +msgid "Enable automatic &Braille feedback" +msgstr "Activar a retroalimentación automática do braille" + +#: wxUI/dialogs/configuration.py:108 +msgid "Buffer" +msgstr "Búfer" + +#: wxUI/dialogs/configuration.py:108 +msgid "Status" +msgstr "Estado" + +#: wxUI/dialogs/configuration.py:111 +#, fuzzy +msgid "S&how/hide" +msgstr "Amosar/agochar" + +#: wxUI/dialogs/configuration.py:112 +#, fuzzy +msgid "Move &up" +msgstr "Mover arriba" + +#: wxUI/dialogs/configuration.py:113 +#, fuzzy +msgid "Move &down" +msgstr "Mover abaixo" + +#: wxUI/dialogs/configuration.py:123 wxUI/dialogs/configuration.py:188 +#: wxUI/dialogs/configuration.py:191 wxUI/dialogs/configuration.py:196 +msgid "Show" +msgstr "Amosar" + +#: wxUI/dialogs/configuration.py:125 wxUI/dialogs/configuration.py:135 +#: wxUI/dialogs/configuration.py:159 wxUI/dialogs/configuration.py:189 +msgid "Hide" +msgstr "Agochar" + +#: wxUI/dialogs/configuration.py:133 wxUI/dialogs/configuration.py:157 +msgid "Select a buffer first." +msgstr "Selecciona un búfer primeiro." + +#: wxUI/dialogs/configuration.py:136 wxUI/dialogs/configuration.py:160 +msgid "The buffer is hidden, show it first." +msgstr "O búffer está agochado, amósao primeiro." + +#: wxUI/dialogs/configuration.py:139 +msgid "The buffer is already at the top of the list." +msgstr "O búfer xa está enriba na lista." + +#: wxUI/dialogs/configuration.py:163 +msgid "The buffer is already at the bottom of the list." +msgstr "O búfer xa está no fondo da lista." + +#: wxUI/dialogs/configuration.py:205 +msgid "&LibreTranslate API URL: " +msgstr "" + +#: wxUI/dialogs/configuration.py:211 +msgid "LibreTranslate API &Key (optional): " +msgstr "" + +#: wxUI/dialogs/configuration.py:217 +msgid "&DeepL API Key: " +msgstr "" + +#: wxUI/dialogs/configuration.py:231 +#, python-brace-format +msgid "{0} preferences" +msgstr "Preferencias do {0}" + +#: wxUI/dialogs/configuration.py:237 wxUI/dialogs/mastodon/configuration.py:144 +msgid "General" +msgstr "Xeral" + +#: wxUI/dialogs/configuration.py:242 +msgid "Proxy" +msgstr "Proxy" + +#: wxUI/dialogs/configuration.py:246 +#, fuzzy +msgid "Translation services" +msgstr "Traducido" + +#: wxUI/dialogs/configuration.py:251 wxUI/dialogs/mastodon/configuration.py:170 +#, fuzzy +msgid "&Save" +msgstr "Gardar" + +#: wxUI/dialogs/configuration.py:253 +#: wxUI/dialogs/mastodon/communityTimeline.py:27 +#: wxUI/dialogs/mastodon/configuration.py:172 +#: wxUI/dialogs/mastodon/search.py:26 +#: wxUI/dialogs/mastodon/showUserProfile.py:170 +#: wxUI/dialogs/mastodon/updateProfile.py:132 +#: wxUI/dialogs/mastodon/userActions.py:38 +#: wxUI/dialogs/mastodon/userTimeline.py:32 +msgid "&Close" +msgstr "&Pechar" + +#: wxUI/dialogs/find.py:13 +msgid "Find in current buffer" +msgstr "Atopar no búfer actual" + +#: wxUI/dialogs/find.py:14 +msgid "String" +msgstr "Cadea" + +#: wxUI/dialogs/find.py:23 wxUI/dialogs/mastodon/showUserProfile.py:33 +msgid "Cancel" +msgstr "Cancelar" + +#: wxUI/dialogs/templateDialogs.py:8 +msgid "Edit Template" +msgstr "" + +#: wxUI/dialogs/templateDialogs.py:13 +msgid "Edit template" +msgstr "" + +#: wxUI/dialogs/templateDialogs.py:17 +#, fuzzy +msgid "Available variables" +msgstr "Non dispoñible" + +#: wxUI/dialogs/templateDialogs.py:29 +msgid "Restore template" +msgstr "" + +#: wxUI/dialogs/templateDialogs.py:48 +#, python-brace-format +msgid "Restored template to {}." +msgstr "" + +#: wxUI/dialogs/templateDialogs.py:52 +msgid "" +"the template you have specified include variables that do not exists for " +"the object. Please fix the template and try again. For your reference, " +"you can see a list of all available variables in the variables list while" +" editing your template." +msgstr "" + +#: wxUI/dialogs/templateDialogs.py:52 +#, fuzzy +msgid "Invalid template" +msgstr "Combinación de teclado inválida" + +#: wxUI/dialogs/urlList.py:6 +msgid "Select URL" +msgstr "Seleccionar URL" + +#: wxUI/dialogs/mastodon/userActions.py:13 +#: wxUI/dialogs/mastodon/userTimeline.py:13 wxUI/dialogs/userAliasDialogs.py:13 +msgid "&Autocomplete users" +msgstr "&Autocompletar usuarios" + +#: wxUI/dialogs/userAliasDialogs.py:18 +#, fuzzy +msgid "Alias" +msgstr "Sempre" + +#: wxUI/dialogs/userAliasDialogs.py:41 +#, fuzzy +msgid "Edit user aliases" +msgstr "Editando a base de dados de usuarios do {0} " + +#: wxUI/dialogs/mastodon/search.py:19 wxUI/dialogs/userAliasDialogs.py:43 +msgid "Users" +msgstr "Usuarios" + +#: wxUI/dialogs/userAliasDialogs.py:50 +#, fuzzy +msgid "Add alias" +msgstr "Engadir á listaxe" + +#: wxUI/dialogs/userAliasDialogs.py:51 +msgid "Adds a new user alias" +msgstr "" + +#: wxUI/dialogs/userAliasDialogs.py:54 +#, fuzzy +msgid "Edit the currently focused user Alias." +msgstr "Interactuar co chío enfocado actualmente." + +#: wxUI/dialogs/mastodon/filters/create_filter.py:26 +#: wxUI/dialogs/mastodon/filters/manage_filters.py:24 +#: wxUI/dialogs/userAliasDialogs.py:57 +msgid "Remove" +msgstr "Borrar" + +#: wxUI/dialogs/userAliasDialogs.py:58 +#, fuzzy +msgid "Remove the currently focused user alias." +msgstr "Atopar unha cadea no búfer enfocado actualmente..." + +#: wxUI/dialogs/userAliasDialogs.py:82 +#, fuzzy +msgid "Are you sure you want to delete this user alias?" +msgstr "¿Realmente desexas eliminar esta listaxe?" + +#: wxUI/dialogs/userAliasDialogs.py:82 +#, fuzzy +msgid "Remove user alias" +msgstr "Quitar usuario" + +#: wxUI/dialogs/userAliasDialogs.py:93 +#, fuzzy +msgid "User alias" +msgstr "Detalles de usuario" + +#: wxUI/dialogs/userList.py:27 +#, fuzzy +msgid "View profile" +msgstr "A&ctualizar perfil" + +#: wxUI/dialogs/mastodon/communityTimeline.py:10 +#, fuzzy +msgid "Community URL" +msgstr "Control" + +#: wxUI/dialogs/mastodon/communityTimeline.py:16 +#: wxUI/dialogs/mastodon/userTimeline.py:18 +msgid "Buffer type" +msgstr "Tipo de Búfer" + +#: wxUI/dialogs/mastodon/communityTimeline.py:17 +#, fuzzy +msgid "&Local timeline" +msgstr "Liñas temporais" + +#: wxUI/dialogs/mastodon/communityTimeline.py:18 +#, fuzzy +msgid "&Federated Timeline" +msgstr "Liña temporal de {username}" + +#: wxUI/dialogs/mastodon/communityTimeline.py:25 +#: wxUI/dialogs/mastodon/search.py:24 +#: wxUI/dialogs/mastodon/updateProfile.py:130 +#: wxUI/dialogs/mastodon/userActions.py:36 +#: wxUI/dialogs/mastodon/userTimeline.py:30 +msgid "&OK" +msgstr "&Aceptar" + +#: wxUI/dialogs/mastodon/configuration.py:14 +#, fuzzy +msgid "User autocompletion settings" +msgstr "Opcións de autocompletado" + +#: wxUI/dialogs/mastodon/configuration.py:15 +msgid "" +"Scan acc&ount and add followers and following users to the user " +"autocompletion database" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:16 +#, fuzzy +msgid "&Manage autocompletion database" +msgstr "Xestionar a base de datos do autocompletado de usuarios" + +#: wxUI/dialogs/mastodon/configuration.py:21 +#, fuzzy +msgid "&Disable Streaming API endpoints" +msgstr "Desactivar funcións de Streaming" + +#: wxUI/dialogs/mastodon/configuration.py:23 +#, fuzzy +msgid "&Relative timestamps" +msgstr "Tempos relativos" + +#: wxUI/dialogs/mastodon/configuration.py:25 +msgid "" +"R&ead preferences from instance (default visibility when publishing and " +"displaying sensitive content)" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:28 +#, fuzzy +msgid "&Items on each API call" +msgstr "Elementos por cada chamada á API" + +# | msgid "" +# | "Inverted buffers: The newest tweets will be shown at the beginning while +# " +# | "the oldest at the end" +#: wxUI/dialogs/mastodon/configuration.py:34 +#, fuzzy +msgid "" +"I&nverted buffers: The newest items will be shown at the beginning while " +"the oldest at the end" +msgstr "" +"Buffers invertidos. Os novos chíos mostraranse ao comezo da listaxe e os " +"máis vellos ao final." + +#: wxUI/dialogs/mastodon/configuration.py:36 +msgid "&Ask confirmation before boosting a post" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:38 +#, fuzzy +msgid "S&how screen names instead of full names" +msgstr "Amosar nomes de pantalla en lugar de nomes enteiros" + +#: wxUI/dialogs/mastodon/configuration.py:40 +msgid "Hide e&mojis in usernames" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:42 +#, fuzzy +msgid "" +"&Number of items per buffer to cache in database (0 to disable caching, " +"blank for unlimited)" +msgstr "" +"Número de elementos por búfer para gardar na caché da base de dados (0 " +"para desactivar o gardado na caché, en branco para ilimitado)" + +#: wxUI/dialogs/mastodon/configuration.py:46 +msgid "" +"&Load cache for items in memory (much faster in big datasets but requires" +" more RAM)" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:53 +#, python-brace-format +msgid "Edit template for &posts. Current template: {}" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:55 +#, python-brace-format +msgid "Edit template for c&onversations. Current template: {}" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:57 +#, python-brace-format +msgid "Edit template for p&ersons. Current template: {}" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:65 +#, fuzzy +msgid "&Volume" +msgstr "volume" + +#: wxUI/dialogs/mastodon/configuration.py:76 +#, fuzzy +msgid "S&ession mute" +msgstr "Silenciar sesión" + +#: wxUI/dialogs/mastodon/configuration.py:78 +#, fuzzy +msgid "&Output device" +msgstr "dispositivo de saída" + +#: wxUI/dialogs/mastodon/configuration.py:85 +#, fuzzy +msgid "&Input device" +msgstr "dispositivo de entrada" + +#: wxUI/dialogs/mastodon/configuration.py:93 +#, fuzzy +msgid "Sound &pack" +msgstr "Paquete de sons" + +# | msgid "Indicate audio tweets with sound" +#: wxUI/dialogs/mastodon/configuration.py:99 +#, fuzzy +msgid "Indicate &audio or video in posts with sound" +msgstr "Indicar chíos de audio con son" + +# | msgid "Indicate tweets containing images with sound" +#: wxUI/dialogs/mastodon/configuration.py:101 +#, fuzzy +msgid "Indicate posts containing i&mages with sound" +msgstr "Indicar chíos que conteñan imaxes con son" + +#: wxUI/dialogs/mastodon/configuration.py:124 +#, fuzzy +msgid "&Language for OCR" +msgstr "Lingua para o OCR" + +#: wxUI/dialogs/mastodon/configuration.py:149 +msgid "Feedback" +msgstr "Retroalimentación" + +#: wxUI/dialogs/mastodon/configuration.py:153 +msgid "Buffers" +msgstr "Búferes" + +#: wxUI/dialogs/mastodon/configuration.py:157 +msgid "Templates" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:161 +msgid "Sound" +msgstr "son" + +#: wxUI/dialogs/mastodon/configuration.py:165 +msgid "Extras" +msgstr "Extras" + +# | msgid "Would you like to add a comment to this tweet?" +#: wxUI/dialogs/mastodon/dialogs.py:7 +#, fuzzy +msgid "Would you like to share this post?" +msgstr "¿gustaríache engadir un comentario a este chío?" + +# | msgid "" +# | "Do you really want to delete this tweet? It will be deleted from Twitter +# " +# | "as well." +#: wxUI/dialogs/mastodon/dialogs.py:15 +#, fuzzy +msgid "" +"Do you really want to delete this post? It will be deleted from the " +"instance as well." +msgstr "¿Queres de certo eliminar esta mensaxe? Eliminarase tamén de Twitter." + +#: wxUI/dialogs/mastodon/dialogs.py:15 +msgid "Delete" +msgstr "Eliminar" + +#: wxUI/dialogs/mastodon/dialogs.py:23 +msgid "" +"Are you sure you want to dismiss this notification? If you dismiss a " +"mention notification, it also disappears from your mentions buffer. The " +"post is not going to be deleted from the instance, though." +msgstr "" + +# | msgid "" +# | "Do you really want to empty this buffer? It's items will be removed from +# " +# | "the list but not from Twitter" +#: wxUI/dialogs/mastodon/dialogs.py:31 +#, fuzzy +msgid "" +"Do you really want to empty this buffer? It's items will be removed from" +" the list but not from the instance" +msgstr "" +"¿realmente queres borrar o contido deste buffer? Estes chíos borraranse " +"da listaxe, mais non de twitter" + +# | msgid "This user has no tweets. {0} can't create a timeline." +#: wxUI/dialogs/mastodon/dialogs.py:38 +#, fuzzy, python-brace-format +msgid "This user has no posts. {0} can't create a timeline." +msgstr "Este usuario non ten chíos. {0} non podo crear unha liña temporal." + +# | msgid "This user has no favorited tweets. {0} can't create a timeline." +#: wxUI/dialogs/mastodon/dialogs.py:43 +#, fuzzy, python-brace-format +msgid "This user has no favorited posts. {0} can't create a timeline." +msgstr "" +"Este usuario non ten chíos favoritos. {0} non podo crear unha liña " +"temporal." + +# | msgid "This user has no followers. {0} can't create a timeline." +#: wxUI/dialogs/mastodon/dialogs.py:48 +#, fuzzy, python-brace-format +msgid "This user has no followers yet. {0} can't create a timeline." +msgstr "Este usuario non ten seguedores. {0} non podo crear unha liña temporal." + +# | msgid "This user has no followers. {0} can't create a timeline." +#: wxUI/dialogs/mastodon/dialogs.py:53 +#, fuzzy, python-brace-format +msgid "This user is not following anyone. {0} can't create a timeline." +msgstr "Este usuario non ten seguedores. {0} non podo crear unha liña temporal." + +#: wxUI/dialogs/mastodon/dialogs.py:60 +#, python-brace-format +msgid "The focused item has no user in it. {} ca't open a user profile" +msgstr "" + +# | msgid "R&emove from list" +#: wxUI/dialogs/mastodon/menus.py:13 wxUI/dialogs/mastodon/menus.py:41 +#, fuzzy +msgid "R&emove from favorites" +msgstr "&Quitar de listaxe" + +#: wxUI/dialogs/mastodon/menus.py:15 wxUI/dialogs/mastodon/menus.py:43 +msgid "&Open URL" +msgstr "&Abrir URL..." + +# | msgid "Search on twitter" +#: wxUI/dialogs/mastodon/menus.py:17 wxUI/dialogs/mastodon/menus.py:47 +#, fuzzy +msgid "&Open in instance" +msgstr "procurar en twitter" + +#: wxUI/dialogs/mastodon/menus.py:19 wxUI/dialogs/mastodon/menus.py:45 +msgid "&Play audio" +msgstr "re&producir audio" + +#: wxUI/dialogs/mastodon/menus.py:23 wxUI/dialogs/mastodon/menus.py:51 +msgid "&Copy to clipboard" +msgstr "&Copiar ao portapapeis" + +#: wxUI/dialogs/mastodon/menus.py:27 wxUI/dialogs/mastodon/menus.py:55 +msgid "&User actions..." +msgstr "&Accións de usuario..." + +#: wxUI/dialogs/mastodon/menus.py:53 +msgid "&Dismiss" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:20 +#: wxUI/dialogs/mastodon/postDialogs.py:38 +msgid "Attachments" +msgstr "Adxuntos" + +#: wxUI/dialogs/mastodon/postDialogs.py:24 +msgid "File" +msgstr "Arquivo" + +#: wxUI/dialogs/mastodon/postDialogs.py:25 +msgid "Type" +msgstr "Tipo" + +#: wxUI/dialogs/mastodon/postDialogs.py:26 +#: wxUI/dialogs/mastodon/postDialogs.py:141 +msgid "Description" +msgstr "Descrición" + +# | msgid "Remove client" +#: wxUI/dialogs/mastodon/postDialogs.py:28 +#, fuzzy +msgid "Remove Attachment" +msgstr "Quitar cliente" + +#: wxUI/dialogs/mastodon/postDialogs.py:33 +msgid "Post in the thread" +msgstr "" + +# | msgid "Remove from list" +#: wxUI/dialogs/mastodon/postDialogs.py:40 +#, fuzzy +msgid "Remove post" +msgstr "Quitar de listaxe" + +#: wxUI/dialogs/mastodon/postDialogs.py:47 +msgid "&Visibility" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:54 +#, fuzzy +msgid "Language" +msgstr "Idioma" + +#: wxUI/dialogs/mastodon/postDialogs.py:58 +msgid "A&dd" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:59 +msgid "S&ensitive content" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:64 +msgid "Content warning" +msgstr "" + +# | msgid "Add to list" +#: wxUI/dialogs/mastodon/postDialogs.py:71 +#, fuzzy +msgid "Add p&ost" +msgstr "Engadir á listaxe" + +#: wxUI/dialogs/mastodon/postDialogs.py:75 +msgid "Auto&complete users" +msgstr "Auto&completar usuarios" + +# | msgid "Check &spelling..." +#: wxUI/dialogs/mastodon/postDialogs.py:77 +#, fuzzy +msgid "Check &spelling" +msgstr "Corrección de &ortografía..." + +#: wxUI/dialogs/mastodon/postDialogs.py:79 +#, fuzzy +msgid "&Translate" +msgstr "Traducido" + +# | msgid "Tweet - %i characters " +#: wxUI/dialogs/mastodon/postDialogs.py:106 +#, fuzzy, python-brace-format +msgid "Post - {} characters" +msgstr "Chío - %i caracteres" + +#: wxUI/dialogs/mastodon/postDialogs.py:130 +msgid "Image" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:132 +#, fuzzy +msgid "Video" +msgstr "Agochar" + +# | msgid "&Audio" +#: wxUI/dialogs/mastodon/postDialogs.py:134 +#, fuzzy +msgid "Audio" +msgstr "&Audio" + +#: wxUI/dialogs/mastodon/postDialogs.py:136 +msgid "Poll" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:141 +msgid "please provide a description" +msgstr "Por favor proporciona una descrición" + +#: wxUI/dialogs/mastodon/postDialogs.py:148 +msgid "Select the picture to be uploaded" +msgstr "Seleciona unha foto para subir" + +#: wxUI/dialogs/mastodon/postDialogs.py:148 +msgid "Image files (*.png, *.jpg, *.gif)|*.png; *.jpg; *.gif" +msgstr "Arquivos de imaxe (*.png, *.jpg, *.gif)|*.png; *.jpg; *.gif" + +#: wxUI/dialogs/mastodon/postDialogs.py:155 +#, fuzzy +msgid "Select the video to be uploaded" +msgstr "Seleciona unha foto para subir" + +# | msgid "Audio Files (*.mp3, *.ogg, *.wav)|*.mp3; *.ogg; *.wav" +#: wxUI/dialogs/mastodon/postDialogs.py:155 +#, fuzzy +msgid "Video files (*.mp4, *.mov, *.m4v, *.webm)| *.mp4; *.m4v; *.mov; *.webm" +msgstr "Arquivos de audio (*.mp3, *.ogg, *.wav)|*.mp3; *.ogg; *.wav" + +#: wxUI/dialogs/mastodon/postDialogs.py:162 +msgid "Select the audio file to be uploaded" +msgstr "Seleciona o arquivo de audio que desexas subir" + +#: wxUI/dialogs/mastodon/postDialogs.py:162 +msgid "" +"Audio files (*.mp3, *.ogg, *.wav, *.flac, *.opus, *.aac, *.m4a, " +"*.3gp)|*.mp3; *.ogg; *.wav; *.flac; *.opus; *.aac; *.m4a; *.3gp" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:169 +msgid "" +"It is not possible to add more attachments. Please take into account that" +" You can add only a maximum of 4 images, or one audio, video or poll per" +" post. Please remove other attachments before continuing." +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:169 +#, fuzzy +msgid "Error adding attachment" +msgstr "Engadir un adxunto" + +#: wxUI/dialogs/mastodon/postDialogs.py:172 +msgid "" +"You can add a poll or media files. In order to add your poll, please " +"remove other attachments first." +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:172 +#, fuzzy +msgid "Error adding poll" +msgstr "Engadir un adxunto" + +# | msgid "Tweet - %i characters " +#: wxUI/dialogs/mastodon/postDialogs.py:177 +#, fuzzy, python-format +msgid "Post - %i characters " +msgstr "Chío - %i caracteres" + +#: wxUI/dialogs/mastodon/postDialogs.py:200 +msgid "Image description" +msgstr "Descrición de imaxe" + +# | msgid "Private" +#: wxUI/dialogs/mastodon/postDialogs.py:210 +#, fuzzy +msgid "Privacy" +msgstr "Privado" + +#: wxUI/dialogs/mastodon/postDialogs.py:214 +#, fuzzy +msgid "Source" +msgstr "Orixe:" + +#: wxUI/dialogs/mastodon/postDialogs.py:222 +msgid "Boosts" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:224 +msgid "View users who boosted this post" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:231 +msgid "View users who favorited this post" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:239 +#, fuzzy +msgid "Copy link to clipboard" +msgstr "Copiar ao portapapeis" + +#: wxUI/dialogs/mastodon/postDialogs.py:241 +#: wxUI/dialogs/mastodon/postDialogs.py:280 +msgid "Check &spelling..." +msgstr "Corrección de &ortografía..." + +#: wxUI/dialogs/mastodon/postDialogs.py:242 +#: wxUI/dialogs/mastodon/postDialogs.py:281 +msgid "&Translate..." +msgstr "&Traducir..." + +#: wxUI/dialogs/mastodon/postDialogs.py:243 +#: wxUI/dialogs/mastodon/postDialogs.py:282 +msgid "C&lose" +msgstr "&Pechar" + +#: wxUI/dialogs/mastodon/postDialogs.py:294 +msgid "Add a poll" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:298 +msgid "Participation time" +msgstr "" + +# | msgid "%d minutes, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "5 minutes" +msgstr "%d minutos, " + +# | msgid "%d minutes, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "30 minutes" +msgstr "%d minutos, " + +# | msgid "%d hour, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "1 hour" +msgstr "%d hora, " + +# | msgid "%d hours, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "6 hours" +msgstr "%d horas, " + +# | msgid "%d day, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "1 day" +msgstr "%d día, " + +# | msgid "%d days, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "2 days" +msgstr "%d días, " + +# | msgid "%d days, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "3 days" +msgstr "%d días, " + +# | msgid "%d days, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "4 days" +msgstr "%d días, " + +# | msgid "%d days, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "5 days" +msgstr "%d días, " + +# | msgid "%d days, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "6 days" +msgstr "%d días, " + +# | msgid "%d days, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "7 days" +msgstr "%d días, " + +#: wxUI/dialogs/mastodon/postDialogs.py:304 +msgid "Choices" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:308 +msgid "Option 1" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:315 +msgid "Option 2" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:322 +msgid "Option 3" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:329 +msgid "Option 4" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:334 +msgid "Allow multiple choices per user" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:337 +msgid "Hide votes count until the poll expires" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:363 +msgid "Please make sure you have provided at least two options for the poll." +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:363 +#, fuzzy +msgid "Not enough information" +msgstr "Información" + +#: wxUI/dialogs/mastodon/postDialogs.py:368 +msgid "Vote in this poll" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:371 +#, fuzzy +msgid "Options" +msgstr "Acción" + +# | msgid "&Search" +#: wxUI/dialogs/mastodon/search.py:9 +#, fuzzy +msgid "Search" +msgstr "&Procurar" + +#: wxUI/dialogs/mastodon/search.py:18 +msgid "Posts" +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:22 +#, fuzzy +msgid "Select user" +msgstr "Seleccionar URL" + +#: wxUI/dialogs/mastodon/showUserProfile.py:73 +#, fuzzy, python-brace-format +msgid "{}'s Profile" +msgstr "A&ctualizar perfil" + +#: wxUI/dialogs/mastodon/showUserProfile.py:79 +#, fuzzy +msgid "&Name: " +msgstr "Nome" + +#: wxUI/dialogs/mastodon/showUserProfile.py:84 +#, fuzzy +msgid "&URL: " +msgstr "Usuario" + +#: wxUI/dialogs/mastodon/showUserProfile.py:89 +msgid "&Bio: " +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:94 +msgid "&Joined at: " +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:99 +#, fuzzy +msgid "&Actions" +msgstr "Acción" + +#: wxUI/dialogs/mastodon/showUserProfile.py:104 +#, fuzzy +msgid "Header: " +msgstr "Agochar" + +#: wxUI/dialogs/mastodon/showUserProfile.py:112 +msgid "Avatar: " +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:122 +#, python-brace-format +msgid "Field &{} - Label: " +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:129 +#, fuzzy +msgid "Content: " +msgstr "contexto" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:43 +#: wxUI/dialogs/mastodon/filters/create_filter.py:65 +#: wxUI/dialogs/mastodon/showUserProfile.py:135 +msgid "Yes" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:43 +#: wxUI/dialogs/mastodon/filters/create_filter.py:65 +#: wxUI/dialogs/mastodon/filters/create_filter.py:69 +#: wxUI/dialogs/mastodon/showUserProfile.py:135 +msgid "No" +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:137 +#, fuzzy +msgid "&Private account: " +msgstr "Quitar conta" + +#: wxUI/dialogs/mastodon/showUserProfile.py:144 +#, fuzzy +msgid "&Bot account: " +msgstr "Conta" + +#: wxUI/dialogs/mastodon/showUserProfile.py:151 +#, fuzzy +msgid "&Discoverable account: " +msgstr "Quitar conta" + +#: wxUI/dialogs/mastodon/showUserProfile.py:157 +#, python-brace-format +msgid "{} p&osts. Click to open posts timeline" +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:162 +#, python-brace-format +msgid "{} &following. Click to open Following timeline" +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:166 +#, python-brace-format +msgid "{} fo&llowers. Click to open followers timeline" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:43 +msgid "&Display Name" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:50 +#, fuzzy +msgid "&Bio" +msgstr "&Bloquear" + +#: wxUI/dialogs/mastodon/updateProfile.py:58 +#, fuzzy +msgid "Header" +msgstr "Agochar" + +#: wxUI/dialogs/mastodon/updateProfile.py:71 +#, fuzzy +msgid "Change &header" +msgstr "Agochar" + +#: wxUI/dialogs/mastodon/updateProfile.py:79 +msgid "Avatar" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:92 +msgid "Change &avatar" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:102 +#, python-brace-format +msgid "Field &{}: Label" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:110 +#, fuzzy +msgid "Content" +msgstr "contexto" + +#: wxUI/dialogs/mastodon/updateProfile.py:120 +#, fuzzy +msgid "&Private account" +msgstr "Quitar conta" + +#: wxUI/dialogs/mastodon/updateProfile.py:122 +#, fuzzy +msgid "&Bot account" +msgstr "Conta" + +#: wxUI/dialogs/mastodon/updateProfile.py:124 +#, fuzzy +msgid "&Discoverable account" +msgstr "Quitar conta" + +#: wxUI/dialogs/mastodon/updateProfile.py:167 +msgid "Select header image - max 2MB" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:172 +#: wxUI/dialogs/mastodon/updateProfile.py:194 +msgid "The selected file is larger than 2MB. Do you want to select another file?" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:173 +#: wxUI/dialogs/mastodon/updateProfile.py:195 +msgid "File more than 2MB" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:189 +msgid "Select avatar image - max 2MB" +msgstr "" + +#: wxUI/dialogs/mastodon/userActions.py:19 +msgid "&Follow" +msgstr "&Seguir" + +#: wxUI/dialogs/mastodon/userActions.py:20 +msgid "U&nfollow" +msgstr "Dei&xar de seguir" + +#: wxUI/dialogs/mastodon/userActions.py:22 +msgid "Unmu&te" +msgstr "Desactivar &silenzo" + +#: wxUI/dialogs/mastodon/userActions.py:23 +msgid "&Block" +msgstr "&Bloquear" + +#: wxUI/dialogs/mastodon/userActions.py:24 +msgid "Unbl&ock" +msgstr "&Desbloquear" + +#: wxUI/dialogs/mastodon/userTimeline.py:9 +#, python-format +msgid "Timeline for %s" +msgstr "Liña temporal de %s" + +#: wxUI/dialogs/mastodon/userTimeline.py:19 +msgid "&Posts" +msgstr "" + +#: wxUI/dialogs/mastodon/userTimeline.py:20 +msgid "&Followers" +msgstr "&Seguidores" + +#: wxUI/dialogs/mastodon/userTimeline.py:21 +#, fuzzy +msgid "Fo&llowing" +msgstr "Dei&xar de seguir" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:12 +#, fuzzy +msgid "Keyword" +msgstr "Tecla" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:13 +#: wxUI/dialogs/mastodon/filters/create_filter.py:24 +msgid "Whole word" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:19 +msgid "Keyword:" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:25 +#: wxUI/dialogs/mastodon/filters/manage_filters.py:22 +#, fuzzy +msgid "Add" +msgstr "Enderezo" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:34 +msgid "Palabras clave a filtrar:" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:74 +#, fuzzy +msgid "New filter" +msgstr "&Xestionar filtros" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:78 +#, fuzzy +msgid "Home timeline" +msgstr "Liñas temporais" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:79 +msgid "Public statuses" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:81 +#, fuzzy +msgid "Threads" +msgstr "Listo" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:82 +#, fuzzy +msgid "Profiles" +msgstr "A&ctualizar perfil" + +# | msgid "Delete" +#: wxUI/dialogs/mastodon/filters/create_filter.py:86 +#, fuzzy +msgid "Hide posts" +msgstr "Eliminar" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:87 +msgid "Set a content warning to posts" +msgstr "" + +# | msgid "%d hours, " +#: wxUI/dialogs/mastodon/filters/create_filter.py:91 +#, fuzzy +msgid "Hours" +msgstr "%d horas, " + +# | msgid "%d days, " +#: wxUI/dialogs/mastodon/filters/create_filter.py:92 +#, fuzzy +msgid "Days" +msgstr "%d días, " + +#: wxUI/dialogs/mastodon/filters/create_filter.py:93 +msgid "Weeks" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:94 +msgid "months" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:97 +#, fuzzy +msgid "Title:" +msgstr "Arquivo" + +# | msgid "Reply to {arg0}" +#: wxUI/dialogs/mastodon/filters/create_filter.py:104 +#, fuzzy +msgid "Apply to:" +msgstr "Respostar a {arg0}" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:114 +#, fuzzy +msgid "Action:" +msgstr "Acción" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:122 +msgid "Expires in:" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/manage_filters.py:10 +#, fuzzy +msgid "Filters" +msgstr "Arquivo" + +#: wxUI/dialogs/mastodon/filters/manage_filters.py:15 +#, fuzzy +msgid "Title" +msgstr "Arquivo" + +#: wxUI/dialogs/mastodon/filters/manage_filters.py:16 +msgid "Keywords" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/manage_filters.py:17 +#, fuzzy +msgid "Contexts" +msgstr "contexto" + +#: wxUI/dialogs/mastodon/filters/manage_filters.py:19 +#, fuzzy +msgid "Expires" +msgstr "Extras" + +#~ msgid "There are no results for the coordinates in this tweet" +#~ msgstr "Non hai resultados para as coordenadas neste chío" + +#~ msgid "This list is already opened" +#~ msgstr "Esta lista xa está aberta" + +# | msgid "Timeline for {}" +#~ msgid "Timelines for {}" +#~ msgstr "Liña temporal para {0}" + +#~ msgid "{account_name} (Mastodon)" +#~ msgstr "" + +#~ msgid "URL of mastodon instance:" +#~ msgstr "" + +# | msgid "View &address" +#~ msgid "Email address:" +#~ msgstr "Ver &enderezo" + +# | msgid "Password: " +#~ msgid "Password:" +#~ msgstr "Contrasinal" + +# | msgid "Item" +#~ msgid "&Item" +#~ msgstr "Elemento" + +#~ msgid "Visibility" +#~ msgstr "" + +#~ msgid "Sensitive content" +#~ msgstr "" + +#~ msgid "Allow multiple votes per user" +#~ msgstr "" + +#~ msgid "{username} has mentionned you: {status}" +#~ msgstr "" + +#~ msgid "has mentionned you: {status}" +#~ msgstr "" + +#~ msgid "Likes for {}" +#~ msgstr "Chíos que me gustan para {}" + +#~ msgid "Trending topics for %s" +#~ msgstr "Tendencias para %s" + +#~ msgid "Select user" +#~ msgstr "Seleciona un usuario" + +#~ msgid "Sent direct messages" +#~ msgstr "Enviar mensaxes directas" + +#~ msgid "Sent tweets" +#~ msgstr "Enviar chíos" + +#~ msgid "Likes" +#~ msgstr "Marcados como Gústame" + +#~ msgid "Friends" +#~ msgstr "Amigos" + +#~ msgid "{username}'s likes" +#~ msgstr "Gústanme do {username}" + +#~ msgid "{username}'s friends" +#~ msgstr "Amigos do {username}" + +#~ msgid "Tweet" +#~ msgstr "Chío" + +#~ msgid "Write the tweet here" +#~ msgstr "Escribe o chío aquí" + +#~ msgid "New tweet in {0}" +#~ msgstr "Novo chío en {0}" + +#~ msgid "{0} new tweets in {1}." +#~ msgstr "{0} novos chíos en {1}." + +#~ msgid "Reply to {arg0}" +#~ msgstr "Respostar a {arg0}" + +#~ msgid "Reply to %s" +#~ msgstr "Respostar a %s" + +#~ msgid "Direct message to %s" +#~ msgstr "Mensaxe directa a %s" + +#~ msgid "New direct message" +#~ msgstr "Nova mensaxe directa" + +#~ msgid "This action is not supported on protected accounts." +#~ msgstr "Esta acción non se soporta aínda para o búffer." + +#~ msgid "Quote" +#~ msgstr "Cita" + +#~ msgid "Add your comment to the tweet" +#~ msgstr "Engade o teu comentario ao chío" + +#~ msgid "User details" +#~ msgstr "Detalles de usuario" + +#~ msgid "MMM D, YYYY. H:m" +#~ msgstr "MMM D, YYYY. H:m" + +#~ msgid "There are no coordinates in this tweet" +#~ msgstr "Non hai coordinadas neste chío" + +#~ msgid "Error decoding coordinates. Try again later." +#~ msgstr "Erro decodificando as coordenadas. Téntao de novo máis tarde." + +#~ msgid "Invalid buffer" +#~ msgstr "Búfer inválido" + +#~ msgid "{0} new direct messages." +#~ msgstr "{0} novas mensaxes directas." + +#~ msgid "This action is not supported in the buffer yet." +#~ msgstr "Esta acción non se soporta aínda para o búffer." + +#~ msgid "" +#~ "Getting more items cannot be done " +#~ "in this buffer. Use the direct " +#~ "messages buffer instead." +#~ msgstr "" +#~ "Non se poden obter neste búfer. " +#~ "Usa o búfer de mensaxes diretas no" +#~ " seu lugar." + +#~ msgid "Mention" +#~ msgstr "Mención" + +#~ msgid "Mention to %s" +#~ msgstr "Mencionar a %s" + +#~ msgid "{0} new followers." +#~ msgstr "{0} seguidores novos." + +#~ msgid "This action is not supported in the buffer, yet." +#~ msgstr "Esta acción non se soporta aínda para o búfer." + +#~ msgid "&Retweet" +#~ msgstr "&Rechouchío" + +#~ msgid "&Like" +#~ msgstr "&´Gústame" + +#~ msgid "&Unlike" +#~ msgstr "&Non me gusta" + +#~ msgid "View &address" +#~ msgstr "Ver &enderezo" + +#~ msgid "&View lists" +#~ msgstr "&Ver listaxes" + +# | msgid "V&iew likes" +#~ msgid "View likes" +#~ msgstr "&Ver marcados como gústame" + +#~ msgid "Likes timelines" +#~ msgstr "Liñas temporais de marcados como gústame" + +#~ msgid "Followers timelines" +#~ msgstr "Liñas temporais de seguidores" + +#~ msgid "Following timelines" +#~ msgstr "Liñas temporais de seguidores" + +#~ msgid "Lists" +#~ msgstr "Listas" + +#~ msgid "List for {}" +#~ msgstr "Lista para {}" + +#~ msgid "Filters cannot be applied on this buffer" +#~ msgstr "Os filtros non se poden aplicar neste búfer" + +#~ msgid "View item" +#~ msgstr "Ver elemento" + +#~ msgid "Ask" +#~ msgstr "Preguntar" + +#~ msgid "Retweet without comments" +#~ msgstr "Rechiar sen comentarios" + +#~ msgid "Retweet with comments" +#~ msgstr "Rechiar con comentarios" + +#~ msgid "Edit template for tweets. Current template: {}" +#~ msgstr "" + +#~ msgid "Edit template for direct messages. Current template: {}" +#~ msgstr "" + +#~ msgid "Edit template for sent direct messages. Current template: {}" +#~ msgstr "" + +#~ msgid "User has been suspended" +#~ msgstr "O usuario foi suspendido" + +#~ msgid "Information for %s" +#~ msgstr "Detalles para %s" + +#~ msgid "Discarded" +#~ msgstr "Descartado" + +#~ msgid "Username: @%s\n" +#~ msgstr "Nome de usuario: @%s\n" + +#~ msgid "Name: %s\n" +#~ msgstr "Nome: %s\n" + +#~ msgid "Location: %s\n" +#~ msgstr "Ubicación: %s\n" + +#~ msgid "URL: %s\n" +#~ msgstr "URL: %s\n" + +#~ msgid "Bio: %s\n" +#~ msgstr "Descrición: %s\n" + +#~ msgid "Yes" +#~ msgstr "Sí" + +#~ msgid "No" +#~ msgstr "Non" + +#~ msgid "Protected: %s\n" +#~ msgstr "Protexido: %s\n" + +#~ msgid "Relationship: " +#~ msgstr "" + +#~ msgid "You follow {0}. " +#~ msgstr "Segues a {0}. " + +#~ msgid "{0} is following you." +#~ msgstr "{0} estache a seguir." + +#~ msgid "" +#~ "Followers: %s\n" +#~ " Friends: %s\n" +#~ msgstr "" +#~ "Seguidores: %s\n" +#~ " Amigos: %s\n" + +#~ msgid "Verified: %s\n" +#~ msgstr "Verificado: %s\n" + +#~ msgid "Tweets: %s\n" +#~ msgstr "Chíos: %s\n" + +#~ msgid "Likes: %s" +#~ msgstr "Marcados como gústame: %s" + +#~ msgid "You can't ignore direct messages" +#~ msgstr "Non podes ignorar as mensaxes directas" + +#~ msgid "Attaching..." +#~ msgstr "Adxuntando..." + +#~ msgid "Pause" +#~ msgstr "PAUSAR" + +#~ msgid "&Resume" +#~ msgstr "&RETOMAR" + +#~ msgid "Resume" +#~ msgstr "RETOMAR" + +#~ msgid "&Pause" +#~ msgstr "&PAUSAR" + +#~ msgid "&Stop" +#~ msgstr "&Deter" + +#~ msgid "Recording" +#~ msgstr "Grabando" + +#~ msgid "Stopped" +#~ msgstr "Detido" + +#~ msgid "&Record" +#~ msgstr "&Grabar" + +#~ msgid "&Play" +#~ msgstr "&Reproducir" + +#~ msgid "Recoding audio..." +#~ msgstr "Recodificando audio..." + +#~ msgid "Error in file upload: {0}" +#~ msgstr "Erro subindo o ficheiro: {0}" + +#~ msgid "Transferred" +#~ msgstr "Transferido" + +#~ msgid "Total file size" +#~ msgstr "Tamaño total do arquivo" + +#~ msgid "Transfer rate" +#~ msgstr "Velocidade de transferencia" + +#~ msgid "Time left" +#~ msgstr "Tempo restante" + +#~ msgid "Attach audio" +#~ msgstr "Adxuntar audio" + +#~ msgid "&Add an existing file" +#~ msgstr "&Engadir un arquivo existente" + +#~ msgid "&Discard" +#~ msgstr "&Descartar" + +#~ msgid "Upload to" +#~ msgstr "Subir a" + +#~ msgid "Attach" +#~ msgstr "Adxuntar" + +#~ msgid "&Cancel" +#~ msgstr "&Cancelar" + +#~ msgid "Audio Files (*.mp3, *.ogg, *.wav)|*.mp3; *.ogg; *.wav" +#~ msgstr "Arquivos de audio (*.mp3, *.ogg, *.wav)|*.mp3; *.ogg; *.wav" + +#~ msgid "You have to start writing" +#~ msgstr "Tes que comezar a escribir" + +#~ msgid "There are no results in your users database" +#~ msgstr "Non hai resultados na túa base de datos de usuario" + +#~ msgid "Autocompletion only works for users." +#~ msgstr "O autocompletado soamente funciona para usuarios" + +#~ msgid "" +#~ "Updating database... You can close this" +#~ " window now. A message will tell " +#~ "you when the process finishes." +#~ msgstr "" +#~ "Actualizando base de datos... Podes " +#~ "pechar esta ventá agora. Unha mensaxe" +#~ " avisarache cando este proceso remate." + +#~ msgid "Manage Autocompletion database" +#~ msgstr "Xestionar a base de datos do autocompletado de usuarios" + +#~ msgid "Editing {0} users database" +#~ msgstr "Editando a base de dados de usuarios do {0} " + +#~ msgid "Username" +#~ msgstr "Nome de usuario" + +#~ msgid "Add user" +#~ msgstr "Engadir usuario" + +#~ msgid "Remove user" +#~ msgstr "Quitar usuario" + +#~ msgid "Twitter username" +#~ msgstr "Nome de usuario de twitter" + +#~ msgid "Add user to database" +#~ msgstr "Engadir usuario á base de datos" + +#~ msgid "The user does not exist" +#~ msgstr "O usuario non existe" + +#~ msgid "Error!" +#~ msgstr "Erro!" + +#~ msgid "Autocomplete users' settings" +#~ msgstr "Opcións de autocompletado de usuarios" + +#~ msgid "Add followers to database" +#~ msgstr "" + +#~ msgid "Add friends to database" +#~ msgstr "Engadir usuario á base de datos" + +#~ msgid "Updating autocompletion database" +#~ msgstr "Xestionar a base de datos do autocompletado de usuarios" + +#~ msgid "" +#~ "This process will retrieve the users " +#~ "you selected from Twitter, and add " +#~ "them to the user autocomplete database." +#~ " Please note that if there are " +#~ "many users or you have tried to" +#~ " perform this action less than 15 " +#~ "minutes ago, TWBlue may reach a " +#~ "limit in Twitter API calls when " +#~ "trying to load the users into the" +#~ " database. If this happens, we will" +#~ " show you an error, in which " +#~ "case you will have to try this " +#~ "process again in a few minutes. If" +#~ " this process ends with no error, " +#~ "you will be redirected back to the" +#~ " account settings dialog. Do you want" +#~ " to continue?" +#~ msgstr "" + +#~ msgid "TWBlue has imported {} users successfully." +#~ msgstr "" + +#~ msgid "Done" +#~ msgstr "Feito!" + +#~ msgid "Error adding users from Twitter. Please try again in about 15 minutes." +#~ msgstr "" + +#~ msgid "New tweet" +#~ msgstr "Novo chío" + +#~ msgid "Retweet" +#~ msgstr "Rechío" + +#~ msgid "Like a tweet" +#~ msgstr "Gústame un chío" + +#~ msgid "Like/unlike a tweet" +#~ msgstr "Marcar o non marcar un chío como gússtame" + +#~ msgid "Unlike a tweet" +#~ msgstr "Non me gusta un chío" + +#~ msgid "See user details" +#~ msgstr "Ver detalles do usuario" + +#~ msgid "Show tweet" +#~ msgstr "Ver chío" + +#~ msgid "Interact with the currently focused tweet." +#~ msgstr "Interactuar co chío enfocado actualmente." + +#~ msgid "View in Twitter" +#~ msgstr "Ver en Twitter" + +#~ msgid "Edit profile" +#~ msgstr "Editar perfil" + +#~ msgid "Delete a tweet or direct message" +#~ msgstr "Eliminar un chío ou unha mensaxe direita" + +#~ msgid "Add to list" +#~ msgstr "Engadir á listaxe" + +#~ msgid "Remove from list" +#~ msgstr "Quitar de listaxe" + +#~ msgid "Search on twitter" +#~ msgstr "procurar en twitter" + +#~ msgid "Show lists for a specified user" +#~ msgstr "Mostrar listaxes para un usuario específico" + +#~ msgid "Get geolocation" +#~ msgstr "Obter a xeolocalización" + +#~ msgid "Display the tweet's geolocation in a dialog" +#~ msgstr "Amosar a xeolocazación dos chíos nun diálogo" + +#~ msgid "Create a trending topics buffer" +#~ msgstr "Crear un búfer de tendencias" + +#~ msgid "" +#~ "Opens the list manager, which allows " +#~ "you to create, edit, delete and " +#~ "open lists in buffers." +#~ msgstr "" +#~ "Abre o xestor de listas, o que " +#~ "che permite crear, editar, eliminar e" +#~ " abrir listas nos búferes." + +#~ msgid "Opens the list manager" +#~ msgstr "Abre o xestor de listaxes" + +#~ msgid "{account_name} (Twitter)" +#~ msgstr "" + +# | msgid "View in Twitter" +#~ msgid "Twitter" +#~ msgstr "Ver en Twitter" + +#~ msgid "" +#~ "The request to authorize your Twitter" +#~ " account will be opened in your " +#~ "browser. You only need to do this" +#~ " once. Would you like to continue?" +#~ msgstr "" +#~ "A petición para se autorizar na " +#~ "túa conta de Twitter abrirase no " +#~ "navegador. Só necesitas facer isto unha" +#~ " vez. ¿Gostaríache continuar?" + +#~ msgid "" +#~ "TWBlue is unable to authenticate the " +#~ "account for {} in Twitter. It " +#~ "might be due to an invalid or " +#~ "expired token, revoqued access to the" +#~ " application, or after an account " +#~ "reactivation. Please remove the account " +#~ "manually from your Twitter sessions in" +#~ " order to stop seeing this message." +#~ msgstr "" + +#~ msgid "Authentication error for session {}" +#~ msgstr "" + +#~ msgid "Dm to %s " +#~ msgstr "dm a %s" + +#~ msgid "{0}. Quoted tweet from @{1}: {2}" +#~ msgstr "{0}. chío citado dende @{1}: {2}" + +#~ msgid "Unavailable" +#~ msgstr "Non dispoñible" + +#~ msgid "" +#~ "%s (@%s). %s followers, %s friends, " +#~ "%s tweets. Last tweeted %s. Joined " +#~ "Twitter %s" +#~ msgstr "" +#~ "%s (@%s). %s seguidores, %s amigos, " +#~ "%s chíos. último chío %s. Unido a" +#~ " Twitter %s" + +#~ msgid "No description available" +#~ msgstr "Non hai unha descrición dispoñible" + +#~ msgid "private" +#~ msgstr "Privado" + +#~ msgid "public" +#~ msgstr "público" + +#~ msgid "Enter your PIN code here" +#~ msgstr "Introduce o código PIN aquí" + +#~ msgid "Authorising account..." +#~ msgstr "Autorizando conta..." + +#~ msgid "" +#~ "We could not authorice your Twitter " +#~ "account to be used in TWBlue. This" +#~ " might be caused due to an " +#~ "incorrect verification code. Please try " +#~ "to add the session again." +#~ msgstr "" + +#~ msgid "%s failed. Reason: %s" +#~ msgstr "%s fallou. Razón: %s" + +#~ msgid "Deleted account" +#~ msgstr "Nova conta" + +#~ msgid "$sender_display_name, $text $date" +#~ msgstr "" + +#~ msgid "" +#~ "$display_name (@$screen_name). $followers followers," +#~ " $following following, $tweets tweets. " +#~ "Joined Twitter $created_at." +#~ msgstr "" + +#~ msgid "Image description: {}." +#~ msgstr "Descrición de imaxe" + +#~ msgid "RT @{}: {} Quote from @{}: {}" +#~ msgstr "{0}. chío citado dende @{1}: {2}" + +# | msgid "{0}. Quoted tweet from @{1}: {2}" +#~ msgid "RT @{}: {}" +#~ msgstr "{0}. chío citado dende @{1}: {2}" + +# | msgid "{0}. Quoted tweet from @{1}: {2}" +#~ msgid "{} Quote from @{}: {}" +#~ msgstr "{0}. chío citado dende @{1}: {2}" + +#~ msgid "Sorry, you are not authorised to see this status." +#~ msgstr "Síntoo, non estás autorizado para ver este estado." + +#~ msgid "Error {0}" +#~ msgstr "Código de erro {0}" + +#~ msgid "{user_1}, {user_2} and {all_users} more: {text}" +#~ msgstr "" + +#~ msgid "" +#~ "This retweet is over 140 characters. " +#~ "Would you like to post it as " +#~ "a mention to the poster with your" +#~ " comments and a link to the " +#~ "original tweet?" +#~ msgstr "" +#~ "Este rechouchío ten máis de 140 " +#~ "carácteres. ¿Gostaríache publicalo como unha" +#~ " mención ó remitente cos teus " +#~ "comentarios e unha liga ó chío " +#~ "orixinal?" + +#~ msgid "Would you like to add a comment to this tweet?" +#~ msgstr "¿gustaríache engadir un comentario a este chío?" + +#~ msgid "" +#~ "Do you really want to delete this" +#~ " tweet? It will be deleted from " +#~ "Twitter as well." +#~ msgstr "¿Queres de certo eliminar esta mensaxe? Eliminarase tamén de Twitter." + +#~ msgid "Enter the name of the client : " +#~ msgstr "Introduce o nome do cliente" + +#~ msgid "Add client" +#~ msgstr "Endadir cliente" + +#~ msgid "This user has no tweets, so you can't open a timeline for them." +#~ msgstr "" +#~ "Este usuario non ten chíos, así " +#~ "que non podes abrirlle unha liña " +#~ "temporal" + +#~ msgid "" +#~ "This is a protected Twitter user, " +#~ "which means you can't open a " +#~ "timeline using the Streaming API. The" +#~ " user's tweets will not update due" +#~ " to a twitter policy. Do you " +#~ "want to continue?" +#~ msgstr "" +#~ "Este é un usuario protexido de " +#~ "Twitter. Significa que non podes abrir" +#~ " un timeline utilizando a Streaming " +#~ "API. Os chíos dos usuario non se" +#~ " actualizarán debido a unha política " +#~ "de twitter. ¿Queres continuar?" + +#~ msgid "" +#~ "This is a protected user account, " +#~ "you need to follow this user to" +#~ " view their tweets or likes." +#~ msgstr "" +#~ "Esta é unha conta de usuario " +#~ "protexida, necesitas seguir a este " +#~ "usuario para ver os seus chíos ou" +#~ " marcados como gústame." + +#~ msgid "This user has no tweets. {0} can't create a timeline." +#~ msgstr "Este usuario non ten chíos. {0} non podo crear unha liña temporal." + +#~ msgid "This user has no favorited tweets. {0} can't create a timeline." +#~ msgstr "" +#~ "Este usuario non ten chíos favoritos." +#~ " {0} non podo crear unha liña " +#~ "temporal." + +#~ msgid "This user has no followers. {0} can't create a timeline." +#~ msgstr "Este usuario non ten seguedores. {0} non podo crear unha liña temporal." + +#~ msgid "This user has no friends. {0} can't create a timeline." +#~ msgstr "Este usuario non ten amigos. {0} non podo crear unha liña temporal." + +#~ msgid "Geolocation data: {0}" +#~ msgstr "Obter a xeolocalización: {0}" + +#~ msgid "Geo data for this tweet" +#~ msgstr "datos de xeolocalización para este chío" + +#~ msgid "You have been blocked from viewing this content" +#~ msgstr "Bloqueáronte e non podes ver este contido" + +#~ msgid "" +#~ "You have been blocked from viewing " +#~ "someone's content. In order to avoid " +#~ "conflicts with the full session, TWBlue" +#~ " will remove the affected timeline." +#~ msgstr "" +#~ "Alguén bloqueoute e non podes ver " +#~ "o seu contido. Para evitar confrictos" +#~ " en toda a sesión, TWBlue quitará " +#~ "o fío temporal afectado." + +#~ msgid "" +#~ "TWBlue cannot load this timeline because" +#~ " the user has been suspended from " +#~ "Twitter." +#~ msgstr "" +#~ "O TWBlue non pode cargar este fío" +#~ " temporal porque o usuario foi " +#~ "suspendido por Twitter" + +#~ msgid "Do you really want to delete this filter?" +#~ msgstr "¿Realmente queres borrar este filtro?" + +#~ msgid "This filter already exists. Please use a different title" +#~ msgstr "Este filtro xa existe. Por favor usa un título diferente " + +#~ msgid "&Show direct message" +#~ msgstr "&ver mensaxe directa" + +#~ msgid "&Show event" +#~ msgstr "&ver evento" + +#~ msgid "Direct &message" +#~ msgstr "Mensaxe &directa" + +#~ msgid "&Show user" +#~ msgstr "&ver usuarios silenciados" + +#~ msgid "Search topic" +#~ msgstr "Procurar tema" + +#~ msgid "&Tweet about this trend" +#~ msgstr "&twittear sobre esta tendencia" + +#~ msgid "&Show item" +#~ msgstr "&Ver chío" + +#~ msgid "Update &profile" +#~ msgstr "Actualizar &perfil" + +#~ msgid "Event" +#~ msgstr "Evento" + +#~ msgid "Remove event" +#~ msgstr "Eliminar evento" + +#~ msgid "Trending topic" +#~ msgstr "Tendencia" + +#~ msgid "Tweet about this trend" +#~ msgstr "Chiar sobre esta tendencia" + +#~ msgid "" +#~ "Scan account and add friends and " +#~ "followers to the user autocompletion " +#~ "database" +#~ msgstr "" + +#~ msgid "" +#~ "Inverted buffers: The newest tweets will" +#~ " be shown at the beginning while " +#~ "the oldest at the end" +#~ msgstr "" +#~ "Buffers invertidos. Os novos chíos " +#~ "mostraranse ao comezo da listaxe e " +#~ "os máis vellos ao final." + +#~ msgid "Retweet mode" +#~ msgstr "Modo de rechouchío" + +#~ msgid "" +#~ "Load cache for tweets in memory " +#~ "(much faster in big datasets but " +#~ "requires more RAM)" +#~ msgstr "" + +#~ msgid "Ignored clients" +#~ msgstr "Clientes rexeitados" + +#~ msgid "Remove client" +#~ msgstr "Quitar cliente" + +#~ msgid "Indicate audio tweets with sound" +#~ msgstr "Indicar chíos de audio con son" + +#~ msgid "Indicate geotweets with sound" +#~ msgstr "Indicar chíos xeolocalizados con son" + +#~ msgid "Indicate tweets containing images with sound" +#~ msgstr "Indicar chíos que conteñan imaxes con son" + +#~ msgid "API Key for SndUp" +#~ msgstr "Clave da api para SNDUp" + +#~ msgid "Create a filter for this buffer" +#~ msgstr "Crear un filtro para este búfer" + +#~ msgid "Filter title" +#~ msgstr "Título do filtro" + +#~ msgid "Filter by word" +#~ msgstr "Filtrar por palabra" + +#~ msgid "Ignore tweets wich contain the following word" +#~ msgstr "Ignorar chíos que conteñan a seguinte palabra" + +#~ msgid "Ignore tweets without the following word" +#~ msgstr "Ignorar chíos sen a seguinte palabra" + +#~ msgid "word" +#~ msgstr "palabra" + +#~ msgid "Allow retweets" +#~ msgstr "Permitir rechíos" + +#~ msgid "Allow quoted tweets" +#~ msgstr "Permitir chíos citados" + +#~ msgid "Allow replies" +#~ msgstr "Permitir respostas" + +#~ msgid "Use this term as a regular expression" +#~ msgstr "Usa este termo coma expresión regular" + +#~ msgid "Filter by language" +#~ msgstr "Filtrar por lingua" + +#~ msgid "Load tweets in the following languages" +#~ msgstr "Cargar chíos nas seguintes linguas" + +#~ msgid "Ignore tweets in the following languages" +#~ msgstr "Ignorar chíos nas seguintes linguas" + +#~ msgid "Don't filter by language" +#~ msgstr "Non filtrar por lingua" + +#~ msgid "Supported languages" +#~ msgstr "Linguas soportadas" + +#~ msgid "Add selected language to filter" +#~ msgstr "Engadir lingua selecionada para filtrar" + +#~ msgid "Selected languages" +#~ msgstr "Linguas selecionadas" + +#~ msgid "You must define a name for the filter before creating it." +#~ msgstr "" + +#~ msgid "Missing filter name" +#~ msgstr "" + +#~ msgid "Manage filters" +#~ msgstr "Xestionar filtros" + +#~ msgid "Filters" +#~ msgstr "Filtros" + +#~ msgid "Filter" +#~ msgstr "Filtro" + +#~ msgid "Lists manager" +#~ msgstr "Xestor de listaxes" + +#~ msgid "List" +#~ msgstr "Listaxe" + +#~ msgid "Owner" +#~ msgstr "propietario" + +#~ msgid "Members" +#~ msgstr "Membros" + +#~ msgid "mode" +#~ msgstr "Modo" + +#~ msgid "Create a new list" +#~ msgstr "Crear nova listaxe" + +#~ msgid "Open in buffer" +#~ msgstr "Abrir en buffer" + +#~ msgid "Viewing lists for %s" +#~ msgstr "Vendo as listaxes de %s" + +#~ msgid "Subscribe" +#~ msgstr "Darse de alta" + +#~ msgid "Unsubscribe" +#~ msgstr "Darse de baixa" + +#~ msgid "Name (20 characters maximun)" +#~ msgstr "Nome (máximo 20 caracteres)" + +#~ msgid "Mode" +#~ msgstr "Modo" + +#~ msgid "Private" +#~ msgstr "Privado" + +#~ msgid "Editing the list %s" +#~ msgstr "Editando a listaxe %s" + +#~ msgid "Select a list to add the user" +#~ msgstr "Seleciona unha listaxe para engadir o usuario" + +#~ msgid "Add" +#~ msgstr "Engadir" + +#~ msgid "Select a list to remove the user" +#~ msgstr "Seleciona unha listaxe para quitar o usuario" + +#~ msgid "Do you really want to delete this list?" +#~ msgstr "¿Realmente desexas eliminar esta listaxe?" + +#~ msgid "Search on Twitter" +#~ msgstr "procurar en twitter" + +#~ msgid "Tweets" +#~ msgstr "Chíos" + +#~ msgid "&Language for results: " +#~ msgstr "&Lingua para os resultados: " + +#~ msgid "any" +#~ msgstr "calquera" + +#~ msgid "Results &type: " +#~ msgstr "&Tipo de resultados: " + +#~ msgid "Mixed" +#~ msgstr "Misturado" + +#~ msgid "Recent" +#~ msgstr "Recente" + +#~ msgid "Popular" +#~ msgstr "Popular" + +#~ msgid "Details" +#~ msgstr "Detalles" + +#~ msgid "&Go to URL" +#~ msgstr "&Ir á URL" + +#~ msgid "View trending topics" +#~ msgstr "Ver tendencias" + +#~ msgid "Trending topics by" +#~ msgstr "Tendencias por..." + +#~ msgid "Country" +#~ msgstr "País" + +#~ msgid "City" +#~ msgstr "Cidade" + +#~ msgid "&Location" +#~ msgstr "&Ubicación" + +#~ msgid "Update your profile" +#~ msgstr "Actualizar o teu perfil" + +#~ msgid "&Name (50 characters maximum)" +#~ msgstr "&Nome (máximo 50 caracteres)" + +#~ msgid "&Website" +#~ msgstr "Sitio &web" + +#~ msgid "&Bio (160 characters maximum)" +#~ msgstr "&Biografía (máximo 160 caracteres)" + +#~ msgid "Upload a &picture" +#~ msgstr "Subir unha &foto" + +#~ msgid "Upload a picture" +#~ msgstr "Subir unha foto" + +#~ msgid "Discard image" +#~ msgstr "Descartar foto" + +#~ msgid "&Report as spam" +#~ msgstr "Reportar coma s&pam" + +#~ msgid "&Ignore tweets from this client" +#~ msgstr "&Ignorar chíos deste cliente" + +#~ msgid "&Tweets" +#~ msgstr "&Chíos" + +#~ msgid "&Likes" +#~ msgstr "&Gústame" + +#~ msgid "F&riends" +#~ msgstr "&Amigos" + +#~ msgid "Delete attachment" +#~ msgstr "Quitar adxuntos" + +#~ msgid "Added Tweets" +#~ msgstr "Enviar chíos" + +#~ msgid "Delete tweet" +#~ msgstr "Enviar chíos" + +#~ msgid "A&dd..." +#~ msgstr "" + +#~ msgid "Add t&weet" +#~ msgstr "Gústame un chío" + +#~ msgid "&Attach audio..." +#~ msgstr "&Engadir audio..." + +#~ msgid "Sen&d" +#~ msgstr "En&viar" + +#~ msgid "Video files (*.mp4)|*.mp4" +#~ msgstr "" + +#~ msgid "" +#~ "It is not possible to add more " +#~ "attachments. Please make sure your tweet" +#~ " complies with Twitter'S attachment rules." +#~ " You can add only one video or" +#~ " GIF in every tweet, and a " +#~ "maximum of 4 photos." +#~ msgstr "" + +#~ msgid "&Mention to all" +#~ msgstr "&Mencionar a todos" + +#~ msgid "&Recipient" +#~ msgstr "&Destinatario" + +#~ msgid "Tweet - %i characters " +#~ msgstr "Chío - %i caracteres" + +#~ msgid "Retweets: " +#~ msgstr "Rechouchíos: " + +#~ msgid "Likes: " +#~ msgstr "Marcados como gústame:" + +#~ msgid "View" +#~ msgstr "Ver" + +#~ msgid "Item" +#~ msgstr "Elemento" + +#~ msgid "&Expand URL" +#~ msgstr "&Expandir URL" + +#~ msgid "Participation time (in days)" +#~ msgstr "" + +#~ msgid "&Open in Twitter" +#~ msgstr "&Abrir en Twitter" + +#~ msgid "&Show tweet" +#~ msgstr "&Ver chío" + +#~ msgid "Translated" +#~ msgstr "Traducido" + +#~ msgid "Afrikaans" +#~ msgstr "Africano" + +#~ msgid "Albanian" +#~ msgstr "albanés" + +#~ msgid "Amharic" +#~ msgstr "amárico" + +#~ msgid "Arabic" +#~ msgstr "árabe" + +#~ msgid "Armenian" +#~ msgstr "armenio" + +#~ msgid "Azerbaijani" +#~ msgstr "acerí" + +#~ msgid "Basque" +#~ msgstr "eusquera" + +#~ msgid "Belarusian" +#~ msgstr "bielorruso" + +#~ msgid "Bengali" +#~ msgstr "bengalí" + +#~ msgid "Bihari" +#~ msgstr "Bihari" + +#~ msgid "Bulgarian" +#~ msgstr "búlgaro" + +#~ msgid "Burmese" +#~ msgstr "virmano" + +#~ msgid "Catalan" +#~ msgstr "catalán" + +#~ msgid "Cherokee" +#~ msgstr "cheroqui" + +#~ msgid "Chinese" +#~ msgstr "chinés" + +#~ msgid "Chinese_simplified" +#~ msgstr "chinés simplificado" + +#~ msgid "Chinese_traditional" +#~ msgstr "chinés tradicional" + +#~ msgid "Croatian" +#~ msgstr "croata" + +#~ msgid "Czech" +#~ msgstr "checo" + +#~ msgid "Dhivehi" +#~ msgstr "Dhivehi" + +#~ msgid "Esperanto" +#~ msgstr "esperanto" + +#~ msgid "Estonian" +#~ msgstr "estonio" + +#~ msgid "Filipino" +#~ msgstr "filipino" + +#~ msgid "Galician" +#~ msgstr "galego" + +#~ msgid "Georgian" +#~ msgstr "Xeorxiano" + +#~ msgid "Greek" +#~ msgstr "grego" + +#~ msgid "Guarani" +#~ msgstr "guaraní" + +#~ msgid "Gujarati" +#~ msgstr "Gujarati" + +#~ msgid "Hebrew" +#~ msgstr "hebreo" + +#~ msgid "Hindi" +#~ msgstr "indi" + +#~ msgid "Icelandic" +#~ msgstr "islandés" + +#~ msgid "Indonesian" +#~ msgstr "indonesio" + +#~ msgid "Inuktitut" +#~ msgstr "Inuktitut" + +#~ msgid "Irish" +#~ msgstr "irlandés (gaélico)" + +#~ msgid "Kannada" +#~ msgstr "Canarés" + +#~ msgid "Kazakh" +#~ msgstr "cazaxo" + +#~ msgid "Khmer" +#~ msgstr "Cambodia" + +#~ msgid "Kurdish" +#~ msgstr "curdo" + +#~ msgid "Kyrgyz" +#~ msgstr "Quirguiz" + +#~ msgid "Laothian" +#~ msgstr "Lao" + +#~ msgid "Latvian" +#~ msgstr "letón" + +#~ msgid "Lithuanian" +#~ msgstr "lituano" + +#~ msgid "Macedonian" +#~ msgstr "macedonio" + +#~ msgid "Malay" +#~ msgstr "malaio" + +#~ msgid "Malayalam" +#~ msgstr "Malaialam" + +#~ msgid "Maltese" +#~ msgstr "maltés" + +#~ msgid "Marathi" +#~ msgstr "maratí" + +#~ msgid "Mongolian" +#~ msgstr "mongol" + +#~ msgid "Nepali" +#~ msgstr "nepalí" + +#~ msgid "Norwegian" +#~ msgstr "noruegués" + +#~ msgid "Oriya" +#~ msgstr "Oriya" + +#~ msgid "Pashto" +#~ msgstr "Pastú" + +#~ msgid "Persian" +#~ msgstr "persa" + +#~ msgid "Punjabi" +#~ msgstr "Punjabi" + +#~ msgid "Romanian" +#~ msgstr "rumano" + +#~ msgid "Sanskrit" +#~ msgstr "sánscrito" + +#~ msgid "Serbian" +#~ msgstr "serbio" + +#~ msgid "Sindhi" +#~ msgstr "Sindhi" + +#~ msgid "Sinhalese" +#~ msgstr "Cingalés" + +#~ msgid "Slovak" +#~ msgstr "eslovaco" + +#~ msgid "Slovenian" +#~ msgstr "esloveno" + +#~ msgid "Swahili" +#~ msgstr "swahili" + +#~ msgid "Swedish" +#~ msgstr "sueco" + +#~ msgid "Tajik" +#~ msgstr "Tajik" + +#~ msgid "Tamil" +#~ msgstr "tamil" + +#~ msgid "Tagalog" +#~ msgstr "Tagalo" + +#~ msgid "Telugu" +#~ msgstr "Telugú" + +#~ msgid "Thai" +#~ msgstr "tailandés" + +#~ msgid "Tibetan" +#~ msgstr "tibetano" + +#~ msgid "Ukrainian" +#~ msgstr "Ucraíno" + +#~ msgid "Urdu" +#~ msgstr "Urdu" + +#~ msgid "Uzbek" +#~ msgstr "uzbeco" + +#~ msgid "Uighur" +#~ msgstr "Uighur" + +#~ msgid "Vietnamese" +#~ msgstr "vietnamita" + +#~ msgid "Welsh" +#~ msgstr "galés" + +#~ msgid "Yiddish" +#~ msgstr "Yiddish" + +#~ msgid "" +#~ "TWBlue has detected that you're running" +#~ " windows 10 and has changed the " +#~ "default keymap to the Windows 10 " +#~ "keymap. It means that some keyboard " +#~ "shorcuts could be different. Please " +#~ "check the keystroke editor by pressing" +#~ " Alt+Win+K to see all available " +#~ "keystrokes for this keymap." +#~ msgstr "" +#~ "TWBlue detectou que usas o Windows " +#~ "10 e cambiou o mapa dò teclado " +#~ "predeterminado ao mapa de teclado do " +#~ "Windows 10. Esto significa que algunhas" +#~ " combinacións de teclas poderían ser " +#~ "iferentes. Preme alt+win+k para abrir o" +#~ " editor de combinacións de teclado e" +#~ " ver todas as combinacións dispoñibles " +#~ "neste mapa de teclado." + +#~ msgid "Boosts: " +#~ msgstr "" + +#~ msgid "Favorites: " +#~ msgstr "" + +#~ msgid "Date: " +#~ msgstr "Data:" + +#~ msgid "Community for {}" +#~ msgstr "" + +#~ msgid "Run {0} at Windows startup" +#~ msgstr "Executar {0} no arranque do Windows" + +#~ msgid "Use Codeofdusk's longtweet handlers (may decrease client performance)" +#~ msgstr "" +#~ "Utilizar lectura completa de chíos " +#~ "longos (pode disminuir o rendemento do" +#~ " cliente)" + +#~ msgid "Remember state for mention all and long tweet" +#~ msgstr "Lembrar estado para mencionar a todos e chío longo" + +#~ msgid "Bio: " +#~ msgstr "" + +#~ msgid "Joined at: " +#~ msgstr "" + +#~ msgid "Field {} - Label: " +#~ msgstr "" + +#~ msgid "{} posts. Click to open posts timeline" +#~ msgstr "" + +#~ msgid "{} following. Click to open Following timeline" +#~ msgstr "" + +#~ msgid "{} followers. Click to open followers timeline" +#~ msgstr "" + +#~ msgid "Display Name" +#~ msgstr "" + +#~ msgid "Bio" +#~ msgstr "" + +#~ msgid "Change header" +#~ msgstr "" + +#~ msgid "Change avatar" +#~ msgstr "" + +#~ msgid "Field {}: Label" +#~ msgstr "" + +#~ msgid "Add following to database" +#~ msgstr "" + +#~ msgid "Read long posts in GUI" +#~ msgstr "" + +#~ msgid "LibreTranslate API URL: " +#~ msgstr "" + +#~ msgid "LibreTranslate API Key (optional): " +#~ msgstr "" + +#~ msgid "DeepL API Key: " +#~ msgstr "" + +#~ msgid "" +#~ "Scan account and add followers and " +#~ "following users to the user " +#~ "autocompletion database" +#~ msgstr "" + +#~ msgid "" +#~ "Read preferences from instance (default " +#~ "visibility when publishing and displaying " +#~ "sensitive content)" +#~ msgstr "" + +#~ msgid "Ask confirmation before boosting a post" +#~ msgstr "" + +#~ msgid "hide emojis in usernames" +#~ msgstr "" + +#~ msgid "" +#~ "Load cache for items in memory " +#~ "(much faster in big datasets but " +#~ "requires more RAM)" +#~ msgstr "" + diff --git a/srcantiguo/locales/he_il/LC_MESSAGES/twblue.mo b/srcantiguo/locales/he_il/LC_MESSAGES/twblue.mo new file mode 100644 index 00000000..9e41e2f3 Binary files /dev/null and b/srcantiguo/locales/he_il/LC_MESSAGES/twblue.mo differ diff --git a/srcantiguo/locales/he_il/LC_MESSAGES/twblue.po b/srcantiguo/locales/he_il/LC_MESSAGES/twblue.po new file mode 100644 index 00000000..bcb1abe7 --- /dev/null +++ b/srcantiguo/locales/he_il/LC_MESSAGES/twblue.po @@ -0,0 +1,4741 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2018 ORGANIZATION +# FIRST AUTHOR , 2018. +# +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: manuel@manuelcortez.net\n" +"POT-Creation-Date: 2025-04-13 01:18+0000\n" +"PO-Revision-Date: 2022-12-20 22:43+0000\n" +"Last-Translator: Anonymous \n" +"Language: he_il\n" +"Language-Team: Hebrew (Israel) " +"\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.17.0\n" + +#: languageHandler.py:61 +msgctxt "languageName" +msgid "Amharic" +msgstr "" + +#: languageHandler.py:62 +msgctxt "languageName" +msgid "Aragonese" +msgstr "" + +#: languageHandler.py:63 +msgctxt "languageName" +msgid "Spanish" +msgstr "" + +#: languageHandler.py:64 +msgctxt "languageName" +msgid "Portuguese" +msgstr "" + +#: languageHandler.py:65 +msgctxt "languageName" +msgid "Russian" +msgstr "" + +#: languageHandler.py:66 +msgctxt "languageName" +msgid "italian" +msgstr "" + +#: languageHandler.py:67 +msgctxt "languageName" +msgid "Turkey" +msgstr "" + +#: languageHandler.py:68 +msgctxt "languageName" +msgid "Galician" +msgstr "" + +#: languageHandler.py:69 +msgctxt "languageName" +msgid "Catala" +msgstr "" + +#: languageHandler.py:70 +msgctxt "languageName" +msgid "Vasque" +msgstr "" + +#: languageHandler.py:71 +msgctxt "languageName" +msgid "polish" +msgstr "" + +#: languageHandler.py:72 +msgctxt "languageName" +msgid "Arabic" +msgstr "" + +#: languageHandler.py:73 +msgctxt "languageName" +msgid "Nepali" +msgstr "" + +#: languageHandler.py:74 +msgctxt "languageName" +msgid "Serbian (Latin)" +msgstr "" + +#: languageHandler.py:75 +msgctxt "languageName" +msgid "Japanese" +msgstr "" + +#: languageHandler.py:99 +msgid "User default" +msgstr "" + +#: main.py:105 +msgid "https://twblue.mcvsoftware.com/donate" +msgstr "" + +#: main.py:118 +#, python-brace-format +msgid "" +"{0} is already running. Close the other instance before starting this " +"one. If you're sure that {0} isn't running, try deleting the file at {1}." +" If you're unsure of how to do this, contact the {0} developers." +msgstr "" + +#: sound.py:148 +msgid "Playing..." +msgstr "" + +#: sound.py:161 +msgid "Stopped." +msgstr "" + +#: controller/mainController.py:261 +msgid "Ready" +msgstr "מוכן" + +#: controller/mainController.py:369 controller/mainController.py:654 +#: controller/mainController.py:673 controller/mainController.py:692 +#: controller/mainController.py:711 +msgid "" +"No session is currently in focus. Focus a session with the next or " +"previous session shortcut." +msgstr "" +"אין פעילות בפוקוס כרגע. התמקד על פעילות בעזרת אחד מקיצורי המקשים המיועדים" +" לכך. " + +#: controller/mainController.py:373 +msgid "Empty buffer." +msgstr "חוצץ ריק" + +#: controller/mainController.py:380 +#, python-brace-format +msgid "{0} not found." +msgstr "][ לא נמצא" + +#: controller/mainController.py:702 controller/mainController.py:721 +#, python-format +msgid "%s, %s of %s" +msgstr "" + +#: controller/mainController.py:704 controller/mainController.py:723 +#: controller/mainController.py:751 controller/mainController.py:779 +#, python-format +msgid "%s. Empty" +msgstr "%s. ריק" + +#: controller/mainController.py:739 controller/mainController.py:743 +#: controller/mainController.py:767 +#, python-brace-format +msgid "{0}: This account is not logged into Twitter." +msgstr "]0[ חשבון זה לא מחובר לטוויטר " + +#: controller/mainController.py:749 controller/mainController.py:777 +#, python-format +msgid "%s. %s, %s of %s" +msgstr "" + +#: controller/mainController.py:771 +#, python-brace-format +msgid "{0}: This account is not logged into twitter." +msgstr "]0[ חשבון זה לא מחובר לtwitter" + +#: controller/mainController.py:910 controller/mainController.py:926 +msgid "An error happened while trying to connect to the server. Please try later." +msgstr "" + +#: controller/mainController.py:957 +msgid "The auto-reading of new tweets is enabled for this buffer" +msgstr "הקריאה האוטומטית של ציוצים חדשים פעילה עבור חוצץ זה" + +#: controller/mainController.py:960 +msgid "The auto-reading of new tweets is disabled for this buffer" +msgstr "הקריאה האוטומטית של ציוצים חדשים כבויה עבור חוצץ זה" + +#: controller/mainController.py:967 +msgid "Session mute on" +msgstr "השתקת הפעילות פעילה" + +#: controller/mainController.py:970 +msgid "Session mute off" +msgstr "השתקת הפעילות כבויה " + +#: controller/mainController.py:979 +msgid "Buffer mute on" +msgstr "השתקת חוצץ פעילה" + +#: controller/mainController.py:982 +msgid "Buffer mute off" +msgstr "השתקת חוצץ כבויה " + +#: controller/mainController.py:999 +msgid "Copied" +msgstr "הועתק" + +#: controller/mainController.py:1019 +msgid "Unable to update this buffer." +msgstr "לא הייתה אפשרות לעדכן את החוצץ הזה" + +#: controller/mainController.py:1021 +msgid "Updating buffer..." +msgstr "מעדכן חוצץ..." + +#: controller/mainController.py:1024 +#, python-brace-format +msgid "{0} items retrieved" +msgstr "]0[ פריטים אוחזרו" + +#: controller/buffers/mastodon/base.py:137 controller/mainController.py:1028 +#: controller/mastodon/handler.py:98 controller/mastodon/handler.py:241 +#, python-brace-format +msgid "Timeline for {}" +msgstr "ציר הזמן של ][" + +#: controller/buffers/mastodon/users.py:93 controller/mainController.py:1030 +#: controller/mastodon/handler.py:100 controller/mastodon/handler.py:255 +#, python-brace-format +msgid "Followers for {}" +msgstr "עוקבים ל][" + +#: controller/mainController.py:1032 +#, python-brace-format +msgid "Friends for {}" +msgstr "חברים ל][" + +# | msgid "Followers for {}" +#: controller/buffers/mastodon/users.py:95 controller/mainController.py:1034 +#: controller/mastodon/handler.py:102 controller/mastodon/handler.py:269 +#, fuzzy, python-brace-format +msgid "Following for {}" +msgstr "עוקבים ל][" + +#: controller/messages.py:18 +#, fuzzy +msgid "Translated" +msgstr "תורגם" + +#: controller/settings.py:60 +msgid "System default" +msgstr "" + +#: controller/settings.py:60 +msgid "HTTP" +msgstr "" + +#: controller/settings.py:60 +msgid "SOCKS v4" +msgstr "" + +#: controller/settings.py:60 +msgid "SOCKS v4 with DNS support" +msgstr "" + +#: controller/settings.py:60 +msgid "SOCKS v5" +msgstr "" + +#: controller/settings.py:60 +msgid "SOCKS v5 with DNS support" +msgstr "" + +#: controller/userAlias.py:31 +#, fuzzy, python-brace-format +msgid "Edit alias for {}" +msgstr "רשימה ל][" + +#: controller/buffers/base/base.py:91 +#: controller/buffers/mastodon/conversations.py:237 +#: controller/buffers/mastodon/search.py:80 +msgid "This action is not supported for this buffer" +msgstr "פעולה זו אינה נתמכת בחוצץ זה " + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:70 +#: controller/mastodon/settings.py:194 +msgid "Home" +msgstr "דף הבית" + +#: controller/buffers/mastodon/base.py:52 +#: controller/buffers/mastodon/community.py:22 +#: controller/mastodon/handler.py:72 controller/mastodon/handler.py:114 +#: controller/mastodon/settings.py:195 +msgid "Local" +msgstr "" + +#: controller/buffers/mastodon/base.py:52 +#: controller/buffers/mastodon/community.py:22 +#: controller/mastodon/handler.py:74 controller/mastodon/settings.py:196 +msgid "Federated" +msgstr "" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:76 +#: controller/mastodon/settings.py:197 +msgid "Mentions" +msgstr "איזכורים" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:84 +#: controller/mastodon/settings.py:201 +msgid "Bookmarks" +msgstr "" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:78 +msgid "Direct messages" +msgstr "הודעות פרטיות" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:80 +#: controller/mastodon/settings.py:199 +msgid "Sent" +msgstr "" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:82 +#: controller/mastodon/settings.py:200 wxUI/dialogs/mastodon/postDialogs.py:229 +msgid "Favorites" +msgstr "" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:86 +#: controller/mastodon/settings.py:202 +msgid "Followers" +msgstr "עוקבים" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:88 +#: controller/mastodon/settings.py:203 +msgid "Following" +msgstr "" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:92 +#: controller/mastodon/settings.py:204 +msgid "Blocked users" +msgstr "משתמשים חסומים" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:90 +#: controller/mastodon/settings.py:205 +msgid "Muted users" +msgstr "משתמשים מושתקים" + +# | msgid "Location: %s\n" +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:94 +#: controller/mastodon/settings.py:206 +#: wxUI/dialogs/mastodon/filters/create_filter.py:80 +#, fuzzy +msgid "Notifications" +msgstr "מיקום: %s\n" + +#: controller/buffers/mastodon/base.py:58 +#, fuzzy, python-brace-format +msgid "{username}'s timeline" +msgstr "צירי זמן אהובים " + +#: controller/buffers/mastodon/base.py:60 +#, python-brace-format +msgid "{username}'s followers" +msgstr "" + +#: controller/buffers/mastodon/base.py:62 +#, fuzzy, python-brace-format +msgid "{username}'s following" +msgstr "צירי זמן אהובים " + +#: controller/buffers/mastodon/base.py:64 +msgid "Unknown buffer" +msgstr "" + +#: controller/buffers/mastodon/base.py:67 +#: controller/buffers/mastodon/base.py:645 wxUI/buffers/mastodon/base.py:24 +#: wxUI/buffers/mastodon/conversationList.py:24 +#: wxUI/buffers/mastodon/notifications.py:22 wxUI/buffers/mastodon/user.py:18 +#: wxUI/dialogs/mastodon/postDialogs.py:5 +#: wxUI/dialogs/mastodon/postDialogs.py:194 wxUI/sysTrayIcon.py:35 +msgid "Post" +msgstr "" + +# | msgid "Write the tweet here" +#: controller/buffers/mastodon/base.py:68 +#: controller/buffers/mastodon/base.py:646 +#, fuzzy +msgid "Write your post here" +msgstr "כתוב את הציוץ כאן" + +#: controller/buffers/mastodon/base.py:153 +#, python-brace-format +msgid "New post in {0}" +msgstr "" + +#: controller/buffers/mastodon/base.py:159 +#, python-brace-format +msgid "{0} new posts in {1}." +msgstr "" + +#: controller/buffers/mastodon/base.py:198 +#: controller/buffers/mastodon/community.py:90 +#: controller/buffers/mastodon/conversations.py:100 +#: controller/buffers/mastodon/mentions.py:82 +#: controller/buffers/mastodon/users.py:139 +#, python-format +msgid "%s items retrieved" +msgstr "%s פריטים אוחזרו" + +#: controller/buffers/mastodon/base.py:216 +#: controller/buffers/mastodon/users.py:206 +msgid "This buffer is not a timeline; it can't be deleted." +msgstr "החוצץ הזה אינו ציר זמן, הוא לא יכול להימחק" + +# | msgid "Conversation with {0}" +#: controller/buffers/mastodon/base.py:346 +#: controller/buffers/mastodon/base.py:384 +#, fuzzy, python-brace-format +msgid "Conversation with {}" +msgstr "שיחה עם ]0[" + +# | msgid "Write the tweet here" +#: controller/buffers/mastodon/base.py:347 +#: controller/buffers/mastodon/base.py:385 +#: controller/buffers/mastodon/conversations.py:181 +#: controller/buffers/mastodon/notifications.py:122 +#: controller/buffers/mastodon/users.py:52 +#, fuzzy +msgid "Write your message here" +msgstr "כתוב את הציוץ כאן" + +# | msgid "Reply to {arg0}" +#: controller/buffers/mastodon/base.py:349 +#, fuzzy, python-brace-format +msgid "Reply to {}" +msgstr "השב ל[arge0]" + +# | msgid "Write the tweet here" +#: controller/buffers/mastodon/base.py:350 +#, fuzzy +msgid "Write your reply here" +msgstr "כתוב את הציוץ כאן" + +#: controller/buffers/mastodon/base.py:412 +#, fuzzy +msgid "This action is not supported on conversations." +msgstr "פעולה זו אינה נתמכת בחוצץ זה " + +#: controller/buffers/mastodon/base.py:477 +msgid "Opening URL..." +msgstr "פותח כתובת..." + +#: controller/buffers/mastodon/base.py:490 +msgid "You can delete only your own posts." +msgstr "" + +#: controller/buffers/mastodon/base.py:519 +msgid "Opening item in web browser..." +msgstr "" + +#: controller/buffers/mastodon/base.py:527 +#: controller/buffers/mastodon/base.py:547 +msgid "Adding to favorites..." +msgstr "" + +#: controller/buffers/mastodon/base.py:534 +#: controller/buffers/mastodon/base.py:549 +msgid "Removing from favorites..." +msgstr "" + +#: controller/buffers/mastodon/base.py:544 +#: controller/buffers/mastodon/base.py:559 +#: controller/buffers/mastodon/base.py:573 +#: controller/buffers/mastodon/conversations.py:213 +msgid "No status found with that ID" +msgstr "" + +#: controller/buffers/mastodon/base.py:562 +msgid "Adding to bookmarks..." +msgstr "" + +#: controller/buffers/mastodon/base.py:564 +msgid "Removing from bookmarks..." +msgstr "" + +#: controller/buffers/mastodon/base.py:586 +#, python-brace-format +msgid "Picture {0}" +msgstr "תמונה ]0[" + +#: controller/buffers/mastodon/base.py:587 +msgid "Select the picture" +msgstr "בחר את התמונה" + +#: controller/buffers/mastodon/base.py:610 +msgid "Unable to extract text" +msgstr "אין אפשרות לחלץ טקסט " + +#: controller/buffers/mastodon/base.py:612 +msgid "OCR Result" +msgstr "" + +#: controller/buffers/mastodon/base.py:627 +msgid "this poll no longer exists." +msgstr "" + +#: controller/buffers/mastodon/base.py:630 +msgid "This poll has already expired." +msgstr "" + +#: controller/buffers/mastodon/base.py:633 +msgid "You have already voted on this poll." +msgstr "" + +#: controller/buffers/mastodon/base.py:642 +#, fuzzy +msgid "Sending vote..." +msgstr "פותח כתובת..." + +# | msgid "Conversation with {0}" +#: controller/buffers/mastodon/conversations.py:180 +#, fuzzy, python-brace-format +msgid "Reply to conversation with {}" +msgstr "שיחה עם ]0[" + +# | msgid "Conversation with {0}" +#: controller/buffers/mastodon/notifications.py:121 +#: controller/buffers/mastodon/users.py:51 +#, fuzzy, python-brace-format +msgid "New conversation with {}" +msgstr "שיחה עם ]0[" + +#: controller/buffers/mastodon/notifications.py:151 +msgid "Notification dismissed." +msgstr "" + +#: controller/buffers/mastodon/users.py:110 +#, fuzzy +msgid "There are no more items in this buffer." +msgstr "אין מונחים בציוץ זה" + +#: controller/mastodon/handler.py:30 wxUI/dialogs/mastodon/updateProfile.py:35 +msgid "Update Profile" +msgstr "" + +#: controller/mastodon/handler.py:31 wxUI/dialogs/mastodon/search.py:10 +#: wxUI/view.py:19 +msgid "&Search" +msgstr "" + +#: controller/mastodon/handler.py:33 wxUI/view.py:22 +msgid "Manage user aliases" +msgstr "" + +#: controller/mastodon/handler.py:35 controller/mastodon/handler.py:59 +#: wxUI/view.py:30 +msgid "&Post" +msgstr "" + +#: controller/mastodon/handler.py:36 wxUI/dialogs/mastodon/menus.py:9 +#: wxUI/dialogs/mastodon/menus.py:37 wxUI/view.py:31 +msgid "Re&ply" +msgstr "" + +#: controller/mastodon/handler.py:37 wxUI/dialogs/mastodon/menus.py:7 +#: wxUI/dialogs/mastodon/menus.py:35 wxUI/view.py:32 +msgid "&Boost" +msgstr "" + +#: controller/mastodon/handler.py:38 wxUI/dialogs/mastodon/menus.py:11 +#: wxUI/dialogs/mastodon/menus.py:39 wxUI/view.py:33 +msgid "&Add to favorites" +msgstr "" + +#: controller/mastodon/handler.py:39 +msgid "Remove from favorites" +msgstr "" + +#: controller/mastodon/handler.py:40 wxUI/dialogs/mastodon/menus.py:21 +#: wxUI/dialogs/mastodon/menus.py:49 wxUI/view.py:35 +msgid "&Show post" +msgstr "" + +#: controller/mastodon/handler.py:41 wxUI/view.py:36 +msgid "View conversa&tion" +msgstr "" + +#: controller/mastodon/handler.py:42 wxUI/view.py:37 +msgid "Read text in picture" +msgstr "" + +#: controller/mastodon/handler.py:43 wxUI/dialogs/mastodon/menus.py:25 +#: wxUI/view.py:39 +msgid "&Delete" +msgstr "" + +#: controller/mastodon/handler.py:45 wxUI/view.py:43 +msgid "&Actions..." +msgstr "" + +#: controller/mastodon/handler.py:46 wxUI/view.py:44 +msgid "&View timeline..." +msgstr "" + +#: controller/mastodon/handler.py:47 wxUI/view.py:45 +msgid "Direct me&ssage" +msgstr "" + +#: controller/mastodon/handler.py:48 wxUI/view.py:46 +msgid "Add a&lias" +msgstr "" + +#: controller/mastodon/handler.py:51 +msgid "Show user profile" +msgstr "" + +#: controller/mastodon/handler.py:54 +msgid "Create c&ommunity timeline" +msgstr "" + +#: controller/mastodon/handler.py:55 wxUI/view.py:57 +msgid "Create a &filter" +msgstr "" + +#: controller/mastodon/handler.py:56 wxUI/view.py:58 +msgid "&Manage filters" +msgstr "" + +#: controller/mastodon/handler.py:95 +msgid "Timelines" +msgstr "צירי זמן" + +#: controller/mastodon/handler.py:107 +msgid "Searches" +msgstr "חיפושים" + +#: controller/mastodon/handler.py:110 controller/mastodon/handler.py:191 +#: controller/mastodon/handler.py:196 +#, python-brace-format +msgid "Search for {}" +msgstr "חפש את][ " + +#: controller/mastodon/handler.py:111 +msgid "Communities" +msgstr "" + +#: controller/mastodon/handler.py:114 +#, fuzzy +msgid "federated" +msgstr "צירי זמן אהובים " + +#: controller/mastodon/handler.py:143 +#, python-brace-format +msgid "Conversation with {0}" +msgstr "שיחה עם ]0[" + +#: controller/mastodon/handler.py:299 +msgid "Add an user alias" +msgstr "" + +#: controller/mastodon/handler.py:311 +#, python-brace-format +msgid "Alias has been set correctly for {}." +msgstr "" + +#: controller/mastodon/handler.py:342 +msgid "Update profile" +msgstr "" + +#: controller/mastodon/messages.py:115 +#, python-format +msgid "%s - %s of %d characters" +msgstr "" + +#: controller/mastodon/messages.py:239 +#, python-brace-format +msgid "Poll with {} options" +msgstr "" + +# | msgid "List for {}" +#: controller/mastodon/messages.py:272 +#, fuzzy, python-brace-format +msgid "Post from {}" +msgstr "רשימה ל][" + +#: controller/mastodon/messages.py:276 sessions/mastodon/templates.py:82 +#: wxUI/dialogs/mastodon/postDialogs.py:49 +msgid "Public" +msgstr "" + +#: controller/mastodon/messages.py:276 sessions/mastodon/templates.py:82 +#: wxUI/dialogs/mastodon/postDialogs.py:49 +msgid "Not listed" +msgstr "" + +# | msgid "Followers" +#: controller/mastodon/messages.py:276 +#, fuzzy +msgid "followers only" +msgstr "עוקבים" + +#: controller/mastodon/messages.py:276 sessions/mastodon/templates.py:82 +#: wxUI/dialogs/mastodon/postDialogs.py:49 +msgid "Direct" +msgstr "" + +#: controller/mastodon/messages.py:283 +msgid "Remote instance" +msgstr "" + +# | msgid "Conversation with {0}" +#: controller/mastodon/messages.py:291 controller/mastodon/messages.py:319 +#, fuzzy +msgid "Unmute conversation" +msgstr "שיחה עם ]0[" + +# | msgid "Conversation with {0}" +#: controller/mastodon/messages.py:315 wxUI/dialogs/mastodon/postDialogs.py:237 +#, fuzzy +msgid "Mute conversation" +msgstr "שיחה עם ]0[" + +# | msgid "Conversation with {0}" +#: controller/mastodon/messages.py:316 +#, fuzzy +msgid "Conversation unmuted." +msgstr "שיחה עם ]0[" + +# | msgid "Conversation with {0}" +#: controller/mastodon/messages.py:320 +#, fuzzy +msgid "Conversation muted." +msgstr "שיחה עם ]0[" + +#: controller/mastodon/messages.py:331 +msgid "people who boosted this post" +msgstr "" + +#: controller/mastodon/messages.py:336 +msgid "people who favorited this post" +msgstr "" + +#: controller/mastodon/messages.py:342 +msgid "Link copied to clipboard." +msgstr "" + +#: controller/mastodon/settings.py:82 +#, python-format +msgid "Account settings for %s" +msgstr "הגדרות חשבון ל%s" + +#: controller/mastodon/settings.py:92 +#, python-brace-format +msgid "Edit template for posts. Current template: {}" +msgstr "" + +#: controller/mastodon/settings.py:101 +#, python-brace-format +msgid "Edit template for conversations. Current template: {}" +msgstr "" + +#: controller/mastodon/settings.py:110 +#, python-brace-format +msgid "Edit template for persons. Current template: {}" +msgstr "" + +#: controller/mastodon/settings.py:198 +msgid "Direct Messages" +msgstr "הודעות פרטיות" + +#: controller/mastodon/filters/create_filter.py:75 +#, python-brace-format +msgid "Update Filter: {}" +msgstr "" + +#: controller/mastodon/filters/manage_filters.py:57 +#: wxUI/dialogs/mastodon/filters/create_filter.py:90 +msgid "Never" +msgstr "" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:4 +msgid "Audio tweet." +msgstr "" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:5 +msgid "User timeline buffer created." +msgstr "" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:6 +msgid "Buffer destroied." +msgstr "" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:7 +msgid "Direct message received." +msgstr "" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:8 +msgid "Direct message sent." +msgstr "" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:9 +msgid "Error." +msgstr "" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:10 +msgid "Tweet liked." +msgstr "" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:11 +msgid "Likes buffer updated." +msgstr "" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:12 +msgid "Geotweet." +msgstr "" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:13 +msgid "Tweet contains one or more images" +msgstr "" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:14 +msgid "Boundary reached." +msgstr "" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:15 +msgid "List updated." +msgstr "" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:16 +msgid "Too many characters." +msgstr "" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:17 +msgid "Mention received." +msgstr "" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:18 +msgid "New event." +msgstr "" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:19 +#, python-brace-format +msgid "{0} is ready." +msgstr "" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:20 +msgid "Mention sent." +msgstr "" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:21 +msgid "Tweet retweeted." +msgstr "" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:22 +msgid "Search buffer updated." +msgstr "" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:23 +msgid "Tweet received." +msgstr "" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:24 +msgid "Tweet sent." +msgstr "" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:25 +msgid "Trending topics buffer updated." +msgstr "" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:26 +msgid "New tweet in user timeline buffer." +msgstr "" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:27 +msgid "New follower." +msgstr "" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:28 +msgid "Volume changed." +msgstr "" + +#: extra/SoundsTutorial/wx_ui.py:8 +msgid "Sounds tutorial" +msgstr "" + +#: extra/SoundsTutorial/wx_ui.py:11 +msgid "Press enter to listen to the sound for the selected event" +msgstr "" + +#: extra/SpellChecker/spellchecker.py:56 +#, python-format +msgid "Misspelled word: %s" +msgstr "" + +#: extra/SpellChecker/wx_ui.py:27 +msgid "Misspelled word" +msgstr "" + +#: extra/SpellChecker/wx_ui.py:32 +msgid "Context" +msgstr "" + +#: extra/SpellChecker/wx_ui.py:37 +msgid "Suggestions" +msgstr "" + +#: extra/SpellChecker/wx_ui.py:42 +msgid "&Ignore" +msgstr "" + +#: extra/SpellChecker/wx_ui.py:43 +msgid "I&gnore all" +msgstr "" + +#: extra/SpellChecker/wx_ui.py:44 +#, fuzzy +msgid "&Replace" +msgstr "השב" + +#: extra/SpellChecker/wx_ui.py:45 +msgid "R&eplace all" +msgstr "" + +#: extra/SpellChecker/wx_ui.py:46 +msgid "&Add to personal dictionary" +msgstr "" + +#: extra/SpellChecker/wx_ui.py:79 +#, python-brace-format +msgid "" +"An error has occurred. There are no dictionaries available for the " +"selected language in {0}" +msgstr "" + +#: extra/SpellChecker/wx_ui.py:79 +#: extra/autocompletionUsers/mastodon/wx_scan.py:44 +#: wxUI/commonMessageDialogs.py:23 wxUI/commonMessageDialogs.py:36 +#: wxUI/commonMessageDialogs.py:45 wxUI/commonMessageDialogs.py:52 +#: wxUI/commonMessageDialogs.py:55 wxUI/commonMessageDialogs.py:61 +#: wxUI/dialogs/mastodon/dialogs.py:38 wxUI/dialogs/mastodon/dialogs.py:43 +#: wxUI/dialogs/mastodon/dialogs.py:48 wxUI/dialogs/mastodon/dialogs.py:53 +#: wxUI/dialogs/mastodon/dialogs.py:60 +msgid "Error" +msgstr "שגיאה" + +#: extra/SpellChecker/wx_ui.py:82 +msgid "Spell check complete." +msgstr "" + +#: extra/autocompletionUsers/completion.py:39 +#: extra/autocompletionUsers/completion.py:57 +msgid "You have to start writing" +msgstr "" + +#: extra/autocompletionUsers/completion.py:49 +#: extra/autocompletionUsers/completion.py:66 +#, fuzzy +msgid "There are no results in your users database" +msgstr "אין מונחים בציוץ זה" + +#: extra/autocompletionUsers/completion.py:51 +msgid "Autocompletion only works for users." +msgstr "" + +#: extra/autocompletionUsers/wx_manage.py:9 +msgid "Manage Autocompletion database" +msgstr "" + +#: extra/autocompletionUsers/wx_manage.py:12 +#, python-brace-format +msgid "Editing {0} users database" +msgstr "" + +#: extra/autocompletionUsers/wx_manage.py:13 +msgid "Username" +msgstr "" + +#: extra/autocompletionUsers/wx_manage.py:13 wxUI/dialogs/configuration.py:108 +msgid "Name" +msgstr "" + +#: extra/autocompletionUsers/wx_manage.py:16 +#, fuzzy +msgid "Add user" +msgstr "משתמשים מושתקים" + +#: extra/autocompletionUsers/wx_manage.py:17 +#, fuzzy +msgid "Remove user" +msgstr "משתמשים מושתקים" + +#: extra/autocompletionUsers/wx_manage.py:38 +msgid "Twitter username" +msgstr "" + +#: extra/autocompletionUsers/wx_manage.py:38 +msgid "Add user to database" +msgstr "" + +#: extra/autocompletionUsers/wx_manage.py:44 +#, fuzzy +msgid "The user does not exist" +msgstr "משתמש זה אינו קיים" + +#: extra/autocompletionUsers/wx_manage.py:44 +#, fuzzy +msgid "Error!" +msgstr "שגיאה" + +#: extra/autocompletionUsers/mastodon/scan.py:49 +msgid "" +"Updating database... You can close this window now. A message will tell " +"you when the process finishes." +msgstr "" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:8 +msgid "Autocomplete users' settings" +msgstr "" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:11 +msgid "Add &followers to database" +msgstr "" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:12 +msgid "Add f&ollowing to database" +msgstr "" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:26 +msgid "Updating autocompletion database" +msgstr "" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:34 +msgid "" +"This process will retrieve the users you selected from your Mastodon " +"account, and add them to the user autocomplete database. Please note that" +" if there are many users or you have tried to perform this action less " +"than 15 minutes ago, TWBlue may reach a limit in API calls when trying to" +" load the users into the database. If this happens, we will show you an " +"error, in which case you will have to try this process again in a few " +"minutes. If this process ends with no error, you will be redirected back " +"to the account settings dialog. Do you want to continue?" +msgstr "" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:34 +#: wxUI/commonMessageDialogs.py:20 +msgid "Attention" +msgstr "" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:40 +#, python-brace-format +msgid "TWBlue has imported {} users successfully." +msgstr "" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:40 +msgid "Done" +msgstr "" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:44 +msgid "Error adding users from Mastodon. Please try again in about 15 minutes." +msgstr "" + +#: extra/ocr/OCRSpace.py:7 +msgid "Detect automatically" +msgstr "" + +#: extra/ocr/OCRSpace.py:7 +msgid "Danish" +msgstr "" + +#: extra/ocr/OCRSpace.py:7 +msgid "Dutch" +msgstr "" + +#: extra/ocr/OCRSpace.py:7 +msgid "English" +msgstr "" + +#: extra/ocr/OCRSpace.py:7 +msgid "Finnish" +msgstr "" + +#: extra/ocr/OCRSpace.py:7 +msgid "French" +msgstr "" + +#: extra/ocr/OCRSpace.py:7 +msgid "German" +msgstr "" + +#: extra/ocr/OCRSpace.py:7 +msgid "Hungarian" +msgstr "" + +#: extra/ocr/OCRSpace.py:7 +msgid "Korean" +msgstr "" + +#: extra/ocr/OCRSpace.py:7 +msgid "Italian" +msgstr "" + +#: extra/ocr/OCRSpace.py:7 +msgid "Japanese" +msgstr "" + +#: extra/ocr/OCRSpace.py:7 +msgid "Polish" +msgstr "" + +#: extra/ocr/OCRSpace.py:7 +msgid "Portuguese" +msgstr "" + +#: extra/ocr/OCRSpace.py:7 +msgid "Russian" +msgstr "" + +#: extra/ocr/OCRSpace.py:7 +msgid "Spanish" +msgstr "" + +#: extra/ocr/OCRSpace.py:7 +msgid "Turkish" +msgstr "" + +#: extra/translator/wx_ui.py:25 +msgid "Translate message" +msgstr "" + +#: extra/translator/wx_ui.py:29 +#, fuzzy +msgid "Translation engine" +msgstr "תורגם" + +#: extra/translator/wx_ui.py:32 +msgid "Target language" +msgstr "" + +#: keystrokeEditor/wx_ui.py:8 +msgid "Keystroke editor" +msgstr "" + +#: keystrokeEditor/wx_ui.py:11 +msgid "Select a keystroke to edit" +msgstr "" + +#: keystrokeEditor/wx_ui.py:12 +#: wxUI/dialogs/mastodon/filters/manage_filters.py:18 +#: wxUI/dialogs/mastodon/userActions.py:9 +#: wxUI/dialogs/mastodon/userActions.py:18 +#: wxUI/dialogs/mastodon/userActions.py:19 +msgid "Action" +msgstr "" + +#: keystrokeEditor/wx_ui.py:12 +msgid "Keystroke" +msgstr "" + +#: keystrokeEditor/wx_ui.py:17 +#: wxUI/dialogs/mastodon/filters/manage_filters.py:23 +#: wxUI/dialogs/userAliasDialogs.py:53 +msgid "Edit" +msgstr "" + +#: keystrokeEditor/wx_ui.py:19 keystrokeEditor/wx_ui.py:49 +msgid "Undefine keystroke" +msgstr "" + +#: keystrokeEditor/wx_ui.py:20 +msgid "Execute action" +msgstr "" + +#: keystrokeEditor/wx_ui.py:21 wxUI/dialogs/userAliasDialogs.py:25 +msgid "Close" +msgstr "" + +#: keystrokeEditor/wx_ui.py:41 +msgid "Undefined" +msgstr "" + +#: keystrokeEditor/wx_ui.py:49 +msgid "Are you sure you want to undefine this keystroke?" +msgstr "" + +#: keystrokeEditor/wx_ui.py:53 +msgid "Editing keystroke" +msgstr "" + +#: keystrokeEditor/wx_ui.py:56 +msgid "Control" +msgstr "" + +#: keystrokeEditor/wx_ui.py:57 +msgid "Alt" +msgstr "" + +#: keystrokeEditor/wx_ui.py:58 +msgid "Shift" +msgstr "" + +#: keystrokeEditor/wx_ui.py:59 +msgid "Windows" +msgstr "" + +#: keystrokeEditor/wx_ui.py:65 +msgid "Key" +msgstr "" + +#: keystrokeEditor/wx_ui.py:70 wxUI/dialogs/find.py:21 +#: wxUI/dialogs/mastodon/showUserProfile.py:31 +#: wxUI/dialogs/userAliasDialogs.py:23 +msgid "OK" +msgstr "" + +#: keystrokeEditor/wx_ui.py:83 +msgid "You need to use the Windows key" +msgstr "" + +#: keystrokeEditor/wx_ui.py:83 keystrokeEditor/wx_ui.py:86 +msgid "Invalid keystroke" +msgstr "" + +#: keystrokeEditor/wx_ui.py:86 +msgid "You must provide a character for the keystroke" +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:3 +msgid "Go up in the current buffer" +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:4 +msgid "Go down in the current buffer" +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:5 +msgid "Go to the previous buffer" +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:6 +msgid "Go to the next buffer" +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:7 +msgid "Focus the next session" +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:8 +msgid "Focus the previous session" +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:9 +msgid "Show or hide the GUI" +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:10 +msgid "Make a new post" +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:11 wxUI/buffers/mastodon/base.py:26 +#: wxUI/buffers/mastodon/conversationList.py:25 +msgid "Reply" +msgstr "השב" + +#: keystrokeEditor/actions/mastodon.py:12 wxUI/buffers/mastodon/base.py:25 +#: wxUI/dialogs/mastodon/dialogs.py:7 +msgid "Boost" +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:13 +msgid "Send direct message" +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:14 +msgid "Add post to favorites" +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:15 +msgid "Remove post from favorites" +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:16 +msgid "Add/remove post from favorites" +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:17 +msgid "Open the user actions dialogue" +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:18 +#, fuzzy +msgid "See user details" +msgstr "פרטי משתמש" + +#: keystrokeEditor/actions/mastodon.py:19 +msgid "Show post" +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:20 +msgid "Quit" +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:21 +msgid "Open user timeline" +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:22 +msgid "Destroy buffer" +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:23 +msgid "Interact with the currently focused post." +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:24 +msgid "Open URL" +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:25 +msgid "View in browser" +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:26 +msgid "Increase volume by 5%" +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:27 +msgid "Decrease volume by 5%" +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:28 +msgid "Jump to the first element of a buffer" +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:29 +msgid "Jump to the last element of the current buffer" +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:30 +msgid "Jump 20 elements up in the current buffer" +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:31 +msgid "Jump 20 elements down in the current buffer" +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:33 +#, fuzzy +msgid "Delete post" +msgstr "ציוצים שנשלחו" + +#: keystrokeEditor/actions/mastodon.py:34 +msgid "Empty the current buffer" +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:35 +msgid "Repeat last item" +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:36 +msgid "Copy to clipboard" +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:39 +msgid "Mute/unmute the active buffer" +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:40 +msgid "Mute/unmute the current session" +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:41 +msgid "toggle the automatic reading of incoming tweets in the active buffer" +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:42 +msgid "Search on instance" +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:43 +msgid "Find a string in the currently focused buffer" +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:44 +msgid "Show the keystroke editor" +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:46 +msgid "load previous items" +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:48 +msgid "View conversation" +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:49 +msgid "Check and download updates" +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:50 +msgid "Opens the global settings dialogue" +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:52 +msgid "Opens the account settings dialogue" +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:53 +msgid "Try to play a media file" +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:54 +msgid "Updates the buffer and retrieves possible lost items there." +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:55 +msgid "Extracts the text from a picture and displays the result in a dialog." +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:56 +msgid "Adds an alias to an user" +msgstr "" + +#: sessionmanager/sessionManager.py:69 +#, python-brace-format +msgid "{account_name}@{instance} (Mastodon)" +msgstr "" + +#: sessionmanager/wxUI.py:11 +msgid "Session manager" +msgstr "" + +#: sessionmanager/wxUI.py:14 +msgid "Accounts list" +msgstr "" + +#: sessionmanager/wxUI.py:16 +msgid "Account" +msgstr "" + +#: sessionmanager/wxUI.py:20 +msgid "New account" +msgstr "" + +#: sessionmanager/wxUI.py:22 sessionmanager/wxUI.py:79 +msgid "Remove account" +msgstr "" + +#: sessionmanager/wxUI.py:24 +msgid "Global Settings" +msgstr "" + +#: sessionmanager/wxUI.py:48 +msgid "You need to configure an account." +msgstr "" + +#: sessionmanager/wxUI.py:48 +msgid "Account Error" +msgstr "" + +#: sessionmanager/wxUI.py:54 +msgid "Mastodon" +msgstr "" + +#: sessionmanager/wxUI.py:59 +msgid "" +"You will be prompted for your Mastodon data (instance URL, email address " +"and password) so we can authorise TWBlue in your instance. Would you like" +" to authorise your account now?" +msgstr "" + +#: sessionmanager/wxUI.py:59 +msgid "Authorization" +msgstr "" + +#: sessionmanager/wxUI.py:67 +#, python-format +msgid "Authorized account %d" +msgstr "" + +#: sessionmanager/wxUI.py:73 +msgid "" +"Your access token is invalid or the authorization has failed. Please try " +"again." +msgstr "" + +#: sessionmanager/wxUI.py:73 +msgid "Invalid user token" +msgstr "" + +#: sessionmanager/wxUI.py:79 +msgid "Do you really want to delete this account?" +msgstr "" + +#: sessions/base.py:125 +#, python-brace-format +msgid "" +"An exception occurred while saving the {app} database. It will be deleted" +" and rebuilt automatically. If this error persists, send the error log to" +" the {app} developers." +msgstr "" + +#: sessions/base.py:165 +#, python-brace-format +msgid "" +"An exception occurred while loading the {app} database. It will be " +"deleted and rebuilt automatically. If this error persists, send the error" +" log to the {app} developers." +msgstr "" + +#: sessions/mastodon/compose.py:15 sessions/mastodon/compose.py:61 +msgid "dddd, MMMM D, YYYY H:m" +msgstr "" + +#: sessions/mastodon/compose.py:17 sessions/mastodon/templates.py:74 +#: sessions/mastodon/templates.py:75 +#, python-brace-format +msgid "Boosted from @{}: {}" +msgstr "" + +#: sessions/mastodon/compose.py:22 sessions/mastodon/compose.py:81 +#: sessions/mastodon/templates.py:81 sessions/mastodon/templates.py:176 +#, python-brace-format +msgid "hidden by filter {}" +msgstr "" + +#: sessions/mastodon/compose.py:36 sessions/mastodon/templates.py:28 +msgid "dddd, MMMM D, YYYY H:m:s" +msgstr "" + +#: sessions/mastodon/compose.py:38 +#, python-format +msgid "%s (@%s). %s followers, %s following, %s posts. Joined %s" +msgstr "" + +#: sessions/mastodon/compose.py:49 +#, python-brace-format +msgid "Last message from {}: {}" +msgstr "" + +#: sessions/mastodon/compose.py:64 +#, python-brace-format +msgid "{username} has posted: {status}" +msgstr "" + +#: sessions/mastodon/compose.py:66 +#, python-brace-format +msgid "{username} has mentioned you: {status}" +msgstr "" + +#: sessions/mastodon/compose.py:68 +#, python-brace-format +msgid "{username} has boosted: {status}" +msgstr "" + +#: sessions/mastodon/compose.py:70 +#, python-brace-format +msgid "{username} has added to favorites: {status}" +msgstr "" + +#: sessions/mastodon/compose.py:72 +#, python-brace-format +msgid "{username} has followed you." +msgstr "" + +#: sessions/mastodon/compose.py:74 +#, python-brace-format +msgid "{username} has joined the instance." +msgstr "" + +#: sessions/mastodon/compose.py:76 sessions/mastodon/templates.py:171 +#, python-brace-format +msgid "A poll in which you have voted has expired: {status}" +msgstr "" + +#: sessions/mastodon/compose.py:78 +#, python-brace-format +msgid "{username} wants to follow you." +msgstr "" + +#: sessions/mastodon/session.py:69 +msgid "Please enter your instance URL." +msgstr "" + +#: sessions/mastodon/session.py:69 +msgid "Mastodon instance" +msgstr "" + +#: sessions/mastodon/session.py:80 +msgid "" +"We could not connect to your mastodon instance. Please verify that the " +"domain exists and the instance is accessible via a web browser." +msgstr "" + +#: sessions/mastodon/session.py:80 +msgid "Instance error" +msgstr "" + +#: sessions/mastodon/session.py:85 +msgid "Enter the verification code" +msgstr "" + +#: sessions/mastodon/session.py:85 +msgid "PIN code authorization" +msgstr "" + +#: sessions/mastodon/session.py:94 +msgid "" +"We could not authorice your mastodon account to be used in TWBlue. This " +"might be caused due to an incorrect verification code. Please try to add " +"the session again." +msgstr "" + +#: sessions/mastodon/session.py:94 +msgid "Authorization error" +msgstr "" + +#: sessions/mastodon/session.py:215 +#, python-format +msgid "%s succeeded." +msgstr "" + +#: sessions/mastodon/templates.py:18 +msgid "$display_name, $text $image_descriptions $date. $source" +msgstr "" + +#: sessions/mastodon/templates.py:19 +msgid "Dm to $recipient_display_name, $text $date" +msgstr "" + +#: sessions/mastodon/templates.py:20 +msgid "" +"$display_name (@$screen_name). $followers followers, $following " +"following, $posts posts. Joined $created_at." +msgstr "" + +#: sessions/mastodon/templates.py:21 +msgid "$display_name $text, $date" +msgstr "" + +#: sessions/mastodon/templates.py:34 +#, python-brace-format +msgid "Content warning: {}" +msgstr "" + +#: sessions/mastodon/templates.py:45 +#, python-brace-format +msgid "Media description: {}" +msgstr "" + +# | msgid "Followers" +#: sessions/mastodon/templates.py:82 wxUI/dialogs/mastodon/postDialogs.py:49 +#, fuzzy +msgid "Followers only" +msgstr "עוקבים" + +#: sessions/mastodon/templates.py:94 +#, fuzzy +msgid "Pinned." +msgstr "הועתק" + +#: sessions/mastodon/templates.py:157 +#, python-brace-format +msgid "has posted: {status}" +msgstr "" + +#: sessions/mastodon/templates.py:159 +#, python-brace-format +msgid "has mentioned you: {status}" +msgstr "" + +#: sessions/mastodon/templates.py:161 +#, python-brace-format +msgid "has boosted: {status}" +msgstr "" + +#: sessions/mastodon/templates.py:163 +#, python-brace-format +msgid "has added to favorites: {status}" +msgstr "" + +#: sessions/mastodon/templates.py:165 +#, python-brace-format +msgid "has updated a status: {status}" +msgstr "" + +#: sessions/mastodon/templates.py:167 +msgid "has followed you." +msgstr "" + +#: sessions/mastodon/templates.py:169 +msgid "has joined the instance." +msgstr "" + +#: sessions/mastodon/templates.py:173 +msgid "wants to follow you." +msgstr "" + +#: update/utils.py:29 +#, python-format +msgid "%d day, " +msgstr "" + +#: update/utils.py:31 +#, python-format +msgid "%d days, " +msgstr "" + +#: update/utils.py:33 +#, python-format +msgid "%d hour, " +msgstr "" + +#: update/utils.py:35 +#, python-format +msgid "%d hours, " +msgstr "" + +#: update/utils.py:37 +#, python-format +msgid "%d minute, " +msgstr "" + +#: update/utils.py:39 +#, python-format +msgid "%d minutes, " +msgstr "" + +#: update/utils.py:41 +#, python-format +msgid "%s second" +msgstr "" + +#: update/utils.py:43 +#, python-format +msgid "%s seconds" +msgstr "" + +#: update/wxUpdater.py:11 +#, python-format +msgid "" +"There's a new %s version available, released on %s. Would you like to " +"download it now?\n" +"\n" +" %s version: %s\n" +"\n" +"Changes:\n" +"%s" +msgstr "" + +#: update/wxUpdater.py:14 +#, python-format +msgid "" +"There's a new %s version available, released on %s. Updates are not " +"automatic in Windows 7, so you would need to visit TWBlue's download " +"website to get the latest version.\n" +"\n" +" %s version: %s\n" +"\n" +"Changes:\n" +"%s" +msgstr "" + +#: update/wxUpdater.py:16 +#, python-format +msgid "New version for %s" +msgstr "" + +#: update/wxUpdater.py:23 +msgid "Download in Progress" +msgstr "" + +#: update/wxUpdater.py:23 +msgid "Downloading the new version..." +msgstr "" + +#: update/wxUpdater.py:33 +#, python-format +msgid "Updating... %s of %s" +msgstr "" + +#: update/wxUpdater.py:36 +msgid "" +"The update has been downloaded and installed successfully. Press OK to " +"continue." +msgstr "" + +#: update/wxUpdater.py:36 +msgid "Done!" +msgstr "" + +#: wxUI/commonMessageDialogs.py:6 +#, python-brace-format +msgid "Do you really want to close {0}?" +msgstr "" + +#: wxUI/commonMessageDialogs.py:6 +msgid "Exit" +msgstr "" + +#: wxUI/commonMessageDialogs.py:10 +#, python-brace-format +msgid " {0} must be restarted for these changes to take effect." +msgstr "" + +#: wxUI/commonMessageDialogs.py:10 +#, python-brace-format +msgid "Restart {0} " +msgstr "" + +#: wxUI/commonMessageDialogs.py:13 +msgid "" +"Are you sure you want to delete this user from the database? This user " +"will not appear in autocomplete results anymore." +msgstr "" + +#: wxUI/commonMessageDialogs.py:13 +msgid "Confirm" +msgstr "" + +#: wxUI/commonMessageDialogs.py:16 +msgid "" +"Do you really want to empty this buffer? It's items will be removed from" +" the list but not from Twitter" +msgstr "" + +#: wxUI/commonMessageDialogs.py:16 wxUI/dialogs/mastodon/dialogs.py:31 +msgid "Empty buffer" +msgstr "" + +#: wxUI/commonMessageDialogs.py:20 +msgid "Do you really want to destroy this buffer?" +msgstr "" + +#: wxUI/commonMessageDialogs.py:23 +msgid "That user does not exist" +msgstr "משתמש זה אינו קיים" + +#: wxUI/commonMessageDialogs.py:26 +msgid "A timeline for this user already exists. You can't open another" +msgstr "" + +#: wxUI/commonMessageDialogs.py:26 +msgid "Existing timeline" +msgstr "" + +#: wxUI/commonMessageDialogs.py:29 +#, python-brace-format +msgid "" +"If you like {0} we need your help to keep it going. Help us by donating " +"to the project. This will help us pay for the server, the domain and some" +" other things to ensure that {0} will be actively maintained. Your " +"donation will give us the means to continue the development of {0}, and " +"to keep {0} free. Would you like to donate now?" +msgstr "" + +#: wxUI/commonMessageDialogs.py:29 +msgid "We need your help" +msgstr "" + +#: wxUI/commonMessageDialogs.py:33 wxUI/dialogs/mastodon/postDialogs.py:207 +msgid "Information" +msgstr "" + +#: wxUI/commonMessageDialogs.py:36 +msgid "The configuration file is invalid." +msgstr "" + +#: wxUI/commonMessageDialogs.py:39 +#, python-brace-format +msgid "" +"{0} quit unexpectedly the last time it was run. If the problem persists, " +"please report it to the {0} developers." +msgstr "" + +#: wxUI/commonMessageDialogs.py:39 +msgid "Warning" +msgstr "" + +#: wxUI/commonMessageDialogs.py:45 +#, python-brace-format +msgid "Sorry, you can't update while running {} from source." +msgstr "" + +#: wxUI/commonMessageDialogs.py:49 +msgid "the provided instance is invalid. Please try again." +msgstr "" + +#: wxUI/commonMessageDialogs.py:49 +msgid "Invalid instance" +msgstr "" + +#: wxUI/commonMessageDialogs.py:52 +msgid "" +"TWBlue was unable to add or update the filter with the specified " +"settings. Please try again." +msgstr "" + +#: wxUI/commonMessageDialogs.py:55 +msgid "" +"TWBlue was unable to load your filters from the instance. Please try " +"again." +msgstr "" + +#: wxUI/commonMessageDialogs.py:58 +msgid "Do you really want to delete this filter ?" +msgstr "" + +#: wxUI/commonMessageDialogs.py:58 +#, fuzzy +msgid "Delete filter" +msgstr "ציוצים שנשלחו" + +#: wxUI/commonMessageDialogs.py:61 +msgid "TWBlue was unable to remove the filter you specified. Please try again." +msgstr "" + +#: wxUI/sysTrayIcon.py:36 wxUI/view.py:25 +msgid "&Global settings" +msgstr "" + +#: wxUI/sysTrayIcon.py:37 wxUI/view.py:24 +msgid "Account se&ttings" +msgstr "" + +#: wxUI/sysTrayIcon.py:39 +msgid "&Show / hide" +msgstr "" + +#: wxUI/sysTrayIcon.py:40 wxUI/view.py:74 +msgid "&Documentation" +msgstr "" + +#: wxUI/sysTrayIcon.py:41 +msgid "Check for &updates" +msgstr "" + +#: wxUI/sysTrayIcon.py:42 +msgid "&Exit" +msgstr "" + +#: wxUI/view.py:16 +msgid "&Manage accounts" +msgstr "" + +#: wxUI/view.py:17 +msgid "&Update profile" +msgstr "" + +#: wxUI/view.py:18 +msgid "&Hide window" +msgstr "" + +#: wxUI/view.py:20 +msgid "&Lists manager" +msgstr "" + +#: wxUI/view.py:23 +msgid "&Edit keystrokes" +msgstr "" + +#: wxUI/view.py:26 +msgid "E&xit" +msgstr "" + +#: wxUI/view.py:34 +msgid "&Remove from favorites" +msgstr "" + +#: wxUI/view.py:47 +msgid "&Add to list" +msgstr "" + +#: wxUI/view.py:48 +msgid "R&emove from list" +msgstr "" + +#: wxUI/view.py:49 +msgid "Show user &profile" +msgstr "" + +#: wxUI/view.py:50 +msgid "V&iew likes" +msgstr "" + +#: wxUI/view.py:54 +msgid "&Update buffer" +msgstr "" + +#: wxUI/dialogs/mastodon/communityTimeline.py:9 wxUI/view.py:55 +msgid "Create community timeline" +msgstr "" + +#: wxUI/view.py:56 +msgid "New &trending topics buffer..." +msgstr "" + +#: wxUI/view.py:59 +msgid "Find a string in the currently focused buffer..." +msgstr "" + +#: wxUI/view.py:60 +msgid "&Load previous items" +msgstr "" + +#: wxUI/dialogs/mastodon/userActions.py:21 wxUI/view.py:62 +msgid "&Mute" +msgstr "" + +#: wxUI/view.py:63 +msgid "&Autoread" +msgstr "" + +#: wxUI/view.py:64 +msgid "&Clear buffer" +msgstr "" + +#: wxUI/view.py:65 +msgid "&Destroy" +msgstr "" + +#: wxUI/view.py:69 +msgid "&Seek back 5 seconds" +msgstr "" + +#: wxUI/view.py:70 +msgid "&Seek forward 5 seconds" +msgstr "" + +#: wxUI/view.py:75 +msgid "Sounds &tutorial" +msgstr "" + +#: wxUI/view.py:76 +msgid "&What's new in this version?" +msgstr "" + +#: wxUI/view.py:77 +msgid "&Check for updates" +msgstr "" + +#: wxUI/view.py:78 +msgid "&Report an error" +msgstr "" + +#: wxUI/view.py:79 +#, python-brace-format +msgid "{0}'s &website" +msgstr "" + +#: wxUI/view.py:80 +msgid "Get soundpacks for TWBlue" +msgstr "" + +#: wxUI/view.py:81 +#, python-brace-format +msgid "About &{0}" +msgstr "" + +#: wxUI/view.py:84 +msgid "&Application" +msgstr "" + +#: wxUI/view.py:85 +msgid "&Tweet" +msgstr "" + +#: wxUI/dialogs/mastodon/userActions.py:10 wxUI/view.py:86 +msgid "&User" +msgstr "" + +#: wxUI/view.py:87 +msgid "&Buffer" +msgstr "" + +#: wxUI/view.py:88 +msgid "&Audio" +msgstr "" + +#: wxUI/view.py:89 +msgid "&Help" +msgstr "" + +#: wxUI/view.py:175 +msgid "Address" +msgstr "" + +#: wxUI/view.py:206 +#, python-brace-format +msgid "Your {0} version is up to date" +msgstr "" + +#: wxUI/view.py:206 +msgid "Update" +msgstr "" + +#: wxUI/buffers/panels.py:12 wxUI/buffers/panels.py:20 +msgid "Login" +msgstr "" + +#: wxUI/buffers/panels.py:14 +msgid "Log in automatically" +msgstr "" + +#: wxUI/buffers/panels.py:22 +msgid "Logout" +msgstr "" + +#: wxUI/buffers/mastodon/base.py:11 +#: wxUI/buffers/mastodon/conversationList.py:11 wxUI/buffers/mastodon/user.py:8 +#: wxUI/dialogs/mastodon/userTimeline.py:10 wxUI/dialogs/userAliasDialogs.py:14 +msgid "User" +msgstr "" + +#: wxUI/buffers/mastodon/base.py:11 +#: wxUI/buffers/mastodon/conversationList.py:11 +#: wxUI/buffers/mastodon/notifications.py:11 +#: wxUI/dialogs/mastodon/postDialogs.py:37 +#: wxUI/dialogs/mastodon/postDialogs.py:272 +msgid "Text" +msgstr "" + +#: wxUI/buffers/mastodon/base.py:11 +#: wxUI/buffers/mastodon/conversationList.py:11 +#: wxUI/buffers/mastodon/notifications.py:11 +#: wxUI/dialogs/mastodon/postDialogs.py:216 +msgid "Date" +msgstr "" + +#: wxUI/buffers/mastodon/base.py:11 +#: wxUI/buffers/mastodon/conversationList.py:11 +msgid "Client" +msgstr "" + +#: wxUI/buffers/mastodon/base.py:27 +msgid "Favorite" +msgstr "" + +#: wxUI/buffers/mastodon/base.py:28 +msgid "Bookmark" +msgstr "" + +#: wxUI/buffers/mastodon/base.py:29 +msgid "Direct message" +msgstr "" + +#: wxUI/buffers/mastodon/notifications.py:23 +#: wxUI/dialogs/mastodon/dialogs.py:23 +msgid "Dismiss" +msgstr "" + +#: wxUI/buffers/mastodon/user.py:19 wxUI/dialogs/userAliasDialogs.py:48 +#, fuzzy +msgid "Actions" +msgstr "איזכורים" + +# | msgid "Direct Messages" +#: wxUI/buffers/mastodon/user.py:20 +#, fuzzy +msgid "Message" +msgstr "הודעות פרטיות" + +#: wxUI/dialogs/configuration.py:15 +msgid "&Language" +msgstr "" + +#: wxUI/dialogs/configuration.py:22 +#, python-brace-format +msgid "&Ask before exiting {0}" +msgstr "" + +#: wxUI/dialogs/configuration.py:24 +msgid "&Disable Streaming functions" +msgstr "" + +#: wxUI/dialogs/configuration.py:27 +msgid "&Buffer update interval, in minutes" +msgstr "" + +#: wxUI/dialogs/configuration.py:33 +#, python-brace-format +msgid "Pla&y a sound when {0} launches" +msgstr "" + +#: wxUI/dialogs/configuration.py:35 +#, python-brace-format +msgid "Sp&eak a message when {0} launches" +msgstr "" + +#: wxUI/dialogs/configuration.py:37 +msgid "&Use invisible interface's keyboard shortcuts while GUI is visible" +msgstr "" + +#: wxUI/dialogs/configuration.py:39 +msgid "A&ctivate Sapi5 when any other screen reader is not being run" +msgstr "" + +#: wxUI/dialogs/configuration.py:41 +msgid "&Hide GUI on launch" +msgstr "" + +#: wxUI/dialogs/configuration.py:43 +msgid "&Read long posts in GUI" +msgstr "" + +#: wxUI/dialogs/configuration.py:46 +msgid "&Keymap" +msgstr "" + +#: wxUI/dialogs/configuration.py:51 +#, python-brace-format +msgid "Check for u&pdates when {0} launches" +msgstr "" + +#: wxUI/dialogs/configuration.py:61 +msgid "Proxy &type: " +msgstr "" + +#: wxUI/dialogs/configuration.py:68 +msgid "Proxy s&erver: " +msgstr "" + +#: wxUI/dialogs/configuration.py:74 +msgid "&Port: " +msgstr "" + +#: wxUI/dialogs/configuration.py:80 +msgid "&User: " +msgstr "" + +#: wxUI/dialogs/configuration.py:86 +msgid "P&assword: " +msgstr "" + +#: wxUI/dialogs/configuration.py:98 +msgid "Enable automatic s&peech feedback" +msgstr "" + +#: wxUI/dialogs/configuration.py:100 +msgid "Enable automatic &Braille feedback" +msgstr "" + +#: wxUI/dialogs/configuration.py:108 +msgid "Buffer" +msgstr "" + +#: wxUI/dialogs/configuration.py:108 +msgid "Status" +msgstr "" + +#: wxUI/dialogs/configuration.py:111 +msgid "S&how/hide" +msgstr "" + +#: wxUI/dialogs/configuration.py:112 +#, fuzzy +msgid "Move &up" +msgstr "משתמשים מושתקים" + +#: wxUI/dialogs/configuration.py:113 +msgid "Move &down" +msgstr "" + +#: wxUI/dialogs/configuration.py:123 wxUI/dialogs/configuration.py:188 +#: wxUI/dialogs/configuration.py:191 wxUI/dialogs/configuration.py:196 +msgid "Show" +msgstr "" + +#: wxUI/dialogs/configuration.py:125 wxUI/dialogs/configuration.py:135 +#: wxUI/dialogs/configuration.py:159 wxUI/dialogs/configuration.py:189 +msgid "Hide" +msgstr "" + +#: wxUI/dialogs/configuration.py:133 wxUI/dialogs/configuration.py:157 +msgid "Select a buffer first." +msgstr "" + +#: wxUI/dialogs/configuration.py:136 wxUI/dialogs/configuration.py:160 +msgid "The buffer is hidden, show it first." +msgstr "" + +#: wxUI/dialogs/configuration.py:139 +msgid "The buffer is already at the top of the list." +msgstr "" + +#: wxUI/dialogs/configuration.py:163 +msgid "The buffer is already at the bottom of the list." +msgstr "" + +#: wxUI/dialogs/configuration.py:205 +msgid "&LibreTranslate API URL: " +msgstr "" + +#: wxUI/dialogs/configuration.py:211 +msgid "LibreTranslate API &Key (optional): " +msgstr "" + +#: wxUI/dialogs/configuration.py:217 +msgid "&DeepL API Key: " +msgstr "" + +#: wxUI/dialogs/configuration.py:231 +#, python-brace-format +msgid "{0} preferences" +msgstr "" + +#: wxUI/dialogs/configuration.py:237 wxUI/dialogs/mastodon/configuration.py:144 +msgid "General" +msgstr "" + +#: wxUI/dialogs/configuration.py:242 +msgid "Proxy" +msgstr "" + +#: wxUI/dialogs/configuration.py:246 +#, fuzzy +msgid "Translation services" +msgstr "תורגם" + +#: wxUI/dialogs/configuration.py:251 wxUI/dialogs/mastodon/configuration.py:170 +msgid "&Save" +msgstr "" + +#: wxUI/dialogs/configuration.py:253 +#: wxUI/dialogs/mastodon/communityTimeline.py:27 +#: wxUI/dialogs/mastodon/configuration.py:172 +#: wxUI/dialogs/mastodon/search.py:26 +#: wxUI/dialogs/mastodon/showUserProfile.py:170 +#: wxUI/dialogs/mastodon/updateProfile.py:132 +#: wxUI/dialogs/mastodon/userActions.py:38 +#: wxUI/dialogs/mastodon/userTimeline.py:32 +msgid "&Close" +msgstr "" + +#: wxUI/dialogs/find.py:13 +msgid "Find in current buffer" +msgstr "" + +#: wxUI/dialogs/find.py:14 +msgid "String" +msgstr "" + +#: wxUI/dialogs/find.py:23 wxUI/dialogs/mastodon/showUserProfile.py:33 +msgid "Cancel" +msgstr "" + +#: wxUI/dialogs/templateDialogs.py:8 +msgid "Edit Template" +msgstr "" + +#: wxUI/dialogs/templateDialogs.py:13 +msgid "Edit template" +msgstr "" + +#: wxUI/dialogs/templateDialogs.py:17 +msgid "Available variables" +msgstr "" + +#: wxUI/dialogs/templateDialogs.py:29 +msgid "Restore template" +msgstr "" + +#: wxUI/dialogs/templateDialogs.py:48 +#, python-brace-format +msgid "Restored template to {}." +msgstr "" + +#: wxUI/dialogs/templateDialogs.py:52 +msgid "" +"the template you have specified include variables that do not exists for " +"the object. Please fix the template and try again. For your reference, " +"you can see a list of all available variables in the variables list while" +" editing your template." +msgstr "" + +#: wxUI/dialogs/templateDialogs.py:52 +msgid "Invalid template" +msgstr "" + +#: wxUI/dialogs/urlList.py:6 +msgid "Select URL" +msgstr "" + +#: wxUI/dialogs/mastodon/userActions.py:13 +#: wxUI/dialogs/mastodon/userTimeline.py:13 wxUI/dialogs/userAliasDialogs.py:13 +msgid "&Autocomplete users" +msgstr "" + +#: wxUI/dialogs/userAliasDialogs.py:18 +msgid "Alias" +msgstr "" + +#: wxUI/dialogs/userAliasDialogs.py:41 +msgid "Edit user aliases" +msgstr "" + +#: wxUI/dialogs/mastodon/search.py:19 wxUI/dialogs/userAliasDialogs.py:43 +msgid "Users" +msgstr "" + +#: wxUI/dialogs/userAliasDialogs.py:50 +msgid "Add alias" +msgstr "" + +#: wxUI/dialogs/userAliasDialogs.py:51 +msgid "Adds a new user alias" +msgstr "" + +#: wxUI/dialogs/userAliasDialogs.py:54 +msgid "Edit the currently focused user Alias." +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:26 +#: wxUI/dialogs/mastodon/filters/manage_filters.py:24 +#: wxUI/dialogs/userAliasDialogs.py:57 +msgid "Remove" +msgstr "" + +#: wxUI/dialogs/userAliasDialogs.py:58 +msgid "Remove the currently focused user alias." +msgstr "" + +#: wxUI/dialogs/userAliasDialogs.py:82 +msgid "Are you sure you want to delete this user alias?" +msgstr "" + +#: wxUI/dialogs/userAliasDialogs.py:82 +msgid "Remove user alias" +msgstr "" + +#: wxUI/dialogs/userAliasDialogs.py:93 +#, fuzzy +msgid "User alias" +msgstr "פרטי משתמש" + +#: wxUI/dialogs/userList.py:27 +msgid "View profile" +msgstr "" + +#: wxUI/dialogs/mastodon/communityTimeline.py:10 +msgid "Community URL" +msgstr "" + +#: wxUI/dialogs/mastodon/communityTimeline.py:16 +#: wxUI/dialogs/mastodon/userTimeline.py:18 +msgid "Buffer type" +msgstr "" + +#: wxUI/dialogs/mastodon/communityTimeline.py:17 +#, fuzzy +msgid "&Local timeline" +msgstr "צירי זמן" + +#: wxUI/dialogs/mastodon/communityTimeline.py:18 +#, fuzzy +msgid "&Federated Timeline" +msgstr "צירי זמן אהובים " + +#: wxUI/dialogs/mastodon/communityTimeline.py:25 +#: wxUI/dialogs/mastodon/search.py:24 +#: wxUI/dialogs/mastodon/updateProfile.py:130 +#: wxUI/dialogs/mastodon/userActions.py:36 +#: wxUI/dialogs/mastodon/userTimeline.py:30 +msgid "&OK" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:14 +msgid "User autocompletion settings" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:15 +msgid "" +"Scan acc&ount and add followers and following users to the user " +"autocompletion database" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:16 +msgid "&Manage autocompletion database" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:21 +msgid "&Disable Streaming API endpoints" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:23 +msgid "&Relative timestamps" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:25 +msgid "" +"R&ead preferences from instance (default visibility when publishing and " +"displaying sensitive content)" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:28 +msgid "&Items on each API call" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:34 +msgid "" +"I&nverted buffers: The newest items will be shown at the beginning while " +"the oldest at the end" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:36 +msgid "&Ask confirmation before boosting a post" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:38 +msgid "S&how screen names instead of full names" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:40 +msgid "Hide e&mojis in usernames" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:42 +msgid "" +"&Number of items per buffer to cache in database (0 to disable caching, " +"blank for unlimited)" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:46 +msgid "" +"&Load cache for items in memory (much faster in big datasets but requires" +" more RAM)" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:53 +#, python-brace-format +msgid "Edit template for &posts. Current template: {}" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:55 +#, python-brace-format +msgid "Edit template for c&onversations. Current template: {}" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:57 +#, python-brace-format +msgid "Edit template for p&ersons. Current template: {}" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:65 +msgid "&Volume" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:76 +#, fuzzy +msgid "S&ession mute" +msgstr "השתקת הפעילות פעילה" + +#: wxUI/dialogs/mastodon/configuration.py:78 +msgid "&Output device" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:85 +msgid "&Input device" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:93 +msgid "Sound &pack" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:99 +msgid "Indicate &audio or video in posts with sound" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:101 +msgid "Indicate posts containing i&mages with sound" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:124 +msgid "&Language for OCR" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:149 +msgid "Feedback" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:153 +msgid "Buffers" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:157 +msgid "Templates" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:161 +msgid "Sound" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:165 +msgid "Extras" +msgstr "" + +#: wxUI/dialogs/mastodon/dialogs.py:7 +msgid "Would you like to share this post?" +msgstr "" + +#: wxUI/dialogs/mastodon/dialogs.py:15 +msgid "" +"Do you really want to delete this post? It will be deleted from the " +"instance as well." +msgstr "" + +#: wxUI/dialogs/mastodon/dialogs.py:15 +msgid "Delete" +msgstr "" + +#: wxUI/dialogs/mastodon/dialogs.py:23 +msgid "" +"Are you sure you want to dismiss this notification? If you dismiss a " +"mention notification, it also disappears from your mentions buffer. The " +"post is not going to be deleted from the instance, though." +msgstr "" + +#: wxUI/dialogs/mastodon/dialogs.py:31 +msgid "" +"Do you really want to empty this buffer? It's items will be removed from" +" the list but not from the instance" +msgstr "" + +#: wxUI/dialogs/mastodon/dialogs.py:38 +#, python-brace-format +msgid "This user has no posts. {0} can't create a timeline." +msgstr "" + +#: wxUI/dialogs/mastodon/dialogs.py:43 +#, python-brace-format +msgid "This user has no favorited posts. {0} can't create a timeline." +msgstr "" + +#: wxUI/dialogs/mastodon/dialogs.py:48 +#, python-brace-format +msgid "This user has no followers yet. {0} can't create a timeline." +msgstr "" + +#: wxUI/dialogs/mastodon/dialogs.py:53 +#, python-brace-format +msgid "This user is not following anyone. {0} can't create a timeline." +msgstr "" + +#: wxUI/dialogs/mastodon/dialogs.py:60 +#, python-brace-format +msgid "The focused item has no user in it. {} ca't open a user profile" +msgstr "" + +#: wxUI/dialogs/mastodon/menus.py:13 wxUI/dialogs/mastodon/menus.py:41 +msgid "R&emove from favorites" +msgstr "" + +#: wxUI/dialogs/mastodon/menus.py:15 wxUI/dialogs/mastodon/menus.py:43 +msgid "&Open URL" +msgstr "" + +#: wxUI/dialogs/mastodon/menus.py:17 wxUI/dialogs/mastodon/menus.py:47 +msgid "&Open in instance" +msgstr "" + +#: wxUI/dialogs/mastodon/menus.py:19 wxUI/dialogs/mastodon/menus.py:45 +msgid "&Play audio" +msgstr "" + +#: wxUI/dialogs/mastodon/menus.py:23 wxUI/dialogs/mastodon/menus.py:51 +msgid "&Copy to clipboard" +msgstr "" + +#: wxUI/dialogs/mastodon/menus.py:27 wxUI/dialogs/mastodon/menus.py:55 +msgid "&User actions..." +msgstr "" + +#: wxUI/dialogs/mastodon/menus.py:53 +msgid "&Dismiss" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:20 +#: wxUI/dialogs/mastodon/postDialogs.py:38 +msgid "Attachments" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:24 +msgid "File" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:25 +msgid "Type" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:26 +#: wxUI/dialogs/mastodon/postDialogs.py:141 +msgid "Description" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:28 +msgid "Remove Attachment" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:33 +msgid "Post in the thread" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:40 +msgid "Remove post" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:47 +msgid "&Visibility" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:54 +msgid "Language" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:58 +msgid "A&dd" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:59 +msgid "S&ensitive content" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:64 +msgid "Content warning" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:71 +msgid "Add p&ost" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:75 +msgid "Auto&complete users" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:77 +msgid "Check &spelling" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:79 +#, fuzzy +msgid "&Translate" +msgstr "תורגם" + +#: wxUI/dialogs/mastodon/postDialogs.py:106 +#, python-brace-format +msgid "Post - {} characters" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:130 +msgid "Image" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:132 +msgid "Video" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:134 +msgid "Audio" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:136 +msgid "Poll" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:141 +msgid "please provide a description" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:148 +msgid "Select the picture to be uploaded" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:148 +msgid "Image files (*.png, *.jpg, *.gif)|*.png; *.jpg; *.gif" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:155 +msgid "Select the video to be uploaded" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:155 +msgid "Video files (*.mp4, *.mov, *.m4v, *.webm)| *.mp4; *.m4v; *.mov; *.webm" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:162 +msgid "Select the audio file to be uploaded" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:162 +msgid "" +"Audio files (*.mp3, *.ogg, *.wav, *.flac, *.opus, *.aac, *.m4a, " +"*.3gp)|*.mp3; *.ogg; *.wav; *.flac; *.opus; *.aac; *.m4a; *.3gp" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:169 +msgid "" +"It is not possible to add more attachments. Please take into account that" +" You can add only a maximum of 4 images, or one audio, video or poll per" +" post. Please remove other attachments before continuing." +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:169 +msgid "Error adding attachment" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:172 +msgid "" +"You can add a poll or media files. In order to add your poll, please " +"remove other attachments first." +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:172 +msgid "Error adding poll" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:177 +#, python-format +msgid "Post - %i characters " +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:200 +msgid "Image description" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:210 +msgid "Privacy" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:214 +msgid "Source" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:222 +msgid "Boosts" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:224 +msgid "View users who boosted this post" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:231 +msgid "View users who favorited this post" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:239 +msgid "Copy link to clipboard" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:241 +#: wxUI/dialogs/mastodon/postDialogs.py:280 +msgid "Check &spelling..." +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:242 +#: wxUI/dialogs/mastodon/postDialogs.py:281 +msgid "&Translate..." +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:243 +#: wxUI/dialogs/mastodon/postDialogs.py:282 +msgid "C&lose" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:294 +msgid "Add a poll" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:298 +msgid "Participation time" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:300 +msgid "5 minutes" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:300 +msgid "30 minutes" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:300 +msgid "1 hour" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:300 +msgid "6 hours" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:300 +msgid "1 day" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:300 +msgid "2 days" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:300 +msgid "3 days" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:300 +msgid "4 days" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:300 +msgid "5 days" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:300 +msgid "6 days" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:300 +msgid "7 days" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:304 +msgid "Choices" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:308 +msgid "Option 1" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:315 +msgid "Option 2" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:322 +msgid "Option 3" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:329 +msgid "Option 4" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:334 +msgid "Allow multiple choices per user" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:337 +msgid "Hide votes count until the poll expires" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:363 +msgid "Please make sure you have provided at least two options for the poll." +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:363 +msgid "Not enough information" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:368 +msgid "Vote in this poll" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:371 +#, fuzzy +msgid "Options" +msgstr "איזכורים" + +# | msgid "Searches" +#: wxUI/dialogs/mastodon/search.py:9 +#, fuzzy +msgid "Search" +msgstr "חיפושים" + +#: wxUI/dialogs/mastodon/search.py:18 +msgid "Posts" +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:22 +#, fuzzy +msgid "Select user" +msgstr "בחר את התמונה" + +#: wxUI/dialogs/mastodon/showUserProfile.py:73 +#, python-brace-format +msgid "{}'s Profile" +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:79 +msgid "&Name: " +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:84 +msgid "&URL: " +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:89 +msgid "&Bio: " +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:94 +msgid "&Joined at: " +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:99 +#, fuzzy +msgid "&Actions" +msgstr "איזכורים" + +#: wxUI/dialogs/mastodon/showUserProfile.py:104 +msgid "Header: " +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:112 +msgid "Avatar: " +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:122 +#, python-brace-format +msgid "Field &{} - Label: " +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:129 +msgid "Content: " +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:43 +#: wxUI/dialogs/mastodon/filters/create_filter.py:65 +#: wxUI/dialogs/mastodon/showUserProfile.py:135 +msgid "Yes" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:43 +#: wxUI/dialogs/mastodon/filters/create_filter.py:65 +#: wxUI/dialogs/mastodon/filters/create_filter.py:69 +#: wxUI/dialogs/mastodon/showUserProfile.py:135 +msgid "No" +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:137 +msgid "&Private account: " +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:144 +msgid "&Bot account: " +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:151 +msgid "&Discoverable account: " +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:157 +#, python-brace-format +msgid "{} p&osts. Click to open posts timeline" +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:162 +#, python-brace-format +msgid "{} &following. Click to open Following timeline" +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:166 +#, python-brace-format +msgid "{} fo&llowers. Click to open followers timeline" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:43 +msgid "&Display Name" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:50 +msgid "&Bio" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:58 +msgid "Header" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:71 +msgid "Change &header" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:79 +msgid "Avatar" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:92 +msgid "Change &avatar" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:102 +#, python-brace-format +msgid "Field &{}: Label" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:110 +msgid "Content" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:120 +msgid "&Private account" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:122 +msgid "&Bot account" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:124 +msgid "&Discoverable account" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:167 +msgid "Select header image - max 2MB" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:172 +#: wxUI/dialogs/mastodon/updateProfile.py:194 +msgid "The selected file is larger than 2MB. Do you want to select another file?" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:173 +#: wxUI/dialogs/mastodon/updateProfile.py:195 +msgid "File more than 2MB" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:189 +msgid "Select avatar image - max 2MB" +msgstr "" + +#: wxUI/dialogs/mastodon/userActions.py:19 +msgid "&Follow" +msgstr "" + +#: wxUI/dialogs/mastodon/userActions.py:20 +msgid "U&nfollow" +msgstr "" + +#: wxUI/dialogs/mastodon/userActions.py:22 +msgid "Unmu&te" +msgstr "" + +#: wxUI/dialogs/mastodon/userActions.py:23 +msgid "&Block" +msgstr "" + +#: wxUI/dialogs/mastodon/userActions.py:24 +msgid "Unbl&ock" +msgstr "" + +#: wxUI/dialogs/mastodon/userTimeline.py:9 +#, python-format +msgid "Timeline for %s" +msgstr "" + +#: wxUI/dialogs/mastodon/userTimeline.py:19 +msgid "&Posts" +msgstr "" + +#: wxUI/dialogs/mastodon/userTimeline.py:20 +msgid "&Followers" +msgstr "" + +# | msgid "Followers" +#: wxUI/dialogs/mastodon/userTimeline.py:21 +#, fuzzy +msgid "Fo&llowing" +msgstr "עוקבים" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:12 +msgid "Keyword" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:13 +#: wxUI/dialogs/mastodon/filters/create_filter.py:24 +msgid "Whole word" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:19 +msgid "Keyword:" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:25 +#: wxUI/dialogs/mastodon/filters/manage_filters.py:22 +msgid "Add" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:34 +msgid "Palabras clave a filtrar:" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:74 +msgid "New filter" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:78 +#, fuzzy +msgid "Home timeline" +msgstr "צירי זמן" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:79 +msgid "Public statuses" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:81 +#, fuzzy +msgid "Threads" +msgstr "מוכן" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:82 +msgid "Profiles" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:86 +#, fuzzy +msgid "Hide posts" +msgstr "ציוצים שנשלחו" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:87 +msgid "Set a content warning to posts" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:91 +msgid "Hours" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:92 +msgid "Days" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:93 +msgid "Weeks" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:94 +msgid "months" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:97 +msgid "Title:" +msgstr "" + +# | msgid "Reply to {arg0}" +#: wxUI/dialogs/mastodon/filters/create_filter.py:104 +#, fuzzy +msgid "Apply to:" +msgstr "השב ל[arge0]" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:114 +#, fuzzy +msgid "Action:" +msgstr "איזכורים" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:122 +msgid "Expires in:" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/manage_filters.py:10 +#, fuzzy +msgid "Filters" +msgstr "עוקבים" + +#: wxUI/dialogs/mastodon/filters/manage_filters.py:15 +msgid "Title" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/manage_filters.py:16 +msgid "Keywords" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/manage_filters.py:17 +msgid "Contexts" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/manage_filters.py:19 +msgid "Expires" +msgstr "" + +#~ msgid "There are no results for the coordinates in this tweet" +#~ msgstr "לא נמצאו תוצאות עבור המונחים בציוץ זה" + +#~ msgid "This list is already opened" +#~ msgstr "רשימה זו כבר פתוחה" + +# | msgid "Timeline for {}" +#~ msgid "Timelines for {}" +#~ msgstr "ציר הזמן של ][" + +#~ msgid "{account_name} (Mastodon)" +#~ msgstr "" + +#~ msgid "Image description: {}" +#~ msgstr "" + +#~ msgid "URL of mastodon instance:" +#~ msgstr "" + +#~ msgid "Email address:" +#~ msgstr "" + +#~ msgid "Password:" +#~ msgstr "" + +#~ msgid "&Item" +#~ msgstr "" + +#~ msgid "Visibility" +#~ msgstr "" + +#~ msgid "Sensitive content" +#~ msgstr "" + +#~ msgid "Allow multiple votes per user" +#~ msgstr "" + +#~ msgid "{username} has mentionned you: {status}" +#~ msgstr "" + +#~ msgid "has mentionned you: {status}" +#~ msgstr "" + +#~ msgid "Likes for {}" +#~ msgstr "אהבתי ל][" + +#~ msgid "Trending topics for %s" +#~ msgstr "הנושאים החמים ל%s" + +#~ msgid "Select user" +#~ msgstr "בחר משתמש" + +#~ msgid "Sent direct messages" +#~ msgstr "הודעות פרטיות שנשלחו" + +#~ msgid "Sent tweets" +#~ msgstr "ציוצים שנשלחו" + +#~ msgid "Likes" +#~ msgstr "אהובים" + +#~ msgid "Friends" +#~ msgstr "חברים" + +#~ msgid "{username}'s likes" +#~ msgstr "" + +#~ msgid "{username}'s friends" +#~ msgstr "" + +#~ msgid "Tweet" +#~ msgstr "ציוץ" + +#~ msgid "Write the tweet here" +#~ msgstr "כתוב את הציוץ כאן" + +#~ msgid "New tweet in {0}" +#~ msgstr "" + +#~ msgid "{0} new tweets in {1}." +#~ msgstr "" + +#~ msgid "Reply to {arg0}" +#~ msgstr "השב ל[arge0]" + +#~ msgid "Reply to %s" +#~ msgstr "השב ל%s" + +#~ msgid "Direct message to %s" +#~ msgstr "הודעה פרטית ל%s" + +#~ msgid "New direct message" +#~ msgstr "הודעה פרטית חדשה" + +#~ msgid "This action is not supported on protected accounts." +#~ msgstr "פעולה זו אינה נתמכת בחוצץ זה " + +#~ msgid "Quote" +#~ msgstr "ציטוט" + +#~ msgid "Add your comment to the tweet" +#~ msgstr "הוסף את התגובה שלך לציוץ" + +#~ msgid "User details" +#~ msgstr "פרטי משתמש" + +#~ msgid "MMM D, YYYY. H:m" +#~ msgstr "" + +#~ msgid "There are no coordinates in this tweet" +#~ msgstr "אין מונחים בציוץ זה" + +#~ msgid "Error decoding coordinates. Try again later." +#~ msgstr "שגיאה בפענוח מונחים. נסה שנית מאוחר יותר" + +#~ msgid "Invalid buffer" +#~ msgstr "חוצץ לא חוקי" + +#~ msgid "{0} new direct messages." +#~ msgstr "הודעה פרטית חדשה" + +#~ msgid "This action is not supported in the buffer yet." +#~ msgstr "פעולה זו אינה נתמכת בחוצץ זה " + +#~ msgid "" +#~ "Getting more items cannot be done " +#~ "in this buffer. Use the direct " +#~ "messages buffer instead." +#~ msgstr "" + +#~ msgid "Mention" +#~ msgstr "איזכור" + +#~ msgid "Mention to %s" +#~ msgstr "איזכור ל%s" + +#~ msgid "{0} new followers." +#~ msgstr "" + +#~ msgid "This action is not supported in the buffer, yet." +#~ msgstr "פעולה זו אינה נתמכת בחוצץ זה " + +#~ msgid "&Retweet" +#~ msgstr "" + +#~ msgid "&Like" +#~ msgstr "" + +#~ msgid "&Unlike" +#~ msgstr "" + +#~ msgid "View &address" +#~ msgstr "" + +#~ msgid "&View lists" +#~ msgstr "" + +#~ msgid "View likes" +#~ msgstr "" + +#~ msgid "Likes timelines" +#~ msgstr "צירי זמן אהובים " + +#~ msgid "Followers timelines" +#~ msgstr "צירי זמן של עוקבים" + +#~ msgid "Following timelines" +#~ msgstr "צירי זמן של עוקבים" + +#~ msgid "Lists" +#~ msgstr "רשימות" + +#~ msgid "List for {}" +#~ msgstr "רשימה ל][" + +#~ msgid "Filters cannot be applied on this buffer" +#~ msgstr "לא ניתן להפעיל מסננים בחוצץ זה" + +#~ msgid "View item" +#~ msgstr "" + +#~ msgid "Ask" +#~ msgstr "שאל" + +#~ msgid "Retweet without comments" +#~ msgstr "צייץ ללא תגובות" + +#~ msgid "Retweet with comments" +#~ msgstr "צייץ עם תגובות " + +#~ msgid "Edit template for tweets. Current template: {}" +#~ msgstr "" + +#~ msgid "Edit template for direct messages. Current template: {}" +#~ msgstr "" + +#~ msgid "Edit template for sent direct messages. Current template: {}" +#~ msgstr "" + +#~ msgid "User has been suspended" +#~ msgstr "משתמש זה נחסם" + +#~ msgid "Information for %s" +#~ msgstr "מידע על %s" + +#~ msgid "Discarded" +#~ msgstr "נמחק" + +#~ msgid "Username: @%s\n" +#~ msgstr "שם משתמש: %s\n" + +#~ msgid "Name: %s\n" +#~ msgstr "שם: %s\n" + +#~ msgid "Location: %s\n" +#~ msgstr "מיקום: %s\n" + +#~ msgid "URL: %s\n" +#~ msgstr "כתובת ישירה: %s\n" + +#~ msgid "Bio: %s\n" +#~ msgstr "אודותויך %s\n" + +#~ msgid "Yes" +#~ msgstr "כן " + +#~ msgid "No" +#~ msgstr "לא" + +#~ msgid "Protected: %s\n" +#~ msgstr "מוגן: %s\n" + +#~ msgid "Relationship: " +#~ msgstr "" + +#~ msgid "You follow {0}. " +#~ msgstr "" + +#~ msgid "{0} is following you." +#~ msgstr "" + +#~ msgid "" +#~ "Followers: %s\n" +#~ " Friends: %s\n" +#~ msgstr "" + +#~ msgid "Verified: %s\n" +#~ msgstr "" + +#~ msgid "Tweets: %s\n" +#~ msgstr "" + +#~ msgid "Likes: %s" +#~ msgstr "" + +#~ msgid "You can't ignore direct messages" +#~ msgstr "" + +#~ msgid "Attaching..." +#~ msgstr "" + +#~ msgid "Pause" +#~ msgstr "" + +#~ msgid "&Resume" +#~ msgstr "" + +#~ msgid "Resume" +#~ msgstr "" + +#~ msgid "&Pause" +#~ msgstr "" + +#~ msgid "&Stop" +#~ msgstr "" + +#~ msgid "Recording" +#~ msgstr "" + +#~ msgid "Stopped" +#~ msgstr "" + +#~ msgid "&Record" +#~ msgstr "" + +#~ msgid "&Play" +#~ msgstr "" + +#~ msgid "Recoding audio..." +#~ msgstr "" + +#~ msgid "Error in file upload: {0}" +#~ msgstr "" + +#~ msgid "Transferred" +#~ msgstr "" + +#~ msgid "Total file size" +#~ msgstr "" + +#~ msgid "Transfer rate" +#~ msgstr "" + +#~ msgid "Time left" +#~ msgstr "" + +#~ msgid "Attach audio" +#~ msgstr "" + +#~ msgid "&Add an existing file" +#~ msgstr "" + +#~ msgid "&Discard" +#~ msgstr "" + +#~ msgid "Upload to" +#~ msgstr "" + +#~ msgid "Attach" +#~ msgstr "" + +#~ msgid "&Cancel" +#~ msgstr "" + +#~ msgid "Audio Files (*.mp3, *.ogg, *.wav)|*.mp3; *.ogg; *.wav" +#~ msgstr "" + +#~ msgid "You have to start writing" +#~ msgstr "" + +#~ msgid "There are no results in your users database" +#~ msgstr "" + +#~ msgid "Autocompletion only works for users." +#~ msgstr "" + +#~ msgid "" +#~ "Updating database... You can close this" +#~ " window now. A message will tell " +#~ "you when the process finishes." +#~ msgstr "" + +#~ msgid "Manage Autocompletion database" +#~ msgstr "" + +#~ msgid "Editing {0} users database" +#~ msgstr "" + +#~ msgid "Username" +#~ msgstr "" + +#~ msgid "Add user" +#~ msgstr "" + +#~ msgid "Remove user" +#~ msgstr "" + +#~ msgid "Twitter username" +#~ msgstr "" + +#~ msgid "Add user to database" +#~ msgstr "" + +#~ msgid "The user does not exist" +#~ msgstr "" + +#~ msgid "Error!" +#~ msgstr "" + +#~ msgid "Autocomplete users' settings" +#~ msgstr "" + +#~ msgid "Add followers to database" +#~ msgstr "" + +#~ msgid "Add friends to database" +#~ msgstr "" + +#~ msgid "Updating autocompletion database" +#~ msgstr "" + +#~ msgid "" +#~ "This process will retrieve the users " +#~ "you selected from Twitter, and add " +#~ "them to the user autocomplete database." +#~ " Please note that if there are " +#~ "many users or you have tried to" +#~ " perform this action less than 15 " +#~ "minutes ago, TWBlue may reach a " +#~ "limit in Twitter API calls when " +#~ "trying to load the users into the" +#~ " database. If this happens, we will" +#~ " show you an error, in which " +#~ "case you will have to try this " +#~ "process again in a few minutes. If" +#~ " this process ends with no error, " +#~ "you will be redirected back to the" +#~ " account settings dialog. Do you want" +#~ " to continue?" +#~ msgstr "" + +#~ msgid "TWBlue has imported {} users successfully." +#~ msgstr "" + +#~ msgid "Done" +#~ msgstr "" + +#~ msgid "Error adding users from Twitter. Please try again in about 15 minutes." +#~ msgstr "" + +#~ msgid "New tweet" +#~ msgstr "" + +#~ msgid "Retweet" +#~ msgstr "" + +#~ msgid "Like a tweet" +#~ msgstr "" + +#~ msgid "Like/unlike a tweet" +#~ msgstr "" + +#~ msgid "Unlike a tweet" +#~ msgstr "" + +#~ msgid "See user details" +#~ msgstr "" + +#~ msgid "Show tweet" +#~ msgstr "" + +#~ msgid "Interact with the currently focused tweet." +#~ msgstr "" + +#~ msgid "View in Twitter" +#~ msgstr "" + +#~ msgid "Edit profile" +#~ msgstr "" + +#~ msgid "Delete a tweet or direct message" +#~ msgstr "" + +#~ msgid "Add to list" +#~ msgstr "" + +#~ msgid "Remove from list" +#~ msgstr "" + +#~ msgid "Search on twitter" +#~ msgstr "" + +#~ msgid "Show lists for a specified user" +#~ msgstr "" + +#~ msgid "Get geolocation" +#~ msgstr "" + +#~ msgid "Display the tweet's geolocation in a dialog" +#~ msgstr "" + +#~ msgid "Create a trending topics buffer" +#~ msgstr "" + +#~ msgid "" +#~ "Opens the list manager, which allows " +#~ "you to create, edit, delete and " +#~ "open lists in buffers." +#~ msgstr "" + +#~ msgid "Opens the list manager" +#~ msgstr "" + +#~ msgid "{account_name} (Twitter)" +#~ msgstr "" + +#~ msgid "Twitter" +#~ msgstr "" + +#~ msgid "" +#~ "The request to authorize your Twitter" +#~ " account will be opened in your " +#~ "browser. You only need to do this" +#~ " once. Would you like to continue?" +#~ msgstr "" + +#~ msgid "" +#~ "TWBlue is unable to authenticate the " +#~ "account for {} in Twitter. It " +#~ "might be due to an invalid or " +#~ "expired token, revoqued access to the" +#~ " application, or after an account " +#~ "reactivation. Please remove the account " +#~ "manually from your Twitter sessions in" +#~ " order to stop seeing this message." +#~ msgstr "" + +#~ msgid "Authentication error for session {}" +#~ msgstr "" + +#~ msgid "Dm to %s " +#~ msgstr "" + +#~ msgid "{0}. Quoted tweet from @{1}: {2}" +#~ msgstr "" + +#~ msgid "Unavailable" +#~ msgstr "" + +#~ msgid "" +#~ "%s (@%s). %s followers, %s friends, " +#~ "%s tweets. Last tweeted %s. Joined " +#~ "Twitter %s" +#~ msgstr "" + +#~ msgid "No description available" +#~ msgstr "" + +#~ msgid "private" +#~ msgstr "" + +#~ msgid "public" +#~ msgstr "" + +#~ msgid "Enter your PIN code here" +#~ msgstr "" + +#~ msgid "Authorising account..." +#~ msgstr "" + +#~ msgid "" +#~ "We could not authorice your Twitter " +#~ "account to be used in TWBlue. This" +#~ " might be caused due to an " +#~ "incorrect verification code. Please try " +#~ "to add the session again." +#~ msgstr "" + +#~ msgid "%s failed. Reason: %s" +#~ msgstr "" + +#~ msgid "Deleted account" +#~ msgstr "" + +#~ msgid "$sender_display_name, $text $date" +#~ msgstr "" + +#~ msgid "" +#~ "$display_name (@$screen_name). $followers followers," +#~ " $following following, $tweets tweets. " +#~ "Joined Twitter $created_at." +#~ msgstr "" + +#~ msgid "Image description: {}." +#~ msgstr "" + +#~ msgid "RT @{}: {} Quote from @{}: {}" +#~ msgstr "" + +#~ msgid "RT @{}: {}" +#~ msgstr "" + +# | msgid "List for {}" +#~ msgid "{} Quote from @{}: {}" +#~ msgstr "רשימה ל][" + +#~ msgid "Sorry, you are not authorised to see this status." +#~ msgstr "" + +#~ msgid "Error {0}" +#~ msgstr "חפש את][ " + +#~ msgid "{user_1}, {user_2} and {all_users} more: {text}" +#~ msgstr "" + +#~ msgid "" +#~ "This retweet is over 140 characters. " +#~ "Would you like to post it as " +#~ "a mention to the poster with your" +#~ " comments and a link to the " +#~ "original tweet?" +#~ msgstr "" + +#~ msgid "Would you like to add a comment to this tweet?" +#~ msgstr "" + +#~ msgid "" +#~ "Do you really want to delete this" +#~ " tweet? It will be deleted from " +#~ "Twitter as well." +#~ msgstr "" + +#~ msgid "Enter the name of the client : " +#~ msgstr "" + +#~ msgid "Add client" +#~ msgstr "" + +#~ msgid "This user has no tweets, so you can't open a timeline for them." +#~ msgstr "" + +#~ msgid "" +#~ "This is a protected Twitter user, " +#~ "which means you can't open a " +#~ "timeline using the Streaming API. The" +#~ " user's tweets will not update due" +#~ " to a twitter policy. Do you " +#~ "want to continue?" +#~ msgstr "" + +#~ msgid "" +#~ "This is a protected user account, " +#~ "you need to follow this user to" +#~ " view their tweets or likes." +#~ msgstr "" + +#~ msgid "This user has no tweets. {0} can't create a timeline." +#~ msgstr "" + +#~ msgid "This user has no favorited tweets. {0} can't create a timeline." +#~ msgstr "" + +#~ msgid "This user has no followers. {0} can't create a timeline." +#~ msgstr "" + +#~ msgid "This user has no friends. {0} can't create a timeline." +#~ msgstr "" + +#~ msgid "Geolocation data: {0}" +#~ msgstr "" + +#~ msgid "Geo data for this tweet" +#~ msgstr "" + +#~ msgid "You have been blocked from viewing this content" +#~ msgstr "" + +#~ msgid "" +#~ "You have been blocked from viewing " +#~ "someone's content. In order to avoid " +#~ "conflicts with the full session, TWBlue" +#~ " will remove the affected timeline." +#~ msgstr "" + +#~ msgid "" +#~ "TWBlue cannot load this timeline because" +#~ " the user has been suspended from " +#~ "Twitter." +#~ msgstr "" + +#~ msgid "Do you really want to delete this filter?" +#~ msgstr "" + +#~ msgid "This filter already exists. Please use a different title" +#~ msgstr "" + +#~ msgid "&Show direct message" +#~ msgstr "" + +#~ msgid "&Show event" +#~ msgstr "" + +#~ msgid "Direct &message" +#~ msgstr "" + +#~ msgid "&Show user" +#~ msgstr "" + +#~ msgid "Search topic" +#~ msgstr "" + +#~ msgid "&Tweet about this trend" +#~ msgstr "" + +#~ msgid "&Show item" +#~ msgstr "" + +#~ msgid "Update &profile" +#~ msgstr "" + +#~ msgid "Event" +#~ msgstr "" + +#~ msgid "Remove event" +#~ msgstr "" + +#~ msgid "Trending topic" +#~ msgstr "" + +#~ msgid "Tweet about this trend" +#~ msgstr "" + +#~ msgid "" +#~ "Scan account and add friends and " +#~ "followers to the user autocompletion " +#~ "database" +#~ msgstr "" + +#~ msgid "" +#~ "Inverted buffers: The newest tweets will" +#~ " be shown at the beginning while " +#~ "the oldest at the end" +#~ msgstr "" + +#~ msgid "Retweet mode" +#~ msgstr "" + +#~ msgid "" +#~ "Load cache for tweets in memory " +#~ "(much faster in big datasets but " +#~ "requires more RAM)" +#~ msgstr "" + +#~ msgid "Ignored clients" +#~ msgstr "" + +#~ msgid "Remove client" +#~ msgstr "" + +#~ msgid "Indicate audio tweets with sound" +#~ msgstr "" + +#~ msgid "Indicate geotweets with sound" +#~ msgstr "" + +#~ msgid "Indicate tweets containing images with sound" +#~ msgstr "" + +#~ msgid "API Key for SndUp" +#~ msgstr "" + +#~ msgid "Create a filter for this buffer" +#~ msgstr "" + +#~ msgid "Filter title" +#~ msgstr "" + +#~ msgid "Filter by word" +#~ msgstr "" + +#~ msgid "Ignore tweets wich contain the following word" +#~ msgstr "" + +#~ msgid "Ignore tweets without the following word" +#~ msgstr "" + +#~ msgid "word" +#~ msgstr "" + +#~ msgid "Allow retweets" +#~ msgstr "" + +#~ msgid "Allow quoted tweets" +#~ msgstr "" + +#~ msgid "Allow replies" +#~ msgstr "צירי זמן של עוקבים" + +#~ msgid "Use this term as a regular expression" +#~ msgstr "" + +#~ msgid "Filter by language" +#~ msgstr "" + +#~ msgid "Load tweets in the following languages" +#~ msgstr "" + +#~ msgid "Ignore tweets in the following languages" +#~ msgstr "" + +#~ msgid "Don't filter by language" +#~ msgstr "" + +#~ msgid "Supported languages" +#~ msgstr "" + +#~ msgid "Add selected language to filter" +#~ msgstr "" + +#~ msgid "Selected languages" +#~ msgstr "" + +#~ msgid "You must define a name for the filter before creating it." +#~ msgstr "" + +#~ msgid "Missing filter name" +#~ msgstr "" + +#~ msgid "Manage filters" +#~ msgstr "" + +#~ msgid "Filters" +#~ msgstr "" + +#~ msgid "Filter" +#~ msgstr "" + +#~ msgid "Lists manager" +#~ msgstr "" + +#~ msgid "List" +#~ msgstr "" + +#~ msgid "Owner" +#~ msgstr "" + +#~ msgid "Members" +#~ msgstr "" + +#~ msgid "mode" +#~ msgstr "" + +#~ msgid "Create a new list" +#~ msgstr "" + +#~ msgid "Open in buffer" +#~ msgstr "" + +#~ msgid "Viewing lists for %s" +#~ msgstr "" + +#~ msgid "Subscribe" +#~ msgstr "" + +#~ msgid "Unsubscribe" +#~ msgstr "" + +#~ msgid "Name (20 characters maximun)" +#~ msgstr "" + +#~ msgid "Mode" +#~ msgstr "" + +#~ msgid "Private" +#~ msgstr "" + +#~ msgid "Editing the list %s" +#~ msgstr "" + +#~ msgid "Select a list to add the user" +#~ msgstr "" + +#~ msgid "Add" +#~ msgstr "" + +#~ msgid "Select a list to remove the user" +#~ msgstr "" + +#~ msgid "Do you really want to delete this list?" +#~ msgstr "" + +#~ msgid "Search on Twitter" +#~ msgstr "" + +#~ msgid "Tweets" +#~ msgstr "" + +#~ msgid "&Language for results: " +#~ msgstr "" + +#~ msgid "any" +#~ msgstr "" + +#~ msgid "Results &type: " +#~ msgstr "" + +#~ msgid "Mixed" +#~ msgstr "" + +#~ msgid "Recent" +#~ msgstr "" + +#~ msgid "Popular" +#~ msgstr "" + +#~ msgid "Details" +#~ msgstr "" + +#~ msgid "&Go to URL" +#~ msgstr "" + +#~ msgid "View trending topics" +#~ msgstr "" + +#~ msgid "Trending topics by" +#~ msgstr "" + +#~ msgid "Country" +#~ msgstr "" + +#~ msgid "City" +#~ msgstr "" + +#~ msgid "&Location" +#~ msgstr "" + +#~ msgid "Update your profile" +#~ msgstr "" + +#~ msgid "&Name (50 characters maximum)" +#~ msgstr "" + +#~ msgid "&Website" +#~ msgstr "" + +#~ msgid "&Bio (160 characters maximum)" +#~ msgstr "" + +#~ msgid "Upload a &picture" +#~ msgstr "" + +#~ msgid "Upload a picture" +#~ msgstr "" + +#~ msgid "Discard image" +#~ msgstr "" + +#~ msgid "&Report as spam" +#~ msgstr "" + +#~ msgid "&Ignore tweets from this client" +#~ msgstr "" + +#~ msgid "&Tweets" +#~ msgstr "" + +#~ msgid "&Likes" +#~ msgstr "" + +#~ msgid "F&riends" +#~ msgstr "" + +#~ msgid "Delete attachment" +#~ msgstr "" + +#~ msgid "Added Tweets" +#~ msgstr "ציוצים שנשלחו" + +#~ msgid "Delete tweet" +#~ msgstr "ציוצים שנשלחו" + +#~ msgid "A&dd..." +#~ msgstr "" + +#~ msgid "Add t&weet" +#~ msgstr "" + +#~ msgid "&Attach audio..." +#~ msgstr "" + +#~ msgid "Sen&d" +#~ msgstr "" + +#~ msgid "Video files (*.mp4)|*.mp4" +#~ msgstr "" + +#~ msgid "" +#~ "It is not possible to add more " +#~ "attachments. Please make sure your tweet" +#~ " complies with Twitter'S attachment rules." +#~ " You can add only one video or" +#~ " GIF in every tweet, and a " +#~ "maximum of 4 photos." +#~ msgstr "" + +#~ msgid "&Mention to all" +#~ msgstr "" + +#~ msgid "&Recipient" +#~ msgstr "" + +#~ msgid "Tweet - %i characters " +#~ msgstr "" + +#~ msgid "Retweets: " +#~ msgstr "" + +#~ msgid "Likes: " +#~ msgstr "" + +#~ msgid "View" +#~ msgstr "" + +#~ msgid "Item" +#~ msgstr "" + +#~ msgid "&Expand URL" +#~ msgstr "" + +#~ msgid "Participation time (in days)" +#~ msgstr "" + +#~ msgid "https://twblue.es/donate" +#~ msgstr "" + +#~ msgid "&Open in Twitter" +#~ msgstr "" + +#~ msgid "&Show tweet" +#~ msgstr "" + +#~ msgid "Translated" +#~ msgstr "תורגם" + +#~ msgid "Afrikaans" +#~ msgstr "" + +#~ msgid "Albanian" +#~ msgstr "" + +#~ msgid "Amharic" +#~ msgstr "" + +#~ msgid "Arabic" +#~ msgstr "" + +#~ msgid "Armenian" +#~ msgstr "" + +#~ msgid "Azerbaijani" +#~ msgstr "" + +#~ msgid "Basque" +#~ msgstr "" + +#~ msgid "Belarusian" +#~ msgstr "" + +#~ msgid "Bengali" +#~ msgstr "" + +#~ msgid "Bihari" +#~ msgstr "" + +#~ msgid "Bulgarian" +#~ msgstr "" + +#~ msgid "Burmese" +#~ msgstr "" + +#~ msgid "Catalan" +#~ msgstr "" + +#~ msgid "Cherokee" +#~ msgstr "" + +#~ msgid "Chinese" +#~ msgstr "" + +#~ msgid "Chinese_simplified" +#~ msgstr "" + +#~ msgid "Chinese_traditional" +#~ msgstr "" + +#~ msgid "Croatian" +#~ msgstr "" + +#~ msgid "Czech" +#~ msgstr "" + +#~ msgid "Dhivehi" +#~ msgstr "" + +#~ msgid "Esperanto" +#~ msgstr "" + +#~ msgid "Estonian" +#~ msgstr "" + +#~ msgid "Filipino" +#~ msgstr "" + +#~ msgid "Galician" +#~ msgstr "" + +#~ msgid "Georgian" +#~ msgstr "" + +#~ msgid "Greek" +#~ msgstr "" + +#~ msgid "Guarani" +#~ msgstr "" + +#~ msgid "Gujarati" +#~ msgstr "" + +#~ msgid "Hebrew" +#~ msgstr "" + +#~ msgid "Hindi" +#~ msgstr "" + +#~ msgid "Icelandic" +#~ msgstr "" + +#~ msgid "Indonesian" +#~ msgstr "" + +#~ msgid "Inuktitut" +#~ msgstr "" + +#~ msgid "Irish" +#~ msgstr "" + +#~ msgid "Kannada" +#~ msgstr "" + +#~ msgid "Kazakh" +#~ msgstr "" + +#~ msgid "Khmer" +#~ msgstr "" + +#~ msgid "Kurdish" +#~ msgstr "" + +#~ msgid "Kyrgyz" +#~ msgstr "" + +#~ msgid "Laothian" +#~ msgstr "" + +#~ msgid "Latvian" +#~ msgstr "" + +#~ msgid "Lithuanian" +#~ msgstr "" + +#~ msgid "Macedonian" +#~ msgstr "" + +#~ msgid "Malay" +#~ msgstr "" + +#~ msgid "Malayalam" +#~ msgstr "" + +#~ msgid "Maltese" +#~ msgstr "" + +#~ msgid "Marathi" +#~ msgstr "" + +#~ msgid "Mongolian" +#~ msgstr "" + +#~ msgid "Nepali" +#~ msgstr "" + +#~ msgid "Norwegian" +#~ msgstr "" + +#~ msgid "Oriya" +#~ msgstr "" + +#~ msgid "Pashto" +#~ msgstr "" + +#~ msgid "Persian" +#~ msgstr "" + +#~ msgid "Punjabi" +#~ msgstr "" + +#~ msgid "Romanian" +#~ msgstr "" + +#~ msgid "Sanskrit" +#~ msgstr "" + +#~ msgid "Serbian" +#~ msgstr "" + +#~ msgid "Sindhi" +#~ msgstr "" + +#~ msgid "Sinhalese" +#~ msgstr "" + +#~ msgid "Slovak" +#~ msgstr "" + +#~ msgid "Slovenian" +#~ msgstr "" + +#~ msgid "Swahili" +#~ msgstr "" + +#~ msgid "Swedish" +#~ msgstr "" + +#~ msgid "Tajik" +#~ msgstr "" + +#~ msgid "Tamil" +#~ msgstr "" + +#~ msgid "Tagalog" +#~ msgstr "" + +#~ msgid "Telugu" +#~ msgstr "" + +#~ msgid "Thai" +#~ msgstr "" + +#~ msgid "Tibetan" +#~ msgstr "" + +#~ msgid "Ukrainian" +#~ msgstr "" + +#~ msgid "Urdu" +#~ msgstr "" + +#~ msgid "Uzbek" +#~ msgstr "" + +#~ msgid "Uighur" +#~ msgstr "" + +#~ msgid "Vietnamese" +#~ msgstr "" + +#~ msgid "Welsh" +#~ msgstr "" + +#~ msgid "Yiddish" +#~ msgstr "" + +#~ msgid "" +#~ "TWBlue has detected that you're running" +#~ " windows 10 and has changed the " +#~ "default keymap to the Windows 10 " +#~ "keymap. It means that some keyboard " +#~ "shorcuts could be different. Please " +#~ "check the keystroke editor by pressing" +#~ " Alt+Win+K to see all available " +#~ "keystrokes for this keymap." +#~ msgstr "" + +#~ msgid "Boosts: " +#~ msgstr "" + +#~ msgid "Favorites: " +#~ msgstr "" + +#~ msgid "Source: " +#~ msgstr "" + +#~ msgid "Date: " +#~ msgstr "" + +#~ msgid "Community for {}" +#~ msgstr "" + +#~ msgid "Run {0} at Windows startup" +#~ msgstr "" + +#~ msgid "Use Codeofdusk's longtweet handlers (may decrease client performance)" +#~ msgstr "" + +#~ msgid "Remember state for mention all and long tweet" +#~ msgstr "" + +#~ msgid "Name: " +#~ msgstr "" + +#~ msgid "URL: " +#~ msgstr "" + +#~ msgid "Bio: " +#~ msgstr "" + +#~ msgid "Joined at: " +#~ msgstr "" + +#~ msgid "Field {} - Label: " +#~ msgstr "" + +#~ msgid "Private account: " +#~ msgstr "" + +#~ msgid "Bot account: " +#~ msgstr "" + +#~ msgid "Discoverable account: " +#~ msgstr "" + +#~ msgid "{} posts. Click to open posts timeline" +#~ msgstr "" + +#~ msgid "{} following. Click to open Following timeline" +#~ msgstr "" + +#~ msgid "{} followers. Click to open followers timeline" +#~ msgstr "" + +#~ msgid "Display Name" +#~ msgstr "" + +#~ msgid "Bio" +#~ msgstr "" + +#~ msgid "Change header" +#~ msgstr "" + +#~ msgid "Change avatar" +#~ msgstr "" + +#~ msgid "Field {}: Label" +#~ msgstr "" + +#~ msgid "Private account" +#~ msgstr "" + +#~ msgid "Bot account" +#~ msgstr "" + +#~ msgid "Discoverable account" +#~ msgstr "" + +#~ msgid "Add following to database" +#~ msgstr "" + +#~ msgid "Language" +#~ msgstr "" + +#~ msgid "ask before exiting {0}" +#~ msgstr "" + +#~ msgid "Disable Streaming functions" +#~ msgstr "" + +#~ msgid "Buffer update interval, in minutes" +#~ msgstr "" + +#~ msgid "Play a sound when {0} launches" +#~ msgstr "" + +#~ msgid "Speak a message when {0} launches" +#~ msgstr "" + +#~ msgid "Use invisible interface's keyboard shortcuts while GUI is visible" +#~ msgstr "" + +#~ msgid "Activate Sapi5 when any other screen reader is not being run" +#~ msgstr "" + +#~ msgid "Hide GUI on launch" +#~ msgstr "" + +#~ msgid "Read long posts in GUI" +#~ msgstr "" + +#~ msgid "Keymap" +#~ msgstr "" + +#~ msgid "Check for updates when {0} launches" +#~ msgstr "" + +#~ msgid "Proxy type: " +#~ msgstr "" + +#~ msgid "Proxy server: " +#~ msgstr "" + +#~ msgid "Port: " +#~ msgstr "" + +#~ msgid "User: " +#~ msgstr "" + +#~ msgid "Password: " +#~ msgstr "" + +#~ msgid "Enable automatic speech feedback" +#~ msgstr "" + +#~ msgid "Enable automatic Braille feedback" +#~ msgstr "" + +#~ msgid "Show/hide" +#~ msgstr "" + +#~ msgid "Move up" +#~ msgstr "" + +#~ msgid "Move down" +#~ msgstr "" + +#~ msgid "LibreTranslate API URL: " +#~ msgstr "" + +#~ msgid "LibreTranslate API Key (optional): " +#~ msgstr "" + +#~ msgid "DeepL API Key: " +#~ msgstr "" + +#~ msgid "Save" +#~ msgstr "" + +#~ msgid "" +#~ "Scan account and add followers and " +#~ "following users to the user " +#~ "autocompletion database" +#~ msgstr "" + +#~ msgid "Manage autocompletion database" +#~ msgstr "" + +#~ msgid "Disable Streaming API endpoints" +#~ msgstr "" + +#~ msgid "Relative timestamps" +#~ msgstr "" + +#~ msgid "" +#~ "Read preferences from instance (default " +#~ "visibility when publishing and displaying " +#~ "sensitive content)" +#~ msgstr "" + +#~ msgid "Items on each API call" +#~ msgstr "" + +#~ msgid "" +#~ "Inverted buffers: The newest items will" +#~ " be shown at the beginning while " +#~ "the oldest at the end" +#~ msgstr "" + +#~ msgid "Ask confirmation before boosting a post" +#~ msgstr "" + +#~ msgid "Show screen names instead of full names" +#~ msgstr "" + +#~ msgid "hide emojis in usernames" +#~ msgstr "" + +#~ msgid "" +#~ "Number of items per buffer to " +#~ "cache in database (0 to disable " +#~ "caching, blank for unlimited)" +#~ msgstr "" + +#~ msgid "" +#~ "Load cache for items in memory " +#~ "(much faster in big datasets but " +#~ "requires more RAM)" +#~ msgstr "" + +#~ msgid "Volume" +#~ msgstr "" + +#~ msgid "Session mute" +#~ msgstr "" + +#~ msgid "Output device" +#~ msgstr "" + +#~ msgid "Input device" +#~ msgstr "" + +#~ msgid "Sound pack" +#~ msgstr "" + +#~ msgid "Indicate audio or video in posts with sound" +#~ msgstr "" + +#~ msgid "Indicate posts containing images with sound" +#~ msgstr "" + +#~ msgid "Language for OCR" +#~ msgstr "" + diff --git a/srcantiguo/locales/hr/LC_MESSAGES/twblue.mo b/srcantiguo/locales/hr/LC_MESSAGES/twblue.mo new file mode 100644 index 00000000..5b7d6915 Binary files /dev/null and b/srcantiguo/locales/hr/LC_MESSAGES/twblue.mo differ diff --git a/srcantiguo/locales/hr/LC_MESSAGES/twblue.po b/srcantiguo/locales/hr/LC_MESSAGES/twblue.po new file mode 100644 index 00000000..71553101 --- /dev/null +++ b/srcantiguo/locales/hr/LC_MESSAGES/twblue.po @@ -0,0 +1,4966 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2019 ORGANIZATION +# FIRST AUTHOR , 2019. +# zvonimir stanecic , 2022. +msgid "" +msgstr "" +"Project-Id-Version: TWBlue 0.80\n" +"Report-Msgid-Bugs-To: manuel@manuelcortez.net\n" +"POT-Creation-Date: 2025-04-13 01:18+0000\n" +"PO-Revision-Date: 2022-12-20 22:42+0000\n" +"Last-Translator: Anonymous \n" +"Language: hr\n" +"Language-Team: Croatian " +"\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" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.17.0\n" + +#: languageHandler.py:61 +msgctxt "languageName" +msgid "Amharic" +msgstr "Amharski" + +#: languageHandler.py:62 +msgctxt "languageName" +msgid "Aragonese" +msgstr "Japanski" + +#: languageHandler.py:63 +msgctxt "languageName" +msgid "Spanish" +msgstr "Španjolski" + +#: languageHandler.py:64 +msgctxt "languageName" +msgid "Portuguese" +msgstr "Portugalski" + +#: languageHandler.py:65 +msgctxt "languageName" +msgid "Russian" +msgstr "Ruski" + +#: languageHandler.py:66 +msgctxt "languageName" +msgid "italian" +msgstr "Talijanski" + +#: languageHandler.py:67 +msgctxt "languageName" +msgid "Turkey" +msgstr "Turska" + +#: languageHandler.py:68 +msgctxt "languageName" +msgid "Galician" +msgstr "Galicijski" + +#: languageHandler.py:69 +msgctxt "languageName" +msgid "Catala" +msgstr "Katalonski" + +#: languageHandler.py:70 +msgctxt "languageName" +msgid "Vasque" +msgstr "Baskijski" + +#: languageHandler.py:71 +msgctxt "languageName" +msgid "polish" +msgstr "poljski" + +#: languageHandler.py:72 +msgctxt "languageName" +msgid "Arabic" +msgstr "Arapski" + +#: languageHandler.py:73 +msgctxt "languageName" +msgid "Nepali" +msgstr "Nepalski" + +#: languageHandler.py:74 +msgctxt "languageName" +msgid "Serbian (Latin)" +msgstr "Srpski (Latinica)" + +#: languageHandler.py:75 +msgctxt "languageName" +msgid "Japanese" +msgstr "Japanski" + +#: languageHandler.py:99 +msgid "User default" +msgstr "Korisnički zadano" + +#: main.py:105 +#, fuzzy +msgid "https://twblue.mcvsoftware.com/donate" +msgstr "https://twblue.es/donate" + +#: main.py:118 +#, python-brace-format +msgid "" +"{0} is already running. Close the other instance before starting this " +"one. If you're sure that {0} isn't running, try deleting the file at {1}." +" If you're unsure of how to do this, contact the {0} developers." +msgstr "" +"{0} je već pokrenut. Prilikom pokretanja ovog programa, zatvorite " +"prethodnje njegove instance. Ako ste sigurni da {0} nije pokrenut, " +"pokušajte izbrisati datoteku u {1}. Ako niste sigurni kako to učiniti, " +"kontaktirajte {0} razvojne programere." + +#: sound.py:148 +msgid "Playing..." +msgstr "Reproduciram..." + +#: sound.py:161 +msgid "Stopped." +msgstr "Zaustavljeno." + +#: controller/mainController.py:261 +msgid "Ready" +msgstr "spreman" + +#: controller/mainController.py:369 controller/mainController.py:654 +#: controller/mainController.py:673 controller/mainController.py:692 +#: controller/mainController.py:711 +msgid "" +"No session is currently in focus. Focus a session with the next or " +"previous session shortcut." +msgstr "" +"Trenutno nema sesije u fokusu. fokusirajte sesiju uz pomoću prečaca " +"slijedeća /prethodna sesija." + +#: controller/mainController.py:373 +msgid "Empty buffer." +msgstr "Prazan spremnik." + +#: controller/mainController.py:380 +#, python-brace-format +msgid "{0} not found." +msgstr "{0} nije pronađeno." + +#: controller/mainController.py:702 controller/mainController.py:721 +#, python-format +msgid "%s, %s of %s" +msgstr "%s, %s za %s" + +#: controller/mainController.py:704 controller/mainController.py:723 +#: controller/mainController.py:751 controller/mainController.py:779 +#, python-format +msgid "%s. Empty" +msgstr "%s. Prazno" + +#: controller/mainController.py:739 controller/mainController.py:743 +#: controller/mainController.py:767 +#, python-brace-format +msgid "{0}: This account is not logged into Twitter." +msgstr "{0}: Ovaj nalog nije prijavljen na twitteru." + +#: controller/mainController.py:749 controller/mainController.py:777 +#, python-format +msgid "%s. %s, %s of %s" +msgstr "%s, %s za %s" + +#: controller/mainController.py:771 +#, python-brace-format +msgid "{0}: This account is not logged into twitter." +msgstr "{0}: Ovaj nalog nije prijavljen na twitteru." + +#: controller/mainController.py:910 controller/mainController.py:926 +msgid "An error happened while trying to connect to the server. Please try later." +msgstr "" +"Dogodila se greška prilikom spajanja na poslužitelj. Pokušajte molim vas," +" kasnije." + +#: controller/mainController.py:957 +msgid "The auto-reading of new tweets is enabled for this buffer" +msgstr "Automatsko čitanje novih tweetova je uključeno za ovaj spremnik" + +#: controller/mainController.py:960 +msgid "The auto-reading of new tweets is disabled for this buffer" +msgstr "Automatsko čitanje za ovaj spremnik je isključeno" + +#: controller/mainController.py:967 +msgid "Session mute on" +msgstr "utišavanje sesije uključeno" + +#: controller/mainController.py:970 +msgid "Session mute off" +msgstr "Utišavanje sesije isključeno" + +#: controller/mainController.py:979 +msgid "Buffer mute on" +msgstr "Utišavanje spremnika uključeno" + +#: controller/mainController.py:982 +msgid "Buffer mute off" +msgstr "Utišavanje spremnika isključeno" + +#: controller/mainController.py:999 +msgid "Copied" +msgstr "kopirano" + +#: controller/mainController.py:1019 +msgid "Unable to update this buffer." +msgstr "nemoguće osvježiti ovaj spremnik" + +#: controller/mainController.py:1021 +msgid "Updating buffer..." +msgstr "Osvježavam spremnik..." + +#: controller/mainController.py:1024 +#, python-brace-format +msgid "{0} items retrieved" +msgstr "{0} stavaka preuzeto" + +#: controller/buffers/mastodon/base.py:137 controller/mainController.py:1028 +#: controller/mastodon/handler.py:98 controller/mastodon/handler.py:241 +#, python-brace-format +msgid "Timeline for {}" +msgstr "Vremenska crta {}" + +#: controller/buffers/mastodon/users.py:93 controller/mainController.py:1030 +#: controller/mastodon/handler.py:100 controller/mastodon/handler.py:255 +#, python-brace-format +msgid "Followers for {}" +msgstr "pratitelji za {}" + +#: controller/mainController.py:1032 +#, python-brace-format +msgid "Friends for {}" +msgstr "prijatelji od {}" + +# | msgid "Followers for {}" +#: controller/buffers/mastodon/users.py:95 controller/mainController.py:1034 +#: controller/mastodon/handler.py:102 controller/mastodon/handler.py:269 +#, fuzzy, python-brace-format +msgid "Following for {}" +msgstr "pratitelji za {}" + +#: controller/messages.py:18 +#, fuzzy +msgid "Translated" +msgstr "Prevedeno" + +#: controller/settings.py:60 +msgid "System default" +msgstr "Korisnićki zadan" + +#: controller/settings.py:60 +msgid "HTTP" +msgstr "HTTP" + +#: controller/settings.py:60 +msgid "SOCKS v4" +msgstr "SOCKS v4" + +#: controller/settings.py:60 +msgid "SOCKS v4 with DNS support" +msgstr "SOCKS v4 sa DNS podrškom" + +#: controller/settings.py:60 +msgid "SOCKS v5" +msgstr "SOCKS v5" + +#: controller/settings.py:60 +msgid "SOCKS v5 with DNS support" +msgstr "SOCKS v5 sa DNS podrškom" + +#: controller/userAlias.py:31 +#, python-brace-format +msgid "Edit alias for {}" +msgstr "uredi alias za {}" + +#: controller/buffers/base/base.py:91 +#: controller/buffers/mastodon/conversations.py:237 +#: controller/buffers/mastodon/search.py:80 +msgid "This action is not supported for this buffer" +msgstr "Ova akcija nije podržana za ovaj spremnik" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:70 +#: controller/mastodon/settings.py:194 +msgid "Home" +msgstr "Glavni" + +#: controller/buffers/mastodon/base.py:52 +#: controller/buffers/mastodon/community.py:22 +#: controller/mastodon/handler.py:72 controller/mastodon/handler.py:114 +#: controller/mastodon/settings.py:195 +msgid "Local" +msgstr "" + +#: controller/buffers/mastodon/base.py:52 +#: controller/buffers/mastodon/community.py:22 +#: controller/mastodon/handler.py:74 controller/mastodon/settings.py:196 +msgid "Federated" +msgstr "" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:76 +#: controller/mastodon/settings.py:197 +msgid "Mentions" +msgstr "javni odgovori" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:84 +#: controller/mastodon/settings.py:201 +msgid "Bookmarks" +msgstr "" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:78 +msgid "Direct messages" +msgstr "Izravne poruke" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:80 +#: controller/mastodon/settings.py:199 +msgid "Sent" +msgstr "" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:82 +#: controller/mastodon/settings.py:200 wxUI/dialogs/mastodon/postDialogs.py:229 +msgid "Favorites" +msgstr "" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:86 +#: controller/mastodon/settings.py:202 +msgid "Followers" +msgstr "Pratitelji" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:88 +#: controller/mastodon/settings.py:203 +msgid "Following" +msgstr "Praćeni" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:92 +#: controller/mastodon/settings.py:204 +msgid "Blocked users" +msgstr "Blokirani korisnici" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:90 +#: controller/mastodon/settings.py:205 +msgid "Muted users" +msgstr "Utišani korisnici" + +# | msgid "&Location" +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:94 +#: controller/mastodon/settings.py:206 +#: wxUI/dialogs/mastodon/filters/create_filter.py:80 +#, fuzzy +msgid "Notifications" +msgstr "&lokacija" + +#: controller/buffers/mastodon/base.py:58 +#, python-brace-format +msgid "{username}'s timeline" +msgstr "{username}ova vremenska os" + +#: controller/buffers/mastodon/base.py:60 +#, python-brace-format +msgid "{username}'s followers" +msgstr "{username}'ovi pratitelji" + +# | msgid "{username}'s followers" +#: controller/buffers/mastodon/base.py:62 +#, fuzzy, python-brace-format +msgid "{username}'s following" +msgstr "{username}'ovi pratitelji" + +#: controller/buffers/mastodon/base.py:64 +msgid "Unknown buffer" +msgstr "Nepoznat spremnik" + +#: controller/buffers/mastodon/base.py:67 +#: controller/buffers/mastodon/base.py:645 wxUI/buffers/mastodon/base.py:24 +#: wxUI/buffers/mastodon/conversationList.py:24 +#: wxUI/buffers/mastodon/notifications.py:22 wxUI/buffers/mastodon/user.py:18 +#: wxUI/dialogs/mastodon/postDialogs.py:5 +#: wxUI/dialogs/mastodon/postDialogs.py:194 wxUI/sysTrayIcon.py:35 +msgid "Post" +msgstr "" + +# | msgid "Write the tweet here" +#: controller/buffers/mastodon/base.py:68 +#: controller/buffers/mastodon/base.py:646 +#, fuzzy +msgid "Write your post here" +msgstr "ovdje upišite tweet" + +# | msgid "New tweet in {0}" +#: controller/buffers/mastodon/base.py:153 +#, fuzzy, python-brace-format +msgid "New post in {0}" +msgstr "Novi tweet u {0}" + +# | msgid "{0} new tweets in {1}." +#: controller/buffers/mastodon/base.py:159 +#, fuzzy, python-brace-format +msgid "{0} new posts in {1}." +msgstr "{0} novih tweetova u {1}." + +#: controller/buffers/mastodon/base.py:198 +#: controller/buffers/mastodon/community.py:90 +#: controller/buffers/mastodon/conversations.py:100 +#: controller/buffers/mastodon/mentions.py:82 +#: controller/buffers/mastodon/users.py:139 +#, python-format +msgid "%s items retrieved" +msgstr "preuzeto stavaka %s" + +#: controller/buffers/mastodon/base.py:216 +#: controller/buffers/mastodon/users.py:206 +msgid "This buffer is not a timeline; it can't be deleted." +msgstr "Ovaj spremnik nije vremenska os; Ne može biti izbrisan." + +# | msgid "Conversation with {0}" +#: controller/buffers/mastodon/base.py:346 +#: controller/buffers/mastodon/base.py:384 +#, fuzzy, python-brace-format +msgid "Conversation with {}" +msgstr "Razgovor s {0}" + +# | msgid "Write the tweet here" +#: controller/buffers/mastodon/base.py:347 +#: controller/buffers/mastodon/base.py:385 +#: controller/buffers/mastodon/conversations.py:181 +#: controller/buffers/mastodon/notifications.py:122 +#: controller/buffers/mastodon/users.py:52 +#, fuzzy +msgid "Write your message here" +msgstr "ovdje upišite tweet" + +# | msgid "Reply to {arg0}" +#: controller/buffers/mastodon/base.py:349 +#, fuzzy, python-brace-format +msgid "Reply to {}" +msgstr "Odgovori na {arg0}" + +# | msgid "Write the tweet here" +#: controller/buffers/mastodon/base.py:350 +#, fuzzy +msgid "Write your reply here" +msgstr "ovdje upišite tweet" + +# | msgid "This action is not supported on protected accounts." +#: controller/buffers/mastodon/base.py:412 +#, fuzzy +msgid "This action is not supported on conversations." +msgstr "Ova akcija nije podržana na zaštićenim računima." + +#: controller/buffers/mastodon/base.py:477 +msgid "Opening URL..." +msgstr "Otvaram URL..." + +#: controller/buffers/mastodon/base.py:490 +msgid "You can delete only your own posts." +msgstr "" + +#: controller/buffers/mastodon/base.py:519 +msgid "Opening item in web browser..." +msgstr "Otvaram stavku u web pregledniku..." + +#: controller/buffers/mastodon/base.py:527 +#: controller/buffers/mastodon/base.py:547 +msgid "Adding to favorites..." +msgstr "" + +# | msgid "Remove from list" +#: controller/buffers/mastodon/base.py:534 +#: controller/buffers/mastodon/base.py:549 +#, fuzzy +msgid "Removing from favorites..." +msgstr "Ukloni s popisa" + +#: controller/buffers/mastodon/base.py:544 +#: controller/buffers/mastodon/base.py:559 +#: controller/buffers/mastodon/base.py:573 +#: controller/buffers/mastodon/conversations.py:213 +msgid "No status found with that ID" +msgstr "Nema pronađenog statusa sa tim identifikatorom" + +#: controller/buffers/mastodon/base.py:562 +msgid "Adding to bookmarks..." +msgstr "" + +#: controller/buffers/mastodon/base.py:564 +msgid "Removing from bookmarks..." +msgstr "" + +#: controller/buffers/mastodon/base.py:586 +#, python-brace-format +msgid "Picture {0}" +msgstr "slika {0}" + +#: controller/buffers/mastodon/base.py:587 +msgid "Select the picture" +msgstr "Označi sliku" + +#: controller/buffers/mastodon/base.py:610 +msgid "Unable to extract text" +msgstr "Ne mogu izvuči tekst." + +#: controller/buffers/mastodon/base.py:612 +msgid "OCR Result" +msgstr "" + +#: controller/buffers/mastodon/base.py:627 +msgid "this poll no longer exists." +msgstr "" + +#: controller/buffers/mastodon/base.py:630 +msgid "This poll has already expired." +msgstr "" + +#: controller/buffers/mastodon/base.py:633 +msgid "You have already voted on this poll." +msgstr "" + +#: controller/buffers/mastodon/base.py:642 +#, fuzzy +msgid "Sending vote..." +msgstr "Rekodiram zvuk..." + +# | msgid "Conversation with {0}" +#: controller/buffers/mastodon/conversations.py:180 +#, fuzzy, python-brace-format +msgid "Reply to conversation with {}" +msgstr "Razgovor s {0}" + +# | msgid "Conversation with {0}" +#: controller/buffers/mastodon/notifications.py:121 +#: controller/buffers/mastodon/users.py:51 +#, fuzzy, python-brace-format +msgid "New conversation with {}" +msgstr "Razgovor s {0}" + +#: controller/buffers/mastodon/notifications.py:151 +msgid "Notification dismissed." +msgstr "" + +# | msgid "There are no coordinates in this tweet" +#: controller/buffers/mastodon/users.py:110 +#, fuzzy +msgid "There are no more items in this buffer." +msgstr "Ne postoje koordinate u ovom tweetu" + +#: controller/mastodon/handler.py:30 wxUI/dialogs/mastodon/updateProfile.py:35 +#, fuzzy +msgid "Update Profile" +msgstr "&Osvježi profil" + +#: controller/mastodon/handler.py:31 wxUI/dialogs/mastodon/search.py:10 +#: wxUI/view.py:19 +msgid "&Search" +msgstr "&Traži" + +#: controller/mastodon/handler.py:33 wxUI/view.py:22 +msgid "Manage user aliases" +msgstr "Upravljanje korisničkim aliasima" + +#: controller/mastodon/handler.py:35 controller/mastodon/handler.py:59 +#: wxUI/view.py:30 +msgid "&Post" +msgstr "" + +#: controller/mastodon/handler.py:36 wxUI/dialogs/mastodon/menus.py:9 +#: wxUI/dialogs/mastodon/menus.py:37 wxUI/view.py:31 +msgid "Re&ply" +msgstr "od&govor" + +#: controller/mastodon/handler.py:37 wxUI/dialogs/mastodon/menus.py:7 +#: wxUI/dialogs/mastodon/menus.py:35 wxUI/view.py:32 +msgid "&Boost" +msgstr "" + +# | msgid "&Add to list" +#: controller/mastodon/handler.py:38 wxUI/dialogs/mastodon/menus.py:11 +#: wxUI/dialogs/mastodon/menus.py:39 wxUI/view.py:33 +#, fuzzy +msgid "&Add to favorites" +msgstr "&Dodaj u listu" + +# | msgid "Remove from list" +#: controller/mastodon/handler.py:39 +#, fuzzy +msgid "Remove from favorites" +msgstr "Ukloni s popisa" + +# | msgid "&Show user" +#: controller/mastodon/handler.py:40 wxUI/dialogs/mastodon/menus.py:21 +#: wxUI/dialogs/mastodon/menus.py:49 wxUI/view.py:35 +#, fuzzy +msgid "&Show post" +msgstr "&Pokaži korisnika" + +#: controller/mastodon/handler.py:41 wxUI/view.py:36 +msgid "View conversa&tion" +msgstr "Pogledaj raz&govor" + +#: controller/mastodon/handler.py:42 wxUI/view.py:37 +msgid "Read text in picture" +msgstr "Pročitaj tekst sa slike" + +#: controller/mastodon/handler.py:43 wxUI/dialogs/mastodon/menus.py:25 +#: wxUI/view.py:39 +msgid "&Delete" +msgstr "&Izbriši" + +#: controller/mastodon/handler.py:45 wxUI/view.py:43 +msgid "&Actions..." +msgstr "&Akcije" + +#: controller/mastodon/handler.py:46 wxUI/view.py:44 +msgid "&View timeline..." +msgstr "&Pogledaj vremensku crtu..." + +#: controller/mastodon/handler.py:47 wxUI/view.py:45 +msgid "Direct me&ssage" +msgstr "Izravna po&ruka" + +#: controller/mastodon/handler.py:48 wxUI/view.py:46 +msgid "Add a&lias" +msgstr "dodaj a&lias" + +#: controller/mastodon/handler.py:51 +#, fuzzy +msgid "Show user profile" +msgstr "Prikaži korisnički &profil" + +#: controller/mastodon/handler.py:54 +msgid "Create c&ommunity timeline" +msgstr "" + +#: controller/mastodon/handler.py:55 wxUI/view.py:57 +msgid "Create a &filter" +msgstr "Napravi &filter" + +#: controller/mastodon/handler.py:56 wxUI/view.py:58 +msgid "&Manage filters" +msgstr "&Upravljaj filtrima" + +#: controller/mastodon/handler.py:95 +msgid "Timelines" +msgstr "Vremenske osi" + +#: controller/mastodon/handler.py:107 +msgid "Searches" +msgstr "Pretrage" + +#: controller/mastodon/handler.py:110 controller/mastodon/handler.py:191 +#: controller/mastodon/handler.py:196 +#, python-brace-format +msgid "Search for {}" +msgstr "Traži {}" + +#: controller/mastodon/handler.py:111 +msgid "Communities" +msgstr "" + +#: controller/mastodon/handler.py:114 +#, fuzzy +msgid "federated" +msgstr "{username}ova vremenska os" + +#: controller/mastodon/handler.py:143 +#, python-brace-format +msgid "Conversation with {0}" +msgstr "Razgovor s {0}" + +#: controller/mastodon/handler.py:299 +msgid "Add an user alias" +msgstr "Dodaj korisnički alias" + +#: controller/mastodon/handler.py:311 +#, python-brace-format +msgid "Alias has been set correctly for {}." +msgstr "Alias je ispravno dobavljen za {}." + +#: controller/mastodon/handler.py:342 +#, fuzzy +msgid "Update profile" +msgstr "&Osvježi profil" + +#: controller/mastodon/messages.py:115 +#, python-format +msgid "%s - %s of %d characters" +msgstr "%s - %s od %d znakova" + +#: controller/mastodon/messages.py:239 +#, python-brace-format +msgid "Poll with {} options" +msgstr "" + +# | msgid "List for {}" +#: controller/mastodon/messages.py:272 +#, fuzzy, python-brace-format +msgid "Post from {}" +msgstr "Popis za %s" + +#: controller/mastodon/messages.py:276 sessions/mastodon/templates.py:82 +#: wxUI/dialogs/mastodon/postDialogs.py:49 +msgid "Public" +msgstr "Javno" + +# | msgid "Accounts list" +#: controller/mastodon/messages.py:276 sessions/mastodon/templates.py:82 +#: wxUI/dialogs/mastodon/postDialogs.py:49 +#, fuzzy +msgid "Not listed" +msgstr "Popis naloga" + +# | msgid "Followers" +#: controller/mastodon/messages.py:276 +#, fuzzy +msgid "followers only" +msgstr "Pratitelji" + +# | msgid "Direct message" +#: controller/mastodon/messages.py:276 sessions/mastodon/templates.py:82 +#: wxUI/dialogs/mastodon/postDialogs.py:49 +#, fuzzy +msgid "Direct" +msgstr "Izravna poruka" + +# | msgid "Remove client" +#: controller/mastodon/messages.py:283 +#, fuzzy +msgid "Remote instance" +msgstr "Ukloni klijent" + +#: controller/mastodon/messages.py:291 controller/mastodon/messages.py:319 +#, fuzzy +msgid "Unmute conversation" +msgstr "Prikaži konverzaciju" + +#: controller/mastodon/messages.py:315 wxUI/dialogs/mastodon/postDialogs.py:237 +#, fuzzy +msgid "Mute conversation" +msgstr "Prikaži konverzaciju" + +# | msgid "Conversation with {0}" +#: controller/mastodon/messages.py:316 +#, fuzzy +msgid "Conversation unmuted." +msgstr "Razgovor s {0}" + +# | msgid "Conversation with {0}" +#: controller/mastodon/messages.py:320 +#, fuzzy +msgid "Conversation muted." +msgstr "Razgovor s {0}" + +#: controller/mastodon/messages.py:331 +msgid "people who boosted this post" +msgstr "" + +#: controller/mastodon/messages.py:336 +msgid "people who favorited this post" +msgstr "" + +#: controller/mastodon/messages.py:342 +msgid "Link copied to clipboard." +msgstr "Link je kopiran u međuspremnik." + +#: controller/mastodon/settings.py:82 +#, python-format +msgid "Account settings for %s" +msgstr "postavke naloga za %s" + +# | msgid "Edit template for persons. Current template: {}" +#: controller/mastodon/settings.py:92 +#, fuzzy, python-brace-format +msgid "Edit template for posts. Current template: {}" +msgstr "Uredi predložak za osobe. Trenutan predložak: {}" + +# | msgid "Edit template for persons. Current template: {}" +#: controller/mastodon/settings.py:101 +#, fuzzy, python-brace-format +msgid "Edit template for conversations. Current template: {}" +msgstr "Uredi predložak za osobe. Trenutan predložak: {}" + +#: controller/mastodon/settings.py:110 +#, python-brace-format +msgid "Edit template for persons. Current template: {}" +msgstr "Uredi predložak za osobe. Trenutan predložak: {}" + +#: controller/mastodon/settings.py:198 +msgid "Direct Messages" +msgstr "Izravne poruke" + +#: controller/mastodon/filters/create_filter.py:75 +#, fuzzy, python-brace-format +msgid "Update Filter: {}" +msgstr "&Osvježi profil" + +#: controller/mastodon/filters/manage_filters.py:57 +#: wxUI/dialogs/mastodon/filters/create_filter.py:90 +msgid "Never" +msgstr "" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:4 +msgid "Audio tweet." +msgstr "Zvučni tweet" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:5 +msgid "User timeline buffer created." +msgstr "Spremnik korisničke vremenske linije je otvoren" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:6 +msgid "Buffer destroied." +msgstr "Spremnik je uništen." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:7 +msgid "Direct message received." +msgstr "Izravna poruka je primljena" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:8 +msgid "Direct message sent." +msgstr "Izravna poruka poslana" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:9 +msgid "Error." +msgstr "Greška" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:10 +msgid "Tweet liked." +msgstr "Tweet lajkan." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:11 +msgid "Likes buffer updated." +msgstr "Osvježen je spremnik lajkanih tweetova." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:12 +msgid "Geotweet." +msgstr "zemljopisni tweet" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:13 +msgid "Tweet contains one or more images" +msgstr "tweet sadrži jednu ili više slika" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:14 +msgid "Boundary reached." +msgstr "Granica je prekoračena" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:15 +msgid "List updated." +msgstr "Popis osvježen" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:16 +msgid "Too many characters." +msgstr "previše znakova" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:17 +msgid "Mention received." +msgstr "odgovor primljen" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:18 +msgid "New event." +msgstr "Novi događaj" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:19 +#, python-brace-format +msgid "{0} is ready." +msgstr "{0} je spreman." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:20 +msgid "Mention sent." +msgstr "Odgovor poslan" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:21 +msgid "Tweet retweeted." +msgstr "Proslijedili ste dalje" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:22 +msgid "Search buffer updated." +msgstr "Osvježen je spremnik pretrage." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:23 +msgid "Tweet received." +msgstr "tweet je primljen" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:24 +msgid "Tweet sent." +msgstr "tweet je poslan" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:25 +msgid "Trending topics buffer updated." +msgstr "Spremnik trending rubrika je osvježen." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:26 +msgid "New tweet in user timeline buffer." +msgstr "Postoji novi tweet u spremniku korisničke vremenske osi." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:27 +msgid "New follower." +msgstr "novi pratitelj" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:28 +msgid "Volume changed." +msgstr "Glasnoća je promjenjena" + +#: extra/SoundsTutorial/wx_ui.py:8 +msgid "Sounds tutorial" +msgstr "Tutorijal za zvukove" + +#: extra/SoundsTutorial/wx_ui.py:11 +msgid "Press enter to listen to the sound for the selected event" +msgstr "Pritisnite enter da biste čuli zvuk za označeni događaj" + +#: extra/SpellChecker/spellchecker.py:56 +#, python-format +msgid "Misspelled word: %s" +msgstr "krivo napisana riječ: %s" + +#: extra/SpellChecker/wx_ui.py:27 +msgid "Misspelled word" +msgstr "Krivo napisana riječ" + +#: extra/SpellChecker/wx_ui.py:32 +msgid "Context" +msgstr "kontekst" + +#: extra/SpellChecker/wx_ui.py:37 +msgid "Suggestions" +msgstr "Prijedlozi" + +#: extra/SpellChecker/wx_ui.py:42 +msgid "&Ignore" +msgstr "&Zanemari" + +#: extra/SpellChecker/wx_ui.py:43 +msgid "I&gnore all" +msgstr "z&anemari sve" + +#: extra/SpellChecker/wx_ui.py:44 +msgid "&Replace" +msgstr "&Zamijeni" + +#: extra/SpellChecker/wx_ui.py:45 +msgid "R&eplace all" +msgstr "z&amijeni sve" + +#: extra/SpellChecker/wx_ui.py:46 +msgid "&Add to personal dictionary" +msgstr "&Dodaj u osobni rječnik" + +#: extra/SpellChecker/wx_ui.py:79 +#, python-brace-format +msgid "" +"An error has occurred. There are no dictionaries available for the " +"selected language in {0}" +msgstr "Dogodila se greška. ne postoje dostupni rječnici u {0}" + +#: extra/SpellChecker/wx_ui.py:79 +#: extra/autocompletionUsers/mastodon/wx_scan.py:44 +#: wxUI/commonMessageDialogs.py:23 wxUI/commonMessageDialogs.py:36 +#: wxUI/commonMessageDialogs.py:45 wxUI/commonMessageDialogs.py:52 +#: wxUI/commonMessageDialogs.py:55 wxUI/commonMessageDialogs.py:61 +#: wxUI/dialogs/mastodon/dialogs.py:38 wxUI/dialogs/mastodon/dialogs.py:43 +#: wxUI/dialogs/mastodon/dialogs.py:48 wxUI/dialogs/mastodon/dialogs.py:53 +#: wxUI/dialogs/mastodon/dialogs.py:60 +msgid "Error" +msgstr "Greška" + +#: extra/SpellChecker/wx_ui.py:82 +msgid "Spell check complete." +msgstr "Provjera pravopisa je dovršena." + +#: extra/autocompletionUsers/completion.py:39 +#: extra/autocompletionUsers/completion.py:57 +msgid "You have to start writing" +msgstr "" + +# | msgid "There are no coordinates in this tweet" +#: extra/autocompletionUsers/completion.py:49 +#: extra/autocompletionUsers/completion.py:66 +#, fuzzy +msgid "There are no results in your users database" +msgstr "Ne postoje koordinate u ovom tweetu" + +#: extra/autocompletionUsers/completion.py:51 +#, fuzzy +msgid "Autocompletion only works for users." +msgstr "&Samodovrši korisnike" + +#: extra/autocompletionUsers/wx_manage.py:9 +#, fuzzy +msgid "Manage Autocompletion database" +msgstr "Upravljaj bazom podataka samodovršavanja" + +#: extra/autocompletionUsers/wx_manage.py:12 +#, fuzzy, python-brace-format +msgid "Editing {0} users database" +msgstr "Uredi aliase korisnika" + +#: extra/autocompletionUsers/wx_manage.py:13 +#, fuzzy +msgid "Username" +msgstr "Korisnik" + +#: extra/autocompletionUsers/wx_manage.py:13 wxUI/dialogs/configuration.py:108 +msgid "Name" +msgstr "Ime" + +#: extra/autocompletionUsers/wx_manage.py:16 +#, fuzzy +msgid "Add user" +msgstr "Korisnik" + +#: extra/autocompletionUsers/wx_manage.py:17 +#, fuzzy +msgid "Remove user" +msgstr "Ukloni korisnika" + +#: extra/autocompletionUsers/wx_manage.py:38 +msgid "Twitter username" +msgstr "" + +#: extra/autocompletionUsers/wx_manage.py:38 +#, fuzzy +msgid "Add user to database" +msgstr "Dodaj korisnički alias" + +#: extra/autocompletionUsers/wx_manage.py:44 +#, fuzzy +msgid "The user does not exist" +msgstr "Korisnik ne postoji" + +#: extra/autocompletionUsers/wx_manage.py:44 +#, fuzzy +msgid "Error!" +msgstr "Greška" + +#: extra/autocompletionUsers/mastodon/scan.py:49 +msgid "" +"Updating database... You can close this window now. A message will tell " +"you when the process finishes." +msgstr "" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:8 +#, fuzzy +msgid "Autocomplete users' settings" +msgstr "&Samodovrši korisnike" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:11 +#, fuzzy +msgid "Add &followers to database" +msgstr "Dodaj korisnički alias" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:12 +#, fuzzy +msgid "Add f&ollowing to database" +msgstr "Dodaj korisnički alias" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:26 +#, fuzzy +msgid "Updating autocompletion database" +msgstr "Upravljaj bazom podataka samodovršavanja" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:34 +msgid "" +"This process will retrieve the users you selected from your Mastodon " +"account, and add them to the user autocomplete database. Please note that" +" if there are many users or you have tried to perform this action less " +"than 15 minutes ago, TWBlue may reach a limit in API calls when trying to" +" load the users into the database. If this happens, we will show you an " +"error, in which case you will have to try this process again in a few " +"minutes. If this process ends with no error, you will be redirected back " +"to the account settings dialog. Do you want to continue?" +msgstr "" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:34 +#: wxUI/commonMessageDialogs.py:20 +msgid "Attention" +msgstr "Pažnja" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:40 +#, python-brace-format +msgid "TWBlue has imported {} users successfully." +msgstr "" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:40 +#, fuzzy +msgid "Done" +msgstr "Gotovo!" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:44 +msgid "Error adding users from Mastodon. Please try again in about 15 minutes." +msgstr "" + +#: extra/ocr/OCRSpace.py:7 +msgid "Detect automatically" +msgstr "Automatski prepoznaj" + +#: extra/ocr/OCRSpace.py:7 +msgid "Danish" +msgstr "Danski" + +#: extra/ocr/OCRSpace.py:7 +msgid "Dutch" +msgstr "Nizozemski" + +#: extra/ocr/OCRSpace.py:7 +msgid "English" +msgstr "Engleski" + +#: extra/ocr/OCRSpace.py:7 +msgid "Finnish" +msgstr "Finski" + +#: extra/ocr/OCRSpace.py:7 +msgid "French" +msgstr "Francuski" + +#: extra/ocr/OCRSpace.py:7 +msgid "German" +msgstr "Njemački" + +#: extra/ocr/OCRSpace.py:7 +msgid "Hungarian" +msgstr "Mađarski" + +#: extra/ocr/OCRSpace.py:7 +msgid "Korean" +msgstr "Korejski" + +#: extra/ocr/OCRSpace.py:7 +msgid "Italian" +msgstr "Talijanski" + +#: extra/ocr/OCRSpace.py:7 +msgid "Japanese" +msgstr "Japanski" + +#: extra/ocr/OCRSpace.py:7 +msgid "Polish" +msgstr "Poljski" + +#: extra/ocr/OCRSpace.py:7 +msgid "Portuguese" +msgstr "Portugalski" + +#: extra/ocr/OCRSpace.py:7 +msgid "Russian" +msgstr "Ruski" + +#: extra/ocr/OCRSpace.py:7 +msgid "Spanish" +msgstr "Španjolski" + +#: extra/ocr/OCRSpace.py:7 +msgid "Turkish" +msgstr "Turski" + +#: extra/translator/wx_ui.py:25 +msgid "Translate message" +msgstr "prevedi poruku" + +#: extra/translator/wx_ui.py:29 +#, fuzzy +msgid "Translation engine" +msgstr "Prevedeno" + +#: extra/translator/wx_ui.py:32 +msgid "Target language" +msgstr "Ciljni jezik" + +#: keystrokeEditor/wx_ui.py:8 +msgid "Keystroke editor" +msgstr "Uređivač tipkovničkih kratica" + +#: keystrokeEditor/wx_ui.py:11 +msgid "Select a keystroke to edit" +msgstr "Označi prečac za uređivanje" + +#: keystrokeEditor/wx_ui.py:12 +#: wxUI/dialogs/mastodon/filters/manage_filters.py:18 +#: wxUI/dialogs/mastodon/userActions.py:9 +#: wxUI/dialogs/mastodon/userActions.py:18 +#: wxUI/dialogs/mastodon/userActions.py:19 +msgid "Action" +msgstr "Akcija" + +#: keystrokeEditor/wx_ui.py:12 +msgid "Keystroke" +msgstr "prečac" + +#: keystrokeEditor/wx_ui.py:17 +#: wxUI/dialogs/mastodon/filters/manage_filters.py:23 +#: wxUI/dialogs/userAliasDialogs.py:53 +msgid "Edit" +msgstr "Uredi" + +#: keystrokeEditor/wx_ui.py:19 keystrokeEditor/wx_ui.py:49 +msgid "Undefine keystroke" +msgstr "Nedodijeljen prečac" + +#: keystrokeEditor/wx_ui.py:20 +msgid "Execute action" +msgstr "Izvrši akciju" + +#: keystrokeEditor/wx_ui.py:21 wxUI/dialogs/userAliasDialogs.py:25 +msgid "Close" +msgstr "Zatvori" + +#: keystrokeEditor/wx_ui.py:41 +msgid "Undefined" +msgstr "Nedefinirano" + +#: keystrokeEditor/wx_ui.py:49 +msgid "Are you sure you want to undefine this keystroke?" +msgstr "Želite li doista izbrisati ovaj prečac?" + +#: keystrokeEditor/wx_ui.py:53 +msgid "Editing keystroke" +msgstr "uređujete prečac" + +#: keystrokeEditor/wx_ui.py:56 +msgid "Control" +msgstr "Kontrol" + +#: keystrokeEditor/wx_ui.py:57 +msgid "Alt" +msgstr "Alt" + +#: keystrokeEditor/wx_ui.py:58 +msgid "Shift" +msgstr "Shift" + +#: keystrokeEditor/wx_ui.py:59 +msgid "Windows" +msgstr "Windows" + +#: keystrokeEditor/wx_ui.py:65 +msgid "Key" +msgstr "Tipka" + +#: keystrokeEditor/wx_ui.py:70 wxUI/dialogs/find.py:21 +#: wxUI/dialogs/mastodon/showUserProfile.py:31 +#: wxUI/dialogs/userAliasDialogs.py:23 +msgid "OK" +msgstr "U redu" + +#: keystrokeEditor/wx_ui.py:83 +msgid "You need to use the Windows key" +msgstr "Trebate koristiti Windows tipku" + +#: keystrokeEditor/wx_ui.py:83 keystrokeEditor/wx_ui.py:86 +msgid "Invalid keystroke" +msgstr "Neispravan prečac" + +#: keystrokeEditor/wx_ui.py:86 +msgid "You must provide a character for the keystroke" +msgstr "Morate upisati znak za prećac" + +#: keystrokeEditor/actions/mastodon.py:3 +msgid "Go up in the current buffer" +msgstr "Idite gore u ovom spremniku" + +#: keystrokeEditor/actions/mastodon.py:4 +msgid "Go down in the current buffer" +msgstr "idite dolje u trenutnom spremniku" + +#: keystrokeEditor/actions/mastodon.py:5 +msgid "Go to the previous buffer" +msgstr "idite na prijašnji spremnik" + +#: keystrokeEditor/actions/mastodon.py:6 +msgid "Go to the next buffer" +msgstr "Idite na slijedeći spremnik" + +#: keystrokeEditor/actions/mastodon.py:7 +msgid "Focus the next session" +msgstr "Fokusiraj slijedeću sesiju" + +#: keystrokeEditor/actions/mastodon.py:8 +msgid "Focus the previous session" +msgstr "Fokusiraj prijašnju sesiju" + +#: keystrokeEditor/actions/mastodon.py:9 +msgid "Show or hide the GUI" +msgstr "Prikaži / sakrij grafičko sučelje" + +# | msgid "Create a new list" +#: keystrokeEditor/actions/mastodon.py:10 +#, fuzzy +msgid "Make a new post" +msgstr "Napravi novu listu" + +#: keystrokeEditor/actions/mastodon.py:11 wxUI/buffers/mastodon/base.py:26 +#: wxUI/buffers/mastodon/conversationList.py:25 +msgid "Reply" +msgstr "odgovori" + +#: keystrokeEditor/actions/mastodon.py:12 wxUI/buffers/mastodon/base.py:25 +#: wxUI/dialogs/mastodon/dialogs.py:7 +msgid "Boost" +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:13 +msgid "Send direct message" +msgstr "Pošalji izravnu poruku" + +#: keystrokeEditor/actions/mastodon.py:14 +msgid "Add post to favorites" +msgstr "" + +# | msgid "Remove from list" +#: keystrokeEditor/actions/mastodon.py:15 +#, fuzzy +msgid "Remove post from favorites" +msgstr "Ukloni s popisa" + +#: keystrokeEditor/actions/mastodon.py:16 +msgid "Add/remove post from favorites" +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:17 +msgid "Open the user actions dialogue" +msgstr "Otvori dijaloški okvir akcija" + +#: keystrokeEditor/actions/mastodon.py:18 +#, fuzzy +msgid "See user details" +msgstr "Ukloni korisnika" + +# | msgid "Show tweet" +#: keystrokeEditor/actions/mastodon.py:19 +#, fuzzy +msgid "Show post" +msgstr "Prikaži tweet" + +#: keystrokeEditor/actions/mastodon.py:20 +msgid "Quit" +msgstr "Zatvori" + +#: keystrokeEditor/actions/mastodon.py:21 +msgid "Open user timeline" +msgstr "Otvori vremensku os korisnika" + +#: keystrokeEditor/actions/mastodon.py:22 +msgid "Destroy buffer" +msgstr "Uništi spremnik" + +# | msgid "Interact with the currently focused tweet." +#: keystrokeEditor/actions/mastodon.py:23 +#, fuzzy +msgid "Interact with the currently focused post." +msgstr "Uđi u interakciju sa trenutnim tweetom" + +#: keystrokeEditor/actions/mastodon.py:24 +msgid "Open URL" +msgstr "Otvori url" + +# | msgid "View in Twitter" +#: keystrokeEditor/actions/mastodon.py:25 +#, fuzzy +msgid "View in browser" +msgstr "Pogledaj na twitteru" + +#: keystrokeEditor/actions/mastodon.py:26 +msgid "Increase volume by 5%" +msgstr "povečaj glasnoću za 5%" + +#: keystrokeEditor/actions/mastodon.py:27 +msgid "Decrease volume by 5%" +msgstr "smanji glasnoću za 5%" + +#: keystrokeEditor/actions/mastodon.py:28 +msgid "Jump to the first element of a buffer" +msgstr "Preskoći na prvi element spremnika" + +#: keystrokeEditor/actions/mastodon.py:29 +msgid "Jump to the last element of the current buffer" +msgstr "Preskoći na zadnji element u trenutnom bufferu" + +#: keystrokeEditor/actions/mastodon.py:30 +msgid "Jump 20 elements up in the current buffer" +msgstr "preskoći 20 elemenata prema gore u trenutnom spremniku" + +#: keystrokeEditor/actions/mastodon.py:31 +msgid "Jump 20 elements down in the current buffer" +msgstr "Premjesti se za 20 elemenata prema dolje u trenutnom spremniku" + +# | msgid "Delete" +#: keystrokeEditor/actions/mastodon.py:33 +#, fuzzy +msgid "Delete post" +msgstr "Izbriši" + +#: keystrokeEditor/actions/mastodon.py:34 +msgid "Empty the current buffer" +msgstr "Isprazni spremnik" + +#: keystrokeEditor/actions/mastodon.py:35 +msgid "Repeat last item" +msgstr "Ponovi prethodnu stavku" + +#: keystrokeEditor/actions/mastodon.py:36 +msgid "Copy to clipboard" +msgstr "Kopiraj u međuspremnik" + +#: keystrokeEditor/actions/mastodon.py:39 +msgid "Mute/unmute the active buffer" +msgstr "utišaj/odtišaj aktivni spremnik" + +#: keystrokeEditor/actions/mastodon.py:40 +msgid "Mute/unmute the current session" +msgstr "utišaj /ottišaj trenutnu sesiju" + +#: keystrokeEditor/actions/mastodon.py:41 +msgid "toggle the automatic reading of incoming tweets in the active buffer" +msgstr "" +"Uključuje/Isključuje automatsko čitanje dolazećih tweetova u aktivnom " +"spremniku" + +# | msgid "Search on twitter" +#: keystrokeEditor/actions/mastodon.py:42 +#, fuzzy +msgid "Search on instance" +msgstr "Traži na twitteru" + +#: keystrokeEditor/actions/mastodon.py:43 +msgid "Find a string in the currently focused buffer" +msgstr "Nađi niz znakova u trenutno fokusiranom spremniku" + +#: keystrokeEditor/actions/mastodon.py:44 +msgid "Show the keystroke editor" +msgstr "Prikazuje uređivač tipkovničkih kratica" + +#: keystrokeEditor/actions/mastodon.py:46 +msgid "load previous items" +msgstr "Učitaj prijašnje stavke" + +#: keystrokeEditor/actions/mastodon.py:48 +msgid "View conversation" +msgstr "Prikaži konverzaciju" + +#: keystrokeEditor/actions/mastodon.py:49 +msgid "Check and download updates" +msgstr "Provjeri i preuzmi nadogradnje" + +#: keystrokeEditor/actions/mastodon.py:50 +msgid "Opens the global settings dialogue" +msgstr "otvara dijaloški okvir globalnih postavki" + +#: keystrokeEditor/actions/mastodon.py:52 +msgid "Opens the account settings dialogue" +msgstr "otvara dijaloški okvir korisničkog računa" + +# | msgid "Try to play an audio file" +#: keystrokeEditor/actions/mastodon.py:53 +#, fuzzy +msgid "Try to play a media file" +msgstr "pokušati reproducirati zvučnu datoteku" + +#: keystrokeEditor/actions/mastodon.py:54 +msgid "Updates the buffer and retrieves possible lost items there." +msgstr "Obnavlja spremnik i izvlaći možebitne nedostajuće stavke odatle." + +#: keystrokeEditor/actions/mastodon.py:55 +msgid "Extracts the text from a picture and displays the result in a dialog." +msgstr "izvlači tekst iz slike i pokazuje ga u zasebnom dijaloškom okviru." + +#: keystrokeEditor/actions/mastodon.py:56 +msgid "Adds an alias to an user" +msgstr "Dodaje alias korisniku" + +#: sessionmanager/sessionManager.py:69 +#, python-brace-format +msgid "{account_name}@{instance} (Mastodon)" +msgstr "" + +#: sessionmanager/wxUI.py:11 +msgid "Session manager" +msgstr "upravitelj sesijama" + +#: sessionmanager/wxUI.py:14 +msgid "Accounts list" +msgstr "Popis naloga" + +#: sessionmanager/wxUI.py:16 +msgid "Account" +msgstr "Račun" + +#: sessionmanager/wxUI.py:20 +msgid "New account" +msgstr "Novi nalog" + +#: sessionmanager/wxUI.py:22 sessionmanager/wxUI.py:79 +msgid "Remove account" +msgstr "Ukloni račun" + +#: sessionmanager/wxUI.py:24 +msgid "Global Settings" +msgstr "Globalne postavke" + +#: sessionmanager/wxUI.py:48 +msgid "You need to configure an account." +msgstr "Trebate podesiti račun." + +#: sessionmanager/wxUI.py:48 +msgid "Account Error" +msgstr "Greška računa" + +#: sessionmanager/wxUI.py:54 +msgid "Mastodon" +msgstr "" + +#: sessionmanager/wxUI.py:59 +msgid "" +"You will be prompted for your Mastodon data (instance URL, email address " +"and password) so we can authorise TWBlue in your instance. Would you like" +" to authorise your account now?" +msgstr "" + +#: sessionmanager/wxUI.py:59 +msgid "Authorization" +msgstr "autorizacija" + +#: sessionmanager/wxUI.py:67 +#, python-format +msgid "Authorized account %d" +msgstr "Autorizirani nalog %d" + +#: sessionmanager/wxUI.py:73 +msgid "" +"Your access token is invalid or the authorization has failed. Please try " +"again." +msgstr "" +"Vaš pristupni token je nepravilan ili autorizacija je neuspjela. Molimo " +"pokušajte ponovo." + +#: sessionmanager/wxUI.py:73 +msgid "Invalid user token" +msgstr "Neispravan korisnički token" + +#: sessionmanager/wxUI.py:79 +msgid "Do you really want to delete this account?" +msgstr "Želite li doista izbrisati ovaj račun?" + +#: sessions/base.py:125 +#, python-brace-format +msgid "" +"An exception occurred while saving the {app} database. It will be deleted" +" and rebuilt automatically. If this error persists, send the error log to" +" the {app} developers." +msgstr "" +"Dogodila se neočekivana pogreška prilikom izgradnje baze podataka {app}. " +"Ista će biti izbrisana i ponovno izgrađena. Ako se ova greška još uvijek " +"pojavljuje, pošaljite zapisnik pogreške {app} programerima." + +#: sessions/base.py:165 +#, python-brace-format +msgid "" +"An exception occurred while loading the {app} database. It will be " +"deleted and rebuilt automatically. If this error persists, send the error" +" log to the {app} developers." +msgstr "" +"Dogogila se pogreška prilikom izgradnje {app} baze podataka. Ista će biti" +" izbrisana i ponovno izgrađena. Ako se ova pogreška ponavlja, pošaljite " +"zapisnik o pogrešci {app} programerima." + +# | msgid "dddd, MMMM D, YYYY H:m:s" +#: sessions/mastodon/compose.py:15 sessions/mastodon/compose.py:61 +#, fuzzy +msgid "dddd, MMMM D, YYYY H:m" +msgstr "dddd, MMMM D, YYYY H:m:s" + +# | msgid "{0}. Quoted tweet from @{1}: {2}" +#: sessions/mastodon/compose.py:17 sessions/mastodon/templates.py:74 +#: sessions/mastodon/templates.py:75 +#, fuzzy, python-brace-format +msgid "Boosted from @{}: {}" +msgstr "{0}. citirani tweet od @{1}: {2}" + +#: sessions/mastodon/compose.py:22 sessions/mastodon/compose.py:81 +#: sessions/mastodon/templates.py:81 sessions/mastodon/templates.py:176 +#, python-brace-format +msgid "hidden by filter {}" +msgstr "" + +#: sessions/mastodon/compose.py:36 sessions/mastodon/templates.py:28 +msgid "dddd, MMMM D, YYYY H:m:s" +msgstr "dddd, MMMM D, YYYY H:m:s" + +# | msgid "" +# | "%s (@%s). %s followers, %s friends, %s tweets. Last tweeted %s. Joined " +# | "Twitter %s" +#: sessions/mastodon/compose.py:38 +#, fuzzy, python-format +msgid "%s (@%s). %s followers, %s following, %s posts. Joined %s" +msgstr "" +"%s (@%s). %s pratitelja, %s prijatelja, %s tweetova. Zadnji tweet %s. " +"Pridružilo se twitteru %s" + +#: sessions/mastodon/compose.py:49 +#, python-brace-format +msgid "Last message from {}: {}" +msgstr "" + +# | msgid "{username}'s followers" +#: sessions/mastodon/compose.py:64 +#, fuzzy, python-brace-format +msgid "{username} has posted: {status}" +msgstr "{username}'ovi pratitelji" + +# | msgid "{username}'s followers" +#: sessions/mastodon/compose.py:66 +#, fuzzy, python-brace-format +msgid "{username} has mentioned you: {status}" +msgstr "{username}'ovi pratitelji" + +#: sessions/mastodon/compose.py:68 +#, python-brace-format +msgid "{username} has boosted: {status}" +msgstr "" + +#: sessions/mastodon/compose.py:70 +#, python-brace-format +msgid "{username} has added to favorites: {status}" +msgstr "" + +# | msgid "{username}'s followers" +#: sessions/mastodon/compose.py:72 +#, fuzzy, python-brace-format +msgid "{username} has followed you." +msgstr "{username}'ovi pratitelji" + +# | msgid "{username}'s followers" +#: sessions/mastodon/compose.py:74 +#, fuzzy, python-brace-format +msgid "{username} has joined the instance." +msgstr "{username}'ovi pratitelji" + +#: sessions/mastodon/compose.py:76 sessions/mastodon/templates.py:171 +#, python-brace-format +msgid "A poll in which you have voted has expired: {status}" +msgstr "" + +# | msgid "{username}'s followers" +#: sessions/mastodon/compose.py:78 +#, fuzzy, python-brace-format +msgid "{username} wants to follow you." +msgstr "{username}'ovi pratitelji" + +#: sessions/mastodon/session.py:69 +msgid "Please enter your instance URL." +msgstr "" + +#: sessions/mastodon/session.py:69 +msgid "Mastodon instance" +msgstr "" + +#: sessions/mastodon/session.py:80 +msgid "" +"We could not connect to your mastodon instance. Please verify that the " +"domain exists and the instance is accessible via a web browser." +msgstr "" + +# | msgid "&Report an error" +#: sessions/mastodon/session.py:80 +#, fuzzy +msgid "Instance error" +msgstr "&Prijavi grešku" + +#: sessions/mastodon/session.py:85 +msgid "Enter the verification code" +msgstr "" + +# | msgid "Authorization" +#: sessions/mastodon/session.py:85 +#, fuzzy +msgid "PIN code authorization" +msgstr "autorizacija" + +#: sessions/mastodon/session.py:94 +msgid "" +"We could not authorice your mastodon account to be used in TWBlue. This " +"might be caused due to an incorrect verification code. Please try to add " +"the session again." +msgstr "" + +# | msgid "Authorization" +#: sessions/mastodon/session.py:94 +#, fuzzy +msgid "Authorization error" +msgstr "autorizacija" + +#: sessions/mastodon/session.py:215 +#, python-format +msgid "%s succeeded." +msgstr "%s uspjelo." + +#: sessions/mastodon/templates.py:18 +#, fuzzy +msgid "$display_name, $text $image_descriptions $date. $source" +msgstr "$display_name, $text $image_descriptions $date. $source" + +#: sessions/mastodon/templates.py:19 +msgid "Dm to $recipient_display_name, $text $date" +msgstr "Dm do $recipient_display_name, $text $date" + +# | msgid "" +# | "$display_name (@$screen_name). $followers followers, $following " +# | "following, $tweets tweets. Joined Twitter $created_at." +#: sessions/mastodon/templates.py:20 +#, fuzzy +msgid "" +"$display_name (@$screen_name). $followers followers, $following " +"following, $posts posts. Joined $created_at." +msgstr "" +"$display_name (@$screen_name). $followers pratitelja, $following " +"praćenih, $tweets tweetova. Pridružio se twitteru $created_at." + +#: sessions/mastodon/templates.py:21 +#, fuzzy +msgid "$display_name $text, $date" +msgstr "$sender_display_name, $text $date" + +#: sessions/mastodon/templates.py:34 +#, python-brace-format +msgid "Content warning: {}" +msgstr "" + +# | msgid "Image description: {}." +#: sessions/mastodon/templates.py:45 +#, fuzzy, python-brace-format +msgid "Media description: {}" +msgstr "Opis slike: {}." + +# | msgid "Followers" +#: sessions/mastodon/templates.py:82 wxUI/dialogs/mastodon/postDialogs.py:49 +#, fuzzy +msgid "Followers only" +msgstr "Pratitelji" + +#: sessions/mastodon/templates.py:94 +#, fuzzy +msgid "Pinned." +msgstr "kopirano" + +#: sessions/mastodon/templates.py:157 +#, python-brace-format +msgid "has posted: {status}" +msgstr "" + +#: sessions/mastodon/templates.py:159 +#, python-brace-format +msgid "has mentioned you: {status}" +msgstr "" + +#: sessions/mastodon/templates.py:161 +#, python-brace-format +msgid "has boosted: {status}" +msgstr "" + +#: sessions/mastodon/templates.py:163 +#, python-brace-format +msgid "has added to favorites: {status}" +msgstr "" + +#: sessions/mastodon/templates.py:165 +#, python-brace-format +msgid "has updated a status: {status}" +msgstr "" + +# | msgid "{0} is following you." +#: sessions/mastodon/templates.py:167 +#, fuzzy +msgid "has followed you." +msgstr "{0} vas prati." + +# | msgid "Remove client" +#: sessions/mastodon/templates.py:169 +#, fuzzy +msgid "has joined the instance." +msgstr "Ukloni klijent" + +# | msgid "{0} is following you." +#: sessions/mastodon/templates.py:173 +#, fuzzy +msgid "wants to follow you." +msgstr "{0} vas prati." + +#: update/utils.py:29 +#, python-format +msgid "%d day, " +msgstr "%d dan, " + +#: update/utils.py:31 +#, python-format +msgid "%d days, " +msgstr "%d dana, " + +#: update/utils.py:33 +#, python-format +msgid "%d hour, " +msgstr "%d sat, " + +#: update/utils.py:35 +#, python-format +msgid "%d hours, " +msgstr "%d sati, " + +#: update/utils.py:37 +#, python-format +msgid "%d minute, " +msgstr "%d minuta, " + +#: update/utils.py:39 +#, python-format +msgid "%d minutes, " +msgstr "%d minuta, " + +#: update/utils.py:41 +#, python-format +msgid "%s second" +msgstr "%s sekunda" + +#: update/utils.py:43 +#, python-format +msgid "%s seconds" +msgstr "%s sekundi" + +#: update/wxUpdater.py:11 +#, python-format +msgid "" +"There's a new %s version available, released on %s. Would you like to " +"download it now?\n" +"\n" +" %s version: %s\n" +"\n" +"Changes:\n" +"%s" +msgstr "" +"dostupna je %s inačica, objavljena %s. Želite li ju preuzeti?\n" +"\n" +" %s inačica: %s\n" +"\n" +"Izmjene:\n" +"%s" + +# | msgid "" +# | "There's a new %s version available, released on %s. Would you like to " +# | "download it now?\n" +# | "\n" +# | " %s version: %s\n" +# | "Changes:\n" +# | "%s" +#: update/wxUpdater.py:14 +#, fuzzy, python-format +msgid "" +"There's a new %s version available, released on %s. Updates are not " +"automatic in Windows 7, so you would need to visit TWBlue's download " +"website to get the latest version.\n" +"\n" +" %s version: %s\n" +"\n" +"Changes:\n" +"%s" +msgstr "" +"dostupna je %s inačica, objavljena %s. Želite li ju preuzeti?\n" +"\n" +" %s inačica: %s\n" +"\n" +"Izmjene:\n" +"%s" + +#: update/wxUpdater.py:16 +#, python-format +msgid "New version for %s" +msgstr "Nova inačica %s" + +#: update/wxUpdater.py:23 +msgid "Download in Progress" +msgstr "Preuzimanje u tijeku" + +#: update/wxUpdater.py:23 +msgid "Downloading the new version..." +msgstr "Preuzimam najnoviju inačicu..." + +#: update/wxUpdater.py:33 +#, python-format +msgid "Updating... %s of %s" +msgstr "Osvježavam... %s od %s" + +#: update/wxUpdater.py:36 +msgid "" +"The update has been downloaded and installed successfully. Press OK to " +"continue." +msgstr "" +"Nova inačica TW blue klijenta je preuzeta i instalirana. Pritisnite U " +"redu Da biste pokrenuli program." + +#: update/wxUpdater.py:36 +msgid "Done!" +msgstr "Gotovo!" + +#: wxUI/commonMessageDialogs.py:6 +#, python-brace-format +msgid "Do you really want to close {0}?" +msgstr "Želite li doista zatvoriti {0}?" + +#: wxUI/commonMessageDialogs.py:6 +msgid "Exit" +msgstr "Zatvori" + +#: wxUI/commonMessageDialogs.py:10 +#, python-brace-format +msgid " {0} must be restarted for these changes to take effect." +msgstr " {0} se mora ponovno pokrenuti kako bi nove promjene stupile na snagu." + +#: wxUI/commonMessageDialogs.py:10 +#, python-brace-format +msgid "Restart {0} " +msgstr "Ponovno pokreni {0} " + +#: wxUI/commonMessageDialogs.py:13 +msgid "" +"Are you sure you want to delete this user from the database? This user " +"will not appear in autocomplete results anymore." +msgstr "" +"Želite li doista izbrisati korisnika iz baze podataka? Ovaj se korisnik " +"više neće pojavljivati u popisu samodovršavanja." + +#: wxUI/commonMessageDialogs.py:13 +msgid "Confirm" +msgstr "Potvrdi" + +#: wxUI/commonMessageDialogs.py:16 +msgid "" +"Do you really want to empty this buffer? It's items will be removed from" +" the list but not from Twitter" +msgstr "" +"Želite li isprazniti ovaj spremnik? njegova lista će se isprazniti ali ne" +" i twitter?" + +#: wxUI/commonMessageDialogs.py:16 wxUI/dialogs/mastodon/dialogs.py:31 +msgid "Empty buffer" +msgstr "Isprazni spremnik" + +#: wxUI/commonMessageDialogs.py:20 +msgid "Do you really want to destroy this buffer?" +msgstr "Doista želite uništiti ovaj spremnik?" + +#: wxUI/commonMessageDialogs.py:23 +msgid "That user does not exist" +msgstr "Korisnik ne postoji" + +#: wxUI/commonMessageDialogs.py:26 +msgid "A timeline for this user already exists. You can't open another" +msgstr "Trenutno postoji vremenska os tog korisnika. Ne možete otvoriti novu" + +#: wxUI/commonMessageDialogs.py:26 +msgid "Existing timeline" +msgstr "Postojeća vremenska os" + +#: wxUI/commonMessageDialogs.py:29 +#, python-brace-format +msgid "" +"If you like {0} we need your help to keep it going. Help us by donating " +"to the project. This will help us pay for the server, the domain and some" +" other things to ensure that {0} will be actively maintained. Your " +"donation will give us the means to continue the development of {0}, and " +"to keep {0} free. Would you like to donate now?" +msgstr "" +"Ako volite koristiti {0} da bismo ga mogli razvijati. Pomognite nam " +"donirati za projekt. To će nam pomoći u podmirenju troškova za server, " +"domenu i druge stvari da bismo se uvjerili da {0} će biti aktivno " +"razvijan. Ova donacija će nas dalje motivirati na daljnji razvoj {0}, i " +"kako bi {0} ostao besplatan. Želite li donirati sada?" + +#: wxUI/commonMessageDialogs.py:29 +msgid "We need your help" +msgstr "Trebamo vašu pomoć" + +#: wxUI/commonMessageDialogs.py:33 wxUI/dialogs/mastodon/postDialogs.py:207 +msgid "Information" +msgstr "informacija" + +#: wxUI/commonMessageDialogs.py:36 +msgid "The configuration file is invalid." +msgstr "Konfiguracijska datoteka je neispravna." + +#: wxUI/commonMessageDialogs.py:39 +#, python-brace-format +msgid "" +"{0} quit unexpectedly the last time it was run. If the problem persists, " +"please report it to the {0} developers." +msgstr "" +"{0} je neočekivano zatvoren od zadnjeg pokretanja. Ako se problem još " +"uvjek javlja, Javite o njegovom postojanju {0} razvojnim programerima." + +#: wxUI/commonMessageDialogs.py:39 +msgid "Warning" +msgstr "Upozorenje" + +#: wxUI/commonMessageDialogs.py:45 +#, python-brace-format +msgid "Sorry, you can't update while running {} from source." +msgstr "" + +#: wxUI/commonMessageDialogs.py:49 +msgid "the provided instance is invalid. Please try again." +msgstr "" + +#: wxUI/commonMessageDialogs.py:49 +#, fuzzy +msgid "Invalid instance" +msgstr "Neispravan prečac" + +#: wxUI/commonMessageDialogs.py:52 +msgid "" +"TWBlue was unable to add or update the filter with the specified " +"settings. Please try again." +msgstr "" + +#: wxUI/commonMessageDialogs.py:55 +msgid "" +"TWBlue was unable to load your filters from the instance. Please try " +"again." +msgstr "" + +#: wxUI/commonMessageDialogs.py:58 +#, fuzzy +msgid "Do you really want to delete this filter ?" +msgstr "Želite li doista izbrisati ovaj račun?" + +#: wxUI/commonMessageDialogs.py:58 +#, fuzzy +msgid "Delete filter" +msgstr "Napravi &filter" + +#: wxUI/commonMessageDialogs.py:61 +msgid "TWBlue was unable to remove the filter you specified. Please try again." +msgstr "" + +#: wxUI/sysTrayIcon.py:36 wxUI/view.py:25 +msgid "&Global settings" +msgstr "globalne postavke" + +#: wxUI/sysTrayIcon.py:37 wxUI/view.py:24 +msgid "Account se&ttings" +msgstr "&Postavke računa" + +#: wxUI/sysTrayIcon.py:39 +msgid "&Show / hide" +msgstr "Prikaži / sakrij" + +#: wxUI/sysTrayIcon.py:40 wxUI/view.py:74 +msgid "&Documentation" +msgstr "&Dokumentacija" + +#: wxUI/sysTrayIcon.py:41 +msgid "Check for &updates" +msgstr "provjeri za nadogradnju" + +#: wxUI/sysTrayIcon.py:42 +msgid "&Exit" +msgstr "Zatvori" + +#: wxUI/view.py:16 +msgid "&Manage accounts" +msgstr "upravljaj računima" + +#: wxUI/view.py:17 +msgid "&Update profile" +msgstr "&Osvježi profil" + +#: wxUI/view.py:18 +msgid "&Hide window" +msgstr "&Sakrij profil" + +#: wxUI/view.py:20 +msgid "&Lists manager" +msgstr "&Upravitelj listi" + +#: wxUI/view.py:23 +msgid "&Edit keystrokes" +msgstr "&Uredi tipkovničke prečace" + +#: wxUI/view.py:26 +msgid "E&xit" +msgstr "i&zlaz" + +# | msgid "Remove from list" +#: wxUI/view.py:34 +#, fuzzy +msgid "&Remove from favorites" +msgstr "Ukloni s popisa" + +#: wxUI/view.py:47 +msgid "&Add to list" +msgstr "&Dodaj u listu" + +#: wxUI/view.py:48 +msgid "R&emove from list" +msgstr "U&kloni iz popisa" + +#: wxUI/view.py:49 +msgid "Show user &profile" +msgstr "Prikaži korisnički &profil" + +#: wxUI/view.py:50 +msgid "V&iew likes" +msgstr "&Pogledaj lajkove" + +#: wxUI/view.py:54 +msgid "&Update buffer" +msgstr "&osvježi spremnik" + +#: wxUI/dialogs/mastodon/communityTimeline.py:9 wxUI/view.py:55 +msgid "Create community timeline" +msgstr "" + +#: wxUI/view.py:56 +msgid "New &trending topics buffer..." +msgstr "Novi spremnik &Rubrike za trendovanje..." + +#: wxUI/view.py:59 +msgid "Find a string in the currently focused buffer..." +msgstr "Potraži niz znakova u trenutno fokusiranom spremniku..." + +#: wxUI/view.py:60 +msgid "&Load previous items" +msgstr "&Učitaj prijašnje stavke" + +#: wxUI/dialogs/mastodon/userActions.py:21 wxUI/view.py:62 +msgid "&Mute" +msgstr "&Utišaj" + +#: wxUI/view.py:63 +msgid "&Autoread" +msgstr "&Automatsko čitanje" + +#: wxUI/view.py:64 +msgid "&Clear buffer" +msgstr "&Očisti spremnik" + +#: wxUI/view.py:65 +msgid "&Destroy" +msgstr "&Uništi" + +#: wxUI/view.py:69 +msgid "&Seek back 5 seconds" +msgstr "&Premotaj u nazad za 5 sekundi" + +#: wxUI/view.py:70 +msgid "&Seek forward 5 seconds" +msgstr "&Premotaj u naprijed za 5 sekundi" + +#: wxUI/view.py:75 +msgid "Sounds &tutorial" +msgstr "t&utorial zvukova" + +#: wxUI/view.py:76 +msgid "&What's new in this version?" +msgstr "&Što je novo u ovoj inačici?" + +#: wxUI/view.py:77 +msgid "&Check for updates" +msgstr "&Provjeri ima li nadogradnja" + +#: wxUI/view.py:78 +msgid "&Report an error" +msgstr "&Prijavi grešku" + +#: wxUI/view.py:79 +#, python-brace-format +msgid "{0}'s &website" +msgstr "{0}'s &Web stranica" + +#: wxUI/view.py:80 +msgid "Get soundpacks for TWBlue" +msgstr "Preuzni zvučne pakete za TWBlue" + +#: wxUI/view.py:81 +#, python-brace-format +msgid "About &{0}" +msgstr "O &{0}" + +#: wxUI/view.py:84 +msgid "&Application" +msgstr "&Aplikacija" + +#: wxUI/view.py:85 +msgid "&Tweet" +msgstr "&Tweet" + +#: wxUI/dialogs/mastodon/userActions.py:10 wxUI/view.py:86 +msgid "&User" +msgstr "&Korisnik" + +#: wxUI/view.py:87 +msgid "&Buffer" +msgstr "&Spremnik" + +#: wxUI/view.py:88 +msgid "&Audio" +msgstr "&Audio" + +#: wxUI/view.py:89 +msgid "&Help" +msgstr "&Pomoć" + +#: wxUI/view.py:175 +msgid "Address" +msgstr "Adresa" + +#: wxUI/view.py:206 +#, python-brace-format +msgid "Your {0} version is up to date" +msgstr "Vaša {0} inačica je najnovija" + +#: wxUI/view.py:206 +msgid "Update" +msgstr "Nadogradnja" + +#: wxUI/buffers/panels.py:12 wxUI/buffers/panels.py:20 +msgid "Login" +msgstr "Prijava" + +#: wxUI/buffers/panels.py:14 +msgid "Log in automatically" +msgstr "Prijavi se automatski" + +#: wxUI/buffers/panels.py:22 +msgid "Logout" +msgstr "Odjava" + +#: wxUI/buffers/mastodon/base.py:11 +#: wxUI/buffers/mastodon/conversationList.py:11 wxUI/buffers/mastodon/user.py:8 +#: wxUI/dialogs/mastodon/userTimeline.py:10 wxUI/dialogs/userAliasDialogs.py:14 +msgid "User" +msgstr "Korisnik" + +#: wxUI/buffers/mastodon/base.py:11 +#: wxUI/buffers/mastodon/conversationList.py:11 +#: wxUI/buffers/mastodon/notifications.py:11 +#: wxUI/dialogs/mastodon/postDialogs.py:37 +#: wxUI/dialogs/mastodon/postDialogs.py:272 +msgid "Text" +msgstr "Tekst" + +#: wxUI/buffers/mastodon/base.py:11 +#: wxUI/buffers/mastodon/conversationList.py:11 +#: wxUI/buffers/mastodon/notifications.py:11 +#: wxUI/dialogs/mastodon/postDialogs.py:216 +msgid "Date" +msgstr "Datum" + +#: wxUI/buffers/mastodon/base.py:11 +#: wxUI/buffers/mastodon/conversationList.py:11 +msgid "Client" +msgstr "Klijent" + +#: wxUI/buffers/mastodon/base.py:27 +msgid "Favorite" +msgstr "" + +#: wxUI/buffers/mastodon/base.py:28 +msgid "Bookmark" +msgstr "" + +#: wxUI/buffers/mastodon/base.py:29 +msgid "Direct message" +msgstr "Izravna poruka" + +#: wxUI/buffers/mastodon/notifications.py:23 +#: wxUI/dialogs/mastodon/dialogs.py:23 +msgid "Dismiss" +msgstr "" + +#: wxUI/buffers/mastodon/user.py:19 wxUI/dialogs/userAliasDialogs.py:48 +msgid "Actions" +msgstr "Radnje" + +# | msgid "Direct Messages" +#: wxUI/buffers/mastodon/user.py:20 +#, fuzzy +msgid "Message" +msgstr "Izravne poruke" + +#: wxUI/dialogs/configuration.py:15 +#, fuzzy +msgid "&Language" +msgstr "Jezik" + +#: wxUI/dialogs/configuration.py:22 +#, fuzzy, python-brace-format +msgid "&Ask before exiting {0}" +msgstr "Pitaj prije izlaza {0}" + +#: wxUI/dialogs/configuration.py:24 +#, fuzzy +msgid "&Disable Streaming functions" +msgstr "Isključiti funkcije streaminga" + +#: wxUI/dialogs/configuration.py:27 +#, fuzzy +msgid "&Buffer update interval, in minutes" +msgstr "Vrijeme obnavljanja spremnika, u minutama" + +#: wxUI/dialogs/configuration.py:33 +#, fuzzy, python-brace-format +msgid "Pla&y a sound when {0} launches" +msgstr "Reproduciraj zvuk kad se {0} pokrene" + +#: wxUI/dialogs/configuration.py:35 +#, fuzzy, python-brace-format +msgid "Sp&eak a message when {0} launches" +msgstr "izgovori poruku kad se {0} pokrene" + +#: wxUI/dialogs/configuration.py:37 +#, fuzzy +msgid "&Use invisible interface's keyboard shortcuts while GUI is visible" +msgstr "Koristi nevidljivo sučelje tipkovnički prečaci na prozoru" + +#: wxUI/dialogs/configuration.py:39 +#, fuzzy +msgid "A&ctivate Sapi5 when any other screen reader is not being run" +msgstr "aktiviraj sapi5 kada drugi čitač ekrana nije pokrenut" + +#: wxUI/dialogs/configuration.py:41 +#, fuzzy +msgid "&Hide GUI on launch" +msgstr "Sakrij prozor pri pokretanju" + +#: wxUI/dialogs/configuration.py:43 +msgid "&Read long posts in GUI" +msgstr "" + +#: wxUI/dialogs/configuration.py:46 +#, fuzzy +msgid "&Keymap" +msgstr "Lista tipkovničkih prečaca" + +#: wxUI/dialogs/configuration.py:51 +#, fuzzy, python-brace-format +msgid "Check for u&pdates when {0} launches" +msgstr "provjeri za nadogradnju kad se {0} pokrene" + +#: wxUI/dialogs/configuration.py:61 +#, fuzzy +msgid "Proxy &type: " +msgstr "Vrsta posredničkog poslužitelja: " + +#: wxUI/dialogs/configuration.py:68 +#, fuzzy +msgid "Proxy s&erver: " +msgstr "Posrednički poslužitelj" + +#: wxUI/dialogs/configuration.py:74 +#, fuzzy +msgid "&Port: " +msgstr "Port: " + +#: wxUI/dialogs/configuration.py:80 +#, fuzzy +msgid "&User: " +msgstr "Korisnik" + +#: wxUI/dialogs/configuration.py:86 +#, fuzzy +msgid "P&assword: " +msgstr "Lozinka" + +#: wxUI/dialogs/configuration.py:98 +#, fuzzy +msgid "Enable automatic s&peech feedback" +msgstr "Omogući automatsku govornu povratnu informaciju" + +#: wxUI/dialogs/configuration.py:100 +#, fuzzy +msgid "Enable automatic &Braille feedback" +msgstr "Omogući automatsku brajičnu povratnu informaciju" + +#: wxUI/dialogs/configuration.py:108 +msgid "Buffer" +msgstr "Spremnik" + +#: wxUI/dialogs/configuration.py:108 +msgid "Status" +msgstr "Status" + +#: wxUI/dialogs/configuration.py:111 +#, fuzzy +msgid "S&how/hide" +msgstr "Prikaži/sakrij" + +#: wxUI/dialogs/configuration.py:112 +#, fuzzy +msgid "Move &up" +msgstr "Premjesti prema gore" + +#: wxUI/dialogs/configuration.py:113 +#, fuzzy +msgid "Move &down" +msgstr "premjesti prema dolje" + +#: wxUI/dialogs/configuration.py:123 wxUI/dialogs/configuration.py:188 +#: wxUI/dialogs/configuration.py:191 wxUI/dialogs/configuration.py:196 +msgid "Show" +msgstr "Prikaži" + +#: wxUI/dialogs/configuration.py:125 wxUI/dialogs/configuration.py:135 +#: wxUI/dialogs/configuration.py:159 wxUI/dialogs/configuration.py:189 +msgid "Hide" +msgstr "Sakrij" + +#: wxUI/dialogs/configuration.py:133 wxUI/dialogs/configuration.py:157 +msgid "Select a buffer first." +msgstr "Prvo označite spremnik" + +#: wxUI/dialogs/configuration.py:136 wxUI/dialogs/configuration.py:160 +msgid "The buffer is hidden, show it first." +msgstr "Spremnik je skriven, najprije ga otkrijte." + +#: wxUI/dialogs/configuration.py:139 +msgid "The buffer is already at the top of the list." +msgstr "Spremnik je već na početku liste" + +#: wxUI/dialogs/configuration.py:163 +msgid "The buffer is already at the bottom of the list." +msgstr "Spremnik je već na kraju liste" + +#: wxUI/dialogs/configuration.py:205 +msgid "&LibreTranslate API URL: " +msgstr "" + +#: wxUI/dialogs/configuration.py:211 +msgid "LibreTranslate API &Key (optional): " +msgstr "" + +#: wxUI/dialogs/configuration.py:217 +msgid "&DeepL API Key: " +msgstr "" + +#: wxUI/dialogs/configuration.py:231 +#, python-brace-format +msgid "{0} preferences" +msgstr "{0} postavke" + +#: wxUI/dialogs/configuration.py:237 wxUI/dialogs/mastodon/configuration.py:144 +msgid "General" +msgstr "Općenito" + +#: wxUI/dialogs/configuration.py:242 +msgid "Proxy" +msgstr "posrednik" + +#: wxUI/dialogs/configuration.py:246 +#, fuzzy +msgid "Translation services" +msgstr "Prevedeno" + +#: wxUI/dialogs/configuration.py:251 wxUI/dialogs/mastodon/configuration.py:170 +#, fuzzy +msgid "&Save" +msgstr "Spremi" + +#: wxUI/dialogs/configuration.py:253 +#: wxUI/dialogs/mastodon/communityTimeline.py:27 +#: wxUI/dialogs/mastodon/configuration.py:172 +#: wxUI/dialogs/mastodon/search.py:26 +#: wxUI/dialogs/mastodon/showUserProfile.py:170 +#: wxUI/dialogs/mastodon/updateProfile.py:132 +#: wxUI/dialogs/mastodon/userActions.py:38 +#: wxUI/dialogs/mastodon/userTimeline.py:32 +msgid "&Close" +msgstr "&Zatvori" + +#: wxUI/dialogs/find.py:13 +msgid "Find in current buffer" +msgstr "Traži u trenutnom spremniku" + +#: wxUI/dialogs/find.py:14 +msgid "String" +msgstr "Niz" + +#: wxUI/dialogs/find.py:23 wxUI/dialogs/mastodon/showUserProfile.py:33 +msgid "Cancel" +msgstr "Odustani" + +#: wxUI/dialogs/templateDialogs.py:8 +msgid "Edit Template" +msgstr "" + +#: wxUI/dialogs/templateDialogs.py:13 +msgid "Edit template" +msgstr "" + +#: wxUI/dialogs/templateDialogs.py:17 +#, fuzzy +msgid "Available variables" +msgstr "Nedostupno" + +#: wxUI/dialogs/templateDialogs.py:29 +msgid "Restore template" +msgstr "" + +#: wxUI/dialogs/templateDialogs.py:48 +#, python-brace-format +msgid "Restored template to {}." +msgstr "" + +#: wxUI/dialogs/templateDialogs.py:52 +msgid "" +"the template you have specified include variables that do not exists for " +"the object. Please fix the template and try again. For your reference, " +"you can see a list of all available variables in the variables list while" +" editing your template." +msgstr "" + +#: wxUI/dialogs/templateDialogs.py:52 +#, fuzzy +msgid "Invalid template" +msgstr "Neispravan prečac" + +#: wxUI/dialogs/urlList.py:6 +msgid "Select URL" +msgstr "Označite url" + +#: wxUI/dialogs/mastodon/userActions.py:13 +#: wxUI/dialogs/mastodon/userTimeline.py:13 wxUI/dialogs/userAliasDialogs.py:13 +msgid "&Autocomplete users" +msgstr "&Samodovrši korisnike" + +#: wxUI/dialogs/userAliasDialogs.py:18 +msgid "Alias" +msgstr "Alias" + +#: wxUI/dialogs/userAliasDialogs.py:41 +msgid "Edit user aliases" +msgstr "Uredi aliase korisnika" + +#: wxUI/dialogs/mastodon/search.py:19 wxUI/dialogs/userAliasDialogs.py:43 +msgid "Users" +msgstr "Korisnici" + +#: wxUI/dialogs/userAliasDialogs.py:50 +msgid "Add alias" +msgstr "Dodaj alias" + +#: wxUI/dialogs/userAliasDialogs.py:51 +msgid "Adds a new user alias" +msgstr "Dodaje novi korisnički alias" + +#: wxUI/dialogs/userAliasDialogs.py:54 +msgid "Edit the currently focused user Alias." +msgstr "Uredi trenutno fokusiran korisnički alias." + +#: wxUI/dialogs/mastodon/filters/create_filter.py:26 +#: wxUI/dialogs/mastodon/filters/manage_filters.py:24 +#: wxUI/dialogs/userAliasDialogs.py:57 +msgid "Remove" +msgstr "Ukloni" + +#: wxUI/dialogs/userAliasDialogs.py:58 +msgid "Remove the currently focused user alias." +msgstr "Ukloni trenutno fokusiran korisnički alias." + +#: wxUI/dialogs/userAliasDialogs.py:82 +#, fuzzy +msgid "Are you sure you want to delete this user alias?" +msgstr "Želite li doista obrisati ovaj popis?" + +#: wxUI/dialogs/userAliasDialogs.py:82 +#, fuzzy +msgid "Remove user alias" +msgstr "Ukloni korisnika" + +#: wxUI/dialogs/userAliasDialogs.py:93 +#, fuzzy +msgid "User alias" +msgstr "Pojedinosti korisnika" + +#: wxUI/dialogs/userList.py:27 +#, fuzzy +msgid "View profile" +msgstr "&Osvježi profil" + +#: wxUI/dialogs/mastodon/communityTimeline.py:10 +#, fuzzy +msgid "Community URL" +msgstr "Kontrol" + +#: wxUI/dialogs/mastodon/communityTimeline.py:16 +#: wxUI/dialogs/mastodon/userTimeline.py:18 +msgid "Buffer type" +msgstr "vrsta spremnika" + +#: wxUI/dialogs/mastodon/communityTimeline.py:17 +#, fuzzy +msgid "&Local timeline" +msgstr "Vremenske osi" + +#: wxUI/dialogs/mastodon/communityTimeline.py:18 +#, fuzzy +msgid "&Federated Timeline" +msgstr "{username}ova vremenska os" + +#: wxUI/dialogs/mastodon/communityTimeline.py:25 +#: wxUI/dialogs/mastodon/search.py:24 +#: wxUI/dialogs/mastodon/updateProfile.py:130 +#: wxUI/dialogs/mastodon/userActions.py:36 +#: wxUI/dialogs/mastodon/userTimeline.py:30 +msgid "&OK" +msgstr "U redu" + +#: wxUI/dialogs/mastodon/configuration.py:14 +msgid "User autocompletion settings" +msgstr "Postavke korisnika koji se samodovršavaju" + +# | msgid "" +# | "Scan account and add friends and followers to the user autocompletion " +# | "database" +#: wxUI/dialogs/mastodon/configuration.py:15 +#, fuzzy +msgid "" +"Scan acc&ount and add followers and following users to the user " +"autocompletion database" +msgstr "" +"Skeniraj račun i dodaj prijatelje i pratitelje u bazu podataka " +"samodovršavanja" + +#: wxUI/dialogs/mastodon/configuration.py:16 +#, fuzzy +msgid "&Manage autocompletion database" +msgstr "Upravljaj bazom podataka samodovršavanja" + +#: wxUI/dialogs/mastodon/configuration.py:21 +#, fuzzy +msgid "&Disable Streaming API endpoints" +msgstr "Isključiti funkcije streaminga" + +#: wxUI/dialogs/mastodon/configuration.py:23 +#, fuzzy +msgid "&Relative timestamps" +msgstr "relativna vremena" + +#: wxUI/dialogs/mastodon/configuration.py:25 +msgid "" +"R&ead preferences from instance (default visibility when publishing and " +"displaying sensitive content)" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:28 +#, fuzzy +msgid "&Items on each API call" +msgstr "Stavaka na jednom api pozivu" + +# | msgid "" +# | "Inverted buffers: The newest tweets will be shown at the beginning while +# " +# | "the oldest at the end" +#: wxUI/dialogs/mastodon/configuration.py:34 +#, fuzzy +msgid "" +"I&nverted buffers: The newest items will be shown at the beginning while " +"the oldest at the end" +msgstr "" +"Izvrnuti spremnici: najnoviji tweetovi pojavljivat će se na početku " +"popisa dok će se stariji prikazivati na kraju" + +#: wxUI/dialogs/mastodon/configuration.py:36 +msgid "&Ask confirmation before boosting a post" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:38 +#, fuzzy +msgid "S&how screen names instead of full names" +msgstr "Prikazuj prikazana imena umjesto punih" + +#: wxUI/dialogs/mastodon/configuration.py:40 +#, fuzzy +msgid "Hide e&mojis in usernames" +msgstr "Skrivaj emojie u korisničkim imenima" + +#: wxUI/dialogs/mastodon/configuration.py:42 +#, fuzzy +msgid "" +"&Number of items per buffer to cache in database (0 to disable caching, " +"blank for unlimited)" +msgstr "" +"Broj stavki u spremniku za arhiviranje (0 kako biste onemogućili " +"arhiviranje, prazno za neograničeno)" + +# | msgid "" +# | "Load cache for tweets in memory (much faster in big datasets but requires +# " +# | "more RAM)" +#: wxUI/dialogs/mastodon/configuration.py:46 +#, fuzzy +msgid "" +"&Load cache for items in memory (much faster in big datasets but requires" +" more RAM)" +msgstr "" +"Učitaj predmemoriju tweetowa u memoriju (brže u velikim setovima podataka" +" ali zahtjeva više radne memorije)" + +# | msgid "Edit template for persons. Current template: {}" +#: wxUI/dialogs/mastodon/configuration.py:53 +#, fuzzy, python-brace-format +msgid "Edit template for &posts. Current template: {}" +msgstr "Uredi predložak za osobe. Trenutan predložak: {}" + +# | msgid "Edit template for persons. Current template: {}" +#: wxUI/dialogs/mastodon/configuration.py:55 +#, fuzzy, python-brace-format +msgid "Edit template for c&onversations. Current template: {}" +msgstr "Uredi predložak za osobe. Trenutan predložak: {}" + +#: wxUI/dialogs/mastodon/configuration.py:57 +#, fuzzy, python-brace-format +msgid "Edit template for p&ersons. Current template: {}" +msgstr "Uredi predložak za osobe. Trenutan predložak: {}" + +#: wxUI/dialogs/mastodon/configuration.py:65 +#, fuzzy +msgid "&Volume" +msgstr "Glasnoča" + +#: wxUI/dialogs/mastodon/configuration.py:76 +#, fuzzy +msgid "S&ession mute" +msgstr "Utišavanje sesije" + +#: wxUI/dialogs/mastodon/configuration.py:78 +#, fuzzy +msgid "&Output device" +msgstr "Izlazni uređaj" + +#: wxUI/dialogs/mastodon/configuration.py:85 +#, fuzzy +msgid "&Input device" +msgstr "Ulazni uređaj" + +#: wxUI/dialogs/mastodon/configuration.py:93 +#, fuzzy +msgid "Sound &pack" +msgstr "Paket zvukova" + +# | msgid "Indicate audio tweets with sound" +#: wxUI/dialogs/mastodon/configuration.py:99 +#, fuzzy +msgid "Indicate &audio or video in posts with sound" +msgstr "Označavaj zvučne tweetowe zvukom" + +# | msgid "Indicate tweets containing images with sound" +#: wxUI/dialogs/mastodon/configuration.py:101 +#, fuzzy +msgid "Indicate posts containing i&mages with sound" +msgstr "Označavaj tweetowe koje sadrže slike zvukom" + +#: wxUI/dialogs/mastodon/configuration.py:124 +#, fuzzy +msgid "&Language for OCR" +msgstr "Jezik prepoznavanja" + +#: wxUI/dialogs/mastodon/configuration.py:149 +msgid "Feedback" +msgstr "Povratna informacija" + +#: wxUI/dialogs/mastodon/configuration.py:153 +msgid "Buffers" +msgstr "&Spremnik" + +#: wxUI/dialogs/mastodon/configuration.py:157 +msgid "Templates" +msgstr "Predlošci" + +#: wxUI/dialogs/mastodon/configuration.py:161 +msgid "Sound" +msgstr "Zvuk" + +#: wxUI/dialogs/mastodon/configuration.py:165 +msgid "Extras" +msgstr "Dodaci" + +# | msgid "Would you like to add a comment to this tweet?" +#: wxUI/dialogs/mastodon/dialogs.py:7 +#, fuzzy +msgid "Would you like to share this post?" +msgstr "Želite li dodati komentar ovom tweetu?" + +# | msgid "" +# | "Do you really want to delete this tweet? It will be deleted from Twitter +# " +# | "as well." +#: wxUI/dialogs/mastodon/dialogs.py:15 +#, fuzzy +msgid "" +"Do you really want to delete this post? It will be deleted from the " +"instance as well." +msgstr "Želite li doista izbrisati ovaj tweet? Isti će biti izbrisana sa Twittera." + +#: wxUI/dialogs/mastodon/dialogs.py:15 +msgid "Delete" +msgstr "Izbriši" + +#: wxUI/dialogs/mastodon/dialogs.py:23 +msgid "" +"Are you sure you want to dismiss this notification? If you dismiss a " +"mention notification, it also disappears from your mentions buffer. The " +"post is not going to be deleted from the instance, though." +msgstr "" + +# | msgid "" +# | "Do you really want to empty this buffer? It's items will be removed from +# " +# | "the list but not from Twitter" +#: wxUI/dialogs/mastodon/dialogs.py:31 +#, fuzzy +msgid "" +"Do you really want to empty this buffer? It's items will be removed from" +" the list but not from the instance" +msgstr "" +"Želite li isprazniti ovaj spremnik? njegova lista će se isprazniti ali ne" +" i twitter?" + +# | msgid "This user has no tweets. {0} can't create a timeline." +#: wxUI/dialogs/mastodon/dialogs.py:38 +#, fuzzy, python-brace-format +msgid "This user has no posts. {0} can't create a timeline." +msgstr "Ovaj korisnik nema tweetova. {0} ne može stvoriti vremensku os." + +# | msgid "This user has no favorited tweets. {0} can't create a timeline." +#: wxUI/dialogs/mastodon/dialogs.py:43 +#, fuzzy, python-brace-format +msgid "This user has no favorited posts. {0} can't create a timeline." +msgstr "Ovaj korisnik nema omiljenih tweetova. {0} ne mmože stvoriti vremensku os" + +# | msgid "This user has no followers. {0} can't create a timeline." +#: wxUI/dialogs/mastodon/dialogs.py:48 +#, fuzzy, python-brace-format +msgid "This user has no followers yet. {0} can't create a timeline." +msgstr "Ovaj korisnik nema pratitelja. {0} ne može stvoriti vremensku os." + +# | msgid "This user has no followers. {0} can't create a timeline." +#: wxUI/dialogs/mastodon/dialogs.py:53 +#, fuzzy, python-brace-format +msgid "This user is not following anyone. {0} can't create a timeline." +msgstr "Ovaj korisnik nema pratitelja. {0} ne može stvoriti vremensku os." + +#: wxUI/dialogs/mastodon/dialogs.py:60 +#, python-brace-format +msgid "The focused item has no user in it. {} ca't open a user profile" +msgstr "" + +# | msgid "R&emove from list" +#: wxUI/dialogs/mastodon/menus.py:13 wxUI/dialogs/mastodon/menus.py:41 +#, fuzzy +msgid "R&emove from favorites" +msgstr "U&kloni iz popisa" + +#: wxUI/dialogs/mastodon/menus.py:15 wxUI/dialogs/mastodon/menus.py:43 +msgid "&Open URL" +msgstr "&Otvori URL" + +# | msgid "Search on twitter" +#: wxUI/dialogs/mastodon/menus.py:17 wxUI/dialogs/mastodon/menus.py:47 +#, fuzzy +msgid "&Open in instance" +msgstr "Traži na twitteru" + +#: wxUI/dialogs/mastodon/menus.py:19 wxUI/dialogs/mastodon/menus.py:45 +msgid "&Play audio" +msgstr "&Reproduciraj zvuk" + +#: wxUI/dialogs/mastodon/menus.py:23 wxUI/dialogs/mastodon/menus.py:51 +msgid "&Copy to clipboard" +msgstr "&Kopiraj u međuspremnik" + +#: wxUI/dialogs/mastodon/menus.py:27 wxUI/dialogs/mastodon/menus.py:55 +msgid "&User actions..." +msgstr "&Akcije korisnika" + +#: wxUI/dialogs/mastodon/menus.py:53 +msgid "&Dismiss" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:20 +#: wxUI/dialogs/mastodon/postDialogs.py:38 +msgid "Attachments" +msgstr "prilozi" + +#: wxUI/dialogs/mastodon/postDialogs.py:24 +msgid "File" +msgstr "Datoteka" + +#: wxUI/dialogs/mastodon/postDialogs.py:25 +msgid "Type" +msgstr "tip" + +#: wxUI/dialogs/mastodon/postDialogs.py:26 +#: wxUI/dialogs/mastodon/postDialogs.py:141 +msgid "Description" +msgstr "Opis" + +# | msgid "Remove client" +#: wxUI/dialogs/mastodon/postDialogs.py:28 +#, fuzzy +msgid "Remove Attachment" +msgstr "Ukloni klijent" + +#: wxUI/dialogs/mastodon/postDialogs.py:33 +msgid "Post in the thread" +msgstr "" + +# | msgid "Remove from list" +#: wxUI/dialogs/mastodon/postDialogs.py:40 +#, fuzzy +msgid "Remove post" +msgstr "Ukloni s popisa" + +#: wxUI/dialogs/mastodon/postDialogs.py:47 +msgid "&Visibility" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:54 +#, fuzzy +msgid "Language" +msgstr "Jezik" + +#: wxUI/dialogs/mastodon/postDialogs.py:58 +msgid "A&dd" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:59 +msgid "S&ensitive content" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:64 +msgid "Content warning" +msgstr "" + +# | msgid "Add to list" +#: wxUI/dialogs/mastodon/postDialogs.py:71 +#, fuzzy +msgid "Add p&ost" +msgstr "Dodaj u popis" + +#: wxUI/dialogs/mastodon/postDialogs.py:75 +msgid "Auto&complete users" +msgstr "&Samodovrši korisnike" + +# | msgid "Check &spelling..." +#: wxUI/dialogs/mastodon/postDialogs.py:77 +#, fuzzy +msgid "Check &spelling" +msgstr "Provjeri pravopis..." + +#: wxUI/dialogs/mastodon/postDialogs.py:79 +#, fuzzy +msgid "&Translate" +msgstr "Prevedeno" + +# | msgid "Tweet - %i characters " +#: wxUI/dialogs/mastodon/postDialogs.py:106 +#, fuzzy, python-brace-format +msgid "Post - {} characters" +msgstr "Tweet - %i znakova " + +#: wxUI/dialogs/mastodon/postDialogs.py:130 +msgid "Image" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:132 +#, fuzzy +msgid "Video" +msgstr "Sakrij" + +# | msgid "&Audio" +#: wxUI/dialogs/mastodon/postDialogs.py:134 +#, fuzzy +msgid "Audio" +msgstr "&Audio" + +#: wxUI/dialogs/mastodon/postDialogs.py:136 +msgid "Poll" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:141 +msgid "please provide a description" +msgstr "molimo napišite opis" + +#: wxUI/dialogs/mastodon/postDialogs.py:148 +msgid "Select the picture to be uploaded" +msgstr "Označite sliku koja treba biti otpremljena" + +#: wxUI/dialogs/mastodon/postDialogs.py:148 +msgid "Image files (*.png, *.jpg, *.gif)|*.png; *.jpg; *.gif" +msgstr "Slikovne datoteke (*.png, *.jpg, *.gif)|*.png; *.jpg; *.gif" + +#: wxUI/dialogs/mastodon/postDialogs.py:155 +#, fuzzy +msgid "Select the video to be uploaded" +msgstr "Označite sliku koja treba biti otpremljena" + +# | msgid "Audio Files (*.mp3, *.ogg, *.wav)|*.mp3; *.ogg; *.wav" +#: wxUI/dialogs/mastodon/postDialogs.py:155 +#, fuzzy +msgid "Video files (*.mp4, *.mov, *.m4v, *.webm)| *.mp4; *.m4v; *.mov; *.webm" +msgstr "Zvučne datoteke (*.mp3, *.ogg, *.wav)|*.mp3; *.ogg; *.wav" + +#: wxUI/dialogs/mastodon/postDialogs.py:162 +msgid "Select the audio file to be uploaded" +msgstr "Označite zvučnu datoteku koja treba biti otpremljena" + +#: wxUI/dialogs/mastodon/postDialogs.py:162 +msgid "" +"Audio files (*.mp3, *.ogg, *.wav, *.flac, *.opus, *.aac, *.m4a, " +"*.3gp)|*.mp3; *.ogg; *.wav; *.flac; *.opus; *.aac; *.m4a; *.3gp" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:169 +msgid "" +"It is not possible to add more attachments. Please take into account that" +" You can add only a maximum of 4 images, or one audio, video or poll per" +" post. Please remove other attachments before continuing." +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:169 +#, fuzzy +msgid "Error adding attachment" +msgstr "Dodaj prilog" + +#: wxUI/dialogs/mastodon/postDialogs.py:172 +msgid "" +"You can add a poll or media files. In order to add your poll, please " +"remove other attachments first." +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:172 +#, fuzzy +msgid "Error adding poll" +msgstr "Dodaj prilog" + +# | msgid "Tweet - %i characters " +#: wxUI/dialogs/mastodon/postDialogs.py:177 +#, fuzzy, python-format +msgid "Post - %i characters " +msgstr "Tweet - %i znakova " + +#: wxUI/dialogs/mastodon/postDialogs.py:200 +msgid "Image description" +msgstr "opis slike" + +# | msgid "Private" +#: wxUI/dialogs/mastodon/postDialogs.py:210 +#, fuzzy +msgid "Privacy" +msgstr "Privatno" + +#: wxUI/dialogs/mastodon/postDialogs.py:214 +#, fuzzy +msgid "Source" +msgstr "Izvor: " + +#: wxUI/dialogs/mastodon/postDialogs.py:222 +msgid "Boosts" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:224 +msgid "View users who boosted this post" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:231 +msgid "View users who favorited this post" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:239 +#, fuzzy +msgid "Copy link to clipboard" +msgstr "Kopiraj u međuspremnik" + +#: wxUI/dialogs/mastodon/postDialogs.py:241 +#: wxUI/dialogs/mastodon/postDialogs.py:280 +msgid "Check &spelling..." +msgstr "Provjeri pravopis..." + +#: wxUI/dialogs/mastodon/postDialogs.py:242 +#: wxUI/dialogs/mastodon/postDialogs.py:281 +msgid "&Translate..." +msgstr "Prev&edi" + +#: wxUI/dialogs/mastodon/postDialogs.py:243 +#: wxUI/dialogs/mastodon/postDialogs.py:282 +msgid "C&lose" +msgstr "&Zatvori" + +#: wxUI/dialogs/mastodon/postDialogs.py:294 +msgid "Add a poll" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:298 +msgid "Participation time" +msgstr "" + +# | msgid "%d minutes, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "5 minutes" +msgstr "%d minuta, " + +# | msgid "%d minutes, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "30 minutes" +msgstr "%d minuta, " + +# | msgid "%d hour, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "1 hour" +msgstr "%d sat, " + +# | msgid "%d hours, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "6 hours" +msgstr "%d sati, " + +# | msgid "%d day, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "1 day" +msgstr "%d dan, " + +# | msgid "%d days, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "2 days" +msgstr "%d dana, " + +# | msgid "%d days, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "3 days" +msgstr "%d dana, " + +# | msgid "%d days, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "4 days" +msgstr "%d dana, " + +# | msgid "%d days, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "5 days" +msgstr "%d dana, " + +# | msgid "%d days, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "6 days" +msgstr "%d dana, " + +# | msgid "%d days, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "7 days" +msgstr "%d dana, " + +#: wxUI/dialogs/mastodon/postDialogs.py:304 +msgid "Choices" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:308 +msgid "Option 1" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:315 +msgid "Option 2" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:322 +msgid "Option 3" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:329 +msgid "Option 4" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:334 +msgid "Allow multiple choices per user" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:337 +msgid "Hide votes count until the poll expires" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:363 +msgid "Please make sure you have provided at least two options for the poll." +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:363 +#, fuzzy +msgid "Not enough information" +msgstr "informacija" + +#: wxUI/dialogs/mastodon/postDialogs.py:368 +msgid "Vote in this poll" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:371 +#, fuzzy +msgid "Options" +msgstr "Radnje" + +# | msgid "&Search" +#: wxUI/dialogs/mastodon/search.py:9 +#, fuzzy +msgid "Search" +msgstr "&Traži" + +#: wxUI/dialogs/mastodon/search.py:18 +msgid "Posts" +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:22 +#, fuzzy +msgid "Select user" +msgstr "Označite url" + +#: wxUI/dialogs/mastodon/showUserProfile.py:73 +#, fuzzy, python-brace-format +msgid "{}'s Profile" +msgstr "&Osvježi profil" + +#: wxUI/dialogs/mastodon/showUserProfile.py:79 +#, fuzzy +msgid "&Name: " +msgstr "Ime" + +#: wxUI/dialogs/mastodon/showUserProfile.py:84 +#, fuzzy +msgid "&URL: " +msgstr "Korisnik" + +#: wxUI/dialogs/mastodon/showUserProfile.py:89 +msgid "&Bio: " +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:94 +msgid "&Joined at: " +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:99 +#, fuzzy +msgid "&Actions" +msgstr "Radnje" + +#: wxUI/dialogs/mastodon/showUserProfile.py:104 +#, fuzzy +msgid "Header: " +msgstr "Sakrij" + +#: wxUI/dialogs/mastodon/showUserProfile.py:112 +msgid "Avatar: " +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:122 +#, python-brace-format +msgid "Field &{} - Label: " +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:129 +#, fuzzy +msgid "Content: " +msgstr "kontekst" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:43 +#: wxUI/dialogs/mastodon/filters/create_filter.py:65 +#: wxUI/dialogs/mastodon/showUserProfile.py:135 +msgid "Yes" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:43 +#: wxUI/dialogs/mastodon/filters/create_filter.py:65 +#: wxUI/dialogs/mastodon/filters/create_filter.py:69 +#: wxUI/dialogs/mastodon/showUserProfile.py:135 +msgid "No" +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:137 +#, fuzzy +msgid "&Private account: " +msgstr "Ukloni račun" + +#: wxUI/dialogs/mastodon/showUserProfile.py:144 +#, fuzzy +msgid "&Bot account: " +msgstr "Račun" + +#: wxUI/dialogs/mastodon/showUserProfile.py:151 +#, fuzzy +msgid "&Discoverable account: " +msgstr "Ukloni račun" + +#: wxUI/dialogs/mastodon/showUserProfile.py:157 +#, python-brace-format +msgid "{} p&osts. Click to open posts timeline" +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:162 +#, python-brace-format +msgid "{} &following. Click to open Following timeline" +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:166 +#, python-brace-format +msgid "{} fo&llowers. Click to open followers timeline" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:43 +msgid "&Display Name" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:50 +#, fuzzy +msgid "&Bio" +msgstr "&Blokiraj" + +#: wxUI/dialogs/mastodon/updateProfile.py:58 +#, fuzzy +msgid "Header" +msgstr "Sakrij" + +#: wxUI/dialogs/mastodon/updateProfile.py:71 +#, fuzzy +msgid "Change &header" +msgstr "Sakrij" + +#: wxUI/dialogs/mastodon/updateProfile.py:79 +msgid "Avatar" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:92 +msgid "Change &avatar" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:102 +#, python-brace-format +msgid "Field &{}: Label" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:110 +#, fuzzy +msgid "Content" +msgstr "kontekst" + +#: wxUI/dialogs/mastodon/updateProfile.py:120 +#, fuzzy +msgid "&Private account" +msgstr "Ukloni račun" + +#: wxUI/dialogs/mastodon/updateProfile.py:122 +#, fuzzy +msgid "&Bot account" +msgstr "Račun" + +#: wxUI/dialogs/mastodon/updateProfile.py:124 +#, fuzzy +msgid "&Discoverable account" +msgstr "Ukloni račun" + +#: wxUI/dialogs/mastodon/updateProfile.py:167 +msgid "Select header image - max 2MB" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:172 +#: wxUI/dialogs/mastodon/updateProfile.py:194 +msgid "The selected file is larger than 2MB. Do you want to select another file?" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:173 +#: wxUI/dialogs/mastodon/updateProfile.py:195 +msgid "File more than 2MB" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:189 +msgid "Select avatar image - max 2MB" +msgstr "" + +#: wxUI/dialogs/mastodon/userActions.py:19 +msgid "&Follow" +msgstr "&prati" + +#: wxUI/dialogs/mastodon/userActions.py:20 +msgid "U&nfollow" +msgstr "Prestani prati&ti" + +#: wxUI/dialogs/mastodon/userActions.py:22 +msgid "Unmu&te" +msgstr "Makni &utišavanje" + +#: wxUI/dialogs/mastodon/userActions.py:23 +msgid "&Block" +msgstr "&Blokiraj" + +#: wxUI/dialogs/mastodon/userActions.py:24 +msgid "Unbl&ock" +msgstr "Od&blokiraj" + +#: wxUI/dialogs/mastodon/userTimeline.py:9 +#, python-format +msgid "Timeline for %s" +msgstr "Vremenska os osobe %s" + +#: wxUI/dialogs/mastodon/userTimeline.py:19 +msgid "&Posts" +msgstr "" + +#: wxUI/dialogs/mastodon/userTimeline.py:20 +msgid "&Followers" +msgstr "P&ratitelji" + +# | msgid "Following" +#: wxUI/dialogs/mastodon/userTimeline.py:21 +#, fuzzy +msgid "Fo&llowing" +msgstr "Praćeni" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:12 +#, fuzzy +msgid "Keyword" +msgstr "Tipka" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:13 +#: wxUI/dialogs/mastodon/filters/create_filter.py:24 +msgid "Whole word" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:19 +msgid "Keyword:" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:25 +#: wxUI/dialogs/mastodon/filters/manage_filters.py:22 +#, fuzzy +msgid "Add" +msgstr "Adresa" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:34 +msgid "Palabras clave a filtrar:" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:74 +#, fuzzy +msgid "New filter" +msgstr "&Upravljaj filtrima" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:78 +#, fuzzy +msgid "Home timeline" +msgstr "Vremenske osi" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:79 +msgid "Public statuses" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:81 +#, fuzzy +msgid "Threads" +msgstr "spreman" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:82 +#, fuzzy +msgid "Profiles" +msgstr "&Osvježi profil" + +# | msgid "Delete" +#: wxUI/dialogs/mastodon/filters/create_filter.py:86 +#, fuzzy +msgid "Hide posts" +msgstr "Izbriši" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:87 +msgid "Set a content warning to posts" +msgstr "" + +# | msgid "%d hours, " +#: wxUI/dialogs/mastodon/filters/create_filter.py:91 +#, fuzzy +msgid "Hours" +msgstr "%d sati, " + +# | msgid "%d days, " +#: wxUI/dialogs/mastodon/filters/create_filter.py:92 +#, fuzzy +msgid "Days" +msgstr "%d dana, " + +#: wxUI/dialogs/mastodon/filters/create_filter.py:93 +msgid "Weeks" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:94 +msgid "months" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:97 +#, fuzzy +msgid "Title:" +msgstr "Datoteka" + +# | msgid "Reply to {arg0}" +#: wxUI/dialogs/mastodon/filters/create_filter.py:104 +#, fuzzy +msgid "Apply to:" +msgstr "Odgovori na {arg0}" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:114 +#, fuzzy +msgid "Action:" +msgstr "Akcija" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:122 +msgid "Expires in:" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/manage_filters.py:10 +#, fuzzy +msgid "Filters" +msgstr "Datoteka" + +#: wxUI/dialogs/mastodon/filters/manage_filters.py:15 +#, fuzzy +msgid "Title" +msgstr "Datoteka" + +#: wxUI/dialogs/mastodon/filters/manage_filters.py:16 +msgid "Keywords" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/manage_filters.py:17 +#, fuzzy +msgid "Contexts" +msgstr "kontekst" + +#: wxUI/dialogs/mastodon/filters/manage_filters.py:19 +#, fuzzy +msgid "Expires" +msgstr "Dodaci" + +#~ msgid "Unable to find address in OpenStreetMap." +#~ msgstr "Nije moguće pronaći adresu u OpenStreetMap." + +#~ msgid "There are no results for the coordinates in this tweet" +#~ msgstr "nema rezultata koordinata za ovaj tweet" + +#~ msgid "This list is already opened" +#~ msgstr "Ovaj je popis već otvoren" + +# | msgid "Timeline for {}" +#~ msgid "Timelines for {}" +#~ msgstr "Vremenska crta {}" + +#~ msgid "{account_name} (Mastodon)" +#~ msgstr "" + +#~ msgid "URL of mastodon instance:" +#~ msgstr "" + +# | msgid "View &address" +#~ msgid "Email address:" +#~ msgstr "pogledaj &adresu" + +# | msgid "Password: " +#~ msgid "Password:" +#~ msgstr "Lozinka" + +# | msgid "Item" +#~ msgid "&Item" +#~ msgstr "Stavka" + +#~ msgid "Visibility" +#~ msgstr "" + +#~ msgid "Sensitive content" +#~ msgstr "" + +#~ msgid "Allow multiple votes per user" +#~ msgstr "" + +#~ msgid "{username} has mentionned you: {status}" +#~ msgstr "" + +#~ msgid "has mentionned you: {status}" +#~ msgstr "" + +#~ msgid "Likes for {}" +#~ msgstr "lajkovi za {}" + +#~ msgid "Trending topics for %s" +#~ msgstr "Trending rubrike za %s" + +#~ msgid "Select user" +#~ msgstr "Odaberi korisnika" + +#~ msgid "Sent direct messages" +#~ msgstr "Pošalji izravnu poruku" + +#~ msgid "Sent tweets" +#~ msgstr "pošalji tweetove" + +#~ msgid "Likes" +#~ msgstr "Lajkovi" + +#~ msgid "Friends" +#~ msgstr "Prijatelji" + +#~ msgid "{username}'s likes" +#~ msgstr "{username}'ovi favoriti" + +#~ msgid "{username}'s friends" +#~ msgstr "{username}ovi prijatelji" + +#~ msgid "Tweet" +#~ msgstr "Tweet" + +#~ msgid "Write the tweet here" +#~ msgstr "ovdje upišite tweet" + +#~ msgid "New tweet in {0}" +#~ msgstr "Novi tweet u {0}" + +#~ msgid "{0} new tweets in {1}." +#~ msgstr "{0} novih tweetova u {1}." + +#~ msgid "Reply to {arg0}" +#~ msgstr "Odgovori na {arg0}" + +#~ msgid "Reply to %s" +#~ msgstr "odgovori %s" + +#~ msgid "Direct message to %s" +#~ msgstr "izravna poruka za %s" + +#~ msgid "New direct message" +#~ msgstr "Nova izravna poruka" + +#~ msgid "This action is not supported on protected accounts." +#~ msgstr "Ova akcija nije podržana na zaštićenim računima." + +#~ msgid "Quote" +#~ msgstr "Citat" + +#~ msgid "Add your comment to the tweet" +#~ msgstr "Dodajte vaš komentar tweetu" + +#~ msgid "User details" +#~ msgstr "Pojedinosti korisnika" + +#~ msgid "MMM D, YYYY. H:m" +#~ msgstr "MMM D, YYYY. H:m" + +#~ msgid "There are no coordinates in this tweet" +#~ msgstr "Ne postoje koordinate u ovom tweetu" + +#~ msgid "Error decoding coordinates. Try again later." +#~ msgstr "Greška pri dekodiranju koordinata. pokušajte ponovo kasnije." + +#~ msgid "Invalid buffer" +#~ msgstr "neispravan spremnik" + +#~ msgid "{0} new direct messages." +#~ msgstr "{0} novih izravnih poruka" + +#~ msgid "This action is not supported in the buffer yet." +#~ msgstr "Ova akcija još uvjek nije podržana u spremniku." + +#~ msgid "" +#~ "Getting more items cannot be done " +#~ "in this buffer. Use the direct " +#~ "messages buffer instead." +#~ msgstr "" +#~ "Dohvaćanje više stavki u ovom spremniku" +#~ " ne može biti izvršeno. Umjesto toga" +#~ " koristite spremnik izravnih poruka." + +#~ msgid "Mention" +#~ msgstr "Odgovor" + +#~ msgid "Mention to %s" +#~ msgstr "odgovor za %s" + +#~ msgid "{0} new followers." +#~ msgstr "{0} novih pratitelja." + +#~ msgid "This action is not supported in the buffer, yet." +#~ msgstr "Ova akcija nije podržana u spremniku, još uvijek." + +#~ msgid "&Retweet" +#~ msgstr "&Proslijedi dalje" + +#~ msgid "&Like" +#~ msgstr "lajk" + +#~ msgid "&Unlike" +#~ msgstr "ne sviđa mi se" + +#~ msgid "View &address" +#~ msgstr "pogledaj &adresu" + +#~ msgid "&View lists" +#~ msgstr "&Pogledaj popise" + +# | msgid "V&iew likes" +#~ msgid "View likes" +#~ msgstr "&Pogledaj lajkove" + +#~ msgid "Likes timelines" +#~ msgstr "lajkane vremenske osi" + +#~ msgid "Followers timelines" +#~ msgstr "Osi pratitelja" + +#~ msgid "Following timelines" +#~ msgstr "Osi praćenih" + +#~ msgid "Lists" +#~ msgstr "Liste" + +#~ msgid "List for {}" +#~ msgstr "Popis za %s" + +#~ msgid "Filters cannot be applied on this buffer" +#~ msgstr "Filtri ne mogu biti primjenjeni na ovaj spremnik" + +#~ msgid "View item" +#~ msgstr "Pogledaj popis" + +#~ msgid "Ask" +#~ msgstr "pitaj" + +#~ msgid "Retweet without comments" +#~ msgstr "Šalji dalje bez komentara" + +#~ msgid "Retweet with comments" +#~ msgstr "Pošalji s komentarima" + +#~ msgid "Edit template for tweets. Current template: {}" +#~ msgstr "Uredi predložak za tweetove. trenutan predložak: {}" + +#~ msgid "Edit template for direct messages. Current template: {}" +#~ msgstr "Uredi predložak za privatne poruke. trenutan predložak: {}" + +#~ msgid "Edit template for sent direct messages. Current template: {}" +#~ msgstr "Uredi predložak za poslane privatne poruke. trenutan predložak: {}" + +#~ msgid "User has been suspended" +#~ msgstr "Korisnik je suspendiran" + +#~ msgid "Information for %s" +#~ msgstr "Informacije za %s" + +#~ msgid "Discarded" +#~ msgstr "Uništeno" + +#~ msgid "Username: @%s\n" +#~ msgstr "Korisničko ime: @%s\n" + +#~ msgid "Name: %s\n" +#~ msgstr "Ime: %s\n" + +#~ msgid "Location: %s\n" +#~ msgstr "Lokacija: %s\n" + +#~ msgid "URL: %s\n" +#~ msgstr "URL: %s\n" + +#~ msgid "Bio: %s\n" +#~ msgstr "Biografija: %s\n" + +#~ msgid "Yes" +#~ msgstr "Da" + +#~ msgid "No" +#~ msgstr "Ne" + +#~ msgid "Protected: %s\n" +#~ msgstr "Zaštićeno: %s\n" + +#~ msgid "Relationship: " +#~ msgstr "povezanost: " + +#~ msgid "You follow {0}. " +#~ msgstr "pratite {0}. " + +#~ msgid "{0} is following you." +#~ msgstr "{0} vas prati." + +#~ msgid "" +#~ "Followers: %s\n" +#~ " Friends: %s\n" +#~ msgstr "" +#~ "Pratitelja: %s\n" +#~ " Friends: %s\n" + +#~ msgid "Verified: %s\n" +#~ msgstr "Provjereno: %s\n" + +#~ msgid "Tweets: %s\n" +#~ msgstr "tweetova: %s\n" + +#~ msgid "Likes: %s" +#~ msgstr "lajkovi: %s" + +#~ msgid "You can't ignore direct messages" +#~ msgstr "Ne možete zanemarivati izravne poruke" + +#~ msgid "Attaching..." +#~ msgstr "Prilažem" + +#~ msgid "Pause" +#~ msgstr "pauziraj" + +#~ msgid "&Resume" +#~ msgstr "&Nastavi" + +#~ msgid "Resume" +#~ msgstr "Nastavi" + +#~ msgid "&Pause" +#~ msgstr "&pauziraj" + +#~ msgid "&Stop" +#~ msgstr "&Zaustavi" + +#~ msgid "Recording" +#~ msgstr "Snimam" + +#~ msgid "Stopped" +#~ msgstr "Zaustavljeno" + +#~ msgid "&Record" +#~ msgstr "&snimi" + +#~ msgid "&Play" +#~ msgstr "&reproduciraj" + +#~ msgid "Recoding audio..." +#~ msgstr "Rekodiram zvuk..." + +#~ msgid "Error in file upload: {0}" +#~ msgstr "Greška kod slanja datoteke: {0}" + +#~ msgid "Transferred" +#~ msgstr "Poslano" + +#~ msgid "Total file size" +#~ msgstr "Ukupna veličina datoteke" + +#~ msgid "Transfer rate" +#~ msgstr "Brzina prijenosa" + +#~ msgid "Time left" +#~ msgstr "Preostalo vrijeme" + +#~ msgid "Attach audio" +#~ msgstr "Dodaj zvučnu datoteku" + +#~ msgid "&Add an existing file" +#~ msgstr "&Dodaj postojeću datoteku" + +#~ msgid "&Discard" +#~ msgstr "&uništi" + +#~ msgid "Upload to" +#~ msgstr "Otpremi na" + +#~ msgid "Attach" +#~ msgstr "Dodaj" + +#~ msgid "&Cancel" +#~ msgstr "%Odustani" + +#~ msgid "Audio Files (*.mp3, *.ogg, *.wav)|*.mp3; *.ogg; *.wav" +#~ msgstr "Zvučne datoteke (*.mp3, *.ogg, *.wav)|*.mp3; *.ogg; *.wav" + +#~ msgid "You have to start writing" +#~ msgstr "Trebate početi pisati" + +#~ msgid "There are no results in your users database" +#~ msgstr "Ne postoje rezultati u korisničkoj bazi podataka" + +#~ msgid "Autocompletion only works for users." +#~ msgstr "Samodovršetak radi samo za korisnike." + +#~ msgid "" +#~ "Updating database... You can close this" +#~ " window now. A message will tell " +#~ "you when the process finishes." +#~ msgstr "" +#~ "Osvježavam bazu podataka... Sada možete " +#~ "zatvoriti ovaj prozor. Bit ćete " +#~ "obavješteni porukom kada se proces " +#~ "završi." + +#~ msgid "Manage Autocompletion database" +#~ msgstr "upravljaj bazom podataka korisnika koji se samodovršavaju" + +#~ msgid "Editing {0} users database" +#~ msgstr "Uređujem {0} bazu podataka korisnika" + +#~ msgid "Username" +#~ msgstr "Korisničko ime" + +#~ msgid "Add user" +#~ msgstr "Dodaj korisnika" + +#~ msgid "Remove user" +#~ msgstr "Ukloni korisnika" + +#~ msgid "Twitter username" +#~ msgstr "Twitter korisničko ime" + +#~ msgid "Add user to database" +#~ msgstr "Dodaj korisnika u bazu podataka" + +#~ msgid "The user does not exist" +#~ msgstr "Korisnik ne postoji" + +#~ msgid "Error!" +#~ msgstr "Greška!" + +#~ msgid "Autocomplete users' settings" +#~ msgstr "Postavke korisnika koji se samodovršuju" + +#~ msgid "Add followers to database" +#~ msgstr "" + +#~ msgid "Add friends to database" +#~ msgstr "Dodaj prijatelje u bazu podataka" + +#~ msgid "Updating autocompletion database" +#~ msgstr "Ažuriram bazu podataka samodovršavanja" + +#~ msgid "" +#~ "This process will retrieve the users " +#~ "you selected from Twitter, and add " +#~ "them to the user autocomplete database." +#~ " Please note that if there are " +#~ "many users or you have tried to" +#~ " perform this action less than 15 " +#~ "minutes ago, TWBlue may reach a " +#~ "limit in Twitter API calls when " +#~ "trying to load the users into the" +#~ " database. If this happens, we will" +#~ " show you an error, in which " +#~ "case you will have to try this " +#~ "process again in a few minutes. If" +#~ " this process ends with no error, " +#~ "you will be redirected back to the" +#~ " account settings dialog. Do you want" +#~ " to continue?" +#~ msgstr "" +#~ "Ovaj će proces dohvatiti označene " +#~ "korisnike sa Twittera, i dodati ih " +#~ "u bazu podataka samodovršavanja. Imajte " +#~ "na umu da ako ima puno korisnika" +#~ " ili ste pokušali izvesti ovu akciju" +#~ " prije petnaest minuta, TWBlue će " +#~ "doseći ogranićenje Twitter api poziva " +#~ "prilikom pokušaja učitavanja korisnika u " +#~ "bazu podataka. Ako se to dogodi, " +#~ "pokazat ćemo vam pogrešku, poslije koje" +#~ " ćete trebati pokušati kasnije za " +#~ "nekoliko minuta. Ako ovaj proces završi" +#~ " bez pogreške, biti ćete preusmjereni " +#~ "nazad u postavke računa. Želite li " +#~ "nastaviti?" + +#~ msgid "TWBlue has imported {} users successfully." +#~ msgstr "TWBlue je uspješno uvezao korisnike." + +#~ msgid "Done" +#~ msgstr "Gotovo" + +#~ msgid "Error adding users from Twitter. Please try again in about 15 minutes." +#~ msgstr "" +#~ "Pogreška prilikom dodavanja korisnika sa " +#~ "Twittera. Molimo pokušajte ponovno od " +#~ "prilike za 15 minuta." + +#~ msgid "New tweet" +#~ msgstr "Novi tweet" + +#~ msgid "Retweet" +#~ msgstr "pošalji dalje!" + +#~ msgid "Like a tweet" +#~ msgstr "Lajkaj tweet" + +#~ msgid "Like/unlike a tweet" +#~ msgstr "Lajkaj/odlajkaj tweet" + +#~ msgid "Unlike a tweet" +#~ msgstr "Reci da ti se ne sviđa twee" + +#~ msgid "See user details" +#~ msgstr "Pogledaj pojedinosti o korisniku" + +#~ msgid "Show tweet" +#~ msgstr "Prikaži tweet" + +#~ msgid "Interact with the currently focused tweet." +#~ msgstr "Uđi u interakciju sa trenutnim tweetom" + +#~ msgid "View in Twitter" +#~ msgstr "Pogledaj na twitteru" + +#~ msgid "Edit profile" +#~ msgstr "Uredi profil" + +#~ msgid "Delete a tweet or direct message" +#~ msgstr "Ukloni tweet ili izravnu poruku" + +#~ msgid "Add to list" +#~ msgstr "Dodaj u popis" + +#~ msgid "Remove from list" +#~ msgstr "Ukloni s popisa" + +#~ msgid "Search on twitter" +#~ msgstr "Traži na twitteru" + +#~ msgid "Show lists for a specified user" +#~ msgstr "Prikazuje popise određenog korisnika" + +#~ msgid "Get geolocation" +#~ msgstr "isčupaj lokaciju" + +#~ msgid "Display the tweet's geolocation in a dialog" +#~ msgstr "Prikazuje lokaciju tweeta u dijaloškom okviru" + +#~ msgid "Create a trending topics buffer" +#~ msgstr "napravi spremnik trending rubrike" + +#~ msgid "" +#~ "Opens the list manager, which allows " +#~ "you to create, edit, delete and " +#~ "open lists in buffers." +#~ msgstr "" +#~ "otvara upravitelj popisa, koji vam " +#~ "omogućuje stvaranje, uređivanje, brisanje i" +#~ " otvaranje popisa u spremnicima." + +#~ msgid "Opens the list manager" +#~ msgstr "Otvara upravitel listi" + +#~ msgid "{account_name} (Twitter)" +#~ msgstr "" + +# | msgid "View in Twitter" +#~ msgid "Twitter" +#~ msgstr "Pogledaj na twitteru" + +#~ msgid "" +#~ "The request to authorize your Twitter" +#~ " account will be opened in your " +#~ "browser. You only need to do this" +#~ " once. Would you like to continue?" +#~ msgstr "" +#~ "Zahtjev za autorizacijom vašeg twitter " +#~ "naloga bit će otvoren u vašem " +#~ "Internet pregledniku. Ovo trebate učiniti " +#~ "jedamput. želite li nastaviti?" + +#~ msgid "" +#~ "TWBlue is unable to authenticate the " +#~ "account for {} in Twitter. It " +#~ "might be due to an invalid or " +#~ "expired token, revoqued access to the" +#~ " application, or after an account " +#~ "reactivation. Please remove the account " +#~ "manually from your Twitter sessions in" +#~ " order to stop seeing this message." +#~ msgstr "" +#~ "TWBlue nije bio u mogućnosti " +#~ "autorizirati račun za {} na Twitteru." +#~ " Ovo može biti zbog isteklog ili " +#~ "neispravnog tokena, opozvanog pristupa u " +#~ "aplikaciju, ili poslije reaktivacije računa." +#~ " Molimo ručno uklonite račun iz vaših" +#~ " twitter sesija kako biste prestali " +#~ "vidjeti ovu poruku." + +#~ msgid "Authentication error for session {}" +#~ msgstr "Greška autentifikacije za sesiju {}" + +#~ msgid "Dm to %s " +#~ msgstr "Izravna poruka za %s " + +#~ msgid "{0}. Quoted tweet from @{1}: {2}" +#~ msgstr "{0}. citirani tweet od @{1}: {2}" + +#~ msgid "Unavailable" +#~ msgstr "Nedostupno" + +#~ msgid "" +#~ "%s (@%s). %s followers, %s friends, " +#~ "%s tweets. Last tweeted %s. Joined " +#~ "Twitter %s" +#~ msgstr "" +#~ "%s (@%s). %s pratitelja, %s prijatelja," +#~ " %s tweetova. Zadnji tweet %s. " +#~ "Pridružilo se twitteru %s" + +#~ msgid "No description available" +#~ msgstr "Nema dostupnog opisa" + +#~ msgid "private" +#~ msgstr "privatno" + +#~ msgid "public" +#~ msgstr "javno" + +#~ msgid "Enter your PIN code here" +#~ msgstr "Ovdje upišite Vaš PIN kod" + +#~ msgid "Authorising account..." +#~ msgstr "autoriziram nalog..." + +#~ msgid "" +#~ "We could not authorice your Twitter " +#~ "account to be used in TWBlue. This" +#~ " might be caused due to an " +#~ "incorrect verification code. Please try " +#~ "to add the session again." +#~ msgstr "" + +#~ msgid "%s failed. Reason: %s" +#~ msgstr "%s neuspjelo. Razlog: %s" + +#~ msgid "Deleted account" +#~ msgstr "Izbrisani račun" + +#~ msgid "$sender_display_name, $text $date" +#~ msgstr "$sender_display_name, $text $date" + +#~ msgid "" +#~ "$display_name (@$screen_name). $followers followers," +#~ " $following following, $tweets tweets. " +#~ "Joined Twitter $created_at." +#~ msgstr "" +#~ "$display_name (@$screen_name). $followers " +#~ "pratitelja, $following praćenih, $tweets " +#~ "tweetova. Pridružio se twitteru $created_at." + +#~ msgid "Image description: {}." +#~ msgstr "Opis slike: {}." + +#~ msgid "RT @{}: {} Quote from @{}: {}" +#~ msgstr "{0}. citirani tweet od @{1}: {2}" + +# | msgid "{0}. Quoted tweet from @{1}: {2}" +#~ msgid "RT @{}: {}" +#~ msgstr "{0}. citirani tweet od @{1}: {2}" + +# | msgid "{0}. Quoted tweet from @{1}: {2}" +#~ msgid "{} Quote from @{}: {}" +#~ msgstr "{0}. citirani tweet od @{1}: {2}" + +#~ msgid "Sorry, you are not authorised to see this status." +#~ msgstr "Oprostite, Niste autorizirani za gledanje ovog statusa." + +#~ msgid "Error {0}" +#~ msgstr "pogreška {0}" + +#~ msgid "{user_1}, {user_2} and {all_users} more: {text}" +#~ msgstr "{user_1}, {user_2} i {all_users} više: {text}" + +#~ msgid "" +#~ "This retweet is over 140 characters. " +#~ "Would you like to post it as " +#~ "a mention to the poster with your" +#~ " comments and a link to the " +#~ "original tweet?" +#~ msgstr "" +#~ "Ovaj tweet prelazi 140 znakova. Želite" +#~ " li ga objaviti kao odgovor korisnika" +#~ " sa vašim komentarima i linkom do " +#~ "originalnog tweeta?" + +#~ msgid "Would you like to add a comment to this tweet?" +#~ msgstr "Želite li dodati komentar ovom tweetu?" + +#~ msgid "" +#~ "Do you really want to delete this" +#~ " tweet? It will be deleted from " +#~ "Twitter as well." +#~ msgstr "" +#~ "Želite li doista izbrisati ovaj tweet?" +#~ " Isti će biti izbrisana sa Twittera." + +#~ msgid "Enter the name of the client : " +#~ msgstr "Upišite ime klijenta" + +#~ msgid "Add client" +#~ msgstr "dodaj klijent" + +#~ msgid "This user has no tweets, so you can't open a timeline for them." +#~ msgstr "Ovaj korisnik nema tweetova. Ne možete otvoriti njegovu vremensku os" + +#~ msgid "" +#~ "This is a protected Twitter user, " +#~ "which means you can't open a " +#~ "timeline using the Streaming API. The" +#~ " user's tweets will not update due" +#~ " to a twitter policy. Do you " +#~ "want to continue?" +#~ msgstr "" +#~ "Ovo je zaštićeni korisnik twittera. To" +#~ " znači da ne možete otvoriti " +#~ "vremensku os koristeći streaming api. " +#~ "Korisnikovi tweetovi se neće osvježavati " +#~ "zbog twitterovih pravila. Želite li " +#~ "nastaviti?" + +#~ msgid "" +#~ "This is a protected user account, " +#~ "you need to follow this user to" +#~ " view their tweets or likes." +#~ msgstr "" +#~ "Ovo je zaštićeni korisnički račun, " +#~ "trebate pratiti ovog korisnika kako bi" +#~ " ste vidjeli njegove lajkove i " +#~ "tweetove." + +#~ msgid "This user has no tweets. {0} can't create a timeline." +#~ msgstr "Ovaj korisnik nema tweetova. {0} ne može stvoriti vremensku os." + +#~ msgid "This user has no favorited tweets. {0} can't create a timeline." +#~ msgstr "" +#~ "Ovaj korisnik nema omiljenih tweetova. " +#~ "{0} ne mmože stvoriti vremensku os" + +#~ msgid "This user has no followers. {0} can't create a timeline." +#~ msgstr "Ovaj korisnik nema pratitelja. {0} ne može stvoriti vremensku os." + +#~ msgid "This user has no friends. {0} can't create a timeline." +#~ msgstr "Ovaj korisnik nema prijatelja. {0} ne može stvoriti vremensku os." + +#~ msgid "Geolocation data: {0}" +#~ msgstr "podaci o geografskoj poziciji: {0}" + +#~ msgid "Geo data for this tweet" +#~ msgstr "Geografski podaci za ovaj tweet" + +#~ msgid "You have been blocked from viewing this content" +#~ msgstr "Spriječeni ste u gledanju ovog sadržaja" + +#~ msgid "" +#~ "You have been blocked from viewing " +#~ "someone's content. In order to avoid " +#~ "conflicts with the full session, TWBlue" +#~ " will remove the affected timeline." +#~ msgstr "" +#~ "Spriječeni ste u gledanju nečijeg " +#~ "sadržaja. kako bismo izbjegli punu " +#~ "sesiju, TWBlue će ukloniti spornu " +#~ "vremensku os." + +#~ msgid "" +#~ "TWBlue cannot load this timeline because" +#~ " the user has been suspended from " +#~ "Twitter." +#~ msgstr "" +#~ "TWBlue ne może učitati tu vremensku " +#~ "os, jer je korisnik suspendiran iż " +#~ "twittera." + +#~ msgid "Do you really want to delete this filter?" +#~ msgstr "Želite li se doista odjaviti od ovog filtra?" + +#~ msgid "This filter already exists. Please use a different title" +#~ msgstr "Ovaj filter već postoji. Koristite drugi naslov" + +#~ msgid "&Show direct message" +#~ msgstr "&Prikaži izravnu poruku" + +#~ msgid "&Show event" +#~ msgstr "&Pokaži događaj" + +#~ msgid "Direct &message" +#~ msgstr "Izravna poruka" + +#~ msgid "&Show user" +#~ msgstr "&Pokaži korisnika" + +#~ msgid "Search topic" +#~ msgstr "Rubrika za pretragu" + +#~ msgid "&Tweet about this trend" +#~ msgstr "&Tweet o ovom trendu" + +#~ msgid "&Show item" +#~ msgstr "&Prikaži stavku" + +#~ msgid "Update &profile" +#~ msgstr "osvježi profil" + +#~ msgid "Event" +#~ msgstr "Događaj" + +#~ msgid "Remove event" +#~ msgstr "Izbriši događaj" + +#~ msgid "Trending topic" +#~ msgstr "Trending rubrika" + +#~ msgid "Tweet about this trend" +#~ msgstr "Tweet o ovom trendu" + +#~ msgid "" +#~ "Scan account and add friends and " +#~ "followers to the user autocompletion " +#~ "database" +#~ msgstr "" +#~ "Skeniraj račun i dodaj prijatelje i " +#~ "pratitelje u bazu podataka samodovršavanja" + +#~ msgid "" +#~ "Inverted buffers: The newest tweets will" +#~ " be shown at the beginning while " +#~ "the oldest at the end" +#~ msgstr "" +#~ "Izvrnuti spremnici: najnoviji tweetovi " +#~ "pojavljivat će se na početku popisa " +#~ "dok će se stariji prikazivati na " +#~ "kraju" + +#~ msgid "Retweet mode" +#~ msgstr "način retweetova" + +#~ msgid "" +#~ "Load cache for tweets in memory " +#~ "(much faster in big datasets but " +#~ "requires more RAM)" +#~ msgstr "" +#~ "Učitaj predmemoriju tweetowa u memoriju " +#~ "(brže u velikim setovima podataka ali" +#~ " zahtjeva više radne memorije)" + +#~ msgid "Ignored clients" +#~ msgstr "Zanemareni klijenti" + +#~ msgid "Remove client" +#~ msgstr "Ukloni klijent" + +#~ msgid "Indicate audio tweets with sound" +#~ msgstr "Označavaj zvučne tweetowe zvukom" + +#~ msgid "Indicate geotweets with sound" +#~ msgstr "Označavaj geotweetove zvukom" + +#~ msgid "Indicate tweets containing images with sound" +#~ msgstr "Označavaj tweetowe koje sadrže slike zvukom" + +#~ msgid "API Key for SndUp" +#~ msgstr "API Ključ za SndUp" + +#~ msgid "Create a filter for this buffer" +#~ msgstr "&Stvori filter za ovaj spremnik" + +#~ msgid "Filter title" +#~ msgstr "filtriraj naslov" + +#~ msgid "Filter by word" +#~ msgstr "Filtriraj po riječima" + +#~ msgid "Ignore tweets wich contain the following word" +#~ msgstr "Ignoriraj tweetove koji sadrže slijedeće riječi" + +#~ msgid "Ignore tweets without the following word" +#~ msgstr "Ignoriraj tweetove bez slijedeće riječi" + +#~ msgid "word" +#~ msgstr "riječ" + +#~ msgid "Allow retweets" +#~ msgstr "Dozvoli retweetove" + +#~ msgid "Allow quoted tweets" +#~ msgstr "Dozvoli citirane tweetove" + +#~ msgid "Allow replies" +#~ msgstr "Dozvoli odgovore" + +#~ msgid "Use this term as a regular expression" +#~ msgstr "koristi ovaj termin kao regularni izraz" + +#~ msgid "Filter by language" +#~ msgstr "filtriraj po jeziku" + +#~ msgid "Load tweets in the following languages" +#~ msgstr "učitavaj tweetove na slijedećim jezicima" + +#~ msgid "Ignore tweets in the following languages" +#~ msgstr "zaobiđi tweetove na slijedećim jezicima" + +#~ msgid "Don't filter by language" +#~ msgstr "ne filtriraj po jeziku" + +#~ msgid "Supported languages" +#~ msgstr "Podržani jezici" + +#~ msgid "Add selected language to filter" +#~ msgstr "Dodaj označeni jezik u filter" + +#~ msgid "Selected languages" +#~ msgstr "Označeni jezici" + +#~ msgid "You must define a name for the filter before creating it." +#~ msgstr "Prije stvaranja filtra, morate definirati njegov naziv." + +#~ msgid "Missing filter name" +#~ msgstr "Naziv filtra koji nedostaje" + +#~ msgid "Manage filters" +#~ msgstr "Upravljanje filterima" + +#~ msgid "Filters" +#~ msgstr "Filtri" + +#~ msgid "Filter" +#~ msgstr "filter" + +#~ msgid "Lists manager" +#~ msgstr "Upravljač listama" + +#~ msgid "List" +#~ msgstr "Lista" + +#~ msgid "Owner" +#~ msgstr "Vlasnik" + +#~ msgid "Members" +#~ msgstr "Članovi" + +#~ msgid "mode" +#~ msgstr "Način" + +#~ msgid "Create a new list" +#~ msgstr "Napravi novu listu" + +#~ msgid "Open in buffer" +#~ msgstr "Otvori u spremniku" + +#~ msgid "Viewing lists for %s" +#~ msgstr "Prikazivanje popisa za %s" + +#~ msgid "Subscribe" +#~ msgstr "Prijavi" + +#~ msgid "Unsubscribe" +#~ msgstr "Odjavi" + +#~ msgid "Name (20 characters maximun)" +#~ msgstr "Ime maksimalno 20 znakova" + +#~ msgid "Mode" +#~ msgstr "Način" + +#~ msgid "Private" +#~ msgstr "Privatno" + +#~ msgid "Editing the list %s" +#~ msgstr "Uređujem listu %s" + +#~ msgid "Select a list to add the user" +#~ msgstr "Označite popis Kako biste dodali korisnika" + +#~ msgid "Add" +#~ msgstr "dodaj" + +#~ msgid "Select a list to remove the user" +#~ msgstr "Označite listu kako biste dodali korisnika" + +#~ msgid "Do you really want to delete this list?" +#~ msgstr "Želite li doista obrisati ovaj popis?" + +#~ msgid "Search on Twitter" +#~ msgstr "Pretraži na twitteru" + +#~ msgid "Tweets" +#~ msgstr "tweetovi" + +#~ msgid "&Language for results: " +#~ msgstr "jezik za rezultate" + +#~ msgid "any" +#~ msgstr "bilo koji" + +#~ msgid "Results &type: " +#~ msgstr "vrsta rezultata" + +#~ msgid "Mixed" +#~ msgstr "miješano" + +#~ msgid "Recent" +#~ msgstr "posljednje" + +#~ msgid "Popular" +#~ msgstr "popularni" + +#~ msgid "Details" +#~ msgstr "Detalji" + +#~ msgid "&Go to URL" +#~ msgstr "&Idi na URL" + +#~ msgid "View trending topics" +#~ msgstr "Pogledaj trending rubrike" + +#~ msgid "Trending topics by" +#~ msgstr "trending rubriku napisao" + +#~ msgid "Country" +#~ msgstr "država" + +#~ msgid "City" +#~ msgstr "grad" + +#~ msgid "&Location" +#~ msgstr "&lokacija" + +#~ msgid "Update your profile" +#~ msgstr "Osvježi svoj profil" + +#~ msgid "&Name (50 characters maximum)" +#~ msgstr "&Ime (Maksimalno 50 znakova)" + +#~ msgid "&Website" +#~ msgstr "&web stranica" + +#~ msgid "&Bio (160 characters maximum)" +#~ msgstr "&Biografija (160 znakova aksimalnom)" + +#~ msgid "Upload a &picture" +#~ msgstr "&Otpremi sliku" + +#~ msgid "Upload a picture" +#~ msgstr "Otpremi sliku" + +#~ msgid "Discard image" +#~ msgstr "Uništi sliku" + +#~ msgid "&Report as spam" +#~ msgstr "&Izvijesti kao spam" + +#~ msgid "&Ignore tweets from this client" +#~ msgstr "&Zanemari tweetove od ovog klijenta" + +#~ msgid "&Tweets" +#~ msgstr "&tweetovi" + +#~ msgid "&Likes" +#~ msgstr "La&jkovi" + +#~ msgid "F&riends" +#~ msgstr "Prij&atelji" + +#~ msgid "Delete attachment" +#~ msgstr "ukloni priloge" + +#~ msgid "Added Tweets" +#~ msgstr "pošalji tweetove" + +#~ msgid "Delete tweet" +#~ msgstr "pošalji tweetove" + +#~ msgid "A&dd..." +#~ msgstr "" + +#~ msgid "Add t&weet" +#~ msgstr "Lajkaj tweet" + +#~ msgid "&Attach audio..." +#~ msgstr "dodaj zvuk" + +#~ msgid "Sen&d" +#~ msgstr "p&ošalji" + +#~ msgid "Video files (*.mp4)|*.mp4" +#~ msgstr "" + +#~ msgid "" +#~ "It is not possible to add more " +#~ "attachments. Please make sure your tweet" +#~ " complies with Twitter'S attachment rules." +#~ " You can add only one video or" +#~ " GIF in every tweet, and a " +#~ "maximum of 4 photos." +#~ msgstr "" + +#~ msgid "&Mention to all" +#~ msgstr "za&pazi sve" + +#~ msgid "&Recipient" +#~ msgstr "Pri&matelj" + +#~ msgid "Tweet - %i characters " +#~ msgstr "Tweet - %i znakova " + +#~ msgid "Retweets: " +#~ msgstr "Retweetuje: " + +#~ msgid "Likes: " +#~ msgstr "lajkovi: " + +#~ msgid "View" +#~ msgstr "Pogled" + +#~ msgid "Item" +#~ msgstr "Stavka" + +#~ msgid "&Expand URL" +#~ msgstr "&Proširi adresu" + +#~ msgid "Participation time (in days)" +#~ msgstr "" + +#~ msgid "&Open in Twitter" +#~ msgstr "&Otvori na twitteru" + +#~ msgid "&Show tweet" +#~ msgstr "&Prikaži tweet" + +#~ msgid "Translated" +#~ msgstr "Prevedeno" + +#~ msgid "Afrikaans" +#~ msgstr "Afrikanski" + +#~ msgid "Albanian" +#~ msgstr "Albanski" + +#~ msgid "Amharic" +#~ msgstr "Amharski" + +#~ msgid "Arabic" +#~ msgstr "Arapski" + +#~ msgid "Armenian" +#~ msgstr "Armenski" + +#~ msgid "Azerbaijani" +#~ msgstr "Azerski" + +#~ msgid "Basque" +#~ msgstr "Baskijski" + +#~ msgid "Belarusian" +#~ msgstr "Bjeloruski" + +#~ msgid "Bengali" +#~ msgstr "Bengalski" + +#~ msgid "Bihari" +#~ msgstr "Biharski" + +#~ msgid "Bulgarian" +#~ msgstr "Bugarski" + +#~ msgid "Burmese" +#~ msgstr "Burmanski" + +#~ msgid "Catalan" +#~ msgstr "Katalonski" + +#~ msgid "Cherokee" +#~ msgstr "Cherokee" + +#~ msgid "Chinese" +#~ msgstr "Kineski" + +#~ msgid "Chinese_simplified" +#~ msgstr "Kineski_pojednostavljeni" + +#~ msgid "Chinese_traditional" +#~ msgstr "Kineski_tradicionalni" + +#~ msgid "Croatian" +#~ msgstr "Hrvatski" + +#~ msgid "Czech" +#~ msgstr "Češki" + +#~ msgid "Dhivehi" +#~ msgstr "Divehi" + +#~ msgid "Esperanto" +#~ msgstr "Esperanto" + +#~ msgid "Estonian" +#~ msgstr "Estonski" + +#~ msgid "Filipino" +#~ msgstr "Filipinski" + +#~ msgid "Galician" +#~ msgstr "Galicijski" + +#~ msgid "Georgian" +#~ msgstr "Gruzijski/kartuli" + +#~ msgid "Greek" +#~ msgstr "Grčki" + +#~ msgid "Guarani" +#~ msgstr "Guarani" + +#~ msgid "Gujarati" +#~ msgstr "Gudžaratski" + +#~ msgid "Hebrew" +#~ msgstr "Hebrejski" + +#~ msgid "Hindi" +#~ msgstr "Hindi" + +#~ msgid "Icelandic" +#~ msgstr "Islandski" + +#~ msgid "Indonesian" +#~ msgstr "Indonezijski" + +#~ msgid "Inuktitut" +#~ msgstr "Inuitski" + +#~ msgid "Irish" +#~ msgstr "Irski" + +#~ msgid "Kannada" +#~ msgstr "Kannada" + +#~ msgid "Kazakh" +#~ msgstr "Kazaški" + +#~ msgid "Khmer" +#~ msgstr "Khmerski" + +#~ msgid "Kurdish" +#~ msgstr "Kurdski" + +#~ msgid "Kyrgyz" +#~ msgstr "Kirgiski" + +#~ msgid "Laothian" +#~ msgstr "Laoski" + +#~ msgid "Latvian" +#~ msgstr "Letonski" + +#~ msgid "Lithuanian" +#~ msgstr "Litavski" + +#~ msgid "Macedonian" +#~ msgstr "Makedonski" + +#~ msgid "Malay" +#~ msgstr "Malezijski" + +#~ msgid "Malayalam" +#~ msgstr "Malajalam" + +#~ msgid "Maltese" +#~ msgstr "Malteški" + +#~ msgid "Marathi" +#~ msgstr "Marati" + +#~ msgid "Mongolian" +#~ msgstr "Mongolski" + +#~ msgid "Nepali" +#~ msgstr "Nepalski" + +#~ msgid "Norwegian" +#~ msgstr "Norveški" + +#~ msgid "Oriya" +#~ msgstr "Orija" + +#~ msgid "Pashto" +#~ msgstr "Paštunski" + +#~ msgid "Persian" +#~ msgstr "Perzijski" + +#~ msgid "Punjabi" +#~ msgstr "Pendžapski" + +#~ msgid "Romanian" +#~ msgstr "Rumunjski" + +#~ msgid "Sanskrit" +#~ msgstr "Sanskrt" + +#~ msgid "Serbian" +#~ msgstr "Srpski" + +#~ msgid "Sindhi" +#~ msgstr "sindski" + +#~ msgid "Sinhalese" +#~ msgstr "Sinhaleški" + +#~ msgid "Slovak" +#~ msgstr "Slovački" + +#~ msgid "Slovenian" +#~ msgstr "Slovenski" + +#~ msgid "Swahili" +#~ msgstr "Svahili" + +#~ msgid "Swedish" +#~ msgstr "Švedski" + +#~ msgid "Tajik" +#~ msgstr "Tadžički" + +#~ msgid "Tamil" +#~ msgstr "Tamilski" + +#~ msgid "Tagalog" +#~ msgstr "Tagalog" + +#~ msgid "Telugu" +#~ msgstr "Telugu" + +#~ msgid "Thai" +#~ msgstr "Tajski" + +#~ msgid "Tibetan" +#~ msgstr "Tibetanski" + +#~ msgid "Ukrainian" +#~ msgstr "Ukrajinski" + +#~ msgid "Urdu" +#~ msgstr "Urdu" + +#~ msgid "Uzbek" +#~ msgstr "Uzbečki" + +#~ msgid "Uighur" +#~ msgstr "Ujgurski" + +#~ msgid "Vietnamese" +#~ msgstr "Vijetnamski" + +#~ msgid "Welsh" +#~ msgstr "Velški" + +#~ msgid "Yiddish" +#~ msgstr "Jidiš" + +#~ msgid "" +#~ "TWBlue has detected that you're running" +#~ " windows 10 and has changed the " +#~ "default keymap to the Windows 10 " +#~ "keymap. It means that some keyboard " +#~ "shorcuts could be different. Please " +#~ "check the keystroke editor by pressing" +#~ " Alt+Win+K to see all available " +#~ "keystrokes for this keymap." +#~ msgstr "" +#~ "TWBlue je otkrio da koristite windows" +#~ " 10 i promjenio je podrazumjevani " +#~ "izgled tipkovnice na Windows 10 prečace." +#~ " To znači, da neki prečaci mogu " +#~ "biti različiti. Molimo pogledajte uređivač " +#~ "tipkovničkih prečaca pritiščući Alt+Windows+K " +#~ "kako biste pogledali sve dostupne " +#~ "prečace za ovaj raspored." + +#~ msgid "Boosts: " +#~ msgstr "" + +#~ msgid "Favorites: " +#~ msgstr "" + +#~ msgid "Date: " +#~ msgstr "Datum: " + +#~ msgid "Community for {}" +#~ msgstr "" + +#~ msgid "Run {0} at Windows startup" +#~ msgstr "Pokrenite {0} prilikom pokretanja sustava" + +#~ msgid "Use Codeofdusk's longtweet handlers (may decrease client performance)" +#~ msgstr "Koristi Codeofdusk's longtweet handlers (može usporiti klijent)" + +#~ msgid "Remember state for mention all and long tweet" +#~ msgstr "Zapamti stanje za potvrdne okvire odgovori svima te dugi tweet" + +#~ msgid "Bio: " +#~ msgstr "" + +#~ msgid "Joined at: " +#~ msgstr "" + +#~ msgid "Field {} - Label: " +#~ msgstr "" + +#~ msgid "{} posts. Click to open posts timeline" +#~ msgstr "" + +#~ msgid "{} following. Click to open Following timeline" +#~ msgstr "" + +#~ msgid "{} followers. Click to open followers timeline" +#~ msgstr "" + +#~ msgid "Display Name" +#~ msgstr "" + +#~ msgid "Bio" +#~ msgstr "" + +#~ msgid "Change header" +#~ msgstr "" + +#~ msgid "Change avatar" +#~ msgstr "" + +#~ msgid "Field {}: Label" +#~ msgstr "" + +#~ msgid "Add following to database" +#~ msgstr "" + +#~ msgid "Read long posts in GUI" +#~ msgstr "" + +#~ msgid "LibreTranslate API URL: " +#~ msgstr "" + +#~ msgid "LibreTranslate API Key (optional): " +#~ msgstr "" + +#~ msgid "DeepL API Key: " +#~ msgstr "" + +#~ msgid "" +#~ "Read preferences from instance (default " +#~ "visibility when publishing and displaying " +#~ "sensitive content)" +#~ msgstr "" + +#~ msgid "Ask confirmation before boosting a post" +#~ msgstr "" + diff --git a/srcantiguo/locales/hu/LC_MESSAGES/twblue.mo b/srcantiguo/locales/hu/LC_MESSAGES/twblue.mo new file mode 100644 index 00000000..251fa7ad Binary files /dev/null and b/srcantiguo/locales/hu/LC_MESSAGES/twblue.mo differ diff --git a/srcantiguo/locales/hu/LC_MESSAGES/twblue.po b/srcantiguo/locales/hu/LC_MESSAGES/twblue.po new file mode 100644 index 00000000..d9441051 --- /dev/null +++ b/srcantiguo/locales/hu/LC_MESSAGES/twblue.po @@ -0,0 +1,4924 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2018 ORGANIZATION +# FIRST AUTHOR , 2018. +# +msgid "" +msgstr "" +"Project-Id-Version: TW Blue 0.80\n" +"Report-Msgid-Bugs-To: manuel@manuelcortez.net\n" +"POT-Creation-Date: 2025-04-13 01:18+0000\n" +"PO-Revision-Date: 2022-12-20 22:43+0000\n" +"Last-Translator: Anonymous \n" +"Language: hu\n" +"Language-Team: Hungarian " +"\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.17.0\n" + +#: languageHandler.py:61 +#, fuzzy +msgctxt "languageName" +msgid "Amharic" +msgstr "Amhara" + +#: languageHandler.py:62 +#, fuzzy +msgctxt "languageName" +msgid "Aragonese" +msgstr "Japán" + +#: languageHandler.py:63 +#, fuzzy +msgctxt "languageName" +msgid "Spanish" +msgstr "Spanyol" + +#: languageHandler.py:64 +#, fuzzy +msgctxt "languageName" +msgid "Portuguese" +msgstr "Portugál" + +#: languageHandler.py:65 +#, fuzzy +msgctxt "languageName" +msgid "Russian" +msgstr "Orosz" + +#: languageHandler.py:66 +#, fuzzy +msgctxt "languageName" +msgid "italian" +msgstr "Olasz" + +#: languageHandler.py:67 +#, fuzzy +msgctxt "languageName" +msgid "Turkey" +msgstr "funkció" + +#: languageHandler.py:68 +#, fuzzy +msgctxt "languageName" +msgid "Galician" +msgstr "Galíciai" + +#: languageHandler.py:69 +#, fuzzy +msgctxt "languageName" +msgid "Catala" +msgstr "Katalán" + +#: languageHandler.py:70 +#, fuzzy +msgctxt "languageName" +msgid "Vasque" +msgstr "Baszk" + +#: languageHandler.py:71 +#, fuzzy +msgctxt "languageName" +msgid "polish" +msgstr "Lengyel" + +#: languageHandler.py:72 +#, fuzzy +msgctxt "languageName" +msgid "Arabic" +msgstr "Arab" + +#: languageHandler.py:73 +#, fuzzy +msgctxt "languageName" +msgid "Nepali" +msgstr "Nepali" + +#: languageHandler.py:74 +msgctxt "languageName" +msgid "Serbian (Latin)" +msgstr "" + +#: languageHandler.py:75 +#, fuzzy +msgctxt "languageName" +msgid "Japanese" +msgstr "Japán" + +#: languageHandler.py:99 +msgid "User default" +msgstr "Alapértelmezett" + +#: main.py:105 +msgid "https://twblue.mcvsoftware.com/donate" +msgstr "" + +#: main.py:118 +#, python-brace-format +msgid "" +"{0} is already running. Close the other instance before starting this " +"one. If you're sure that {0} isn't running, try deleting the file at {1}." +" If you're unsure of how to do this, contact the {0} developers." +msgstr "" + +#: sound.py:148 +msgid "Playing..." +msgstr "Lejátszás..." + +#: sound.py:161 +msgid "Stopped." +msgstr "Leállítva." + +#: controller/mainController.py:261 +msgid "Ready" +msgstr "Üzemkész" + +#: controller/mainController.py:369 controller/mainController.py:654 +#: controller/mainController.py:673 controller/mainController.py:692 +#: controller/mainController.py:711 +msgid "" +"No session is currently in focus. Focus a session with the next or " +"previous session shortcut." +msgstr "" +"Nincs fókuszban lévő munkamenet. Válasszon ki egy munkamenetet az előző " +"vagy következő munkamenet gyorsgombbal." + +#: controller/mainController.py:373 +msgid "Empty buffer." +msgstr "Buffer kiürítése" + +#: controller/mainController.py:380 +#, python-brace-format +msgid "{0} not found." +msgstr "{0} nem található." + +#: controller/mainController.py:702 controller/mainController.py:721 +#, python-format +msgid "%s, %s of %s" +msgstr "%s, %s per %s" + +#: controller/mainController.py:704 controller/mainController.py:723 +#: controller/mainController.py:751 controller/mainController.py:779 +#, python-format +msgid "%s. Empty" +msgstr "%s. Üres" + +#: controller/mainController.py:739 controller/mainController.py:743 +#: controller/mainController.py:767 +#, python-brace-format +msgid "{0}: This account is not logged into Twitter." +msgstr "{0}: ez a fiók nincs bejelentkezve a Twitteren." + +#: controller/mainController.py:749 controller/mainController.py:777 +#, python-format +msgid "%s. %s, %s of %s" +msgstr "%s. %s, %s per %s" + +#: controller/mainController.py:771 +#, python-brace-format +msgid "{0}: This account is not logged into twitter." +msgstr "{0}: ez a fiók nincs bejelentkezve a Twitteren." + +#: controller/mainController.py:910 controller/mainController.py:926 +#, fuzzy +msgid "An error happened while trying to connect to the server. Please try later." +msgstr "" +"Valamilyen nem várt hiba történt a jelentés közben. Kérjük próbálja meg " +"később." + +#: controller/mainController.py:957 +msgid "The auto-reading of new tweets is enabled for this buffer" +msgstr "Az új tweetek automatikus felolvasása engedélyezve van ehhez a bufferhez" + +#: controller/mainController.py:960 +msgid "The auto-reading of new tweets is disabled for this buffer" +msgstr "Az új tweetek automatikus felolvasása le van tiltva ehhez a bufferhez" + +#: controller/mainController.py:967 +msgid "Session mute on" +msgstr "Munkamenet némítás bekapcsolva" + +#: controller/mainController.py:970 +msgid "Session mute off" +msgstr "Munkamenet némítás kikapcsolva" + +#: controller/mainController.py:979 +msgid "Buffer mute on" +msgstr "Buffer némítás bekapcsolva" + +#: controller/mainController.py:982 +msgid "Buffer mute off" +msgstr "Buffer némítás kikapcsolva" + +#: controller/mainController.py:999 +msgid "Copied" +msgstr "Másolva" + +#: controller/mainController.py:1019 +#, fuzzy +msgid "Unable to update this buffer." +msgstr "Nem lehet a hangfájlt feltölteni" + +#: controller/mainController.py:1021 +#, fuzzy +msgid "Updating buffer..." +msgstr "Buffer kiürítése" + +#: controller/mainController.py:1024 +#, fuzzy, python-brace-format +msgid "{0} items retrieved" +msgstr "%s elem betöltve" + +#: controller/buffers/mastodon/base.py:137 controller/mainController.py:1028 +#: controller/mastodon/handler.py:98 controller/mastodon/handler.py:241 +#, python-brace-format +msgid "Timeline for {}" +msgstr "{} idővonala" + +#: controller/buffers/mastodon/users.py:93 controller/mainController.py:1030 +#: controller/mastodon/handler.py:100 controller/mastodon/handler.py:255 +#, fuzzy, python-brace-format +msgid "Followers for {}" +msgstr "Követők" + +#: controller/mainController.py:1032 +#, fuzzy, python-brace-format +msgid "Friends for {}" +msgstr "{} listája" + +#: controller/buffers/mastodon/users.py:95 controller/mainController.py:1034 +#: controller/mastodon/handler.py:102 controller/mastodon/handler.py:269 +#, fuzzy, python-brace-format +msgid "Following for {}" +msgstr "Követők" + +#: controller/messages.py:18 +#, fuzzy +msgid "Translated" +msgstr "Lefordítva" + +#: controller/settings.py:60 +#, fuzzy +msgid "System default" +msgstr "Alapértelmezett" + +#: controller/settings.py:60 +msgid "HTTP" +msgstr "" + +#: controller/settings.py:60 +msgid "SOCKS v4" +msgstr "" + +#: controller/settings.py:60 +msgid "SOCKS v4 with DNS support" +msgstr "" + +#: controller/settings.py:60 +msgid "SOCKS v5" +msgstr "" + +#: controller/settings.py:60 +msgid "SOCKS v5 with DNS support" +msgstr "" + +#: controller/userAlias.py:31 +#, fuzzy, python-brace-format +msgid "Edit alias for {}" +msgstr "{} listája" + +#: controller/buffers/base/base.py:91 +#: controller/buffers/mastodon/conversations.py:237 +#: controller/buffers/mastodon/search.py:80 +msgid "This action is not supported for this buffer" +msgstr "Ez a művelet nem támogatott ebben a bufferben" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:70 +#: controller/mastodon/settings.py:194 +msgid "Home" +msgstr "Főbuffer" + +#: controller/buffers/mastodon/base.py:52 +#: controller/buffers/mastodon/community.py:22 +#: controller/mastodon/handler.py:72 controller/mastodon/handler.py:114 +#: controller/mastodon/settings.py:195 +msgid "Local" +msgstr "" + +#: controller/buffers/mastodon/base.py:52 +#: controller/buffers/mastodon/community.py:22 +#: controller/mastodon/handler.py:74 controller/mastodon/settings.py:196 +msgid "Federated" +msgstr "" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:76 +#: controller/mastodon/settings.py:197 +msgid "Mentions" +msgstr "Említések" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:84 +#: controller/mastodon/settings.py:201 +msgid "Bookmarks" +msgstr "" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:78 +msgid "Direct messages" +msgstr "Közvetlen üzenetek" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:80 +#: controller/mastodon/settings.py:199 +msgid "Sent" +msgstr "" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:82 +#: controller/mastodon/settings.py:200 wxUI/dialogs/mastodon/postDialogs.py:229 +msgid "Favorites" +msgstr "" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:86 +#: controller/mastodon/settings.py:202 +msgid "Followers" +msgstr "Követők" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:88 +#: controller/mastodon/settings.py:203 +#, fuzzy +msgid "Following" +msgstr "Elhagyás" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:92 +#: controller/mastodon/settings.py:204 +msgid "Blocked users" +msgstr "Letiltott felhasználók" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:90 +#: controller/mastodon/settings.py:205 +msgid "Muted users" +msgstr "Elnémított felhasználók" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:94 +#: controller/mastodon/settings.py:206 +#: wxUI/dialogs/mastodon/filters/create_filter.py:80 +#, fuzzy +msgid "Notifications" +msgstr "Tartózkodási hely" + +#: controller/buffers/mastodon/base.py:58 +#, fuzzy, python-brace-format +msgid "{username}'s timeline" +msgstr "Felhasználó idővonalának megnyitása" + +#: controller/buffers/mastodon/base.py:60 +#, python-brace-format +msgid "{username}'s followers" +msgstr "" + +#: controller/buffers/mastodon/base.py:62 +#, fuzzy, python-brace-format +msgid "{username}'s following" +msgstr "Felhasználó idővonalának megnyitása" + +#: controller/buffers/mastodon/base.py:64 +#, fuzzy +msgid "Unknown buffer" +msgstr "Ismeretlen" + +#: controller/buffers/mastodon/base.py:67 +#: controller/buffers/mastodon/base.py:645 wxUI/buffers/mastodon/base.py:24 +#: wxUI/buffers/mastodon/conversationList.py:24 +#: wxUI/buffers/mastodon/notifications.py:22 wxUI/buffers/mastodon/user.py:18 +#: wxUI/dialogs/mastodon/postDialogs.py:5 +#: wxUI/dialogs/mastodon/postDialogs.py:194 wxUI/sysTrayIcon.py:35 +msgid "Post" +msgstr "" + +# | msgid "Write the tweet here" +#: controller/buffers/mastodon/base.py:68 +#: controller/buffers/mastodon/base.py:646 +#, fuzzy +msgid "Write your post here" +msgstr "Írja ide a tweetet" + +#: controller/buffers/mastodon/base.py:153 +#, fuzzy, python-brace-format +msgid "New post in {0}" +msgstr "Új tweet" + +#: controller/buffers/mastodon/base.py:159 +#, python-brace-format +msgid "{0} new posts in {1}." +msgstr "" + +#: controller/buffers/mastodon/base.py:198 +#: controller/buffers/mastodon/community.py:90 +#: controller/buffers/mastodon/conversations.py:100 +#: controller/buffers/mastodon/mentions.py:82 +#: controller/buffers/mastodon/users.py:139 +#, python-format +msgid "%s items retrieved" +msgstr "%s elem betöltve" + +#: controller/buffers/mastodon/base.py:216 +#: controller/buffers/mastodon/users.py:206 +msgid "This buffer is not a timeline; it can't be deleted." +msgstr "Ez a buffer nem egy idővonal, ezért nem törölhető." + +# | msgid "Conversation with {0}" +#: controller/buffers/mastodon/base.py:346 +#: controller/buffers/mastodon/base.py:384 +#, fuzzy, python-brace-format +msgid "Conversation with {}" +msgstr "Beszélgetés {0} nevű személlyel" + +# | msgid "Write the tweet here" +#: controller/buffers/mastodon/base.py:347 +#: controller/buffers/mastodon/base.py:385 +#: controller/buffers/mastodon/conversations.py:181 +#: controller/buffers/mastodon/notifications.py:122 +#: controller/buffers/mastodon/users.py:52 +#, fuzzy +msgid "Write your message here" +msgstr "Írja ide a tweetet" + +#: controller/buffers/mastodon/base.py:349 +#, fuzzy, python-brace-format +msgid "Reply to {}" +msgstr "Válasz %s felhasználónak" + +# | msgid "Write the tweet here" +#: controller/buffers/mastodon/base.py:350 +#, fuzzy +msgid "Write your reply here" +msgstr "Írja ide a tweetet" + +#: controller/buffers/mastodon/base.py:412 +#, fuzzy +msgid "This action is not supported on conversations." +msgstr "Ez a művelet nem támogatott ebben a bufferben" + +#: controller/buffers/mastodon/base.py:477 +msgid "Opening URL..." +msgstr "URL megnyitása..." + +#: controller/buffers/mastodon/base.py:490 +msgid "You can delete only your own posts." +msgstr "" + +#: controller/buffers/mastodon/base.py:519 +msgid "Opening item in web browser..." +msgstr "" + +#: controller/buffers/mastodon/base.py:527 +#: controller/buffers/mastodon/base.py:547 +msgid "Adding to favorites..." +msgstr "" + +# | msgid "Remove from list" +#: controller/buffers/mastodon/base.py:534 +#: controller/buffers/mastodon/base.py:549 +#, fuzzy +msgid "Removing from favorites..." +msgstr "Törlés listáról" + +#: controller/buffers/mastodon/base.py:544 +#: controller/buffers/mastodon/base.py:559 +#: controller/buffers/mastodon/base.py:573 +#: controller/buffers/mastodon/conversations.py:213 +msgid "No status found with that ID" +msgstr "Nincs ilyen állapot ezzel az azonosítóval" + +#: controller/buffers/mastodon/base.py:562 +msgid "Adding to bookmarks..." +msgstr "" + +#: controller/buffers/mastodon/base.py:564 +msgid "Removing from bookmarks..." +msgstr "" + +#: controller/buffers/mastodon/base.py:586 +#, python-brace-format +msgid "Picture {0}" +msgstr "" + +#: controller/buffers/mastodon/base.py:587 +#, fuzzy +msgid "Select the picture" +msgstr "Válasszon felhasználót" + +#: controller/buffers/mastodon/base.py:610 +msgid "Unable to extract text" +msgstr "" + +#: controller/buffers/mastodon/base.py:612 +msgid "OCR Result" +msgstr "" + +#: controller/buffers/mastodon/base.py:627 +msgid "this poll no longer exists." +msgstr "" + +#: controller/buffers/mastodon/base.py:630 +msgid "This poll has already expired." +msgstr "" + +#: controller/buffers/mastodon/base.py:633 +msgid "You have already voted on this poll." +msgstr "" + +#: controller/buffers/mastodon/base.py:642 +#, fuzzy +msgid "Sending vote..." +msgstr "Audio újrakódolása..." + +# | msgid "Conversation with {0}" +#: controller/buffers/mastodon/conversations.py:180 +#, fuzzy, python-brace-format +msgid "Reply to conversation with {}" +msgstr "Beszélgetés {0} nevű személlyel" + +# | msgid "Conversation with {0}" +#: controller/buffers/mastodon/notifications.py:121 +#: controller/buffers/mastodon/users.py:51 +#, fuzzy, python-brace-format +msgid "New conversation with {}" +msgstr "Beszélgetés {0} nevű személlyel" + +#: controller/buffers/mastodon/notifications.py:151 +msgid "Notification dismissed." +msgstr "" + +# | msgid "There are no coordinates in this tweet" +#: controller/buffers/mastodon/users.py:110 +#, fuzzy +msgid "There are no more items in this buffer." +msgstr "Nincsenek koordináták ebben a tweetben" + +#: controller/mastodon/handler.py:30 wxUI/dialogs/mastodon/updateProfile.py:35 +#, fuzzy +msgid "Update Profile" +msgstr "&Profil Frissítése" + +#: controller/mastodon/handler.py:31 wxUI/dialogs/mastodon/search.py:10 +#: wxUI/view.py:19 +msgid "&Search" +msgstr "&Keresés" + +#: controller/mastodon/handler.py:33 wxUI/view.py:22 +msgid "Manage user aliases" +msgstr "" + +#: controller/mastodon/handler.py:35 controller/mastodon/handler.py:59 +#: wxUI/view.py:30 +msgid "&Post" +msgstr "" + +#: controller/mastodon/handler.py:36 wxUI/dialogs/mastodon/menus.py:9 +#: wxUI/dialogs/mastodon/menus.py:37 wxUI/view.py:31 +msgid "Re&ply" +msgstr "&Válasz" + +#: controller/mastodon/handler.py:37 wxUI/dialogs/mastodon/menus.py:7 +#: wxUI/dialogs/mastodon/menus.py:35 wxUI/view.py:32 +msgid "&Boost" +msgstr "" + +# | msgid "&Add to list" +#: controller/mastodon/handler.py:38 wxUI/dialogs/mastodon/menus.py:11 +#: wxUI/dialogs/mastodon/menus.py:39 wxUI/view.py:33 +#, fuzzy +msgid "&Add to favorites" +msgstr "Hozzáadás &listához" + +# | msgid "Remove from list" +#: controller/mastodon/handler.py:39 +#, fuzzy +msgid "Remove from favorites" +msgstr "Törlés listáról" + +# | msgid "&Show user" +#: controller/mastodon/handler.py:40 wxUI/dialogs/mastodon/menus.py:21 +#: wxUI/dialogs/mastodon/menus.py:49 wxUI/view.py:35 +#, fuzzy +msgid "&Show post" +msgstr "&Felhasználó megjelenítése" + +#: controller/mastodon/handler.py:41 wxUI/view.py:36 +msgid "View conversa&tion" +msgstr "&Beszélgetés megtekintése" + +#: controller/mastodon/handler.py:42 wxUI/view.py:37 +#, fuzzy +msgid "Read text in picture" +msgstr "Válasszon felhasználót" + +#: controller/mastodon/handler.py:43 wxUI/dialogs/mastodon/menus.py:25 +#: wxUI/view.py:39 +msgid "&Delete" +msgstr "&Törlés" + +#: controller/mastodon/handler.py:45 wxUI/view.py:43 +msgid "&Actions..." +msgstr "&Művelet..." + +#: controller/mastodon/handler.py:46 wxUI/view.py:44 +msgid "&View timeline..." +msgstr "&Idővonal megtekintése..." + +#: controller/mastodon/handler.py:47 wxUI/view.py:45 +msgid "Direct me&ssage" +msgstr "&Közvetlen üzenet" + +#: controller/mastodon/handler.py:48 wxUI/view.py:46 +msgid "Add a&lias" +msgstr "" + +#: controller/mastodon/handler.py:51 +#, fuzzy +msgid "Show user profile" +msgstr "&Felhasználó profiljának megjelenítése" + +#: controller/mastodon/handler.py:54 +msgid "Create c&ommunity timeline" +msgstr "" + +#: controller/mastodon/handler.py:55 wxUI/view.py:57 +#, fuzzy +msgid "Create a &filter" +msgstr "Új lista létrehozása" + +#: controller/mastodon/handler.py:56 wxUI/view.py:58 +#, fuzzy +msgid "&Manage filters" +msgstr "Fiókok ke&zelése" + +#: controller/mastodon/handler.py:95 +msgid "Timelines" +msgstr "Idővonalak" + +#: controller/mastodon/handler.py:107 +msgid "Searches" +msgstr "Keresések" + +#: controller/mastodon/handler.py:110 controller/mastodon/handler.py:191 +#: controller/mastodon/handler.py:196 +#, python-brace-format +msgid "Search for {}" +msgstr "{} keresése" + +#: controller/mastodon/handler.py:111 +msgid "Communities" +msgstr "" + +#: controller/mastodon/handler.py:114 +#, fuzzy +msgid "federated" +msgstr "Felhasználó idővonalának megnyitása" + +#: controller/mastodon/handler.py:143 +#, python-brace-format +msgid "Conversation with {0}" +msgstr "Beszélgetés {0} nevű személlyel" + +#: controller/mastodon/handler.py:299 +msgid "Add an user alias" +msgstr "" + +#: controller/mastodon/handler.py:311 +#, python-brace-format +msgid "Alias has been set correctly for {}." +msgstr "" + +#: controller/mastodon/handler.py:342 +#, fuzzy +msgid "Update profile" +msgstr "&Profil Frissítése" + +#: controller/mastodon/messages.py:115 +#, python-format +msgid "%s - %s of %d characters" +msgstr "%s - %s a %d karakterből" + +#: controller/mastodon/messages.py:239 +#, python-brace-format +msgid "Poll with {} options" +msgstr "" + +# | msgid "List for {}" +#: controller/mastodon/messages.py:272 +#, fuzzy, python-brace-format +msgid "Post from {}" +msgstr "{} listája" + +#: controller/mastodon/messages.py:276 sessions/mastodon/templates.py:82 +#: wxUI/dialogs/mastodon/postDialogs.py:49 +msgid "Public" +msgstr "Nyilvános" + +# | msgid "Accounts list" +#: controller/mastodon/messages.py:276 sessions/mastodon/templates.py:82 +#: wxUI/dialogs/mastodon/postDialogs.py:49 +#, fuzzy +msgid "Not listed" +msgstr "Fióklista" + +# | msgid "Followers" +#: controller/mastodon/messages.py:276 +#, fuzzy +msgid "followers only" +msgstr "Követők" + +# | msgid "Direct message" +#: controller/mastodon/messages.py:276 sessions/mastodon/templates.py:82 +#: wxUI/dialogs/mastodon/postDialogs.py:49 +#, fuzzy +msgid "Direct" +msgstr "Közvetlen üzenet" + +# | msgid "Remove client" +#: controller/mastodon/messages.py:283 +#, fuzzy +msgid "Remote instance" +msgstr "Kliens eltávolítása" + +#: controller/mastodon/messages.py:291 controller/mastodon/messages.py:319 +#, fuzzy +msgid "Unmute conversation" +msgstr "Beszélgetés megtekintése" + +#: controller/mastodon/messages.py:315 wxUI/dialogs/mastodon/postDialogs.py:237 +#, fuzzy +msgid "Mute conversation" +msgstr "Beszélgetés megtekintése" + +# | msgid "Conversation with {0}" +#: controller/mastodon/messages.py:316 +#, fuzzy +msgid "Conversation unmuted." +msgstr "Beszélgetés {0} nevű személlyel" + +# | msgid "Conversation with {0}" +#: controller/mastodon/messages.py:320 +#, fuzzy +msgid "Conversation muted." +msgstr "Beszélgetés {0} nevű személlyel" + +#: controller/mastodon/messages.py:331 +msgid "people who boosted this post" +msgstr "" + +#: controller/mastodon/messages.py:336 +msgid "people who favorited this post" +msgstr "" + +#: controller/mastodon/messages.py:342 +#, fuzzy +msgid "Link copied to clipboard." +msgstr "Másolás vágólapra" + +#: controller/mastodon/settings.py:82 +#, python-format +msgid "Account settings for %s" +msgstr "%s fiókbeállításai" + +#: controller/mastodon/settings.py:92 +#, python-brace-format +msgid "Edit template for posts. Current template: {}" +msgstr "" + +#: controller/mastodon/settings.py:101 +#, python-brace-format +msgid "Edit template for conversations. Current template: {}" +msgstr "" + +#: controller/mastodon/settings.py:110 +#, python-brace-format +msgid "Edit template for persons. Current template: {}" +msgstr "" + +#: controller/mastodon/settings.py:198 +#, fuzzy +msgid "Direct Messages" +msgstr "Közvetlen üzenetek" + +#: controller/mastodon/filters/create_filter.py:75 +#, fuzzy, python-brace-format +msgid "Update Filter: {}" +msgstr "&Profil Frissítése" + +#: controller/mastodon/filters/manage_filters.py:57 +#: wxUI/dialogs/mastodon/filters/create_filter.py:90 +msgid "Never" +msgstr "" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:4 +msgid "Audio tweet." +msgstr "Audio tweet." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:5 +msgid "User timeline buffer created." +msgstr "Felhasználó idővonal buffer elkészült." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:6 +msgid "Buffer destroied." +msgstr "Buffer törölve." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:7 +msgid "Direct message received." +msgstr "Közvetlen üzenet érkezett." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:8 +msgid "Direct message sent." +msgstr "Közvetlen üzenet elküldve." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:9 +msgid "Error." +msgstr "Hiba." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:10 +#, fuzzy +msgid "Tweet liked." +msgstr "Tweet érkezett." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:11 +#, fuzzy +msgid "Likes buffer updated." +msgstr "Frissült a kedvencek buffer." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:12 +msgid "Geotweet." +msgstr "Geotweet." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:13 +msgid "Tweet contains one or more images" +msgstr "" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:14 +msgid "Boundary reached." +msgstr "Határ." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:15 +msgid "List updated." +msgstr "Lista frissítve" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:16 +msgid "Too many characters." +msgstr "Túl sok karakter." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:17 +msgid "Mention received." +msgstr "Említés érkezett." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:18 +msgid "New event." +msgstr "Új esemény." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:19 +#, python-brace-format +msgid "{0} is ready." +msgstr "A {0} üzemkész " + +#: extra/SoundsTutorial/soundsTutorial_constants.py:20 +msgid "Mention sent." +msgstr "Említés elküldve." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:21 +msgid "Tweet retweeted." +msgstr "Retweet elküldve." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:22 +msgid "Search buffer updated." +msgstr "Frissült a keresés buffer." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:23 +msgid "Tweet received." +msgstr "Tweet érkezett." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:24 +msgid "Tweet sent." +msgstr "Tweet elküldve." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:25 +msgid "Trending topics buffer updated." +msgstr "Frissült a trendelő témák buffer." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:26 +msgid "New tweet in user timeline buffer." +msgstr "Új tweet a felhasználó idővonal bufferben." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:27 +msgid "New follower." +msgstr "Új követő." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:28 +msgid "Volume changed." +msgstr "Hangerő megváltozott." + +#: extra/SoundsTutorial/wx_ui.py:8 +msgid "Sounds tutorial" +msgstr "Hangtanító" + +#: extra/SoundsTutorial/wx_ui.py:11 +msgid "Press enter to listen to the sound for the selected event" +msgstr "" +"Nyomja meg az enter billentyűt a kijelölt esemény hangjának " +"meghallgatásához" + +#: extra/SpellChecker/spellchecker.py:56 +#, python-format +msgid "Misspelled word: %s" +msgstr "Elírt szó: %s" + +#: extra/SpellChecker/wx_ui.py:27 +msgid "Misspelled word" +msgstr "Elírt szó" + +#: extra/SpellChecker/wx_ui.py:32 +msgid "Context" +msgstr "Szövegkörnyezet" + +#: extra/SpellChecker/wx_ui.py:37 +msgid "Suggestions" +msgstr "Javaslatok" + +#: extra/SpellChecker/wx_ui.py:42 +#, fuzzy +msgid "&Ignore" +msgstr "Mellőzés" + +#: extra/SpellChecker/wx_ui.py:43 +#, fuzzy +msgid "I&gnore all" +msgstr "Mind mellőzése" + +#: extra/SpellChecker/wx_ui.py:44 +#, fuzzy +msgid "&Replace" +msgstr "Csere" + +#: extra/SpellChecker/wx_ui.py:45 +#, fuzzy +msgid "R&eplace all" +msgstr "Mind cseréje" + +#: extra/SpellChecker/wx_ui.py:46 +msgid "&Add to personal dictionary" +msgstr "" + +#: extra/SpellChecker/wx_ui.py:79 +#, python-brace-format +msgid "" +"An error has occurred. There are no dictionaries available for the " +"selected language in {0}" +msgstr "" +"Hiba történt. Nincs elérhető szótár a kiválasztott nyelvhez a {0} " +"programban" + +#: extra/SpellChecker/wx_ui.py:79 +#: extra/autocompletionUsers/mastodon/wx_scan.py:44 +#: wxUI/commonMessageDialogs.py:23 wxUI/commonMessageDialogs.py:36 +#: wxUI/commonMessageDialogs.py:45 wxUI/commonMessageDialogs.py:52 +#: wxUI/commonMessageDialogs.py:55 wxUI/commonMessageDialogs.py:61 +#: wxUI/dialogs/mastodon/dialogs.py:38 wxUI/dialogs/mastodon/dialogs.py:43 +#: wxUI/dialogs/mastodon/dialogs.py:48 wxUI/dialogs/mastodon/dialogs.py:53 +#: wxUI/dialogs/mastodon/dialogs.py:60 +msgid "Error" +msgstr "Hiba" + +#: extra/SpellChecker/wx_ui.py:82 +msgid "Spell check complete." +msgstr "A helyesírás ellenőrzés befejeződött." + +#: extra/autocompletionUsers/completion.py:39 +#: extra/autocompletionUsers/completion.py:57 +msgid "You have to start writing" +msgstr "" + +# | msgid "There are no coordinates in this tweet" +#: extra/autocompletionUsers/completion.py:49 +#: extra/autocompletionUsers/completion.py:66 +#, fuzzy +msgid "There are no results in your users database" +msgstr "Nincsenek koordináták ebben a tweetben" + +#: extra/autocompletionUsers/completion.py:51 +#, fuzzy +msgid "Autocompletion only works for users." +msgstr "Felhasználók &autokiegészítése" + +#: extra/autocompletionUsers/wx_manage.py:9 +#, fuzzy +msgid "Manage Autocompletion database" +msgstr "Felhasználók automatikus kiegészítés adatbázisának kezelése" + +#: extra/autocompletionUsers/wx_manage.py:12 +#, fuzzy, python-brace-format +msgid "Editing {0} users database" +msgstr "{0} felhasználói adatbázis szerkesztése" + +#: extra/autocompletionUsers/wx_manage.py:13 +#, fuzzy +msgid "Username" +msgstr "Felhasználó" + +#: extra/autocompletionUsers/wx_manage.py:13 wxUI/dialogs/configuration.py:108 +msgid "Name" +msgstr "Név" + +#: extra/autocompletionUsers/wx_manage.py:16 +#, fuzzy +msgid "Add user" +msgstr "Felhasználó" + +#: extra/autocompletionUsers/wx_manage.py:17 +#, fuzzy +msgid "Remove user" +msgstr "Felhasználó Törlés" + +#: extra/autocompletionUsers/wx_manage.py:38 +msgid "Twitter username" +msgstr "" + +#: extra/autocompletionUsers/wx_manage.py:38 +msgid "Add user to database" +msgstr "" + +#: extra/autocompletionUsers/wx_manage.py:44 +#, fuzzy +msgid "The user does not exist" +msgstr "A felhasználó nem létezik" + +#: extra/autocompletionUsers/wx_manage.py:44 +#, fuzzy +msgid "Error!" +msgstr "Hiba" + +#: extra/autocompletionUsers/mastodon/scan.py:49 +msgid "" +"Updating database... You can close this window now. A message will tell " +"you when the process finishes." +msgstr "" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:8 +#, fuzzy +msgid "Autocomplete users' settings" +msgstr "Felhasználók &autokiegészítése" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:11 +msgid "Add &followers to database" +msgstr "" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:12 +msgid "Add f&ollowing to database" +msgstr "" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:26 +#, fuzzy +msgid "Updating autocompletion database" +msgstr "Felhasználók automatikus kiegészítés adatbázisának kezelése" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:34 +msgid "" +"This process will retrieve the users you selected from your Mastodon " +"account, and add them to the user autocomplete database. Please note that" +" if there are many users or you have tried to perform this action less " +"than 15 minutes ago, TWBlue may reach a limit in API calls when trying to" +" load the users into the database. If this happens, we will show you an " +"error, in which case you will have to try this process again in a few " +"minutes. If this process ends with no error, you will be redirected back " +"to the account settings dialog. Do you want to continue?" +msgstr "" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:34 +#: wxUI/commonMessageDialogs.py:20 +msgid "Attention" +msgstr "Figyelem" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:40 +#, python-brace-format +msgid "TWBlue has imported {} users successfully." +msgstr "" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:40 +#, fuzzy +msgid "Done" +msgstr "Befejeződött!" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:44 +msgid "Error adding users from Mastodon. Please try again in about 15 minutes." +msgstr "" + +#: extra/ocr/OCRSpace.py:7 +#, fuzzy +msgid "Detect automatically" +msgstr "Fiók automatikus elindítása" + +#: extra/ocr/OCRSpace.py:7 +msgid "Danish" +msgstr "DÁn" + +#: extra/ocr/OCRSpace.py:7 +msgid "Dutch" +msgstr "Holland" + +#: extra/ocr/OCRSpace.py:7 +msgid "English" +msgstr "Angol" + +#: extra/ocr/OCRSpace.py:7 +msgid "Finnish" +msgstr "Finn" + +#: extra/ocr/OCRSpace.py:7 +msgid "French" +msgstr "Francia" + +#: extra/ocr/OCRSpace.py:7 +msgid "German" +msgstr "Német" + +#: extra/ocr/OCRSpace.py:7 +msgid "Hungarian" +msgstr "Magyar" + +#: extra/ocr/OCRSpace.py:7 +msgid "Korean" +msgstr "Kóreai" + +#: extra/ocr/OCRSpace.py:7 +msgid "Italian" +msgstr "Olasz" + +#: extra/ocr/OCRSpace.py:7 +msgid "Japanese" +msgstr "Japán" + +#: extra/ocr/OCRSpace.py:7 +msgid "Polish" +msgstr "Lengyel" + +#: extra/ocr/OCRSpace.py:7 +msgid "Portuguese" +msgstr "Portugál" + +#: extra/ocr/OCRSpace.py:7 +msgid "Russian" +msgstr "Orosz" + +#: extra/ocr/OCRSpace.py:7 +msgid "Spanish" +msgstr "Spanyol" + +#: extra/ocr/OCRSpace.py:7 +msgid "Turkish" +msgstr "Török" + +#: extra/translator/wx_ui.py:25 +msgid "Translate message" +msgstr "Üzenet fordítása" + +#: extra/translator/wx_ui.py:29 +#, fuzzy +msgid "Translation engine" +msgstr "Lefordítva" + +#: extra/translator/wx_ui.py:32 +msgid "Target language" +msgstr "Célnyelv" + +#: keystrokeEditor/wx_ui.py:8 +msgid "Keystroke editor" +msgstr "Billentyűparancs szerkesztő" + +#: keystrokeEditor/wx_ui.py:11 +msgid "Select a keystroke to edit" +msgstr "Válasszon ki egy szerkesztendő billentyűparancsot" + +#: keystrokeEditor/wx_ui.py:12 +#: wxUI/dialogs/mastodon/filters/manage_filters.py:18 +#: wxUI/dialogs/mastodon/userActions.py:9 +#: wxUI/dialogs/mastodon/userActions.py:18 +#: wxUI/dialogs/mastodon/userActions.py:19 +msgid "Action" +msgstr "Művelet" + +#: keystrokeEditor/wx_ui.py:12 +msgid "Keystroke" +msgstr "Billentyűparancs" + +#: keystrokeEditor/wx_ui.py:17 +#: wxUI/dialogs/mastodon/filters/manage_filters.py:23 +#: wxUI/dialogs/userAliasDialogs.py:53 +msgid "Edit" +msgstr "Szerkesztés" + +#: keystrokeEditor/wx_ui.py:19 keystrokeEditor/wx_ui.py:49 +#, fuzzy +msgid "Undefine keystroke" +msgstr "Billentyűparancs szerkesztése" + +#: keystrokeEditor/wx_ui.py:20 +msgid "Execute action" +msgstr "" + +#: keystrokeEditor/wx_ui.py:21 wxUI/dialogs/userAliasDialogs.py:25 +msgid "Close" +msgstr "Bezárás" + +#: keystrokeEditor/wx_ui.py:41 +msgid "Undefined" +msgstr "" + +#: keystrokeEditor/wx_ui.py:49 +#, fuzzy +msgid "Are you sure you want to undefine this keystroke?" +msgstr "Bisztosan szeretné törölni ezt a listát?" + +#: keystrokeEditor/wx_ui.py:53 +msgid "Editing keystroke" +msgstr "Billentyűparancs szerkesztése" + +#: keystrokeEditor/wx_ui.py:56 +msgid "Control" +msgstr "Control" + +#: keystrokeEditor/wx_ui.py:57 +msgid "Alt" +msgstr "Alt" + +#: keystrokeEditor/wx_ui.py:58 +msgid "Shift" +msgstr "Shift" + +#: keystrokeEditor/wx_ui.py:59 +msgid "Windows" +msgstr "Windows" + +#: keystrokeEditor/wx_ui.py:65 +msgid "Key" +msgstr "Billentyű" + +#: keystrokeEditor/wx_ui.py:70 wxUI/dialogs/find.py:21 +#: wxUI/dialogs/mastodon/showUserProfile.py:31 +#: wxUI/dialogs/userAliasDialogs.py:23 +msgid "OK" +msgstr "OK" + +#: keystrokeEditor/wx_ui.py:83 +msgid "You need to use the Windows key" +msgstr "Használnia kell a Windows billentyűt" + +#: keystrokeEditor/wx_ui.py:83 keystrokeEditor/wx_ui.py:86 +msgid "Invalid keystroke" +msgstr "Érvénytelen billentyűparancs" + +#: keystrokeEditor/wx_ui.py:86 +msgid "You must provide a character for the keystroke" +msgstr "Meg kell adnia egy betűt a billentyűparancshoz" + +#: keystrokeEditor/actions/mastodon.py:3 +msgid "Go up in the current buffer" +msgstr "Felfelé mozgás a jelenlegi bufferben" + +#: keystrokeEditor/actions/mastodon.py:4 +msgid "Go down in the current buffer" +msgstr "Lefelé mozgás a jelenlegi bufferben" + +#: keystrokeEditor/actions/mastodon.py:5 +msgid "Go to the previous buffer" +msgstr "Váltás az előző bufferre" + +#: keystrokeEditor/actions/mastodon.py:6 +msgid "Go to the next buffer" +msgstr "Váltás a következő buffer" + +#: keystrokeEditor/actions/mastodon.py:7 +msgid "Focus the next session" +msgstr "Váltás a következő munkamenetre" + +#: keystrokeEditor/actions/mastodon.py:8 +msgid "Focus the previous session" +msgstr "Váltás az előző munkamenetre" + +#: keystrokeEditor/actions/mastodon.py:9 +msgid "Show or hide the GUI" +msgstr "Megjelenítés / elrejtés" + +# | msgid "Create a new list" +#: keystrokeEditor/actions/mastodon.py:10 +#, fuzzy +msgid "Make a new post" +msgstr "Új lista létrehozása" + +#: keystrokeEditor/actions/mastodon.py:11 wxUI/buffers/mastodon/base.py:26 +#: wxUI/buffers/mastodon/conversationList.py:25 +msgid "Reply" +msgstr "Válasz" + +#: keystrokeEditor/actions/mastodon.py:12 wxUI/buffers/mastodon/base.py:25 +#: wxUI/dialogs/mastodon/dialogs.py:7 +msgid "Boost" +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:13 +msgid "Send direct message" +msgstr "Közvetlen üzenet küldése" + +#: keystrokeEditor/actions/mastodon.py:14 +msgid "Add post to favorites" +msgstr "" + +# | msgid "Remove from list" +#: keystrokeEditor/actions/mastodon.py:15 +#, fuzzy +msgid "Remove post from favorites" +msgstr "Törlés listáról" + +#: keystrokeEditor/actions/mastodon.py:16 +msgid "Add/remove post from favorites" +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:17 +msgid "Open the user actions dialogue" +msgstr "A műveletek párbeszédpanel megnyitása" + +#: keystrokeEditor/actions/mastodon.py:18 +#, fuzzy +msgid "See user details" +msgstr "Felhasználó Törlés" + +# | msgid "Show tweet" +#: keystrokeEditor/actions/mastodon.py:19 +#, fuzzy +msgid "Show post" +msgstr "Tweet megjelenítése" + +#: keystrokeEditor/actions/mastodon.py:20 +msgid "Quit" +msgstr "Kilépés" + +#: keystrokeEditor/actions/mastodon.py:21 +msgid "Open user timeline" +msgstr "Felhasználó idővonalának megnyitása" + +#: keystrokeEditor/actions/mastodon.py:22 +msgid "Destroy buffer" +msgstr "Buffer törlése" + +# | msgid "Interact with the currently focused tweet." +#: keystrokeEditor/actions/mastodon.py:23 +#, fuzzy +msgid "Interact with the currently focused post." +msgstr "Művelet elvégzése a kiválasztott tweeten." + +#: keystrokeEditor/actions/mastodon.py:24 +msgid "Open URL" +msgstr "URL Megnyitása" + +#: keystrokeEditor/actions/mastodon.py:25 +#, fuzzy +msgid "View in browser" +msgstr "Keresés a Twitteren" + +#: keystrokeEditor/actions/mastodon.py:26 +msgid "Increase volume by 5%" +msgstr "Hangerő növelése 5 százalékkal" + +#: keystrokeEditor/actions/mastodon.py:27 +msgid "Decrease volume by 5%" +msgstr "Hangerő csökkentése 5 százalékkal" + +#: keystrokeEditor/actions/mastodon.py:28 +msgid "Jump to the first element of a buffer" +msgstr "Ugrás a jelenlegi buffer első elemére" + +#: keystrokeEditor/actions/mastodon.py:29 +msgid "Jump to the last element of the current buffer" +msgstr "Ugrás a jelenlegi buffer utolsó elemére" + +#: keystrokeEditor/actions/mastodon.py:30 +msgid "Jump 20 elements up in the current buffer" +msgstr "20 elemmel fel a jelenlegi bufferben" + +#: keystrokeEditor/actions/mastodon.py:31 +msgid "Jump 20 elements down in the current buffer" +msgstr "20 elemmel le a jelenlegi bufferben" + +# | msgid "Delete" +#: keystrokeEditor/actions/mastodon.py:33 +#, fuzzy +msgid "Delete post" +msgstr "Törlés" + +#: keystrokeEditor/actions/mastodon.py:34 +msgid "Empty the current buffer" +msgstr "Buffer kiürítése" + +#: keystrokeEditor/actions/mastodon.py:35 +msgid "Repeat last item" +msgstr "Utolsó elem megismétlése" + +#: keystrokeEditor/actions/mastodon.py:36 +msgid "Copy to clipboard" +msgstr "Másolás vágólapra" + +#: keystrokeEditor/actions/mastodon.py:39 +msgid "Mute/unmute the active buffer" +msgstr "Elnémítja és visszavonja a némítást a jelenlegi bufferen" + +#: keystrokeEditor/actions/mastodon.py:40 +msgid "Mute/unmute the current session" +msgstr "A jelenlegi munkamenet némításának be- és kikapcsolása" + +#: keystrokeEditor/actions/mastodon.py:41 +msgid "toggle the automatic reading of incoming tweets in the active buffer" +msgstr "" +"A bejövő tweetek automatikus olvasásának be- és kikapcsolása a jelenlegi " +"bufferben" + +# | msgid "Search on twitter" +#: keystrokeEditor/actions/mastodon.py:42 +#, fuzzy +msgid "Search on instance" +msgstr "Keresés a Twitteren" + +#: keystrokeEditor/actions/mastodon.py:43 +msgid "Find a string in the currently focused buffer" +msgstr "Szöveg keresése a jelenlegi bufferben" + +#: keystrokeEditor/actions/mastodon.py:44 +msgid "Show the keystroke editor" +msgstr "Megjeleníti a billentyűparancs szerkesztőt" + +#: keystrokeEditor/actions/mastodon.py:46 +msgid "load previous items" +msgstr "Előző elemek betöltése" + +#: keystrokeEditor/actions/mastodon.py:48 +msgid "View conversation" +msgstr "Beszélgetés megtekintése" + +#: keystrokeEditor/actions/mastodon.py:49 +#, fuzzy +msgid "Check and download updates" +msgstr "&Frissítések keresése" + +#: keystrokeEditor/actions/mastodon.py:50 +#, fuzzy +msgid "Opens the global settings dialogue" +msgstr "A műveletek párbeszédpanel megnyitása" + +#: keystrokeEditor/actions/mastodon.py:52 +#, fuzzy +msgid "Opens the account settings dialogue" +msgstr "A műveletek párbeszédpanel megnyitása" + +#: keystrokeEditor/actions/mastodon.py:53 +#, fuzzy +msgid "Try to play a media file" +msgstr "Hang lejátszásának megkísérlése" + +#: keystrokeEditor/actions/mastodon.py:54 +msgid "Updates the buffer and retrieves possible lost items there." +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:55 +msgid "Extracts the text from a picture and displays the result in a dialog." +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:56 +#, fuzzy +msgid "Adds an alias to an user" +msgstr "Válasszon egy listát, melyhez hozzá szeretné adni a felhasználót" + +#: sessionmanager/sessionManager.py:69 +#, python-brace-format +msgid "{account_name}@{instance} (Mastodon)" +msgstr "" + +#: sessionmanager/wxUI.py:11 +#, fuzzy +msgid "Session manager" +msgstr "Munkamenet némítás" + +#: sessionmanager/wxUI.py:14 +msgid "Accounts list" +msgstr "Fióklista" + +#: sessionmanager/wxUI.py:16 +msgid "Account" +msgstr "Fiók" + +#: sessionmanager/wxUI.py:20 +msgid "New account" +msgstr "Új Fiók" + +#: sessionmanager/wxUI.py:22 sessionmanager/wxUI.py:79 +msgid "Remove account" +msgstr "Fiók eltávolítása" + +#: sessionmanager/wxUI.py:24 +msgid "Global Settings" +msgstr "Általános beállítások" + +#: sessionmanager/wxUI.py:48 +msgid "You need to configure an account." +msgstr "Be kell állítania egy fiókot." + +#: sessionmanager/wxUI.py:48 +msgid "Account Error" +msgstr "Fiók hiba" + +#: sessionmanager/wxUI.py:54 +msgid "Mastodon" +msgstr "" + +#: sessionmanager/wxUI.py:59 +msgid "" +"You will be prompted for your Mastodon data (instance URL, email address " +"and password) so we can authorise TWBlue in your instance. Would you like" +" to authorise your account now?" +msgstr "" + +#: sessionmanager/wxUI.py:59 +msgid "Authorization" +msgstr "Hitelesítés" + +#: sessionmanager/wxUI.py:67 +#, python-format +msgid "Authorized account %d" +msgstr "Hitelesített fiók %d" + +#: sessionmanager/wxUI.py:73 +msgid "" +"Your access token is invalid or the authorization has failed. Please try " +"again." +msgstr "" +"A hozzáférési token érvénytelen, vagy a hitelesítés sikertelen. Kérjük " +"próbálja újra." + +#: sessionmanager/wxUI.py:73 +msgid "Invalid user token" +msgstr "Érvénytelen felhasználói token" + +#: sessionmanager/wxUI.py:79 +msgid "Do you really want to delete this account?" +msgstr "Bisztosan szeretné törölni ezt a fiókot?" + +#: sessions/base.py:125 +#, python-brace-format +msgid "" +"An exception occurred while saving the {app} database. It will be deleted" +" and rebuilt automatically. If this error persists, send the error log to" +" the {app} developers." +msgstr "" + +#: sessions/base.py:165 +#, python-brace-format +msgid "" +"An exception occurred while loading the {app} database. It will be " +"deleted and rebuilt automatically. If this error persists, send the error" +" log to the {app} developers." +msgstr "" + +# | msgid "dddd, MMMM D, YYYY H:m:s" +#: sessions/mastodon/compose.py:15 sessions/mastodon/compose.py:61 +#, fuzzy +msgid "dddd, MMMM D, YYYY H:m" +msgstr "dddd, MMMM D, YYYY H:m:s" + +#: sessions/mastodon/compose.py:17 sessions/mastodon/templates.py:74 +#: sessions/mastodon/templates.py:75 +#, python-brace-format +msgid "Boosted from @{}: {}" +msgstr "" + +#: sessions/mastodon/compose.py:22 sessions/mastodon/compose.py:81 +#: sessions/mastodon/templates.py:81 sessions/mastodon/templates.py:176 +#, python-brace-format +msgid "hidden by filter {}" +msgstr "" + +#: sessions/mastodon/compose.py:36 sessions/mastodon/templates.py:28 +msgid "dddd, MMMM D, YYYY H:m:s" +msgstr "dddd, MMMM D, YYYY H:m:s" + +# | msgid "" +# | "%s (@%s). %s followers, %s friends, %s tweets. Last tweeted %s. Joined " +# | "Twitter %s" +#: sessions/mastodon/compose.py:38 +#, fuzzy, python-format +msgid "%s (@%s). %s followers, %s following, %s posts. Joined %s" +msgstr "" +"%s (@%s). %s követők, %s ismerősök, %s tweet. Utoljára tweetelt %s. A " +"Twitterhez csatlakozott %s" + +#: sessions/mastodon/compose.py:49 +#, python-brace-format +msgid "Last message from {}: {}" +msgstr "" + +#: sessions/mastodon/compose.py:64 +#, python-brace-format +msgid "{username} has posted: {status}" +msgstr "" + +# | msgid "Search on twitter" +#: sessions/mastodon/compose.py:66 +#, fuzzy, python-brace-format +msgid "{username} has mentioned you: {status}" +msgstr "Keresés a Twitteren" + +#: sessions/mastodon/compose.py:68 +#, python-brace-format +msgid "{username} has boosted: {status}" +msgstr "" + +#: sessions/mastodon/compose.py:70 +#, python-brace-format +msgid "{username} has added to favorites: {status}" +msgstr "" + +#: sessions/mastodon/compose.py:72 +#, python-brace-format +msgid "{username} has followed you." +msgstr "" + +# | msgid "Search on twitter" +#: sessions/mastodon/compose.py:74 +#, fuzzy, python-brace-format +msgid "{username} has joined the instance." +msgstr "Keresés a Twitteren" + +#: sessions/mastodon/compose.py:76 sessions/mastodon/templates.py:171 +#, python-brace-format +msgid "A poll in which you have voted has expired: {status}" +msgstr "" + +#: sessions/mastodon/compose.py:78 +#, python-brace-format +msgid "{username} wants to follow you." +msgstr "" + +#: sessions/mastodon/session.py:69 +msgid "Please enter your instance URL." +msgstr "" + +#: sessions/mastodon/session.py:69 +msgid "Mastodon instance" +msgstr "" + +#: sessions/mastodon/session.py:80 +msgid "" +"We could not connect to your mastodon instance. Please verify that the " +"domain exists and the instance is accessible via a web browser." +msgstr "" + +# | msgid "&Report an error" +#: sessions/mastodon/session.py:80 +#, fuzzy +msgid "Instance error" +msgstr "&Hibajelentés" + +#: sessions/mastodon/session.py:85 +msgid "Enter the verification code" +msgstr "" + +# | msgid "Authorization" +#: sessions/mastodon/session.py:85 +#, fuzzy +msgid "PIN code authorization" +msgstr "Hitelesítés" + +#: sessions/mastodon/session.py:94 +msgid "" +"We could not authorice your mastodon account to be used in TWBlue. This " +"might be caused due to an incorrect verification code. Please try to add " +"the session again." +msgstr "" + +# | msgid "Authorization" +#: sessions/mastodon/session.py:94 +#, fuzzy +msgid "Authorization error" +msgstr "Hitelesítés" + +#: sessions/mastodon/session.py:215 +#, python-format +msgid "%s succeeded." +msgstr "%s sikeres." + +#: sessions/mastodon/templates.py:18 +msgid "$display_name, $text $image_descriptions $date. $source" +msgstr "" + +#: sessions/mastodon/templates.py:19 +msgid "Dm to $recipient_display_name, $text $date" +msgstr "" + +#: sessions/mastodon/templates.py:20 +msgid "" +"$display_name (@$screen_name). $followers followers, $following " +"following, $posts posts. Joined $created_at." +msgstr "" + +#: sessions/mastodon/templates.py:21 +msgid "$display_name $text, $date" +msgstr "" + +#: sessions/mastodon/templates.py:34 +#, python-brace-format +msgid "Content warning: {}" +msgstr "" + +#: sessions/mastodon/templates.py:45 +#, fuzzy, python-brace-format +msgid "Media description: {}" +msgstr "Leírás" + +# | msgid "Followers" +#: sessions/mastodon/templates.py:82 wxUI/dialogs/mastodon/postDialogs.py:49 +#, fuzzy +msgid "Followers only" +msgstr "Követők" + +#: sessions/mastodon/templates.py:94 +#, fuzzy +msgid "Pinned." +msgstr "Másolva" + +#: sessions/mastodon/templates.py:157 +#, python-brace-format +msgid "has posted: {status}" +msgstr "" + +#: sessions/mastodon/templates.py:159 +#, python-brace-format +msgid "has mentioned you: {status}" +msgstr "" + +#: sessions/mastodon/templates.py:161 +#, python-brace-format +msgid "has boosted: {status}" +msgstr "" + +#: sessions/mastodon/templates.py:163 +#, python-brace-format +msgid "has added to favorites: {status}" +msgstr "" + +#: sessions/mastodon/templates.py:165 +#, python-brace-format +msgid "has updated a status: {status}" +msgstr "" + +# | msgid "New follower." +#: sessions/mastodon/templates.py:167 +#, fuzzy +msgid "has followed you." +msgstr "Új követő." + +# | msgid "Remove client" +#: sessions/mastodon/templates.py:169 +#, fuzzy +msgid "has joined the instance." +msgstr "Kliens eltávolítása" + +#: sessions/mastodon/templates.py:173 +msgid "wants to follow you." +msgstr "" + +#: update/utils.py:29 +#, python-format +msgid "%d day, " +msgstr "%d nap, " + +#: update/utils.py:31 +#, python-format +msgid "%d days, " +msgstr "%d nap, " + +#: update/utils.py:33 +#, python-format +msgid "%d hour, " +msgstr "%d óra, " + +#: update/utils.py:35 +#, python-format +msgid "%d hours, " +msgstr "%d óra, " + +#: update/utils.py:37 +#, python-format +msgid "%d minute, " +msgstr "%d perc, " + +#: update/utils.py:39 +#, python-format +msgid "%d minutes, " +msgstr "%d perc, " + +#: update/utils.py:41 +#, python-format +msgid "%s second" +msgstr "%s másodperc" + +#: update/utils.py:43 +#, python-format +msgid "%s seconds" +msgstr "%s másodperc" + +#: update/wxUpdater.py:11 +#, fuzzy, python-format +msgid "" +"There's a new %s version available, released on %s. Would you like to " +"download it now?\n" +"\n" +" %s version: %s\n" +"\n" +"Changes:\n" +"%s" +msgstr "" +"Új TW Blue %s verzió érhető el. Szeretné letölteni?\n" +"\n" +" %s verzió: %s\n" +"\n" +"Változások:\n" +"%s" + +#: update/wxUpdater.py:14 +#, fuzzy, python-format +msgid "" +"There's a new %s version available, released on %s. Updates are not " +"automatic in Windows 7, so you would need to visit TWBlue's download " +"website to get the latest version.\n" +"\n" +" %s version: %s\n" +"\n" +"Changes:\n" +"%s" +msgstr "" +"Új TW Blue %s verzió érhető el. Szeretné letölteni?\n" +"\n" +" %s verzió: %s\n" +"\n" +"Változások:\n" +"%s" + +#: update/wxUpdater.py:16 +#, python-format +msgid "New version for %s" +msgstr "%s új verzió" + +#: update/wxUpdater.py:23 +msgid "Download in Progress" +msgstr "A letöltés folyamatban" + +#: update/wxUpdater.py:23 +msgid "Downloading the new version..." +msgstr "Az új verzió letöltése..." + +#: update/wxUpdater.py:33 +#, python-format +msgid "Updating... %s of %s" +msgstr "Frissítés... %s per %s" + +#: update/wxUpdater.py:36 +msgid "" +"The update has been downloaded and installed successfully. Press OK to " +"continue." +msgstr "" +"Az új TW Blue verzió letöltése és telepítése befejeződött. Nyomja meg az " +"OK gombot az alkalmazás elindításához." + +#: update/wxUpdater.py:36 +msgid "Done!" +msgstr "Befejeződött!" + +#: wxUI/commonMessageDialogs.py:6 +#, python-brace-format +msgid "Do you really want to close {0}?" +msgstr "Biztosan szeretné bezárni a {0} programot?" + +#: wxUI/commonMessageDialogs.py:6 +msgid "Exit" +msgstr "Kilépés" + +#: wxUI/commonMessageDialogs.py:10 +#, python-brace-format +msgid " {0} must be restarted for these changes to take effect." +msgstr " A {0} programnak újra kell indulnia a változtatások életbe lépéséhez." + +#: wxUI/commonMessageDialogs.py:10 +#, python-brace-format +msgid "Restart {0} " +msgstr "A {0} Újraindítása" + +#: wxUI/commonMessageDialogs.py:13 +#, fuzzy +msgid "" +"Are you sure you want to delete this user from the database? This user " +"will not appear in autocomplete results anymore." +msgstr "" +"Biztosan szeretné törölni a felhasználót az adatbázisból? A felhasználó " +"többé nem fog szerepelni az automatikuskiegészítésekben." + +#: wxUI/commonMessageDialogs.py:13 +msgid "Confirm" +msgstr "Megerősítés" + +#: wxUI/commonMessageDialogs.py:16 +msgid "" +"Do you really want to empty this buffer? It's items will be removed from" +" the list but not from Twitter" +msgstr "" +"Bisztosan szeretné kiüríteni a buffert? A tweetek törlődnek a bufferből, " +"de a Twitteren továbbra is megmaradnak" + +#: wxUI/commonMessageDialogs.py:16 wxUI/dialogs/mastodon/dialogs.py:31 +msgid "Empty buffer" +msgstr "Buffer kiürítése" + +#: wxUI/commonMessageDialogs.py:20 +#, fuzzy +msgid "Do you really want to destroy this buffer?" +msgstr "Bisztosan szeretné törölni ezt a buffert?" + +#: wxUI/commonMessageDialogs.py:23 +#, fuzzy +msgid "That user does not exist" +msgstr "A felhasználó nem létezik" + +#: wxUI/commonMessageDialogs.py:26 +#, fuzzy +msgid "A timeline for this user already exists. You can't open another" +msgstr "Már létezik idővonal ezzel a felhasználóval. Nem nyithat meg újabbat" + +#: wxUI/commonMessageDialogs.py:26 +msgid "Existing timeline" +msgstr "Létező idővonal" + +#: wxUI/commonMessageDialogs.py:29 +#, python-brace-format +msgid "" +"If you like {0} we need your help to keep it going. Help us by donating " +"to the project. This will help us pay for the server, the domain and some" +" other things to ensure that {0} will be actively maintained. Your " +"donation will give us the means to continue the development of {0}, and " +"to keep {0} free. Would you like to donate now?" +msgstr "" + +#: wxUI/commonMessageDialogs.py:29 +msgid "We need your help" +msgstr "" + +#: wxUI/commonMessageDialogs.py:33 wxUI/dialogs/mastodon/postDialogs.py:207 +#, fuzzy +msgid "Information" +msgstr "%s adatai" + +#: wxUI/commonMessageDialogs.py:36 +msgid "The configuration file is invalid." +msgstr "" + +#: wxUI/commonMessageDialogs.py:39 +#, python-brace-format +msgid "" +"{0} quit unexpectedly the last time it was run. If the problem persists, " +"please report it to the {0} developers." +msgstr "" + +#: wxUI/commonMessageDialogs.py:39 +msgid "Warning" +msgstr "Figyelem" + +#: wxUI/commonMessageDialogs.py:45 +#, python-brace-format +msgid "Sorry, you can't update while running {} from source." +msgstr "" + +#: wxUI/commonMessageDialogs.py:49 +msgid "the provided instance is invalid. Please try again." +msgstr "" + +#: wxUI/commonMessageDialogs.py:49 +#, fuzzy +msgid "Invalid instance" +msgstr "Érvénytelen billentyűparancs" + +#: wxUI/commonMessageDialogs.py:52 +msgid "" +"TWBlue was unable to add or update the filter with the specified " +"settings. Please try again." +msgstr "" + +#: wxUI/commonMessageDialogs.py:55 +msgid "" +"TWBlue was unable to load your filters from the instance. Please try " +"again." +msgstr "" + +#: wxUI/commonMessageDialogs.py:58 +#, fuzzy +msgid "Do you really want to delete this filter ?" +msgstr "Bisztosan szeretné törölni ezt a fiókot?" + +#: wxUI/commonMessageDialogs.py:58 +#, fuzzy +msgid "Delete filter" +msgstr "Új lista létrehozása" + +#: wxUI/commonMessageDialogs.py:61 +msgid "TWBlue was unable to remove the filter you specified. Please try again." +msgstr "" + +#: wxUI/sysTrayIcon.py:36 wxUI/view.py:25 +msgid "&Global settings" +msgstr "&Általános beállítások" + +#: wxUI/sysTrayIcon.py:37 wxUI/view.py:24 +msgid "Account se&ttings" +msgstr "Fiók beállítások" + +#: wxUI/sysTrayIcon.py:39 +msgid "&Show / hide" +msgstr "Megjelenítés / &elrejtés" + +#: wxUI/sysTrayIcon.py:40 wxUI/view.py:74 +msgid "&Documentation" +msgstr "&Dokumentáció" + +#: wxUI/sysTrayIcon.py:41 +msgid "Check for &updates" +msgstr "Frissítések &keresése" + +#: wxUI/sysTrayIcon.py:42 +msgid "&Exit" +msgstr "K&ilépés" + +#: wxUI/view.py:16 +msgid "&Manage accounts" +msgstr "Fiókok ke&zelése" + +#: wxUI/view.py:17 +msgid "&Update profile" +msgstr "&Profil Frissítése" + +#: wxUI/view.py:18 +msgid "&Hide window" +msgstr "Ablak &elrejtése" + +#: wxUI/view.py:20 +msgid "&Lists manager" +msgstr "&Listakezelő" + +#: wxUI/view.py:23 +msgid "&Edit keystrokes" +msgstr "Billentyűparancsok &szerkesztése" + +#: wxUI/view.py:26 +msgid "E&xit" +msgstr "&Kilépés" + +# | msgid "Remove from list" +#: wxUI/view.py:34 +#, fuzzy +msgid "&Remove from favorites" +msgstr "Törlés listáról" + +#: wxUI/view.py:47 +msgid "&Add to list" +msgstr "Hozzáadás &listához" + +#: wxUI/view.py:48 +msgid "R&emove from list" +msgstr "&Törlés listáról" + +#: wxUI/view.py:49 +msgid "Show user &profile" +msgstr "&Felhasználó profiljának megjelenítése" + +#: wxUI/view.py:50 +#, fuzzy +msgid "V&iew likes" +msgstr "&Listák megtekintése" + +#: wxUI/view.py:54 +#, fuzzy +msgid "&Update buffer" +msgstr "Buffer kiürítése" + +#: wxUI/dialogs/mastodon/communityTimeline.py:9 wxUI/view.py:55 +msgid "Create community timeline" +msgstr "" + +#: wxUI/view.py:56 +msgid "New &trending topics buffer..." +msgstr "Új &trendelő témák buffer..." + +#: wxUI/view.py:59 +msgid "Find a string in the currently focused buffer..." +msgstr "Szöveg keresése a jelenlegi bufferben..." + +#: wxUI/view.py:60 +msgid "&Load previous items" +msgstr "&Továbbiak betöltése" + +#: wxUI/dialogs/mastodon/userActions.py:21 wxUI/view.py:62 +msgid "&Mute" +msgstr "&Némítás" + +#: wxUI/view.py:63 +msgid "&Autoread" +msgstr "&Autoolvasás" + +#: wxUI/view.py:64 +msgid "&Clear buffer" +msgstr "Buffer törlése" + +#: wxUI/view.py:65 +msgid "&Destroy" +msgstr "&Törlés" + +#: wxUI/view.py:69 +msgid "&Seek back 5 seconds" +msgstr "" + +#: wxUI/view.py:70 +msgid "&Seek forward 5 seconds" +msgstr "" + +#: wxUI/view.py:75 +msgid "Sounds &tutorial" +msgstr "&Hangtanító" + +#: wxUI/view.py:76 +msgid "&What's new in this version?" +msgstr "&Mi az új ebben a verzióban?" + +#: wxUI/view.py:77 +msgid "&Check for updates" +msgstr "&Frissítések keresése" + +#: wxUI/view.py:78 +msgid "&Report an error" +msgstr "&Hibajelentés" + +#: wxUI/view.py:79 +#, python-brace-format +msgid "{0}'s &website" +msgstr "A {0} &weboldala" + +#: wxUI/view.py:80 +msgid "Get soundpacks for TWBlue" +msgstr "" + +#: wxUI/view.py:81 +#, python-brace-format +msgid "About &{0}" +msgstr "A &{0} Névjegye" + +#: wxUI/view.py:84 +msgid "&Application" +msgstr "&Alkalmazás" + +#: wxUI/view.py:85 +msgid "&Tweet" +msgstr "&Tweet" + +#: wxUI/dialogs/mastodon/userActions.py:10 wxUI/view.py:86 +msgid "&User" +msgstr "&Felhasználó" + +#: wxUI/view.py:87 +msgid "&Buffer" +msgstr "&Buffer" + +#: wxUI/view.py:88 +msgid "&Audio" +msgstr "" + +#: wxUI/view.py:89 +msgid "&Help" +msgstr "&Súgó" + +#: wxUI/view.py:175 +msgid "Address" +msgstr "Cím" + +#: wxUI/view.py:206 +#, python-brace-format +msgid "Your {0} version is up to date" +msgstr "Az ön {0} verziója a legfrissebb" + +#: wxUI/view.py:206 +msgid "Update" +msgstr "Frissítés" + +#: wxUI/buffers/panels.py:12 wxUI/buffers/panels.py:20 +msgid "Login" +msgstr "Bejelentkezés" + +#: wxUI/buffers/panels.py:14 +msgid "Log in automatically" +msgstr "Automatikus bejelentkezés" + +#: wxUI/buffers/panels.py:22 +msgid "Logout" +msgstr "Kijelentkezés" + +#: wxUI/buffers/mastodon/base.py:11 +#: wxUI/buffers/mastodon/conversationList.py:11 wxUI/buffers/mastodon/user.py:8 +#: wxUI/dialogs/mastodon/userTimeline.py:10 wxUI/dialogs/userAliasDialogs.py:14 +msgid "User" +msgstr "Felhasználó" + +#: wxUI/buffers/mastodon/base.py:11 +#: wxUI/buffers/mastodon/conversationList.py:11 +#: wxUI/buffers/mastodon/notifications.py:11 +#: wxUI/dialogs/mastodon/postDialogs.py:37 +#: wxUI/dialogs/mastodon/postDialogs.py:272 +msgid "Text" +msgstr "Szöveg" + +#: wxUI/buffers/mastodon/base.py:11 +#: wxUI/buffers/mastodon/conversationList.py:11 +#: wxUI/buffers/mastodon/notifications.py:11 +#: wxUI/dialogs/mastodon/postDialogs.py:216 +msgid "Date" +msgstr "Dátum" + +#: wxUI/buffers/mastodon/base.py:11 +#: wxUI/buffers/mastodon/conversationList.py:11 +msgid "Client" +msgstr "Kliens" + +#: wxUI/buffers/mastodon/base.py:27 +msgid "Favorite" +msgstr "" + +#: wxUI/buffers/mastodon/base.py:28 +msgid "Bookmark" +msgstr "" + +#: wxUI/buffers/mastodon/base.py:29 +msgid "Direct message" +msgstr "Közvetlen üzenet" + +#: wxUI/buffers/mastodon/notifications.py:23 +#: wxUI/dialogs/mastodon/dialogs.py:23 +msgid "Dismiss" +msgstr "" + +#: wxUI/buffers/mastodon/user.py:19 wxUI/dialogs/userAliasDialogs.py:48 +#, fuzzy +msgid "Actions" +msgstr "Művelet" + +#: wxUI/buffers/mastodon/user.py:20 +#, fuzzy +msgid "Message" +msgstr "Közvetlen üzenetek" + +#: wxUI/dialogs/configuration.py:15 +#, fuzzy +msgid "&Language" +msgstr "Nyelv" + +#: wxUI/dialogs/configuration.py:22 +#, fuzzy, python-brace-format +msgid "&Ask before exiting {0}" +msgstr "Megerősítés kérése a {0} bezárásakor" + +#: wxUI/dialogs/configuration.py:24 +msgid "&Disable Streaming functions" +msgstr "" + +#: wxUI/dialogs/configuration.py:27 +msgid "&Buffer update interval, in minutes" +msgstr "" + +#: wxUI/dialogs/configuration.py:33 +#, fuzzy, python-brace-format +msgid "Pla&y a sound when {0} launches" +msgstr "Hang lejátszása a {0} indulásakor" + +#: wxUI/dialogs/configuration.py:35 +#, fuzzy, python-brace-format +msgid "Sp&eak a message when {0} launches" +msgstr "Üzenet bemondása a {0} indulásakor" + +#: wxUI/dialogs/configuration.py:37 +#, fuzzy +msgid "&Use invisible interface's keyboard shortcuts while GUI is visible" +msgstr "" +"A láthatatlan felület billentyűparancsainak használata a grafikus " +"felületen" + +#: wxUI/dialogs/configuration.py:39 +#, fuzzy +msgid "A&ctivate Sapi5 when any other screen reader is not being run" +msgstr "Aktiválja a Sapi5-öt ha nem fut más képernyőolvasó" + +#: wxUI/dialogs/configuration.py:41 +#, fuzzy +msgid "&Hide GUI on launch" +msgstr "Főablak elrejtése indításkor" + +#: wxUI/dialogs/configuration.py:43 +msgid "&Read long posts in GUI" +msgstr "" + +#: wxUI/dialogs/configuration.py:46 +#, fuzzy +msgid "&Keymap" +msgstr "Billentyűparancsok" + +#: wxUI/dialogs/configuration.py:51 +#, fuzzy, python-brace-format +msgid "Check for u&pdates when {0} launches" +msgstr "Üzenet bemondása a {0} indulásakor" + +#: wxUI/dialogs/configuration.py:61 +#, fuzzy +msgid "Proxy &type: " +msgstr "Proxy kiszolgáló: " + +#: wxUI/dialogs/configuration.py:68 +#, fuzzy +msgid "Proxy s&erver: " +msgstr "Proxy kiszolgáló: " + +#: wxUI/dialogs/configuration.py:74 +#, fuzzy +msgid "&Port: " +msgstr "Port: " + +#: wxUI/dialogs/configuration.py:80 +#, fuzzy +msgid "&User: " +msgstr "Felhasználó" + +#: wxUI/dialogs/configuration.py:86 +#, fuzzy +msgid "P&assword: " +msgstr "Jelszó: " + +#: wxUI/dialogs/configuration.py:98 +msgid "Enable automatic s&peech feedback" +msgstr "" + +#: wxUI/dialogs/configuration.py:100 +msgid "Enable automatic &Braille feedback" +msgstr "" + +#: wxUI/dialogs/configuration.py:108 +msgid "Buffer" +msgstr "Buffer" + +#: wxUI/dialogs/configuration.py:108 +msgid "Status" +msgstr "Állapot" + +#: wxUI/dialogs/configuration.py:111 +#, fuzzy +msgid "S&how/hide" +msgstr "Megjelenítés/elrejtés" + +#: wxUI/dialogs/configuration.py:112 +#, fuzzy +msgid "Move &up" +msgstr "Mozgás fel" + +#: wxUI/dialogs/configuration.py:113 +#, fuzzy +msgid "Move &down" +msgstr "Mozgás le" + +#: wxUI/dialogs/configuration.py:123 wxUI/dialogs/configuration.py:188 +#: wxUI/dialogs/configuration.py:191 wxUI/dialogs/configuration.py:196 +msgid "Show" +msgstr "Mutatás" + +#: wxUI/dialogs/configuration.py:125 wxUI/dialogs/configuration.py:135 +#: wxUI/dialogs/configuration.py:159 wxUI/dialogs/configuration.py:189 +msgid "Hide" +msgstr "Elrejtés" + +#: wxUI/dialogs/configuration.py:133 wxUI/dialogs/configuration.py:157 +msgid "Select a buffer first." +msgstr "Először válasszon ki egy buffert." + +#: wxUI/dialogs/configuration.py:136 wxUI/dialogs/configuration.py:160 +msgid "The buffer is hidden, show it first." +msgstr "Ez egy rejtett buffer, előbb jelenítse meg." + +#: wxUI/dialogs/configuration.py:139 +msgid "The buffer is already at the top of the list." +msgstr "A buffer már a lista tetején van." + +#: wxUI/dialogs/configuration.py:163 +msgid "The buffer is already at the bottom of the list." +msgstr "A buffer már a lista alján van." + +#: wxUI/dialogs/configuration.py:205 +msgid "&LibreTranslate API URL: " +msgstr "" + +#: wxUI/dialogs/configuration.py:211 +msgid "LibreTranslate API &Key (optional): " +msgstr "" + +#: wxUI/dialogs/configuration.py:217 +msgid "&DeepL API Key: " +msgstr "" + +#: wxUI/dialogs/configuration.py:231 +#, python-brace-format +msgid "{0} preferences" +msgstr "{0} Beállítások" + +#: wxUI/dialogs/configuration.py:237 wxUI/dialogs/mastodon/configuration.py:144 +msgid "General" +msgstr "Általános" + +#: wxUI/dialogs/configuration.py:242 +msgid "Proxy" +msgstr "Proxy" + +#: wxUI/dialogs/configuration.py:246 +#, fuzzy +msgid "Translation services" +msgstr "Lefordítva" + +#: wxUI/dialogs/configuration.py:251 wxUI/dialogs/mastodon/configuration.py:170 +#, fuzzy +msgid "&Save" +msgstr "Mentés" + +#: wxUI/dialogs/configuration.py:253 +#: wxUI/dialogs/mastodon/communityTimeline.py:27 +#: wxUI/dialogs/mastodon/configuration.py:172 +#: wxUI/dialogs/mastodon/search.py:26 +#: wxUI/dialogs/mastodon/showUserProfile.py:170 +#: wxUI/dialogs/mastodon/updateProfile.py:132 +#: wxUI/dialogs/mastodon/userActions.py:38 +#: wxUI/dialogs/mastodon/userTimeline.py:32 +#, fuzzy +msgid "&Close" +msgstr "Bezárás" + +#: wxUI/dialogs/find.py:13 +msgid "Find in current buffer" +msgstr "Keresés a jelenlegi bufferben" + +#: wxUI/dialogs/find.py:14 +msgid "String" +msgstr "Szöveg" + +#: wxUI/dialogs/find.py:23 wxUI/dialogs/mastodon/showUserProfile.py:33 +msgid "Cancel" +msgstr "Mégse" + +#: wxUI/dialogs/templateDialogs.py:8 +msgid "Edit Template" +msgstr "" + +#: wxUI/dialogs/templateDialogs.py:13 +msgid "Edit template" +msgstr "" + +#: wxUI/dialogs/templateDialogs.py:17 +#, fuzzy +msgid "Available variables" +msgstr "Nem érhető el" + +#: wxUI/dialogs/templateDialogs.py:29 +msgid "Restore template" +msgstr "" + +#: wxUI/dialogs/templateDialogs.py:48 +#, python-brace-format +msgid "Restored template to {}." +msgstr "" + +#: wxUI/dialogs/templateDialogs.py:52 +msgid "" +"the template you have specified include variables that do not exists for " +"the object. Please fix the template and try again. For your reference, " +"you can see a list of all available variables in the variables list while" +" editing your template." +msgstr "" + +#: wxUI/dialogs/templateDialogs.py:52 +#, fuzzy +msgid "Invalid template" +msgstr "Érvénytelen billentyűparancs" + +#: wxUI/dialogs/urlList.py:6 +msgid "Select URL" +msgstr "Válasszon URLt" + +#: wxUI/dialogs/mastodon/userActions.py:13 +#: wxUI/dialogs/mastodon/userTimeline.py:13 wxUI/dialogs/userAliasDialogs.py:13 +msgid "&Autocomplete users" +msgstr "Felhasználók &autokiegészítése" + +#: wxUI/dialogs/userAliasDialogs.py:18 +#, fuzzy +msgid "Alias" +msgstr "mindig" + +#: wxUI/dialogs/userAliasDialogs.py:41 +#, fuzzy +msgid "Edit user aliases" +msgstr "{0} felhasználói adatbázis szerkesztése" + +#: wxUI/dialogs/mastodon/search.py:19 wxUI/dialogs/userAliasDialogs.py:43 +msgid "Users" +msgstr "Felhasználók" + +#: wxUI/dialogs/userAliasDialogs.py:50 +#, fuzzy +msgid "Add alias" +msgstr "Hozzáadás listához" + +#: wxUI/dialogs/userAliasDialogs.py:51 +msgid "Adds a new user alias" +msgstr "" + +#: wxUI/dialogs/userAliasDialogs.py:54 +#, fuzzy +msgid "Edit the currently focused user Alias." +msgstr "Művelet elvégzése a kiválasztott tweeten." + +#: wxUI/dialogs/mastodon/filters/create_filter.py:26 +#: wxUI/dialogs/mastodon/filters/manage_filters.py:24 +#: wxUI/dialogs/userAliasDialogs.py:57 +msgid "Remove" +msgstr "Törlés" + +#: wxUI/dialogs/userAliasDialogs.py:58 +#, fuzzy +msgid "Remove the currently focused user alias." +msgstr "Szöveg keresése a jelenlegi bufferben..." + +#: wxUI/dialogs/userAliasDialogs.py:82 +#, fuzzy +msgid "Are you sure you want to delete this user alias?" +msgstr "Bisztosan szeretné törölni ezt a listát?" + +#: wxUI/dialogs/userAliasDialogs.py:82 +#, fuzzy +msgid "Remove user alias" +msgstr "Felhasználó Törlés" + +#: wxUI/dialogs/userAliasDialogs.py:93 +#, fuzzy +msgid "User alias" +msgstr "Felhasználó információi" + +#: wxUI/dialogs/userList.py:27 +#, fuzzy +msgid "View profile" +msgstr "&Profil Frissítése" + +#: wxUI/dialogs/mastodon/communityTimeline.py:10 +#, fuzzy +msgid "Community URL" +msgstr "Control" + +#: wxUI/dialogs/mastodon/communityTimeline.py:16 +#: wxUI/dialogs/mastodon/userTimeline.py:18 +msgid "Buffer type" +msgstr "Buffertípus" + +#: wxUI/dialogs/mastodon/communityTimeline.py:17 +#, fuzzy +msgid "&Local timeline" +msgstr "Idővonalak" + +#: wxUI/dialogs/mastodon/communityTimeline.py:18 +#, fuzzy +msgid "&Federated Timeline" +msgstr "Felhasználó idővonalának megnyitása" + +#: wxUI/dialogs/mastodon/communityTimeline.py:25 +#: wxUI/dialogs/mastodon/search.py:24 +#: wxUI/dialogs/mastodon/updateProfile.py:130 +#: wxUI/dialogs/mastodon/userActions.py:36 +#: wxUI/dialogs/mastodon/userTimeline.py:30 +#, fuzzy +msgid "&OK" +msgstr "OK" + +#: wxUI/dialogs/mastodon/configuration.py:14 +#, fuzzy +msgid "User autocompletion settings" +msgstr "Felhasználók autokiegészítésének beállítása..." + +#: wxUI/dialogs/mastodon/configuration.py:15 +msgid "" +"Scan acc&ount and add followers and following users to the user " +"autocompletion database" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:16 +#, fuzzy +msgid "&Manage autocompletion database" +msgstr "Felhasználók automatikus kiegészítés adatbázisának kezelése" + +#: wxUI/dialogs/mastodon/configuration.py:21 +msgid "&Disable Streaming API endpoints" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:23 +#, fuzzy +msgid "&Relative timestamps" +msgstr "Relatív idő" + +#: wxUI/dialogs/mastodon/configuration.py:25 +msgid "" +"R&ead preferences from instance (default visibility when publishing and " +"displaying sensitive content)" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:28 +#, fuzzy +msgid "&Items on each API call" +msgstr "Elemek száma API hívásonként" + +# | msgid "" +# | "Inverted buffers: The newest tweets will be shown at the beginning while +# " +# | "the oldest at the end" +#: wxUI/dialogs/mastodon/configuration.py:34 +#, fuzzy +msgid "" +"I&nverted buffers: The newest items will be shown at the beginning while " +"the oldest at the end" +msgstr "" +"Fordított bufferek: a legutolsó tweet a lista tetején lesz, míg a " +"legrégebbi a lista allján" + +#: wxUI/dialogs/mastodon/configuration.py:36 +msgid "&Ask confirmation before boosting a post" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:38 +msgid "S&how screen names instead of full names" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:40 +msgid "Hide e&mojis in usernames" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:42 +#, fuzzy +msgid "" +"&Number of items per buffer to cache in database (0 to disable caching, " +"blank for unlimited)" +msgstr "" +"Az adatbázisban tárolt elemek száma bufferenként (0 a letiltáshoz, vagy " +"hagyja üresen végtelen számú elem tárolásához)" + +#: wxUI/dialogs/mastodon/configuration.py:46 +msgid "" +"&Load cache for items in memory (much faster in big datasets but requires" +" more RAM)" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:53 +#, python-brace-format +msgid "Edit template for &posts. Current template: {}" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:55 +#, python-brace-format +msgid "Edit template for c&onversations. Current template: {}" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:57 +#, python-brace-format +msgid "Edit template for p&ersons. Current template: {}" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:65 +#, fuzzy +msgid "&Volume" +msgstr "Hangerő" + +#: wxUI/dialogs/mastodon/configuration.py:76 +#, fuzzy +msgid "S&ession mute" +msgstr "Munkamenet némítás" + +#: wxUI/dialogs/mastodon/configuration.py:78 +#, fuzzy +msgid "&Output device" +msgstr "Kimeneti hangeszköz" + +#: wxUI/dialogs/mastodon/configuration.py:85 +#, fuzzy +msgid "&Input device" +msgstr "Bemeneti hangeszköz" + +#: wxUI/dialogs/mastodon/configuration.py:93 +#, fuzzy +msgid "Sound &pack" +msgstr "Hangcsomag" + +#: wxUI/dialogs/mastodon/configuration.py:99 +msgid "Indicate &audio or video in posts with sound" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:101 +msgid "Indicate posts containing i&mages with sound" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:124 +#, fuzzy +msgid "&Language for OCR" +msgstr "Nyelv" + +#: wxUI/dialogs/mastodon/configuration.py:149 +msgid "Feedback" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:153 +msgid "Buffers" +msgstr "Buffer" + +#: wxUI/dialogs/mastodon/configuration.py:157 +msgid "Templates" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:161 +msgid "Sound" +msgstr "Hang" + +#: wxUI/dialogs/mastodon/configuration.py:165 +msgid "Extras" +msgstr "" + +# | msgid "Would you like to add a comment to this tweet?" +#: wxUI/dialogs/mastodon/dialogs.py:7 +#, fuzzy +msgid "Would you like to share this post?" +msgstr "Szeretne megjegyzést fűzni a tweethez?" + +#: wxUI/dialogs/mastodon/dialogs.py:15 +#, fuzzy +msgid "" +"Do you really want to delete this post? It will be deleted from the " +"instance as well." +msgstr "" +"Biztosan szeretné törölni ezt az üzenetet? Az üzenet a Twitterről is " +"törlődik." + +#: wxUI/dialogs/mastodon/dialogs.py:15 +msgid "Delete" +msgstr "Törlés" + +#: wxUI/dialogs/mastodon/dialogs.py:23 +msgid "" +"Are you sure you want to dismiss this notification? If you dismiss a " +"mention notification, it also disappears from your mentions buffer. The " +"post is not going to be deleted from the instance, though." +msgstr "" + +# | msgid "" +# | "Do you really want to empty this buffer? It's items will be removed from +# " +# | "the list but not from Twitter" +#: wxUI/dialogs/mastodon/dialogs.py:31 +#, fuzzy +msgid "" +"Do you really want to empty this buffer? It's items will be removed from" +" the list but not from the instance" +msgstr "" +"Bisztosan szeretné kiüríteni a buffert? A tweetek törlődnek a bufferből, " +"de a Twitteren továbbra is megmaradnak" + +#: wxUI/dialogs/mastodon/dialogs.py:38 +#, fuzzy, python-brace-format +msgid "This user has no posts. {0} can't create a timeline." +msgstr "A felhasználó nem rendelkezik tweettel. Nem lehet idővonalat megnyitni" + +#: wxUI/dialogs/mastodon/dialogs.py:43 +#, fuzzy, python-brace-format +msgid "This user has no favorited posts. {0} can't create a timeline." +msgstr "A felhasználó nem rendelkezik tweettel. Nem lehet idővonalat megnyitni" + +#: wxUI/dialogs/mastodon/dialogs.py:48 +#, fuzzy, python-brace-format +msgid "This user has no followers yet. {0} can't create a timeline." +msgstr "A felhasználó nem rendelkezik tweettel. Nem lehet idővonalat megnyitni" + +#: wxUI/dialogs/mastodon/dialogs.py:53 +#, fuzzy, python-brace-format +msgid "This user is not following anyone. {0} can't create a timeline." +msgstr "A felhasználó nem rendelkezik tweettel. Nem lehet idővonalat megnyitni" + +#: wxUI/dialogs/mastodon/dialogs.py:60 +#, python-brace-format +msgid "The focused item has no user in it. {} ca't open a user profile" +msgstr "" + +# | msgid "R&emove from list" +#: wxUI/dialogs/mastodon/menus.py:13 wxUI/dialogs/mastodon/menus.py:41 +#, fuzzy +msgid "R&emove from favorites" +msgstr "&Törlés listáról" + +#: wxUI/dialogs/mastodon/menus.py:15 wxUI/dialogs/mastodon/menus.py:43 +msgid "&Open URL" +msgstr "URL &megnyitása..." + +# | msgid "Search on twitter" +#: wxUI/dialogs/mastodon/menus.py:17 wxUI/dialogs/mastodon/menus.py:47 +#, fuzzy +msgid "&Open in instance" +msgstr "Keresés a Twitteren" + +#: wxUI/dialogs/mastodon/menus.py:19 wxUI/dialogs/mastodon/menus.py:45 +msgid "&Play audio" +msgstr "Hangfájl &Lejátszása" + +#: wxUI/dialogs/mastodon/menus.py:23 wxUI/dialogs/mastodon/menus.py:51 +msgid "&Copy to clipboard" +msgstr "&Másolás vágólapra" + +#: wxUI/dialogs/mastodon/menus.py:27 wxUI/dialogs/mastodon/menus.py:55 +msgid "&User actions..." +msgstr "&Felhasználó műveletek..." + +#: wxUI/dialogs/mastodon/menus.py:53 +msgid "&Dismiss" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:20 +#: wxUI/dialogs/mastodon/postDialogs.py:38 +#, fuzzy +msgid "Attachments" +msgstr "Csatolás" + +#: wxUI/dialogs/mastodon/postDialogs.py:24 +msgid "File" +msgstr "Fájl" + +#: wxUI/dialogs/mastodon/postDialogs.py:25 +msgid "Type" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:26 +#: wxUI/dialogs/mastodon/postDialogs.py:141 +msgid "Description" +msgstr "Leírás" + +# | msgid "Remove client" +#: wxUI/dialogs/mastodon/postDialogs.py:28 +#, fuzzy +msgid "Remove Attachment" +msgstr "Kliens eltávolítása" + +#: wxUI/dialogs/mastodon/postDialogs.py:33 +msgid "Post in the thread" +msgstr "" + +# | msgid "Remove from list" +#: wxUI/dialogs/mastodon/postDialogs.py:40 +#, fuzzy +msgid "Remove post" +msgstr "Törlés listáról" + +#: wxUI/dialogs/mastodon/postDialogs.py:47 +msgid "&Visibility" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:54 +#, fuzzy +msgid "Language" +msgstr "Nyelv" + +#: wxUI/dialogs/mastodon/postDialogs.py:58 +msgid "A&dd" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:59 +msgid "S&ensitive content" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:64 +msgid "Content warning" +msgstr "" + +# | msgid "Add to list" +#: wxUI/dialogs/mastodon/postDialogs.py:71 +#, fuzzy +msgid "Add p&ost" +msgstr "Hozzáadás listához" + +#: wxUI/dialogs/mastodon/postDialogs.py:75 +#, fuzzy +msgid "Auto&complete users" +msgstr "Felhasználók &autokiegészítése" + +#: wxUI/dialogs/mastodon/postDialogs.py:77 +#, fuzzy +msgid "Check &spelling" +msgstr "Helyesírás ellenőrzés..." + +#: wxUI/dialogs/mastodon/postDialogs.py:79 +#, fuzzy +msgid "&Translate" +msgstr "Lefordítva" + +# | msgid "Tweet - %i characters " +#: wxUI/dialogs/mastodon/postDialogs.py:106 +#, fuzzy, python-brace-format +msgid "Post - {} characters" +msgstr "Tweet - %i betű " + +#: wxUI/dialogs/mastodon/postDialogs.py:130 +msgid "Image" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:132 +#, fuzzy +msgid "Video" +msgstr "Elrejtés" + +#: wxUI/dialogs/mastodon/postDialogs.py:134 +msgid "Audio" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:136 +msgid "Poll" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:141 +#, fuzzy +msgid "please provide a description" +msgstr "Leírás" + +#: wxUI/dialogs/mastodon/postDialogs.py:148 +msgid "Select the picture to be uploaded" +msgstr "Válassza ki a feltöltendő képet" + +#: wxUI/dialogs/mastodon/postDialogs.py:148 +msgid "Image files (*.png, *.jpg, *.gif)|*.png; *.jpg; *.gif" +msgstr "Képfájlok (*.png, *.jpg, *.gif)|*.png; *.jpg; *.gif" + +#: wxUI/dialogs/mastodon/postDialogs.py:155 +#, fuzzy +msgid "Select the video to be uploaded" +msgstr "Válassza ki a feltöltendő képet" + +# | msgid "Audio Files (*.mp3, *.ogg, *.wav)|*.mp3; *.ogg; *.wav" +#: wxUI/dialogs/mastodon/postDialogs.py:155 +#, fuzzy +msgid "Video files (*.mp4, *.mov, *.m4v, *.webm)| *.mp4; *.m4v; *.mov; *.webm" +msgstr "Hangfájlok (*.mp3, *.ogg, *.wav)|*.mp3; *.ogg; *.wav" + +#: wxUI/dialogs/mastodon/postDialogs.py:162 +msgid "Select the audio file to be uploaded" +msgstr "Válassza ki a feltöltendő fájlt" + +#: wxUI/dialogs/mastodon/postDialogs.py:162 +msgid "" +"Audio files (*.mp3, *.ogg, *.wav, *.flac, *.opus, *.aac, *.m4a, " +"*.3gp)|*.mp3; *.ogg; *.wav; *.flac; *.opus; *.aac; *.m4a; *.3gp" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:169 +msgid "" +"It is not possible to add more attachments. Please take into account that" +" You can add only a maximum of 4 images, or one audio, video or poll per" +" post. Please remove other attachments before continuing." +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:169 +#, fuzzy +msgid "Error adding attachment" +msgstr "Kliens hozzáadása" + +#: wxUI/dialogs/mastodon/postDialogs.py:172 +msgid "" +"You can add a poll or media files. In order to add your poll, please " +"remove other attachments first." +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:172 +#, fuzzy +msgid "Error adding poll" +msgstr "Kliens hozzáadása" + +# | msgid "Tweet - %i characters " +#: wxUI/dialogs/mastodon/postDialogs.py:177 +#, fuzzy, python-format +msgid "Post - %i characters " +msgstr "Tweet - %i betű " + +#: wxUI/dialogs/mastodon/postDialogs.py:200 +#, fuzzy +msgid "Image description" +msgstr "Leírás" + +# | msgid "Private" +#: wxUI/dialogs/mastodon/postDialogs.py:210 +#, fuzzy +msgid "Privacy" +msgstr "Magán" + +#: wxUI/dialogs/mastodon/postDialogs.py:214 +#, fuzzy +msgid "Source" +msgstr "Forrásnyelv" + +#: wxUI/dialogs/mastodon/postDialogs.py:222 +msgid "Boosts" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:224 +msgid "View users who boosted this post" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:231 +msgid "View users who favorited this post" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:239 +#, fuzzy +msgid "Copy link to clipboard" +msgstr "Másolás vágólapra" + +#: wxUI/dialogs/mastodon/postDialogs.py:241 +#: wxUI/dialogs/mastodon/postDialogs.py:280 +#, fuzzy +msgid "Check &spelling..." +msgstr "Helyesírás ellenőrzés..." + +#: wxUI/dialogs/mastodon/postDialogs.py:242 +#: wxUI/dialogs/mastodon/postDialogs.py:281 +#, fuzzy +msgid "&Translate..." +msgstr "Fordítás..." + +#: wxUI/dialogs/mastodon/postDialogs.py:243 +#: wxUI/dialogs/mastodon/postDialogs.py:282 +#, fuzzy +msgid "C&lose" +msgstr "Bezárás" + +#: wxUI/dialogs/mastodon/postDialogs.py:294 +msgid "Add a poll" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:298 +msgid "Participation time" +msgstr "" + +# | msgid "%d minutes, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "5 minutes" +msgstr "%d perc, " + +# | msgid "%d minutes, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "30 minutes" +msgstr "%d perc, " + +# | msgid "%d hour, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "1 hour" +msgstr "%d óra, " + +# | msgid "%d hours, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "6 hours" +msgstr "%d óra, " + +# | msgid "%d day, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "1 day" +msgstr "%d nap, " + +# | msgid "%d days, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "2 days" +msgstr "%d nap, " + +# | msgid "%d days, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "3 days" +msgstr "%d nap, " + +# | msgid "%d days, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "4 days" +msgstr "%d nap, " + +# | msgid "%d days, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "5 days" +msgstr "%d nap, " + +# | msgid "%d days, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "6 days" +msgstr "%d nap, " + +# | msgid "%d days, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "7 days" +msgstr "%d nap, " + +#: wxUI/dialogs/mastodon/postDialogs.py:304 +msgid "Choices" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:308 +msgid "Option 1" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:315 +msgid "Option 2" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:322 +msgid "Option 3" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:329 +msgid "Option 4" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:334 +msgid "Allow multiple choices per user" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:337 +msgid "Hide votes count until the poll expires" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:363 +msgid "Please make sure you have provided at least two options for the poll." +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:363 +#, fuzzy +msgid "Not enough information" +msgstr "%s adatai" + +#: wxUI/dialogs/mastodon/postDialogs.py:368 +msgid "Vote in this poll" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:371 +#, fuzzy +msgid "Options" +msgstr "Művelet" + +# | msgid "&Search" +#: wxUI/dialogs/mastodon/search.py:9 +#, fuzzy +msgid "Search" +msgstr "&Keresés" + +#: wxUI/dialogs/mastodon/search.py:18 +msgid "Posts" +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:22 +#, fuzzy +msgid "Select user" +msgstr "Válasszon URLt" + +#: wxUI/dialogs/mastodon/showUserProfile.py:73 +#, fuzzy, python-brace-format +msgid "{}'s Profile" +msgstr "&Profil Frissítése" + +#: wxUI/dialogs/mastodon/showUserProfile.py:79 +#, fuzzy +msgid "&Name: " +msgstr "Név" + +#: wxUI/dialogs/mastodon/showUserProfile.py:84 +#, fuzzy +msgid "&URL: " +msgstr "Felhasználó" + +#: wxUI/dialogs/mastodon/showUserProfile.py:89 +msgid "&Bio: " +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:94 +msgid "&Joined at: " +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:99 +#, fuzzy +msgid "&Actions" +msgstr "Művelet" + +#: wxUI/dialogs/mastodon/showUserProfile.py:104 +#, fuzzy +msgid "Header: " +msgstr "Elrejtés" + +#: wxUI/dialogs/mastodon/showUserProfile.py:112 +msgid "Avatar: " +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:122 +#, python-brace-format +msgid "Field &{} - Label: " +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:129 +#, fuzzy +msgid "Content: " +msgstr "Szövegkörnyezet" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:43 +#: wxUI/dialogs/mastodon/filters/create_filter.py:65 +#: wxUI/dialogs/mastodon/showUserProfile.py:135 +msgid "Yes" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:43 +#: wxUI/dialogs/mastodon/filters/create_filter.py:65 +#: wxUI/dialogs/mastodon/filters/create_filter.py:69 +#: wxUI/dialogs/mastodon/showUserProfile.py:135 +msgid "No" +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:137 +#, fuzzy +msgid "&Private account: " +msgstr "Fiók eltávolítása" + +#: wxUI/dialogs/mastodon/showUserProfile.py:144 +#, fuzzy +msgid "&Bot account: " +msgstr "Fiók" + +#: wxUI/dialogs/mastodon/showUserProfile.py:151 +#, fuzzy +msgid "&Discoverable account: " +msgstr "Fiók eltávolítása" + +#: wxUI/dialogs/mastodon/showUserProfile.py:157 +#, python-brace-format +msgid "{} p&osts. Click to open posts timeline" +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:162 +#, python-brace-format +msgid "{} &following. Click to open Following timeline" +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:166 +#, python-brace-format +msgid "{} fo&llowers. Click to open followers timeline" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:43 +msgid "&Display Name" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:50 +#, fuzzy +msgid "&Bio" +msgstr "&Letiltás" + +#: wxUI/dialogs/mastodon/updateProfile.py:58 +#, fuzzy +msgid "Header" +msgstr "Elrejtés" + +#: wxUI/dialogs/mastodon/updateProfile.py:71 +#, fuzzy +msgid "Change &header" +msgstr "Elrejtés" + +#: wxUI/dialogs/mastodon/updateProfile.py:79 +msgid "Avatar" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:92 +msgid "Change &avatar" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:102 +#, python-brace-format +msgid "Field &{}: Label" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:110 +#, fuzzy +msgid "Content" +msgstr "Szövegkörnyezet" + +#: wxUI/dialogs/mastodon/updateProfile.py:120 +#, fuzzy +msgid "&Private account" +msgstr "Fiók eltávolítása" + +#: wxUI/dialogs/mastodon/updateProfile.py:122 +#, fuzzy +msgid "&Bot account" +msgstr "Fiók" + +#: wxUI/dialogs/mastodon/updateProfile.py:124 +#, fuzzy +msgid "&Discoverable account" +msgstr "Fiók eltávolítása" + +#: wxUI/dialogs/mastodon/updateProfile.py:167 +msgid "Select header image - max 2MB" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:172 +#: wxUI/dialogs/mastodon/updateProfile.py:194 +msgid "The selected file is larger than 2MB. Do you want to select another file?" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:173 +#: wxUI/dialogs/mastodon/updateProfile.py:195 +msgid "File more than 2MB" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:189 +msgid "Select avatar image - max 2MB" +msgstr "" + +#: wxUI/dialogs/mastodon/userActions.py:19 +msgid "&Follow" +msgstr "&Követés" + +#: wxUI/dialogs/mastodon/userActions.py:20 +#, fuzzy +msgid "U&nfollow" +msgstr "Elhagyás" + +#: wxUI/dialogs/mastodon/userActions.py:22 +#, fuzzy +msgid "Unmu&te" +msgstr "Némítás visszavonása" + +#: wxUI/dialogs/mastodon/userActions.py:23 +msgid "&Block" +msgstr "&Letiltás" + +#: wxUI/dialogs/mastodon/userActions.py:24 +#, fuzzy +msgid "Unbl&ock" +msgstr "Engedélyezés" + +#: wxUI/dialogs/mastodon/userTimeline.py:9 +#, python-format +msgid "Timeline for %s" +msgstr "%s idővonala" + +#: wxUI/dialogs/mastodon/userTimeline.py:19 +msgid "&Posts" +msgstr "" + +#: wxUI/dialogs/mastodon/userTimeline.py:20 +#, fuzzy +msgid "&Followers" +msgstr "Követők" + +#: wxUI/dialogs/mastodon/userTimeline.py:21 +#, fuzzy +msgid "Fo&llowing" +msgstr "Elhagyás" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:12 +#, fuzzy +msgid "Keyword" +msgstr "Billentyű" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:13 +#: wxUI/dialogs/mastodon/filters/create_filter.py:24 +msgid "Whole word" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:19 +msgid "Keyword:" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:25 +#: wxUI/dialogs/mastodon/filters/manage_filters.py:22 +#, fuzzy +msgid "Add" +msgstr "Cím" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:34 +msgid "Palabras clave a filtrar:" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:74 +#, fuzzy +msgid "New filter" +msgstr "Fiókok ke&zelése" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:78 +#, fuzzy +msgid "Home timeline" +msgstr "Idővonalak" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:79 +msgid "Public statuses" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:81 +#, fuzzy +msgid "Threads" +msgstr "Üzemkész" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:82 +#, fuzzy +msgid "Profiles" +msgstr "&Profil Frissítése" + +# | msgid "Delete" +#: wxUI/dialogs/mastodon/filters/create_filter.py:86 +#, fuzzy +msgid "Hide posts" +msgstr "Törlés" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:87 +msgid "Set a content warning to posts" +msgstr "" + +# | msgid "%d hours, " +#: wxUI/dialogs/mastodon/filters/create_filter.py:91 +#, fuzzy +msgid "Hours" +msgstr "%d óra, " + +# | msgid "%d days, " +#: wxUI/dialogs/mastodon/filters/create_filter.py:92 +#, fuzzy +msgid "Days" +msgstr "%d nap, " + +#: wxUI/dialogs/mastodon/filters/create_filter.py:93 +msgid "Weeks" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:94 +msgid "months" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:97 +#, fuzzy +msgid "Title:" +msgstr "Fájl" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:104 +#, fuzzy +msgid "Apply to:" +msgstr "Válasz %s felhasználónak" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:114 +#, fuzzy +msgid "Action:" +msgstr "Művelet" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:122 +msgid "Expires in:" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/manage_filters.py:10 +#, fuzzy +msgid "Filters" +msgstr "Fájl" + +#: wxUI/dialogs/mastodon/filters/manage_filters.py:15 +#, fuzzy +msgid "Title" +msgstr "Fájl" + +#: wxUI/dialogs/mastodon/filters/manage_filters.py:16 +msgid "Keywords" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/manage_filters.py:17 +#, fuzzy +msgid "Contexts" +msgstr "Szövegkörnyezet" + +#: wxUI/dialogs/mastodon/filters/manage_filters.py:19 +msgid "Expires" +msgstr "" + +#~ msgid "There are no results for the coordinates in this tweet" +#~ msgstr "Nincs találat a tweethez tartozó koordinátákhoz" + +#~ msgid "This list is already opened" +#~ msgstr "Ez a lista már meg van nyitva" + +# | msgid "Timeline for {}" +#~ msgid "Timelines for {}" +#~ msgstr "{} idővonala" + +#~ msgid "{account_name} (Mastodon)" +#~ msgstr "" + +#~ msgid "URL of mastodon instance:" +#~ msgstr "" + +# | msgid "View &address" +#~ msgid "Email address:" +#~ msgstr "&Cím megjelenítése" + +# | msgid "Password: " +#~ msgid "Password:" +#~ msgstr "Jelszó: " + +# | msgid "Item" +#~ msgid "&Item" +#~ msgstr "Elem" + +#~ msgid "Visibility" +#~ msgstr "" + +#~ msgid "Sensitive content" +#~ msgstr "" + +#~ msgid "Allow multiple votes per user" +#~ msgstr "" + +#~ msgid "{username} has mentionned you: {status}" +#~ msgstr "" + +#~ msgid "has mentionned you: {status}" +#~ msgstr "" + +#~ msgid "Likes for {}" +#~ msgstr "{} listája" + +#~ msgid "Trending topics for %s" +#~ msgstr "%s trendelő témái" + +#~ msgid "Select user" +#~ msgstr "Válasszon felhasználót" + +#~ msgid "Sent direct messages" +#~ msgstr "Elküldött közvetlen üzenetek" + +#~ msgid "Sent tweets" +#~ msgstr "Elküldött tweetek" + +#~ msgid "Likes" +#~ msgstr "" + +#~ msgid "Friends" +#~ msgstr "Barátok" + +#~ msgid "{username}'s likes" +#~ msgstr "" + +#~ msgid "{username}'s friends" +#~ msgstr "" + +#~ msgid "Tweet" +#~ msgstr "Tweet" + +#~ msgid "Write the tweet here" +#~ msgstr "Írja ide a tweetet" + +#~ msgid "New tweet in {0}" +#~ msgstr "Új tweet" + +#~ msgid "{0} new tweets in {1}." +#~ msgstr "" + +#~ msgid "Reply to {arg0}" +#~ msgstr "Válasz %s felhasználónak" + +#~ msgid "Reply to %s" +#~ msgstr "Válasz %s felhasználónak" + +#~ msgid "Direct message to %s" +#~ msgstr "Közvetlen üzenet %s felhasználónak" + +#~ msgid "New direct message" +#~ msgstr "Új közvetlen üzenet" + +#~ msgid "This action is not supported on protected accounts." +#~ msgstr "Ez a művelet nem támogatott ebben a bufferben" + +#~ msgid "Quote" +#~ msgstr "" + +#~ msgid "Add your comment to the tweet" +#~ msgstr "Adja hozzá megjegyzését a tweethez" + +#~ msgid "User details" +#~ msgstr "Felhasználó információi" + +#~ msgid "MMM D, YYYY. H:m" +#~ msgstr "dddd, MMMM D, YYYY H:m:s" + +#~ msgid "There are no coordinates in this tweet" +#~ msgstr "Nincsenek koordináták ebben a tweetben" + +#~ msgid "Error decoding coordinates. Try again later." +#~ msgstr "Hiba a koordináták dekódolásakor. Próbálja meg újra később." + +#~ msgid "Invalid buffer" +#~ msgstr "Érvénytelen felhasználói token" + +#~ msgid "{0} new direct messages." +#~ msgstr "Új közvetlen üzenet" + +#~ msgid "This action is not supported in the buffer yet." +#~ msgstr "Ez a művelet nem támogatott ebben a bufferben" + +#~ msgid "" +#~ "Getting more items cannot be done " +#~ "in this buffer. Use the direct " +#~ "messages buffer instead." +#~ msgstr "" + +#~ msgid "Mention" +#~ msgstr "Említés" + +#~ msgid "Mention to %s" +#~ msgstr "%s megemlítése" + +#~ msgid "{0} new followers." +#~ msgstr "Új követő." + +#~ msgid "This action is not supported in the buffer, yet." +#~ msgstr "Ez a művelet nem támogatott ebben a bufferben" + +#~ msgid "&Retweet" +#~ msgstr "&Retweet" + +#~ msgid "&Like" +#~ msgstr "" + +#~ msgid "&Unlike" +#~ msgstr "" + +#~ msgid "View &address" +#~ msgstr "&Cím megjelenítése" + +#~ msgid "&View lists" +#~ msgstr "&Listák megtekintése" + +#~ msgid "View likes" +#~ msgstr "&Listák megtekintése" + +#~ msgid "Likes timelines" +#~ msgstr "Kedvencek Idővonalai" + +#~ msgid "Followers timelines" +#~ msgstr "Kedvencek Idővonalai" + +#~ msgid "Following timelines" +#~ msgstr "Kedvencek Idővonalai" + +#~ msgid "Lists" +#~ msgstr "Listák" + +#~ msgid "List for {}" +#~ msgstr "{} listája" + +#~ msgid "Filters cannot be applied on this buffer" +#~ msgstr "Ez a művelet nem támogatott ebben a bufferben" + +#~ msgid "View item" +#~ msgstr "&Listák megtekintése" + +#~ msgid "Ask" +#~ msgstr "Kérdez" + +#~ msgid "Retweet without comments" +#~ msgstr "Retweet szöveg hozzáadása nélkül" + +#~ msgid "Retweet with comments" +#~ msgstr "Retweet szöveg hozzáadásával" + +#~ msgid "Edit template for tweets. Current template: {}" +#~ msgstr "" + +#~ msgid "Edit template for direct messages. Current template: {}" +#~ msgstr "" + +#~ msgid "Edit template for sent direct messages. Current template: {}" +#~ msgstr "" + +#~ msgid "User has been suspended" +#~ msgstr "Frissült egy keresőbuffer" + +#~ msgid "Information for %s" +#~ msgstr "%s adatai" + +#~ msgid "Discarded" +#~ msgstr "Törölve" + +#~ msgid "Username: @%s\n" +#~ msgstr "Felhasználó: @%s\n" + +#~ msgid "Name: %s\n" +#~ msgstr "Név: %s\n" + +#~ msgid "Location: %s\n" +#~ msgstr "Tartózkodási hely: %s\n" + +#~ msgid "URL: %s\n" +#~ msgstr "URL: %s\n" + +#~ msgid "Bio: %s\n" +#~ msgstr "Bio: %s\n" + +#~ msgid "Yes" +#~ msgstr "Igen" + +#~ msgid "No" +#~ msgstr "Nem" + +#~ msgid "Protected: %s\n" +#~ msgstr "Levédve: %s\n" + +#~ msgid "Relationship: " +#~ msgstr "" + +#~ msgid "You follow {0}. " +#~ msgstr "" + +#~ msgid "{0} is following you." +#~ msgstr "" + +#~ msgid "" +#~ "Followers: %s\n" +#~ " Friends: %s\n" +#~ msgstr "" +#~ "Követők: %s\n" +#~ "Barátok: %s\n" + +#~ msgid "Verified: %s\n" +#~ msgstr "Ellenőrzött: %s\n" + +#~ msgid "Tweets: %s\n" +#~ msgstr "Tweetek: %s\n" + +#~ msgid "Likes: %s" +#~ msgstr "Kedvencek: %s" + +#~ msgid "You can't ignore direct messages" +#~ msgstr "Nem tud közvetlen üzeneteket figyelmen kívül hagyni" + +#~ msgid "Attaching..." +#~ msgstr "Csatolás..." + +#~ msgid "Pause" +#~ msgstr "Szünet" + +#~ msgid "&Resume" +#~ msgstr "Folytatás" + +#~ msgid "Resume" +#~ msgstr "Folytatás" + +#~ msgid "&Pause" +#~ msgstr "Szünet" + +#~ msgid "&Stop" +#~ msgstr "Leállítás" + +#~ msgid "Recording" +#~ msgstr "Felvétel folyamatban" + +#~ msgid "Stopped" +#~ msgstr "Leállítva" + +#~ msgid "&Record" +#~ msgstr "Felvétel" + +#~ msgid "&Play" +#~ msgstr "Lejátszás" + +#~ msgid "Recoding audio..." +#~ msgstr "Audio újrakódolása..." + +#~ msgid "Error in file upload: {0}" +#~ msgstr "Hibakód {0}" + +#~ msgid "Transferred" +#~ msgstr "Továbbítva" + +#~ msgid "Total file size" +#~ msgstr "Teljes fájlméret" + +#~ msgid "Transfer rate" +#~ msgstr "Átviteli sebesség" + +#~ msgid "Time left" +#~ msgstr "Hátralévő idő" + +#~ msgid "Attach audio" +#~ msgstr "Hangfájl Csatolása" + +#~ msgid "&Add an existing file" +#~ msgstr "Létező fájl hozzáadása" + +#~ msgid "&Discard" +#~ msgstr "Törlés" + +#~ msgid "Upload to" +#~ msgstr "Feltöltés" + +#~ msgid "Attach" +#~ msgstr "Csatolás" + +#~ msgid "&Cancel" +#~ msgstr "Mégse" + +#~ msgid "Audio Files (*.mp3, *.ogg, *.wav)|*.mp3; *.ogg; *.wav" +#~ msgstr "Hangfájlok (*.mp3, *.ogg, *.wav)|*.mp3; *.ogg; *.wav" + +#~ msgid "You have to start writing" +#~ msgstr "El kell kezdenie gépelni" + +#~ msgid "There are no results in your users database" +#~ msgstr "Nincs találat a felhasználói adatbázisban" + +#~ msgid "Autocompletion only works for users." +#~ msgstr "Az automatikus kiegészítés csak felhasználók esetén működik." + +#~ msgid "" +#~ "Updating database... You can close this" +#~ " window now. A message will tell " +#~ "you when the process finishes." +#~ msgstr "" +#~ "Adatbázis frissítése... Bezárhatja ezt az " +#~ "ablakot. Üzenetet fog kapni a művelet" +#~ " befejezésekor." + +#~ msgid "Manage Autocompletion database" +#~ msgstr "Felhasználók automatikus kiegészítés adatbázisának kezelése" + +#~ msgid "Editing {0} users database" +#~ msgstr "{0} felhasználói adatbázis szerkesztése" + +#~ msgid "Username" +#~ msgstr "Felhasználónév" + +#~ msgid "Add user" +#~ msgstr "Felhasználó Hozzáadás" + +#~ msgid "Remove user" +#~ msgstr "Felhasználó Törlés" + +#~ msgid "Twitter username" +#~ msgstr "Twitter Felhasználónév" + +#~ msgid "Add user to database" +#~ msgstr "Felhasználó hozzáadása az adatbázishoz" + +#~ msgid "The user does not exist" +#~ msgstr "A felhasználó nem létezik" + +#~ msgid "Error!" +#~ msgstr "Hiba!" + +#~ msgid "Autocomplete users' settings" +#~ msgstr "Felhasználók autokiegészítésének beállítása" + +#~ msgid "Add followers to database" +#~ msgstr "" + +#~ msgid "Add friends to database" +#~ msgstr "Felhasználó hozzáadása az adatbázishoz" + +#~ msgid "Updating autocompletion database" +#~ msgstr "Felhasználók automatikus kiegészítés adatbázisának kezelése" + +#~ msgid "" +#~ "This process will retrieve the users " +#~ "you selected from Twitter, and add " +#~ "them to the user autocomplete database." +#~ " Please note that if there are " +#~ "many users or you have tried to" +#~ " perform this action less than 15 " +#~ "minutes ago, TWBlue may reach a " +#~ "limit in Twitter API calls when " +#~ "trying to load the users into the" +#~ " database. If this happens, we will" +#~ " show you an error, in which " +#~ "case you will have to try this " +#~ "process again in a few minutes. If" +#~ " this process ends with no error, " +#~ "you will be redirected back to the" +#~ " account settings dialog. Do you want" +#~ " to continue?" +#~ msgstr "" + +#~ msgid "TWBlue has imported {} users successfully." +#~ msgstr "" + +#~ msgid "Done" +#~ msgstr "Kész" + +#~ msgid "Error adding users from Twitter. Please try again in about 15 minutes." +#~ msgstr "" + +#~ msgid "New tweet" +#~ msgstr "Új tweet" + +#~ msgid "Retweet" +#~ msgstr "Retweet" + +#~ msgid "Like a tweet" +#~ msgstr "Új tweet" + +#~ msgid "Like/unlike a tweet" +#~ msgstr "Új tweet" + +#~ msgid "Unlike a tweet" +#~ msgstr "Új tweet" + +#~ msgid "See user details" +#~ msgstr "Felhasználó információi" + +#~ msgid "Show tweet" +#~ msgstr "Tweet megjelenítése" + +#~ msgid "Interact with the currently focused tweet." +#~ msgstr "Művelet elvégzése a kiválasztott tweeten." + +#~ msgid "View in Twitter" +#~ msgstr "Keresés a Twitteren" + +#~ msgid "Edit profile" +#~ msgstr "Profil szerkesztése" + +#~ msgid "Delete a tweet or direct message" +#~ msgstr "Tweet vagy közvetlen üzenet törlése" + +#~ msgid "Add to list" +#~ msgstr "Hozzáadás listához" + +#~ msgid "Remove from list" +#~ msgstr "Törlés listáról" + +#~ msgid "Search on twitter" +#~ msgstr "Keresés a Twitteren" + +#~ msgid "Show lists for a specified user" +#~ msgstr "A megadott felhasználó listáinak megjelenítése" + +#~ msgid "Get geolocation" +#~ msgstr "Tartózkodási hely" + +#~ msgid "Display the tweet's geolocation in a dialog" +#~ msgstr "Megjeleníti a tweet helyét egy párbeszédablakban" + +#~ msgid "Create a trending topics buffer" +#~ msgstr "Népszerű témák megtekintése" + +#~ msgid "" +#~ "Opens the list manager, which allows " +#~ "you to create, edit, delete and " +#~ "open lists in buffers." +#~ msgstr "" + +#~ msgid "Opens the list manager" +#~ msgstr "Listakezelő" + +#~ msgid "{account_name} (Twitter)" +#~ msgstr "" + +#~ msgid "Twitter" +#~ msgstr "Keresés a Twitteren" + +#~ msgid "" +#~ "The request to authorize your Twitter" +#~ " account will be opened in your " +#~ "browser. You only need to do this" +#~ " once. Would you like to continue?" +#~ msgstr "" +#~ "A twitter fiók hitelesítését szolgáló " +#~ "oldal megnyílik a böngészőben. A " +#~ "hitelesítést csak egyszer kell elvégeznie. " +#~ "Szeretné folytatni?" + +#~ msgid "" +#~ "TWBlue is unable to authenticate the " +#~ "account for {} in Twitter. It " +#~ "might be due to an invalid or " +#~ "expired token, revoqued access to the" +#~ " application, or after an account " +#~ "reactivation. Please remove the account " +#~ "manually from your Twitter sessions in" +#~ " order to stop seeing this message." +#~ msgstr "" + +#~ msgid "Authentication error for session {}" +#~ msgstr "" + +#~ msgid "Dm to %s " +#~ msgstr "Dm %s felhasználónak" + +#~ msgid "{0}. Quoted tweet from @{1}: {2}" +#~ msgstr "" + +#~ msgid "Unavailable" +#~ msgstr "Nem érhető el" + +#~ msgid "" +#~ "%s (@%s). %s followers, %s friends, " +#~ "%s tweets. Last tweeted %s. Joined " +#~ "Twitter %s" +#~ msgstr "" +#~ "%s (@%s). %s követők, %s ismerősök, " +#~ "%s tweet. Utoljára tweetelt %s. A " +#~ "Twitterhez csatlakozott %s" + +#~ msgid "No description available" +#~ msgstr "Nem érhető el leírás" + +#~ msgid "private" +#~ msgstr "magán" + +#~ msgid "public" +#~ msgstr "nyilvános" + +#~ msgid "Enter your PIN code here" +#~ msgstr "Írja be a kódot." + +#~ msgid "Authorising account..." +#~ msgstr "Hitelesített fiók %d" + +#~ msgid "" +#~ "We could not authorice your Twitter " +#~ "account to be used in TWBlue. This" +#~ " might be caused due to an " +#~ "incorrect verification code. Please try " +#~ "to add the session again." +#~ msgstr "" + +#~ msgid "%s failed. Reason: %s" +#~ msgstr "%s sikertelen. Ok: %s" + +#~ msgid "Deleted account" +#~ msgstr "Új Fiók" + +#~ msgid "$sender_display_name, $text $date" +#~ msgstr "" + +#~ msgid "" +#~ "$display_name (@$screen_name). $followers followers," +#~ " $following following, $tweets tweets. " +#~ "Joined Twitter $created_at." +#~ msgstr "" + +#~ msgid "Image description: {}." +#~ msgstr "Leírás" + +#~ msgid "RT @{}: {} Quote from @{}: {}" +#~ msgstr "" + +#~ msgid "RT @{}: {}" +#~ msgstr "" + +# | msgid "List for {}" +#~ msgid "{} Quote from @{}: {}" +#~ msgstr "{} listája" + +#~ msgid "Sorry, you are not authorised to see this status." +#~ msgstr "Sajnáljuk, nincs engedélye az állapot megtekintéséhez." + +#~ msgid "Error {0}" +#~ msgstr "Hibakód {0}" + +#~ msgid "{user_1}, {user_2} and {all_users} more: {text}" +#~ msgstr "" + +#~ msgid "" +#~ "This retweet is over 140 characters. " +#~ "Would you like to post it as " +#~ "a mention to the poster with your" +#~ " comments and a link to the " +#~ "original tweet?" +#~ msgstr "" +#~ "A retweet több, mint 140 karakter. " +#~ "Szeretné megemlíteni a felhasználót " +#~ "megjegyzéseivel, valamint az eredeti tweet " +#~ "linkjével?" + +#~ msgid "Would you like to add a comment to this tweet?" +#~ msgstr "Szeretne megjegyzést fűzni a tweethez?" + +#~ msgid "" +#~ "Do you really want to delete this" +#~ " tweet? It will be deleted from " +#~ "Twitter as well." +#~ msgstr "" +#~ "Biztosan szeretné törölni ezt az " +#~ "üzenetet? Az üzenet a Twitterről is " +#~ "törlődik." + +#~ msgid "Enter the name of the client : " +#~ msgstr "Írja be a mellőzött kliens nevét" + +#~ msgid "Add client" +#~ msgstr "Kliens hozzáadása" + +#~ msgid "This user has no tweets, so you can't open a timeline for them." +#~ msgstr "A felhasználó nem rendelkezik tweettel. Nem lehet idővonalat megnyitni" + +#~ msgid "" +#~ "This is a protected Twitter user, " +#~ "which means you can't open a " +#~ "timeline using the Streaming API. The" +#~ " user's tweets will not update due" +#~ " to a twitter policy. Do you " +#~ "want to continue?" +#~ msgstr "" +#~ "Ez egy védett Twitter felhasználó. Ez" +#~ " azt jelenti, hogy nem tud idővonalat" +#~ " megnyitni a Streaming API használatával." +#~ " A felhasználói tweetek nem frissülnek " +#~ "a twitter szabályzata miatt. Szeretné " +#~ "folytatni?" + +#~ msgid "" +#~ "This is a protected user account, " +#~ "you need to follow this user to" +#~ " view their tweets or likes." +#~ msgstr "" +#~ "Ez egy védett felhasználói fiók, a " +#~ "kedvencek vagy a tweetek megtekintéséhez " +#~ "követnie kell." + +#~ msgid "This user has no tweets. {0} can't create a timeline." +#~ msgstr "A felhasználó nem rendelkezik tweettel. Nem lehet idővonalat megnyitni" + +#~ msgid "This user has no favorited tweets. {0} can't create a timeline." +#~ msgstr "A felhasználó nem rendelkezik tweettel. Nem lehet idővonalat megnyitni" + +#~ msgid "This user has no followers. {0} can't create a timeline." +#~ msgstr "A felhasználó nem rendelkezik tweettel. Nem lehet idővonalat megnyitni" + +#~ msgid "This user has no friends. {0} can't create a timeline." +#~ msgstr "A felhasználó nem rendelkezik tweettel. Nem lehet idővonalat megnyitni" + +#~ msgid "Geolocation data: {0}" +#~ msgstr "Tartózkodási hely" + +#~ msgid "Geo data for this tweet" +#~ msgstr "" + +#~ msgid "You have been blocked from viewing this content" +#~ msgstr "" + +#~ msgid "" +#~ "You have been blocked from viewing " +#~ "someone's content. In order to avoid " +#~ "conflicts with the full session, TWBlue" +#~ " will remove the affected timeline." +#~ msgstr "" + +#~ msgid "" +#~ "TWBlue cannot load this timeline because" +#~ " the user has been suspended from " +#~ "Twitter." +#~ msgstr "" + +#~ msgid "Do you really want to delete this filter?" +#~ msgstr "Bisztosan szeretné törölni ezt a listát?" + +#~ msgid "This filter already exists. Please use a different title" +#~ msgstr "" + +#~ msgid "&Show direct message" +#~ msgstr "Közvetlen üzenet M&utatása" + +#~ msgid "&Show event" +#~ msgstr "&Események megjelenítése" + +#~ msgid "Direct &message" +#~ msgstr "Közvetlen üzenet" + +#~ msgid "&Show user" +#~ msgstr "&Felhasználó megjelenítése" + +#~ msgid "Search topic" +#~ msgstr "Keresés" + +#~ msgid "&Tweet about this trend" +#~ msgstr "&Tweetelés erről a trendről" + +#~ msgid "&Show item" +#~ msgstr "&Elem megjelenítése" + +#~ msgid "Update &profile" +#~ msgstr "Profil &frissítése" + +#~ msgid "Event" +#~ msgstr "Esemény" + +#~ msgid "Remove event" +#~ msgstr "Esemény törlése" + +#~ msgid "Trending topic" +#~ msgstr "Trendelő témák" + +#~ msgid "Tweet about this trend" +#~ msgstr "Tweetelés a trendről" + +#~ msgid "" +#~ "Scan account and add friends and " +#~ "followers to the user autocompletion " +#~ "database" +#~ msgstr "" + +#~ msgid "" +#~ "Inverted buffers: The newest tweets will" +#~ " be shown at the beginning while " +#~ "the oldest at the end" +#~ msgstr "" +#~ "Fordított bufferek: a legutolsó tweet a" +#~ " lista tetején lesz, míg a legrégebbi" +#~ " a lista allján" + +#~ msgid "Retweet mode" +#~ msgstr "Retweet mód" + +#~ msgid "" +#~ "Load cache for tweets in memory " +#~ "(much faster in big datasets but " +#~ "requires more RAM)" +#~ msgstr "" + +#~ msgid "Ignored clients" +#~ msgstr "Mellőzött kliensek" + +#~ msgid "Remove client" +#~ msgstr "Kliens eltávolítása" + +#~ msgid "Indicate audio tweets with sound" +#~ msgstr "" + +#~ msgid "Indicate geotweets with sound" +#~ msgstr "" + +#~ msgid "Indicate tweets containing images with sound" +#~ msgstr "" + +#~ msgid "API Key for SndUp" +#~ msgstr "" + +#~ msgid "Create a filter for this buffer" +#~ msgstr "Népszerű témák megtekintése" + +#~ msgid "Filter title" +#~ msgstr "" + +#~ msgid "Filter by word" +#~ msgstr "" + +#~ msgid "Ignore tweets wich contain the following word" +#~ msgstr "" + +#~ msgid "Ignore tweets without the following word" +#~ msgstr "Tweetek figyelmen kívül hagyása ettől a klienstől" + +#~ msgid "word" +#~ msgstr "" + +#~ msgid "Allow retweets" +#~ msgstr "Tweet megjelenítése" + +#~ msgid "Allow quoted tweets" +#~ msgstr "" + +#~ msgid "Allow replies" +#~ msgstr "Kedvencek Idővonalai" + +#~ msgid "Use this term as a regular expression" +#~ msgstr "" + +#~ msgid "Filter by language" +#~ msgstr "Forrásnyelv" + +#~ msgid "Load tweets in the following languages" +#~ msgstr "" + +#~ msgid "Ignore tweets in the following languages" +#~ msgstr "" + +#~ msgid "Don't filter by language" +#~ msgstr "" + +#~ msgid "Supported languages" +#~ msgstr "Forrásnyelv" + +#~ msgid "Add selected language to filter" +#~ msgstr "" + +#~ msgid "Selected languages" +#~ msgstr "Forrásnyelv" + +#~ msgid "You must define a name for the filter before creating it." +#~ msgstr "" + +#~ msgid "Missing filter name" +#~ msgstr "" + +#~ msgid "Manage filters" +#~ msgstr "Fiókok Ke&zelése" + +#~ msgid "Filters" +#~ msgstr "" + +#~ msgid "Filter" +#~ msgstr "" + +#~ msgid "Lists manager" +#~ msgstr "Listakezelő" + +#~ msgid "List" +#~ msgstr "Lista" + +#~ msgid "Owner" +#~ msgstr "Tulajdonos" + +#~ msgid "Members" +#~ msgstr "Elemek" + +#~ msgid "mode" +#~ msgstr "mód" + +#~ msgid "Create a new list" +#~ msgstr "Új lista létrehozása" + +#~ msgid "Open in buffer" +#~ msgstr "Megnyitás bufferben" + +#~ msgid "Viewing lists for %s" +#~ msgstr "%s listái" + +#~ msgid "Subscribe" +#~ msgstr "Feliratkozás" + +#~ msgid "Unsubscribe" +#~ msgstr "Leiratkozás" + +#~ msgid "Name (20 characters maximun)" +#~ msgstr "Név (maximum 20 betű)" + +#~ msgid "Mode" +#~ msgstr "Mód" + +#~ msgid "Private" +#~ msgstr "Magán" + +#~ msgid "Editing the list %s" +#~ msgstr "%s lista szerkesztése" + +#~ msgid "Select a list to add the user" +#~ msgstr "Válasszon egy listát, melyhez hozzá szeretné adni a felhasználót" + +#~ msgid "Add" +#~ msgstr "Hozzáadás" + +#~ msgid "Select a list to remove the user" +#~ msgstr "Válassza ki a listát, melyről felhasználót szeretne törölni" + +#~ msgid "Do you really want to delete this list?" +#~ msgstr "Bisztosan szeretné törölni ezt a listát?" + +#~ msgid "Search on Twitter" +#~ msgstr "Keresés a Twitteren" + +#~ msgid "Tweets" +#~ msgstr "Tweetek" + +#~ msgid "&Language for results: " +#~ msgstr "" + +#~ msgid "any" +#~ msgstr "Május" + +#~ msgid "Results &type: " +#~ msgstr "" + +#~ msgid "Mixed" +#~ msgstr "" + +#~ msgid "Recent" +#~ msgstr "" + +#~ msgid "Popular" +#~ msgstr "" + +#~ msgid "Details" +#~ msgstr "Részletek" + +#~ msgid "&Go to URL" +#~ msgstr "URL megnyitása" + +#~ msgid "View trending topics" +#~ msgstr "Trendelő témák megtekintése" + +#~ msgid "Trending topics by" +#~ msgstr "Trendelő témák" + +#~ msgid "Country" +#~ msgstr "Ország szerint" + +#~ msgid "City" +#~ msgstr "Város szerint" + +#~ msgid "&Location" +#~ msgstr "Tartózkodási hely" + +#~ msgid "Update your profile" +#~ msgstr "Profil frissítése" + +#~ msgid "&Name (50 characters maximum)" +#~ msgstr "Név (maximum 20 betű)" + +#~ msgid "&Website" +#~ msgstr "Weboldal" + +#~ msgid "&Bio (160 characters maximum)" +#~ msgstr "Bio (maximum 160 betű)" + +#~ msgid "Upload a &picture" +#~ msgstr "Kép feltöltése" + +#~ msgid "Upload a picture" +#~ msgstr "Kép feltöltése" + +#~ msgid "Discard image" +#~ msgstr "Kép törlése" + +#~ msgid "&Report as spam" +#~ msgstr "&Spamként jelentés" + +#~ msgid "&Ignore tweets from this client" +#~ msgstr "Tweetek figyelmen kívül hagyása ettől a klienstől" + +#~ msgid "&Tweets" +#~ msgstr "Tweetek" + +#~ msgid "&Likes" +#~ msgstr "Kedvencek: %s" + +#~ msgid "F&riends" +#~ msgstr "Barátok" + +#~ msgid "Delete attachment" +#~ msgstr "Kliens eltávolítása" + +#~ msgid "Added Tweets" +#~ msgstr "Elküldött tweetek" + +#~ msgid "Delete tweet" +#~ msgstr "Elküldött tweetek" + +#~ msgid "A&dd..." +#~ msgstr "" + +#~ msgid "Add t&weet" +#~ msgstr "Új tweet" + +#~ msgid "&Attach audio..." +#~ msgstr "Hang csatolása..." + +#~ msgid "Sen&d" +#~ msgstr "" + +#~ msgid "Video files (*.mp4)|*.mp4" +#~ msgstr "" + +#~ msgid "" +#~ "It is not possible to add more " +#~ "attachments. Please make sure your tweet" +#~ " complies with Twitter'S attachment rules." +#~ " You can add only one video or" +#~ " GIF in every tweet, and a " +#~ "maximum of 4 photos." +#~ msgstr "" + +#~ msgid "&Mention to all" +#~ msgstr "Mind &megemlítése" + +#~ msgid "&Recipient" +#~ msgstr "Címzett" + +#~ msgid "Tweet - %i characters " +#~ msgstr "Tweet - %i betű " + +#~ msgid "Retweets: " +#~ msgstr "Retweetek" + +#~ msgid "Likes: " +#~ msgstr "" + +#~ msgid "View" +#~ msgstr "Nézet" + +#~ msgid "Item" +#~ msgstr "Elem" + +#~ msgid "&Expand URL" +#~ msgstr "URL hosszabbítás" + +#~ msgid "Participation time (in days)" +#~ msgstr "" + +#~ msgid "https://twblue.es/donate" +#~ msgstr "" + +#~ msgid "&Open in Twitter" +#~ msgstr "Keresés a Twitteren" + +#~ msgid "&Show tweet" +#~ msgstr "Tweet &megjelenítése" + +#~ msgid "Translated" +#~ msgstr "Lefordítva" + +#~ msgid "Afrikaans" +#~ msgstr "Afrikai" + +#~ msgid "Albanian" +#~ msgstr "Albán" + +#~ msgid "Amharic" +#~ msgstr "Amhara" + +#~ msgid "Arabic" +#~ msgstr "Arab" + +#~ msgid "Armenian" +#~ msgstr "Örmény" + +#~ msgid "Azerbaijani" +#~ msgstr "Azeri" + +#~ msgid "Basque" +#~ msgstr "Baszk" + +#~ msgid "Belarusian" +#~ msgstr "Belarusz" + +#~ msgid "Bengali" +#~ msgstr "Bengáli" + +#~ msgid "Bihari" +#~ msgstr "Bihári" + +#~ msgid "Bulgarian" +#~ msgstr "Bolgár" + +#~ msgid "Burmese" +#~ msgstr "Burmai" + +#~ msgid "Catalan" +#~ msgstr "Katalán" + +#~ msgid "Cherokee" +#~ msgstr "Csiroki" + +#~ msgid "Chinese" +#~ msgstr "Kínai" + +#~ msgid "Chinese_simplified" +#~ msgstr "Egyszerűsített_kínai" + +#~ msgid "Chinese_traditional" +#~ msgstr "Hagyományos_kínai" + +#~ msgid "Croatian" +#~ msgstr "Horvát" + +#~ msgid "Czech" +#~ msgstr "Cseh" + +#~ msgid "Dhivehi" +#~ msgstr "Dhivehi" + +#~ msgid "Esperanto" +#~ msgstr "Eszperantó" + +#~ msgid "Estonian" +#~ msgstr "Észt" + +#~ msgid "Filipino" +#~ msgstr "filippínó" + +#~ msgid "Galician" +#~ msgstr "Galíciai" + +#~ msgid "Georgian" +#~ msgstr "Grúz" + +#~ msgid "Greek" +#~ msgstr "Görög" + +#~ msgid "Guarani" +#~ msgstr "Guarán" + +#~ msgid "Gujarati" +#~ msgstr "gudzsaráti" + +#~ msgid "Hebrew" +#~ msgstr "Héber" + +#~ msgid "Hindi" +#~ msgstr "Hindi" + +#~ msgid "Icelandic" +#~ msgstr "Izlandi" + +#~ msgid "Indonesian" +#~ msgstr "Indonéz" + +#~ msgid "Inuktitut" +#~ msgstr "Inuktitut" + +#~ msgid "Irish" +#~ msgstr "Ír" + +#~ msgid "Kannada" +#~ msgstr "Kannadai" + +#~ msgid "Kazakh" +#~ msgstr "Kazakh" + +#~ msgid "Khmer" +#~ msgstr "Khmer" + +#~ msgid "Kurdish" +#~ msgstr "Kurd" + +#~ msgid "Kyrgyz" +#~ msgstr "Kyrgyz" + +#~ msgid "Laothian" +#~ msgstr "Laoszi" + +#~ msgid "Latvian" +#~ msgstr "Lett" + +#~ msgid "Lithuanian" +#~ msgstr "Litván" + +#~ msgid "Macedonian" +#~ msgstr "Makedóniai" + +#~ msgid "Malay" +#~ msgstr "Maláj" + +#~ msgid "Malayalam" +#~ msgstr "Malayalam" + +#~ msgid "Maltese" +#~ msgstr "Máltai" + +#~ msgid "Marathi" +#~ msgstr "Marathi" + +#~ msgid "Mongolian" +#~ msgstr "Mongol" + +#~ msgid "Nepali" +#~ msgstr "Nepali" + +#~ msgid "Norwegian" +#~ msgstr "Norvég" + +#~ msgid "Oriya" +#~ msgstr "Oriya" + +#~ msgid "Pashto" +#~ msgstr "Pashto" + +#~ msgid "Persian" +#~ msgstr "Perzsa" + +#~ msgid "Punjabi" +#~ msgstr "Punjabi" + +#~ msgid "Romanian" +#~ msgstr "Román" + +#~ msgid "Sanskrit" +#~ msgstr "Szanszkrit" + +#~ msgid "Serbian" +#~ msgstr "Szerb" + +#~ msgid "Sindhi" +#~ msgstr "Sindhi" + +#~ msgid "Sinhalese" +#~ msgstr "Szinhaléz" + +#~ msgid "Slovak" +#~ msgstr "Szlovák" + +#~ msgid "Slovenian" +#~ msgstr "Szlovén" + +#~ msgid "Swahili" +#~ msgstr "Swahili" + +#~ msgid "Swedish" +#~ msgstr "Svéd" + +#~ msgid "Tajik" +#~ msgstr "Tajik" + +#~ msgid "Tamil" +#~ msgstr "Tamil" + +#~ msgid "Tagalog" +#~ msgstr "Tagalog" + +#~ msgid "Telugu" +#~ msgstr "Telugu" + +#~ msgid "Thai" +#~ msgstr "Táj" + +#~ msgid "Tibetan" +#~ msgstr "Tibeti" + +#~ msgid "Ukrainian" +#~ msgstr "Ukrán" + +#~ msgid "Urdu" +#~ msgstr "Urdu" + +#~ msgid "Uzbek" +#~ msgstr "Üzbég" + +#~ msgid "Uighur" +#~ msgstr "Uighur" + +#~ msgid "Vietnamese" +#~ msgstr "Vietnám" + +#~ msgid "Welsh" +#~ msgstr "Welszi" + +#~ msgid "Yiddish" +#~ msgstr "Yiddi" + +#~ msgid "" +#~ "TWBlue has detected that you're running" +#~ " windows 10 and has changed the " +#~ "default keymap to the Windows 10 " +#~ "keymap. It means that some keyboard " +#~ "shorcuts could be different. Please " +#~ "check the keystroke editor by pressing" +#~ " Alt+Win+K to see all available " +#~ "keystrokes for this keymap." +#~ msgstr "" + +#~ msgid "Boosts: " +#~ msgstr "" + +#~ msgid "Favorites: " +#~ msgstr "" + +#~ msgid "Date: " +#~ msgstr "Dátum" + +#~ msgid "Community for {}" +#~ msgstr "" + +#~ msgid "Run {0} at Windows startup" +#~ msgstr "" + +#~ msgid "Use Codeofdusk's longtweet handlers (may decrease client performance)" +#~ msgstr "" +#~ "A Codeofdusk longtweet kezelők használata " +#~ "(lelassíthatja a kliens működését)" + +#~ msgid "Remember state for mention all and long tweet" +#~ msgstr "" + +#~ msgid "Bio: " +#~ msgstr "" + +#~ msgid "Joined at: " +#~ msgstr "" + +#~ msgid "Field {} - Label: " +#~ msgstr "" + +#~ msgid "{} posts. Click to open posts timeline" +#~ msgstr "" + +#~ msgid "{} following. Click to open Following timeline" +#~ msgstr "" + +#~ msgid "{} followers. Click to open followers timeline" +#~ msgstr "" + +#~ msgid "Display Name" +#~ msgstr "" + +#~ msgid "Bio" +#~ msgstr "" + +#~ msgid "Change header" +#~ msgstr "" + +#~ msgid "Change avatar" +#~ msgstr "" + +#~ msgid "Field {}: Label" +#~ msgstr "" + +#~ msgid "Add following to database" +#~ msgstr "" + +#~ msgid "Disable Streaming functions" +#~ msgstr "" + +#~ msgid "Buffer update interval, in minutes" +#~ msgstr "" + +#~ msgid "Read long posts in GUI" +#~ msgstr "" + +#~ msgid "Enable automatic speech feedback" +#~ msgstr "" + +#~ msgid "Enable automatic Braille feedback" +#~ msgstr "" + +#~ msgid "LibreTranslate API URL: " +#~ msgstr "" + +#~ msgid "LibreTranslate API Key (optional): " +#~ msgstr "" + +#~ msgid "DeepL API Key: " +#~ msgstr "" + +#~ msgid "" +#~ "Scan account and add followers and " +#~ "following users to the user " +#~ "autocompletion database" +#~ msgstr "" + +#~ msgid "Disable Streaming API endpoints" +#~ msgstr "" + +#~ msgid "" +#~ "Read preferences from instance (default " +#~ "visibility when publishing and displaying " +#~ "sensitive content)" +#~ msgstr "" + +#~ msgid "Ask confirmation before boosting a post" +#~ msgstr "" + +#~ msgid "Show screen names instead of full names" +#~ msgstr "" + +#~ msgid "hide emojis in usernames" +#~ msgstr "" + +#~ msgid "" +#~ "Load cache for items in memory " +#~ "(much faster in big datasets but " +#~ "requires more RAM)" +#~ msgstr "" + +#~ msgid "Indicate audio or video in posts with sound" +#~ msgstr "" + +#~ msgid "Indicate posts containing images with sound" +#~ msgstr "" + diff --git a/srcantiguo/locales/it/LC_MESSAGES/twblue.mo b/srcantiguo/locales/it/LC_MESSAGES/twblue.mo new file mode 100644 index 00000000..3442bac0 Binary files /dev/null and b/srcantiguo/locales/it/LC_MESSAGES/twblue.mo differ diff --git a/srcantiguo/locales/it/LC_MESSAGES/twblue.po b/srcantiguo/locales/it/LC_MESSAGES/twblue.po new file mode 100644 index 00000000..833c7ebd --- /dev/null +++ b/srcantiguo/locales/it/LC_MESSAGES/twblue.po @@ -0,0 +1,4944 @@ + +msgid "" +msgstr "" +"Project-Id-Version: TW Blue 0.80\n" +"Report-Msgid-Bugs-To: manuel@manuelcortez.net\n" +"POT-Creation-Date: 2025-04-13 01:18+0000\n" +"PO-Revision-Date: 2022-12-20 22:42+0000\n" +"Last-Translator: Anonymous \n" +"Language: it\n" +"Language-Team: Italian " +"\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.17.0\n" + +#: languageHandler.py:61 +#, fuzzy +msgctxt "languageName" +msgid "Amharic" +msgstr "Amarico" + +#: languageHandler.py:62 +#, fuzzy +msgctxt "languageName" +msgid "Aragonese" +msgstr "Giapponese" + +#: languageHandler.py:63 +#, fuzzy +msgctxt "languageName" +msgid "Spanish" +msgstr "Spagnolo" + +#: languageHandler.py:64 +#, fuzzy +msgctxt "languageName" +msgid "Portuguese" +msgstr "Portoghese" + +#: languageHandler.py:65 +#, fuzzy +msgctxt "languageName" +msgid "Russian" +msgstr "Russo" + +#: languageHandler.py:66 +#, fuzzy +msgctxt "languageName" +msgid "italian" +msgstr "Italiano" + +#: languageHandler.py:67 +#, fuzzy +msgctxt "languageName" +msgid "Turkey" +msgstr "caratteristica" + +#: languageHandler.py:68 +#, fuzzy +msgctxt "languageName" +msgid "Galician" +msgstr "Galiziano" + +#: languageHandler.py:69 +#, fuzzy +msgctxt "languageName" +msgid "Catala" +msgstr "Catalano" + +#: languageHandler.py:70 +#, fuzzy +msgctxt "languageName" +msgid "Vasque" +msgstr "Basco" + +#: languageHandler.py:71 +#, fuzzy +msgctxt "languageName" +msgid "polish" +msgstr "Polacco" + +#: languageHandler.py:72 +#, fuzzy +msgctxt "languageName" +msgid "Arabic" +msgstr "Arabo" + +#: languageHandler.py:73 +#, fuzzy +msgctxt "languageName" +msgid "Nepali" +msgstr "Nepali" + +#: languageHandler.py:74 +msgctxt "languageName" +msgid "Serbian (Latin)" +msgstr "" + +#: languageHandler.py:75 +#, fuzzy +msgctxt "languageName" +msgid "Japanese" +msgstr "Giapponese" + +#: languageHandler.py:99 +msgid "User default" +msgstr "Utente predefinito" + +#: main.py:105 +#, fuzzy +msgid "https://twblue.mcvsoftware.com/donate" +msgstr "https://twblue.es/donate" + +#: main.py:118 +#, python-brace-format +msgid "" +"{0} is already running. Close the other instance before starting this " +"one. If you're sure that {0} isn't running, try deleting the file at {1}." +" If you're unsure of how to do this, contact the {0} developers." +msgstr "" + +#: sound.py:148 +msgid "Playing..." +msgstr "Riproduzione" + +#: sound.py:161 +msgid "Stopped." +msgstr "Arrestato." + +#: controller/mainController.py:261 +msgid "Ready" +msgstr "Pronto" + +#: controller/mainController.py:369 controller/mainController.py:654 +#: controller/mainController.py:673 controller/mainController.py:692 +#: controller/mainController.py:711 +msgid "" +"No session is currently in focus. Focus a session with the next or " +"previous session shortcut." +msgstr "" +"Nessuna sessione focalizzata attualmente. Focalizzare una sessione con " +"l'apposito comando." + +#: controller/mainController.py:373 +msgid "Empty buffer." +msgstr "Svuota Elenco" + +#: controller/mainController.py:380 +#, python-brace-format +msgid "{0} not found." +msgstr "{0} Non trovato." + +#: controller/mainController.py:702 controller/mainController.py:721 +#, python-format +msgid "%s, %s of %s" +msgstr "%s, %s di %s" + +#: controller/mainController.py:704 controller/mainController.py:723 +#: controller/mainController.py:751 controller/mainController.py:779 +#, python-format +msgid "%s. Empty" +msgstr "%s. Vuoto" + +#: controller/mainController.py:739 controller/mainController.py:743 +#: controller/mainController.py:767 +#, python-brace-format +msgid "{0}: This account is not logged into Twitter." +msgstr "{0}: Questo account non è connesso a Twitter." + +#: controller/mainController.py:749 controller/mainController.py:777 +#, python-format +msgid "%s. %s, %s of %s" +msgstr "%s. %s, %s di %s" + +#: controller/mainController.py:771 +#, python-brace-format +msgid "{0}: This account is not logged into twitter." +msgstr "{0}: Questo account non è connesso a Twitter." + +#: controller/mainController.py:910 controller/mainController.py:926 +#, fuzzy +msgid "An error happened while trying to connect to the server. Please try later." +msgstr "" +"Qualcosa di inaspettato si è verificato durante il tentativo di riportare" +" il bug. ;Per favore, riprova più tardi" + +#: controller/mainController.py:957 +msgid "The auto-reading of new tweets is enabled for this buffer" +msgstr "Attivata la lettura automatica per i nuovi tweet in questo buffer;" + +#: controller/mainController.py:960 +msgid "The auto-reading of new tweets is disabled for this buffer" +msgstr "Disattivata la lettura automatica per questo buffer;" + +#: controller/mainController.py:967 +msgid "Session mute on" +msgstr "Session mute on" + +#: controller/mainController.py:970 +msgid "Session mute off" +msgstr "Sessione mute off" + +#: controller/mainController.py:979 +msgid "Buffer mute on" +msgstr "Disattivato" + +#: controller/mainController.py:982 +msgid "Buffer mute off" +msgstr "Attivato" + +#: controller/mainController.py:999 +msgid "Copied" +msgstr "Copiato" + +#: controller/mainController.py:1019 +msgid "Unable to update this buffer." +msgstr "Impossibile aggiornare questo buffer:" + +#: controller/mainController.py:1021 +msgid "Updating buffer..." +msgstr "Buffer aggiornato..." + +#: controller/mainController.py:1024 +#, python-brace-format +msgid "{0} items retrieved" +msgstr "{0} Elementi recuperati" + +#: controller/buffers/mastodon/base.py:137 controller/mainController.py:1028 +#: controller/mastodon/handler.py:98 controller/mastodon/handler.py:241 +#, python-brace-format +msgid "Timeline for {}" +msgstr "Cronologia di {}" + +#: controller/buffers/mastodon/users.py:93 controller/mainController.py:1030 +#: controller/mastodon/handler.py:100 controller/mastodon/handler.py:255 +#, python-brace-format +msgid "Followers for {}" +msgstr "Followers di {}" + +#: controller/mainController.py:1032 +#, python-brace-format +msgid "Friends for {}" +msgstr "Amici di {}" + +# | msgid "Followers for {}" +#: controller/buffers/mastodon/users.py:95 controller/mainController.py:1034 +#: controller/mastodon/handler.py:102 controller/mastodon/handler.py:269 +#, fuzzy, python-brace-format +msgid "Following for {}" +msgstr "Followers di {}" + +#: controller/messages.py:18 +#, fuzzy +msgid "Translated" +msgstr "Tradotto" + +#: controller/settings.py:60 +#, fuzzy +msgid "System default" +msgstr "Utente predefinito" + +#: controller/settings.py:60 +msgid "HTTP" +msgstr "" + +#: controller/settings.py:60 +msgid "SOCKS v4" +msgstr "" + +#: controller/settings.py:60 +msgid "SOCKS v4 with DNS support" +msgstr "" + +#: controller/settings.py:60 +msgid "SOCKS v5" +msgstr "" + +#: controller/settings.py:60 +msgid "SOCKS v5 with DNS support" +msgstr "" + +#: controller/userAlias.py:31 +#, fuzzy, python-brace-format +msgid "Edit alias for {}" +msgstr "Lista per {}" + +#: controller/buffers/base/base.py:91 +#: controller/buffers/mastodon/conversations.py:237 +#: controller/buffers/mastodon/search.py:80 +msgid "This action is not supported for this buffer" +msgstr "Questa azione non è supportata per questo buffer" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:70 +#: controller/mastodon/settings.py:194 +msgid "Home" +msgstr "Cronologia Principale" + +#: controller/buffers/mastodon/base.py:52 +#: controller/buffers/mastodon/community.py:22 +#: controller/mastodon/handler.py:72 controller/mastodon/handler.py:114 +#: controller/mastodon/settings.py:195 +msgid "Local" +msgstr "" + +#: controller/buffers/mastodon/base.py:52 +#: controller/buffers/mastodon/community.py:22 +#: controller/mastodon/handler.py:74 controller/mastodon/settings.py:196 +msgid "Federated" +msgstr "" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:76 +#: controller/mastodon/settings.py:197 +msgid "Mentions" +msgstr "Menzioni" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:84 +#: controller/mastodon/settings.py:201 +msgid "Bookmarks" +msgstr "" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:78 +msgid "Direct messages" +msgstr "Messaggi Ricevuti" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:80 +#: controller/mastodon/settings.py:199 +msgid "Sent" +msgstr "" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:82 +#: controller/mastodon/settings.py:200 wxUI/dialogs/mastodon/postDialogs.py:229 +msgid "Favorites" +msgstr "" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:86 +#: controller/mastodon/settings.py:202 +msgid "Followers" +msgstr "Followers" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:88 +#: controller/mastodon/settings.py:203 +#, fuzzy +msgid "Following" +msgstr "&Non seguire" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:92 +#: controller/mastodon/settings.py:204 +msgid "Blocked users" +msgstr "Utenti bloccati" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:90 +#: controller/mastodon/settings.py:205 +msgid "Muted users" +msgstr "Utenti silenziati" + +# | msgid "&Location" +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:94 +#: controller/mastodon/settings.py:206 +#: wxUI/dialogs/mastodon/filters/create_filter.py:80 +#, fuzzy +msgid "Notifications" +msgstr "&Localizzazione, esterno" + +#: controller/buffers/mastodon/base.py:58 +#, fuzzy, python-brace-format +msgid "{username}'s timeline" +msgstr "Apri una specifica Cronologia per l'utente" + +#: controller/buffers/mastodon/base.py:60 +#, python-brace-format +msgid "{username}'s followers" +msgstr "" + +#: controller/buffers/mastodon/base.py:62 +#, fuzzy, python-brace-format +msgid "{username}'s following" +msgstr "Apri una specifica Cronologia per l'utente" + +#: controller/buffers/mastodon/base.py:64 +#, fuzzy +msgid "Unknown buffer" +msgstr "Sconosciuto" + +#: controller/buffers/mastodon/base.py:67 +#: controller/buffers/mastodon/base.py:645 wxUI/buffers/mastodon/base.py:24 +#: wxUI/buffers/mastodon/conversationList.py:24 +#: wxUI/buffers/mastodon/notifications.py:22 wxUI/buffers/mastodon/user.py:18 +#: wxUI/dialogs/mastodon/postDialogs.py:5 +#: wxUI/dialogs/mastodon/postDialogs.py:194 wxUI/sysTrayIcon.py:35 +msgid "Post" +msgstr "" + +# | msgid "Write the tweet here" +#: controller/buffers/mastodon/base.py:68 +#: controller/buffers/mastodon/base.py:646 +#, fuzzy +msgid "Write your post here" +msgstr "Scrivi il tweet qui" + +#: controller/buffers/mastodon/base.py:153 +#, fuzzy, python-brace-format +msgid "New post in {0}" +msgstr "Nuovo tweet" + +#: controller/buffers/mastodon/base.py:159 +#, fuzzy, python-brace-format +msgid "{0} new posts in {1}." +msgstr "@{0} Cita il tuo tweet: {1}" + +#: controller/buffers/mastodon/base.py:198 +#: controller/buffers/mastodon/community.py:90 +#: controller/buffers/mastodon/conversations.py:100 +#: controller/buffers/mastodon/mentions.py:82 +#: controller/buffers/mastodon/users.py:139 +#, python-format +msgid "%s items retrieved" +msgstr "%s Elementi recuperati" + +#: controller/buffers/mastodon/base.py:216 +#: controller/buffers/mastodon/users.py:206 +msgid "This buffer is not a timeline; it can't be deleted." +msgstr "Impossivile eliminare. Questo buffer non è una Cronologia;" + +# | msgid "Conversation with {0}" +#: controller/buffers/mastodon/base.py:346 +#: controller/buffers/mastodon/base.py:384 +#, fuzzy, python-brace-format +msgid "Conversation with {}" +msgstr "Conversazione con {0}" + +# | msgid "Write the tweet here" +#: controller/buffers/mastodon/base.py:347 +#: controller/buffers/mastodon/base.py:385 +#: controller/buffers/mastodon/conversations.py:181 +#: controller/buffers/mastodon/notifications.py:122 +#: controller/buffers/mastodon/users.py:52 +#, fuzzy +msgid "Write your message here" +msgstr "Scrivi il tweet qui" + +# | msgid "Reply to {arg0}" +#: controller/buffers/mastodon/base.py:349 +#, fuzzy, python-brace-format +msgid "Reply to {}" +msgstr "Rispondi a {arg0}" + +# | msgid "Write the tweet here" +#: controller/buffers/mastodon/base.py:350 +#, fuzzy +msgid "Write your reply here" +msgstr "Scrivi il tweet qui" + +#: controller/buffers/mastodon/base.py:412 +#, fuzzy +msgid "This action is not supported on conversations." +msgstr "Questa azione non è supportata per questo buffer" + +#: controller/buffers/mastodon/base.py:477 +msgid "Opening URL..." +msgstr "Collegamento alla pagina..." + +#: controller/buffers/mastodon/base.py:490 +msgid "You can delete only your own posts." +msgstr "" + +#: controller/buffers/mastodon/base.py:519 +msgid "Opening item in web browser..." +msgstr "" + +#: controller/buffers/mastodon/base.py:527 +#: controller/buffers/mastodon/base.py:547 +msgid "Adding to favorites..." +msgstr "" + +# | msgid "Remove from list" +#: controller/buffers/mastodon/base.py:534 +#: controller/buffers/mastodon/base.py:549 +#, fuzzy +msgid "Removing from favorites..." +msgstr "Rimuovi dalla lista" + +#: controller/buffers/mastodon/base.py:544 +#: controller/buffers/mastodon/base.py:559 +#: controller/buffers/mastodon/base.py:573 +#: controller/buffers/mastodon/conversations.py:213 +msgid "No status found with that ID" +msgstr "Nessuno stato trovato per quel ID" + +#: controller/buffers/mastodon/base.py:562 +msgid "Adding to bookmarks..." +msgstr "" + +#: controller/buffers/mastodon/base.py:564 +msgid "Removing from bookmarks..." +msgstr "" + +#: controller/buffers/mastodon/base.py:586 +#, python-brace-format +msgid "Picture {0}" +msgstr "Immagine {0}" + +#: controller/buffers/mastodon/base.py:587 +msgid "Select the picture" +msgstr "Seleziona immagine" + +#: controller/buffers/mastodon/base.py:610 +msgid "Unable to extract text" +msgstr "Impossibile estrarre il testo" + +#: controller/buffers/mastodon/base.py:612 +msgid "OCR Result" +msgstr "" + +#: controller/buffers/mastodon/base.py:627 +msgid "this poll no longer exists." +msgstr "" + +#: controller/buffers/mastodon/base.py:630 +msgid "This poll has already expired." +msgstr "" + +#: controller/buffers/mastodon/base.py:633 +msgid "You have already voted on this poll." +msgstr "" + +#: controller/buffers/mastodon/base.py:642 +#, fuzzy +msgid "Sending vote..." +msgstr "Ricodifica audio ..." + +# | msgid "Conversation with {0}" +#: controller/buffers/mastodon/conversations.py:180 +#, fuzzy, python-brace-format +msgid "Reply to conversation with {}" +msgstr "Conversazione con {0}" + +# | msgid "Conversation with {0}" +#: controller/buffers/mastodon/notifications.py:121 +#: controller/buffers/mastodon/users.py:51 +#, fuzzy, python-brace-format +msgid "New conversation with {}" +msgstr "Conversazione con {0}" + +#: controller/buffers/mastodon/notifications.py:151 +msgid "Notification dismissed." +msgstr "" + +# | msgid "There are no coordinates in this tweet" +#: controller/buffers/mastodon/users.py:110 +#, fuzzy +msgid "There are no more items in this buffer." +msgstr "Non ci sono coordinate in questo Tweet" + +#: controller/mastodon/handler.py:30 wxUI/dialogs/mastodon/updateProfile.py:35 +#, fuzzy +msgid "Update Profile" +msgstr "Aggiorna il &profilo" + +#: controller/mastodon/handler.py:31 wxUI/dialogs/mastodon/search.py:10 +#: wxUI/view.py:19 +msgid "&Search" +msgstr "&Ricerca" + +#: controller/mastodon/handler.py:33 wxUI/view.py:22 +msgid "Manage user aliases" +msgstr "" + +#: controller/mastodon/handler.py:35 controller/mastodon/handler.py:59 +#: wxUI/view.py:30 +msgid "&Post" +msgstr "" + +#: controller/mastodon/handler.py:36 wxUI/dialogs/mastodon/menus.py:9 +#: wxUI/dialogs/mastodon/menus.py:37 wxUI/view.py:31 +msgid "Re&ply" +msgstr "&Rispondi" + +#: controller/mastodon/handler.py:37 wxUI/dialogs/mastodon/menus.py:7 +#: wxUI/dialogs/mastodon/menus.py:35 wxUI/view.py:32 +msgid "&Boost" +msgstr "" + +# | msgid "&Add to list" +#: controller/mastodon/handler.py:38 wxUI/dialogs/mastodon/menus.py:11 +#: wxUI/dialogs/mastodon/menus.py:39 wxUI/view.py:33 +#, fuzzy +msgid "&Add to favorites" +msgstr "Aggiungi alla &lista" + +# | msgid "Remove from list" +#: controller/mastodon/handler.py:39 +#, fuzzy +msgid "Remove from favorites" +msgstr "Rimuovi dalla lista" + +# | msgid "&Show user" +#: controller/mastodon/handler.py:40 wxUI/dialogs/mastodon/menus.py:21 +#: wxUI/dialogs/mastodon/menus.py:49 wxUI/view.py:35 +#, fuzzy +msgid "&Show post" +msgstr "&Visualizza utente" + +#: controller/mastodon/handler.py:41 wxUI/view.py:36 +msgid "View conversa&tion" +msgstr "Visualizza &conversazione" + +#: controller/mastodon/handler.py:42 wxUI/view.py:37 +msgid "Read text in picture" +msgstr "Lettura testo da un immagine" + +#: controller/mastodon/handler.py:43 wxUI/dialogs/mastodon/menus.py:25 +#: wxUI/view.py:39 +msgid "&Delete" +msgstr "&Elimina Tweet" + +#: controller/mastodon/handler.py:45 wxUI/view.py:43 +msgid "&Actions..." +msgstr "Scegli &Azione..." + +#: controller/mastodon/handler.py:46 wxUI/view.py:44 +msgid "&View timeline..." +msgstr "&Visualizza la Cronologia..." + +#: controller/mastodon/handler.py:47 wxUI/view.py:45 +msgid "Direct me&ssage" +msgstr "Messaggio &diretto" + +#: controller/mastodon/handler.py:48 wxUI/view.py:46 +msgid "Add a&lias" +msgstr "" + +#: controller/mastodon/handler.py:51 +#, fuzzy +msgid "Show user profile" +msgstr "Visualizza il profilo &utente" + +#: controller/mastodon/handler.py:54 +msgid "Create c&ommunity timeline" +msgstr "" + +#: controller/mastodon/handler.py:55 wxUI/view.py:57 +msgid "Create a &filter" +msgstr "Crea &filtro" + +#: controller/mastodon/handler.py:56 wxUI/view.py:58 +msgid "&Manage filters" +msgstr "Gestisci fi<ri" + +#: controller/mastodon/handler.py:95 +msgid "Timelines" +msgstr "Cronologie di..." + +#: controller/mastodon/handler.py:107 +msgid "Searches" +msgstr "Ricerca" + +#: controller/mastodon/handler.py:110 controller/mastodon/handler.py:191 +#: controller/mastodon/handler.py:196 +#, python-brace-format +msgid "Search for {}" +msgstr "Cerca per {0}" + +#: controller/mastodon/handler.py:111 +msgid "Communities" +msgstr "" + +#: controller/mastodon/handler.py:114 +#, fuzzy +msgid "federated" +msgstr "Apri una specifica Cronologia per l'utente" + +#: controller/mastodon/handler.py:143 +#, python-brace-format +msgid "Conversation with {0}" +msgstr "Conversazione con {0}" + +#: controller/mastodon/handler.py:299 +msgid "Add an user alias" +msgstr "" + +#: controller/mastodon/handler.py:311 +#, python-brace-format +msgid "Alias has been set correctly for {}." +msgstr "" + +#: controller/mastodon/handler.py:342 +#, fuzzy +msgid "Update profile" +msgstr "Aggiorna il &profilo" + +#: controller/mastodon/messages.py:115 +#, python-format +msgid "%s - %s of %d characters" +msgstr "%s - %s di %d caratteri" + +#: controller/mastodon/messages.py:239 +#, python-brace-format +msgid "Poll with {} options" +msgstr "" + +# | msgid "List for {}" +#: controller/mastodon/messages.py:272 +#, fuzzy, python-brace-format +msgid "Post from {}" +msgstr "Lista per {}" + +#: controller/mastodon/messages.py:276 sessions/mastodon/templates.py:82 +#: wxUI/dialogs/mastodon/postDialogs.py:49 +msgid "Public" +msgstr "Pubblico" + +# | msgid "Accounts list" +#: controller/mastodon/messages.py:276 sessions/mastodon/templates.py:82 +#: wxUI/dialogs/mastodon/postDialogs.py:49 +#, fuzzy +msgid "Not listed" +msgstr "Elenco Account" + +# | msgid "Followers" +#: controller/mastodon/messages.py:276 +#, fuzzy +msgid "followers only" +msgstr "Followers" + +# | msgid "Direct message" +#: controller/mastodon/messages.py:276 sessions/mastodon/templates.py:82 +#: wxUI/dialogs/mastodon/postDialogs.py:49 +#, fuzzy +msgid "Direct" +msgstr "Messaggio diretto" + +# | msgid "Remove client" +#: controller/mastodon/messages.py:283 +#, fuzzy +msgid "Remote instance" +msgstr "Rimuovi client" + +#: controller/mastodon/messages.py:291 controller/mastodon/messages.py:319 +#, fuzzy +msgid "Unmute conversation" +msgstr "Visualizza conversazione" + +#: controller/mastodon/messages.py:315 wxUI/dialogs/mastodon/postDialogs.py:237 +#, fuzzy +msgid "Mute conversation" +msgstr "Visualizza conversazione" + +# | msgid "Conversation with {0}" +#: controller/mastodon/messages.py:316 +#, fuzzy +msgid "Conversation unmuted." +msgstr "Conversazione con {0}" + +# | msgid "Conversation with {0}" +#: controller/mastodon/messages.py:320 +#, fuzzy +msgid "Conversation muted." +msgstr "Conversazione con {0}" + +#: controller/mastodon/messages.py:331 +msgid "people who boosted this post" +msgstr "" + +#: controller/mastodon/messages.py:336 +msgid "people who favorited this post" +msgstr "" + +#: controller/mastodon/messages.py:342 +#, fuzzy +msgid "Link copied to clipboard." +msgstr "Copia negli appunti" + +#: controller/mastodon/settings.py:82 +#, python-format +msgid "Account settings for %s" +msgstr "Impostazioni Account per %s" + +#: controller/mastodon/settings.py:92 +#, python-brace-format +msgid "Edit template for posts. Current template: {}" +msgstr "" + +#: controller/mastodon/settings.py:101 +#, python-brace-format +msgid "Edit template for conversations. Current template: {}" +msgstr "" + +#: controller/mastodon/settings.py:110 +#, python-brace-format +msgid "Edit template for persons. Current template: {}" +msgstr "" + +#: controller/mastodon/settings.py:198 +msgid "Direct Messages" +msgstr "Messaggi diretti" + +#: controller/mastodon/filters/create_filter.py:75 +#, fuzzy, python-brace-format +msgid "Update Filter: {}" +msgstr "Aggiorna il &profilo" + +#: controller/mastodon/filters/manage_filters.py:57 +#: wxUI/dialogs/mastodon/filters/create_filter.py:90 +msgid "Never" +msgstr "" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:4 +msgid "Audio tweet." +msgstr "Audio tweet." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:5 +msgid "User timeline buffer created." +msgstr "Il Buffer per la Cronologia dell'utente specifico è stato creato." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:6 +msgid "Buffer destroied." +msgstr "Buffer eliminato." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:7 +msgid "Direct message received." +msgstr "Messaggio diretto ricevuto" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:8 +msgid "Direct message sent." +msgstr "Messaggi diretto inviato" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:9 +msgid "Error." +msgstr "Errore" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:10 +msgid "Tweet liked." +msgstr "Tweet marcati con Mi Piace." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:11 +msgid "Likes buffer updated." +msgstr "Un Buffer segnato come Mi Piace è stato aggiornato." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:12 +msgid "Geotweet." +msgstr "GeoTweet." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:13 +msgid "Tweet contains one or more images" +msgstr "Il Tweet contiene una o più immagini" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:14 +msgid "Boundary reached." +msgstr "Boundary reached." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:15 +msgid "List updated." +msgstr "Lista aggiornata." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:16 +msgid "Too many characters." +msgstr "Troppi caratteri" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:17 +msgid "Mention received." +msgstr "Menzione ricevuta." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:18 +msgid "New event." +msgstr "Nuovo evento" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:19 +#, python-brace-format +msgid "{0} is ready." +msgstr "{0} TwBlue è pronto." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:20 +msgid "Mention sent." +msgstr "Menzione Inviata" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:21 +msgid "Tweet retweeted." +msgstr "Tweet retweettati." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:22 +msgid "Search buffer updated." +msgstr "Buffer della Ricerca aggiornato." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:23 +msgid "Tweet received." +msgstr "Tweet ricevuto." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:24 +msgid "Tweet sent." +msgstr "Tweet inviato" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:25 +msgid "Trending topics buffer updated." +msgstr "Il buffer degli argomenti di tendenza è stato aggiornato." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:26 +msgid "New tweet in user timeline buffer." +msgstr "Nuovo tweet nel buffer della Cronologia utente specifico." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:27 +msgid "New follower." +msgstr "Nuovo follower." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:28 +msgid "Volume changed." +msgstr "Volume modificato." + +#: extra/SoundsTutorial/wx_ui.py:8 +msgid "Sounds tutorial" +msgstr "Tutorial dei suoni" + +#: extra/SoundsTutorial/wx_ui.py:11 +msgid "Press enter to listen to the sound for the selected event" +msgstr "Premi Invio per ascoltare il suono dell'evento selezionato" + +#: extra/SpellChecker/spellchecker.py:56 +#, python-format +msgid "Misspelled word: %s" +msgstr "parola errata: %s" + +#: extra/SpellChecker/wx_ui.py:27 +msgid "Misspelled word" +msgstr "Parola errata" + +#: extra/SpellChecker/wx_ui.py:32 +msgid "Context" +msgstr "Contesto" + +#: extra/SpellChecker/wx_ui.py:37 +msgid "Suggestions" +msgstr "Suggerimenti" + +#: extra/SpellChecker/wx_ui.py:42 +msgid "&Ignore" +msgstr "&Ignora" + +#: extra/SpellChecker/wx_ui.py:43 +msgid "I&gnore all" +msgstr "I&gnora tutto" + +#: extra/SpellChecker/wx_ui.py:44 +msgid "&Replace" +msgstr "S&ostituisci" + +#: extra/SpellChecker/wx_ui.py:45 +msgid "R&eplace all" +msgstr "Sost&ituisci tutto" + +#: extra/SpellChecker/wx_ui.py:46 +msgid "&Add to personal dictionary" +msgstr "&Aggiungi al dizionario personale" + +#: extra/SpellChecker/wx_ui.py:79 +#, python-brace-format +msgid "" +"An error has occurred. There are no dictionaries available for the " +"selected language in {0}" +msgstr "" +"Errore. Non ci sono i dizionari disponibili per la lingua selezionata in " +"{0}" + +#: extra/SpellChecker/wx_ui.py:79 +#: extra/autocompletionUsers/mastodon/wx_scan.py:44 +#: wxUI/commonMessageDialogs.py:23 wxUI/commonMessageDialogs.py:36 +#: wxUI/commonMessageDialogs.py:45 wxUI/commonMessageDialogs.py:52 +#: wxUI/commonMessageDialogs.py:55 wxUI/commonMessageDialogs.py:61 +#: wxUI/dialogs/mastodon/dialogs.py:38 wxUI/dialogs/mastodon/dialogs.py:43 +#: wxUI/dialogs/mastodon/dialogs.py:48 wxUI/dialogs/mastodon/dialogs.py:53 +#: wxUI/dialogs/mastodon/dialogs.py:60 +msgid "Error" +msgstr "Errore" + +#: extra/SpellChecker/wx_ui.py:82 +msgid "Spell check complete." +msgstr "Controllo ortografico completato." + +#: extra/autocompletionUsers/completion.py:39 +#: extra/autocompletionUsers/completion.py:57 +msgid "You have to start writing" +msgstr "" + +# | msgid "There are no coordinates in this tweet" +#: extra/autocompletionUsers/completion.py:49 +#: extra/autocompletionUsers/completion.py:66 +#, fuzzy +msgid "There are no results in your users database" +msgstr "Non ci sono coordinate in questo Tweet" + +#: extra/autocompletionUsers/completion.py:51 +#, fuzzy +msgid "Autocompletion only works for users." +msgstr "&completamento automatico per gli utenti" + +#: extra/autocompletionUsers/wx_manage.py:9 +#, fuzzy +msgid "Manage Autocompletion database" +msgstr "Gestisci autocompletamento per gli utenti nel database" + +#: extra/autocompletionUsers/wx_manage.py:12 +#, fuzzy, python-brace-format +msgid "Editing {0} users database" +msgstr "Modificazione del {0} database degli utenti" + +#: extra/autocompletionUsers/wx_manage.py:13 +#, fuzzy +msgid "Username" +msgstr "Utente" + +#: extra/autocompletionUsers/wx_manage.py:13 wxUI/dialogs/configuration.py:108 +msgid "Name" +msgstr "Nome" + +#: extra/autocompletionUsers/wx_manage.py:16 +#, fuzzy +msgid "Add user" +msgstr "Utente" + +#: extra/autocompletionUsers/wx_manage.py:17 +#, fuzzy +msgid "Remove user" +msgstr "Rimuovi utente" + +#: extra/autocompletionUsers/wx_manage.py:38 +msgid "Twitter username" +msgstr "" + +#: extra/autocompletionUsers/wx_manage.py:38 +msgid "Add user to database" +msgstr "" + +#: extra/autocompletionUsers/wx_manage.py:44 +#, fuzzy +msgid "The user does not exist" +msgstr "Questo utente non esiste su Twitter" + +#: extra/autocompletionUsers/wx_manage.py:44 +#, fuzzy +msgid "Error!" +msgstr "Errore" + +#: extra/autocompletionUsers/mastodon/scan.py:49 +msgid "" +"Updating database... You can close this window now. A message will tell " +"you when the process finishes." +msgstr "" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:8 +#, fuzzy +msgid "Autocomplete users' settings" +msgstr "&completamento automatico per gli utenti" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:11 +msgid "Add &followers to database" +msgstr "" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:12 +msgid "Add f&ollowing to database" +msgstr "" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:26 +#, fuzzy +msgid "Updating autocompletion database" +msgstr "Gestisci autocompletamento per gli utenti nel database" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:34 +msgid "" +"This process will retrieve the users you selected from your Mastodon " +"account, and add them to the user autocomplete database. Please note that" +" if there are many users or you have tried to perform this action less " +"than 15 minutes ago, TWBlue may reach a limit in API calls when trying to" +" load the users into the database. If this happens, we will show you an " +"error, in which case you will have to try this process again in a few " +"minutes. If this process ends with no error, you will be redirected back " +"to the account settings dialog. Do you want to continue?" +msgstr "" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:34 +#: wxUI/commonMessageDialogs.py:20 +msgid "Attention" +msgstr "Attenzione" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:40 +#, python-brace-format +msgid "TWBlue has imported {} users successfully." +msgstr "" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:40 +#, fuzzy +msgid "Done" +msgstr "Fatto!" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:44 +msgid "Error adding users from Mastodon. Please try again in about 15 minutes." +msgstr "" + +#: extra/ocr/OCRSpace.py:7 +msgid "Detect automatically" +msgstr "Rileva automaticamente" + +#: extra/ocr/OCRSpace.py:7 +msgid "Danish" +msgstr "Danese" + +#: extra/ocr/OCRSpace.py:7 +msgid "Dutch" +msgstr "Olandese" + +#: extra/ocr/OCRSpace.py:7 +msgid "English" +msgstr "Inglese" + +#: extra/ocr/OCRSpace.py:7 +msgid "Finnish" +msgstr "Finlandese" + +#: extra/ocr/OCRSpace.py:7 +msgid "French" +msgstr "Francese" + +#: extra/ocr/OCRSpace.py:7 +msgid "German" +msgstr "Tedesco" + +#: extra/ocr/OCRSpace.py:7 +msgid "Hungarian" +msgstr "Ungherese" + +#: extra/ocr/OCRSpace.py:7 +msgid "Korean" +msgstr "Coreano" + +#: extra/ocr/OCRSpace.py:7 +msgid "Italian" +msgstr "Italiano" + +#: extra/ocr/OCRSpace.py:7 +msgid "Japanese" +msgstr "Giapponese" + +#: extra/ocr/OCRSpace.py:7 +msgid "Polish" +msgstr "Polacco" + +#: extra/ocr/OCRSpace.py:7 +msgid "Portuguese" +msgstr "Portoghese" + +#: extra/ocr/OCRSpace.py:7 +msgid "Russian" +msgstr "Russo" + +#: extra/ocr/OCRSpace.py:7 +msgid "Spanish" +msgstr "Spagnolo" + +#: extra/ocr/OCRSpace.py:7 +msgid "Turkish" +msgstr "Turco" + +#: extra/translator/wx_ui.py:25 +msgid "Translate message" +msgstr "Traduci messaggio" + +#: extra/translator/wx_ui.py:29 +#, fuzzy +msgid "Translation engine" +msgstr "Tradotto" + +#: extra/translator/wx_ui.py:32 +msgid "Target language" +msgstr "Lingua di destinazione" + +#: keystrokeEditor/wx_ui.py:8 +msgid "Keystroke editor" +msgstr "Modifica comando" + +#: keystrokeEditor/wx_ui.py:11 +msgid "Select a keystroke to edit" +msgstr "Seleziona il comando da modificare:" + +#: keystrokeEditor/wx_ui.py:12 +#: wxUI/dialogs/mastodon/filters/manage_filters.py:18 +#: wxUI/dialogs/mastodon/userActions.py:9 +#: wxUI/dialogs/mastodon/userActions.py:18 +#: wxUI/dialogs/mastodon/userActions.py:19 +msgid "Action" +msgstr "Azione" + +#: keystrokeEditor/wx_ui.py:12 +msgid "Keystroke" +msgstr "Comando" + +#: keystrokeEditor/wx_ui.py:17 +#: wxUI/dialogs/mastodon/filters/manage_filters.py:23 +#: wxUI/dialogs/userAliasDialogs.py:53 +msgid "Edit" +msgstr "Modifica" + +#: keystrokeEditor/wx_ui.py:19 keystrokeEditor/wx_ui.py:49 +#, fuzzy +msgid "Undefine keystroke" +msgstr "Modifica comando" + +#: keystrokeEditor/wx_ui.py:20 +msgid "Execute action" +msgstr "Esegui" + +#: keystrokeEditor/wx_ui.py:21 wxUI/dialogs/userAliasDialogs.py:25 +msgid "Close" +msgstr "Chiudi" + +#: keystrokeEditor/wx_ui.py:41 +msgid "Undefined" +msgstr "" + +#: keystrokeEditor/wx_ui.py:49 +#, fuzzy +msgid "Are you sure you want to undefine this keystroke?" +msgstr "Sei sicuro di voler eliminare questa lista?" + +#: keystrokeEditor/wx_ui.py:53 +msgid "Editing keystroke" +msgstr "Modifica comando" + +#: keystrokeEditor/wx_ui.py:56 +msgid "Control" +msgstr "Control" + +#: keystrokeEditor/wx_ui.py:57 +msgid "Alt" +msgstr "Alt" + +#: keystrokeEditor/wx_ui.py:58 +msgid "Shift" +msgstr "Shift" + +#: keystrokeEditor/wx_ui.py:59 +msgid "Windows" +msgstr "Windows" + +#: keystrokeEditor/wx_ui.py:65 +msgid "Key" +msgstr "Key" + +#: keystrokeEditor/wx_ui.py:70 wxUI/dialogs/find.py:21 +#: wxUI/dialogs/mastodon/showUserProfile.py:31 +#: wxUI/dialogs/userAliasDialogs.py:23 +msgid "OK" +msgstr "OK" + +#: keystrokeEditor/wx_ui.py:83 +msgid "You need to use the Windows key" +msgstr "È necessario utilizzare il tasto Windows" + +#: keystrokeEditor/wx_ui.py:83 keystrokeEditor/wx_ui.py:86 +msgid "Invalid keystroke" +msgstr "Comando non valido" + +#: keystrokeEditor/wx_ui.py:86 +msgid "You must provide a character for the keystroke" +msgstr "You must provide a character for the keystroke" + +#: keystrokeEditor/actions/mastodon.py:3 +msgid "Go up in the current buffer" +msgstr "Scorri verso l'alto" + +#: keystrokeEditor/actions/mastodon.py:4 +msgid "Go down in the current buffer" +msgstr "Scorri verso il basso " + +#: keystrokeEditor/actions/mastodon.py:5 +msgid "Go to the previous buffer" +msgstr "Vai al buffer precedente" + +#: keystrokeEditor/actions/mastodon.py:6 +msgid "Go to the next buffer" +msgstr "Vai al buffer successivo" + +#: keystrokeEditor/actions/mastodon.py:7 +msgid "Focus the next session" +msgstr "Focalizza la sessione successiva" + +#: keystrokeEditor/actions/mastodon.py:8 +msgid "Focus the previous session" +msgstr "Focalizza la sessione precedente" + +#: keystrokeEditor/actions/mastodon.py:9 +msgid "Show or hide the GUI" +msgstr "Mostra o nascondi GUI" + +# | msgid "Create a new list" +#: keystrokeEditor/actions/mastodon.py:10 +#, fuzzy +msgid "Make a new post" +msgstr "Crea nuova lista" + +#: keystrokeEditor/actions/mastodon.py:11 wxUI/buffers/mastodon/base.py:26 +#: wxUI/buffers/mastodon/conversationList.py:25 +msgid "Reply" +msgstr "Rispondi" + +#: keystrokeEditor/actions/mastodon.py:12 wxUI/buffers/mastodon/base.py:25 +#: wxUI/dialogs/mastodon/dialogs.py:7 +msgid "Boost" +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:13 +msgid "Send direct message" +msgstr "Invia un messaggio diretto" + +#: keystrokeEditor/actions/mastodon.py:14 +msgid "Add post to favorites" +msgstr "" + +# | msgid "Remove from list" +#: keystrokeEditor/actions/mastodon.py:15 +#, fuzzy +msgid "Remove post from favorites" +msgstr "Rimuovi dalla lista" + +#: keystrokeEditor/actions/mastodon.py:16 +msgid "Add/remove post from favorites" +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:17 +msgid "Open the user actions dialogue" +msgstr "Apri una finestra per selezionare un'azione" + +#: keystrokeEditor/actions/mastodon.py:18 +#, fuzzy +msgid "See user details" +msgstr "Rimuovi utente" + +# | msgid "Show tweet" +#: keystrokeEditor/actions/mastodon.py:19 +#, fuzzy +msgid "Show post" +msgstr "Visualizza Tweet" + +#: keystrokeEditor/actions/mastodon.py:20 +msgid "Quit" +msgstr "Esci" + +#: keystrokeEditor/actions/mastodon.py:21 +msgid "Open user timeline" +msgstr "Apri una specifica Cronologia per l'utente" + +#: keystrokeEditor/actions/mastodon.py:22 +msgid "Destroy buffer" +msgstr "Elimina buffer" + +# | msgid "Interact with the currently focused tweet." +#: keystrokeEditor/actions/mastodon.py:23 +#, fuzzy +msgid "Interact with the currently focused post." +msgstr "Interagisci con il tweet attualmente focalizzato." + +#: keystrokeEditor/actions/mastodon.py:24 +msgid "Open URL" +msgstr "Apri URL" + +#: keystrokeEditor/actions/mastodon.py:25 +#, fuzzy +msgid "View in browser" +msgstr "Ricerca in Twitter" + +#: keystrokeEditor/actions/mastodon.py:26 +msgid "Increase volume by 5%" +msgstr "Aumenta Volume 5%" + +#: keystrokeEditor/actions/mastodon.py:27 +msgid "Decrease volume by 5%" +msgstr "Diminuisce Volume 5%" + +#: keystrokeEditor/actions/mastodon.py:28 +msgid "Jump to the first element of a buffer" +msgstr "Vai alla prima voce nel buffer attuale" + +#: keystrokeEditor/actions/mastodon.py:29 +msgid "Jump to the last element of the current buffer" +msgstr "Vai all'ultima voce nel buffer attuale" + +#: keystrokeEditor/actions/mastodon.py:30 +msgid "Jump 20 elements up in the current buffer" +msgstr "Salta 20 voci in alto nel buffer attuale" + +#: keystrokeEditor/actions/mastodon.py:31 +msgid "Jump 20 elements down in the current buffer" +msgstr "Salta 20 voci in basso nel buffer attuale" + +# | msgid "Delete" +#: keystrokeEditor/actions/mastodon.py:33 +#, fuzzy +msgid "Delete post" +msgstr "Elimina Tweet" + +#: keystrokeEditor/actions/mastodon.py:34 +msgid "Empty the current buffer" +msgstr "Svuota Elenco" + +#: keystrokeEditor/actions/mastodon.py:35 +msgid "Repeat last item" +msgstr "Ripeti l'ultima voce" + +#: keystrokeEditor/actions/mastodon.py:36 +msgid "Copy to clipboard" +msgstr "Copia negli appunti" + +#: keystrokeEditor/actions/mastodon.py:39 +msgid "Mute/unmute the active buffer" +msgstr "Mutes/unmutes il buffer corrente" + +#: keystrokeEditor/actions/mastodon.py:40 +msgid "Mute/unmute the current session" +msgstr "Mute/unmute la sessione corrente" + +#: keystrokeEditor/actions/mastodon.py:41 +msgid "toggle the automatic reading of incoming tweets in the active buffer" +msgstr "" +"Attiva o disattiva la Lettura automatica per i nuovi tweet nel buffer " +"selezionato" + +# | msgid "Search on twitter" +#: keystrokeEditor/actions/mastodon.py:42 +#, fuzzy +msgid "Search on instance" +msgstr "Ricerca in Twitter" + +#: keystrokeEditor/actions/mastodon.py:43 +msgid "Find a string in the currently focused buffer" +msgstr "Trova del testo nel buffer attualmente focalizzato" + +#: keystrokeEditor/actions/mastodon.py:44 +msgid "Show the keystroke editor" +msgstr "Visualizza il modificatore comandi" + +#: keystrokeEditor/actions/mastodon.py:46 +msgid "load previous items" +msgstr "Carica gli elementi precedenti" + +#: keystrokeEditor/actions/mastodon.py:48 +msgid "View conversation" +msgstr "Visualizza conversazione" + +#: keystrokeEditor/actions/mastodon.py:49 +msgid "Check and download updates" +msgstr "Controlla e scarica aggiornamenti" + +#: keystrokeEditor/actions/mastodon.py:50 +msgid "Opens the global settings dialogue" +msgstr "Apri le impostazioni generali" + +#: keystrokeEditor/actions/mastodon.py:52 +msgid "Opens the account settings dialogue" +msgstr "Apri le impostazioni Account" + +# | msgid "Try to play an audio file" +#: keystrokeEditor/actions/mastodon.py:53 +#, fuzzy +msgid "Try to play a media file" +msgstr "Prova ad avviare un audio." + +#: keystrokeEditor/actions/mastodon.py:54 +msgid "Updates the buffer and retrieves possible lost items there." +msgstr "Aggiorna il buffer e recupera i possibili elementi persi." + +#: keystrokeEditor/actions/mastodon.py:55 +msgid "Extracts the text from a picture and displays the result in a dialog." +msgstr "" +"Estrae il testo da un'immagine e visualizza il risultato in una finestra " +"di dialogo." + +#: keystrokeEditor/actions/mastodon.py:56 +#, fuzzy +msgid "Adds an alias to an user" +msgstr "Seleziona una lista per aggiungere l'utente" + +#: sessionmanager/sessionManager.py:69 +#, python-brace-format +msgid "{account_name}@{instance} (Mastodon)" +msgstr "" + +#: sessionmanager/wxUI.py:11 +msgid "Session manager" +msgstr "Gestisci sessione." + +#: sessionmanager/wxUI.py:14 +msgid "Accounts list" +msgstr "Elenco Account" + +#: sessionmanager/wxUI.py:16 +msgid "Account" +msgstr "Account" + +#: sessionmanager/wxUI.py:20 +msgid "New account" +msgstr "Nuovo Account" + +#: sessionmanager/wxUI.py:22 sessionmanager/wxUI.py:79 +msgid "Remove account" +msgstr "Rimuovi account" + +#: sessionmanager/wxUI.py:24 +msgid "Global Settings" +msgstr "Impostazioni generali" + +#: sessionmanager/wxUI.py:48 +msgid "You need to configure an account." +msgstr "È necessario configurare un account." + +#: sessionmanager/wxUI.py:48 +msgid "Account Error" +msgstr "Errore!" + +#: sessionmanager/wxUI.py:54 +msgid "Mastodon" +msgstr "" + +#: sessionmanager/wxUI.py:59 +msgid "" +"You will be prompted for your Mastodon data (instance URL, email address " +"and password) so we can authorise TWBlue in your instance. Would you like" +" to authorise your account now?" +msgstr "" + +#: sessionmanager/wxUI.py:59 +msgid "Authorization" +msgstr "Autorizzazione" + +#: sessionmanager/wxUI.py:67 +#, python-format +msgid "Authorized account %d" +msgstr "Account autorizzato %d" + +#: sessionmanager/wxUI.py:73 +msgid "" +"Your access token is invalid or the authorization has failed. Please try " +"again." +msgstr "" +"Il tuo token di accesso non è valido o l'autorizzazione non è riuscita. " +"Riprova." + +#: sessionmanager/wxUI.py:73 +msgid "Invalid user token" +msgstr "Chiave di autorizzazione utente non valido" + +#: sessionmanager/wxUI.py:79 +msgid "Do you really want to delete this account?" +msgstr "Sei sicuro di voler eliminare questo account?" + +#: sessions/base.py:125 +#, python-brace-format +msgid "" +"An exception occurred while saving the {app} database. It will be deleted" +" and rebuilt automatically. If this error persists, send the error log to" +" the {app} developers." +msgstr "" + +#: sessions/base.py:165 +#, python-brace-format +msgid "" +"An exception occurred while loading the {app} database. It will be " +"deleted and rebuilt automatically. If this error persists, send the error" +" log to the {app} developers." +msgstr "" + +# | msgid "dddd, MMMM D, YYYY H:m:s" +#: sessions/mastodon/compose.py:15 sessions/mastodon/compose.py:61 +#, fuzzy +msgid "dddd, MMMM D, YYYY H:m" +msgstr "dddd, MMMM D, YYYY H:m:s" + +# | msgid "{0}. Quoted tweet from @{1}: {2}" +#: sessions/mastodon/compose.py:17 sessions/mastodon/templates.py:74 +#: sessions/mastodon/templates.py:75 +#, fuzzy, python-brace-format +msgid "Boosted from @{}: {}" +msgstr "{0}. Tweet citato da @{1}: {2}" + +#: sessions/mastodon/compose.py:22 sessions/mastodon/compose.py:81 +#: sessions/mastodon/templates.py:81 sessions/mastodon/templates.py:176 +#, python-brace-format +msgid "hidden by filter {}" +msgstr "" + +#: sessions/mastodon/compose.py:36 sessions/mastodon/templates.py:28 +msgid "dddd, MMMM D, YYYY H:m:s" +msgstr "dddd, MMMM D, YYYY H:m:s" + +# | msgid "" +# | "%s (@%s). %s followers, %s friends, %s tweets. Last tweeted %s. Joined " +# | "Twitter %s" +#: sessions/mastodon/compose.py:38 +#, fuzzy, python-format +msgid "%s (@%s). %s followers, %s following, %s posts. Joined %s" +msgstr "" +"%s (@%s). %s followers, %s following, %s tweets. Ultimo tweet %s. " +"Iscritto a Twitter %s" + +#: sessions/mastodon/compose.py:49 +#, python-brace-format +msgid "Last message from {}: {}" +msgstr "" + +# | msgid "{0} is following you." +#: sessions/mastodon/compose.py:64 +#, fuzzy, python-brace-format +msgid "{username} has posted: {status}" +msgstr "{0} ti sta seguendo." + +# | msgid "{0} is following you." +#: sessions/mastodon/compose.py:66 +#, fuzzy, python-brace-format +msgid "{username} has mentioned you: {status}" +msgstr "{0} ti sta seguendo." + +#: sessions/mastodon/compose.py:68 +#, python-brace-format +msgid "{username} has boosted: {status}" +msgstr "" + +#: sessions/mastodon/compose.py:70 +#, python-brace-format +msgid "{username} has added to favorites: {status}" +msgstr "" + +# | msgid "{0} is following you." +#: sessions/mastodon/compose.py:72 +#, fuzzy, python-brace-format +msgid "{username} has followed you." +msgstr "{0} ti sta seguendo." + +# | msgid "{0} is following you." +#: sessions/mastodon/compose.py:74 +#, fuzzy, python-brace-format +msgid "{username} has joined the instance." +msgstr "{0} ti sta seguendo." + +#: sessions/mastodon/compose.py:76 sessions/mastodon/templates.py:171 +#, python-brace-format +msgid "A poll in which you have voted has expired: {status}" +msgstr "" + +# | msgid "{0} is following you." +#: sessions/mastodon/compose.py:78 +#, fuzzy, python-brace-format +msgid "{username} wants to follow you." +msgstr "{0} ti sta seguendo." + +#: sessions/mastodon/session.py:69 +msgid "Please enter your instance URL." +msgstr "" + +#: sessions/mastodon/session.py:69 +msgid "Mastodon instance" +msgstr "" + +#: sessions/mastodon/session.py:80 +msgid "" +"We could not connect to your mastodon instance. Please verify that the " +"domain exists and the instance is accessible via a web browser." +msgstr "" + +# | msgid "&Report an error" +#: sessions/mastodon/session.py:80 +#, fuzzy +msgid "Instance error" +msgstr "Riporta un &errore" + +#: sessions/mastodon/session.py:85 +msgid "Enter the verification code" +msgstr "" + +# | msgid "Authorization" +#: sessions/mastodon/session.py:85 +#, fuzzy +msgid "PIN code authorization" +msgstr "Autorizzazione" + +#: sessions/mastodon/session.py:94 +msgid "" +"We could not authorice your mastodon account to be used in TWBlue. This " +"might be caused due to an incorrect verification code. Please try to add " +"the session again." +msgstr "" + +# | msgid "Authorization" +#: sessions/mastodon/session.py:94 +#, fuzzy +msgid "Authorization error" +msgstr "Autorizzazione" + +#: sessions/mastodon/session.py:215 +#, python-format +msgid "%s succeeded." +msgstr "%s Operazione riuscita." + +#: sessions/mastodon/templates.py:18 +msgid "$display_name, $text $image_descriptions $date. $source" +msgstr "" + +#: sessions/mastodon/templates.py:19 +msgid "Dm to $recipient_display_name, $text $date" +msgstr "" + +#: sessions/mastodon/templates.py:20 +msgid "" +"$display_name (@$screen_name). $followers followers, $following " +"following, $posts posts. Joined $created_at." +msgstr "" + +#: sessions/mastodon/templates.py:21 +msgid "$display_name $text, $date" +msgstr "" + +#: sessions/mastodon/templates.py:34 +#, python-brace-format +msgid "Content warning: {}" +msgstr "" + +#: sessions/mastodon/templates.py:45 +#, fuzzy, python-brace-format +msgid "Media description: {}" +msgstr "Descrizione Immagine" + +# | msgid "Followers" +#: sessions/mastodon/templates.py:82 wxUI/dialogs/mastodon/postDialogs.py:49 +#, fuzzy +msgid "Followers only" +msgstr "Followers" + +#: sessions/mastodon/templates.py:94 +#, fuzzy +msgid "Pinned." +msgstr "Copiato" + +#: sessions/mastodon/templates.py:157 +#, python-brace-format +msgid "has posted: {status}" +msgstr "" + +#: sessions/mastodon/templates.py:159 +#, python-brace-format +msgid "has mentioned you: {status}" +msgstr "" + +#: sessions/mastodon/templates.py:161 +#, python-brace-format +msgid "has boosted: {status}" +msgstr "" + +#: sessions/mastodon/templates.py:163 +#, python-brace-format +msgid "has added to favorites: {status}" +msgstr "" + +#: sessions/mastodon/templates.py:165 +#, python-brace-format +msgid "has updated a status: {status}" +msgstr "" + +# | msgid "{0} is following you." +#: sessions/mastodon/templates.py:167 +#, fuzzy +msgid "has followed you." +msgstr "{0} ti sta seguendo." + +# | msgid "Remove client" +#: sessions/mastodon/templates.py:169 +#, fuzzy +msgid "has joined the instance." +msgstr "Rimuovi client" + +# | msgid "{0} is following you." +#: sessions/mastodon/templates.py:173 +#, fuzzy +msgid "wants to follow you." +msgstr "{0} ti sta seguendo." + +#: update/utils.py:29 +#, python-format +msgid "%d day, " +msgstr "%d giorno, " + +#: update/utils.py:31 +#, python-format +msgid "%d days, " +msgstr "%d giorni, " + +#: update/utils.py:33 +#, python-format +msgid "%d hour, " +msgstr "%d ora, " + +#: update/utils.py:35 +#, python-format +msgid "%d hours, " +msgstr "%d ore, " + +#: update/utils.py:37 +#, python-format +msgid "%d minute, " +msgstr "%d minuto, " + +#: update/utils.py:39 +#, python-format +msgid "%d minutes, " +msgstr "%d minuti, " + +#: update/utils.py:41 +#, python-format +msgid "%s second" +msgstr "%s secondo" + +#: update/utils.py:43 +#, python-format +msgid "%s seconds" +msgstr "%s secondi" + +#: update/wxUpdater.py:11 +#, python-format +msgid "" +"There's a new %s version available, released on %s. Would you like to " +"download it now?\n" +"\n" +" %s version: %s\n" +"\n" +"Changes:\n" +"%s" +msgstr "" +"È disponibile una nuova versione %s, rilasciata il %s. Scaricarla ora?\n" +"\n" +" %s versione: %s\n" +"\n" +"Change:\n" +"%s" + +# | msgid "" +# | "There's a new %s version available, released on %s. Would you like to " +# | "download it now?\n" +# | "\n" +# | " %s version: %s\n" +# | "Changes:\n" +# | "%s" +#: update/wxUpdater.py:14 +#, fuzzy, python-format +msgid "" +"There's a new %s version available, released on %s. Updates are not " +"automatic in Windows 7, so you would need to visit TWBlue's download " +"website to get the latest version.\n" +"\n" +" %s version: %s\n" +"\n" +"Changes:\n" +"%s" +msgstr "" +"È disponibile una nuova versione %s, rilasciata il %s. Scaricarla ora?\n" +"\n" +" %s versione: %s\n" +"\n" +"Change:\n" +"%s" + +#: update/wxUpdater.py:16 +#, python-format +msgid "New version for %s" +msgstr "Nuova versione di %s" + +#: update/wxUpdater.py:23 +msgid "Download in Progress" +msgstr "Download in corso" + +#: update/wxUpdater.py:23 +msgid "Downloading the new version..." +msgstr "Download della nuova versione..." + +#: update/wxUpdater.py:33 +#, python-format +msgid "Updating... %s of %s" +msgstr "Aggiornamento... %s di %s" + +#: update/wxUpdater.py:36 +msgid "" +"The update has been downloaded and installed successfully. Press OK to " +"continue." +msgstr "" +"La nuova versione TW blu è stata scaricata e installata. Premere OK per " +"avviare l'applicazione." + +#: update/wxUpdater.py:36 +msgid "Done!" +msgstr "Fatto!" + +#: wxUI/commonMessageDialogs.py:6 +#, python-brace-format +msgid "Do you really want to close {0}?" +msgstr "Sei sicuro di voler chiudere {0}?" + +#: wxUI/commonMessageDialogs.py:6 +msgid "Exit" +msgstr "Esci" + +#: wxUI/commonMessageDialogs.py:10 +#, python-brace-format +msgid " {0} must be restarted for these changes to take effect." +msgstr " {0} Riavviare perché le modifiche abbiano effetto." + +#: wxUI/commonMessageDialogs.py:10 +#, python-brace-format +msgid "Restart {0} " +msgstr "Riavvia {0}" + +#: wxUI/commonMessageDialogs.py:13 +msgid "" +"Are you sure you want to delete this user from the database? This user " +"will not appear in autocomplete results anymore." +msgstr "" +"Sei sicuro di voler eliminare questo utente dal database? Questo utente " +"non apparirà nei risultati di completamento automatico." + +#: wxUI/commonMessageDialogs.py:13 +msgid "Confirm" +msgstr "Conferma" + +#: wxUI/commonMessageDialogs.py:16 +msgid "" +"Do you really want to empty this buffer? It's items will be removed from" +" the list but not from Twitter" +msgstr "" +"Svuotare questo buffer? I tweet saranno rimossi dall'elenco, ma non da " +"Twitter" + +#: wxUI/commonMessageDialogs.py:16 wxUI/dialogs/mastodon/dialogs.py:31 +msgid "Empty buffer" +msgstr "Svuota Elenco" + +#: wxUI/commonMessageDialogs.py:20 +msgid "Do you really want to destroy this buffer?" +msgstr "Sei sicuro di voler eliminare questo buffer?" + +#: wxUI/commonMessageDialogs.py:23 +msgid "That user does not exist" +msgstr "Questo utente non esiste su Twitter" + +#: wxUI/commonMessageDialogs.py:26 +msgid "A timeline for this user already exists. You can't open another" +msgstr "Una Cronologia per questo utente è già presente." + +#: wxUI/commonMessageDialogs.py:26 +msgid "Existing timeline" +msgstr "Cronologia già esistente" + +#: wxUI/commonMessageDialogs.py:29 +#, python-brace-format +msgid "" +"If you like {0} we need your help to keep it going. Help us by donating " +"to the project. This will help us pay for the server, the domain and some" +" other things to ensure that {0} will be actively maintained. Your " +"donation will give us the means to continue the development of {0}, and " +"to keep {0} free. Would you like to donate now?" +msgstr "" +"Se ti piace {0} ricorda che abbiamo bisogno del vostro aiuto per andare " +"avanti. Aiutaci facendo una donazione per il progetto. Questo ci aiuterà " +"a pagare il server, il dominio e alcune altre cose per garantire che {0} " +"Sarà attivamente sostenuto. La vostra donazione ci darà i mezzi per " +"continuare lo sviluppo di {0}, e mantenere {0} free. Vuoi fare una " +"donazione adesso?" + +#: wxUI/commonMessageDialogs.py:29 +msgid "We need your help" +msgstr "Abbiamo bisogno del tuo aiuto" + +#: wxUI/commonMessageDialogs.py:33 wxUI/dialogs/mastodon/postDialogs.py:207 +msgid "Information" +msgstr "Informazioni:" + +#: wxUI/commonMessageDialogs.py:36 +msgid "The configuration file is invalid." +msgstr "" + +#: wxUI/commonMessageDialogs.py:39 +#, python-brace-format +msgid "" +"{0} quit unexpectedly the last time it was run. If the problem persists, " +"please report it to the {0} developers." +msgstr "" + +#: wxUI/commonMessageDialogs.py:39 +msgid "Warning" +msgstr "Avviso" + +#: wxUI/commonMessageDialogs.py:45 +#, python-brace-format +msgid "Sorry, you can't update while running {} from source." +msgstr "" + +#: wxUI/commonMessageDialogs.py:49 +msgid "the provided instance is invalid. Please try again." +msgstr "" + +#: wxUI/commonMessageDialogs.py:49 +#, fuzzy +msgid "Invalid instance" +msgstr "Comando non valido" + +#: wxUI/commonMessageDialogs.py:52 +msgid "" +"TWBlue was unable to add or update the filter with the specified " +"settings. Please try again." +msgstr "" + +#: wxUI/commonMessageDialogs.py:55 +msgid "" +"TWBlue was unable to load your filters from the instance. Please try " +"again." +msgstr "" + +#: wxUI/commonMessageDialogs.py:58 +#, fuzzy +msgid "Do you really want to delete this filter ?" +msgstr "Sei sicuro di voler eliminare questo account?" + +#: wxUI/commonMessageDialogs.py:58 +#, fuzzy +msgid "Delete filter" +msgstr "Crea &filtro" + +#: wxUI/commonMessageDialogs.py:61 +msgid "TWBlue was unable to remove the filter you specified. Please try again." +msgstr "" + +#: wxUI/sysTrayIcon.py:36 wxUI/view.py:25 +msgid "&Global settings" +msgstr "Impostazioni &generali" + +#: wxUI/sysTrayIcon.py:37 wxUI/view.py:24 +msgid "Account se&ttings" +msgstr "Impos&tazioni Account " + +#: wxUI/sysTrayIcon.py:39 +msgid "&Show / hide" +msgstr "&Mostra/ Nascondi" + +#: wxUI/sysTrayIcon.py:40 wxUI/view.py:74 +msgid "&Documentation" +msgstr "&Documentazione" + +#: wxUI/sysTrayIcon.py:41 +msgid "Check for &updates" +msgstr "Controlla &aggiornamenti" + +#: wxUI/sysTrayIcon.py:42 +msgid "&Exit" +msgstr "&Esci" + +#: wxUI/view.py:16 +msgid "&Manage accounts" +msgstr "Gestisci &accounts" + +#: wxUI/view.py:17 +msgid "&Update profile" +msgstr "Aggiorna il &profilo" + +#: wxUI/view.py:18 +msgid "&Hide window" +msgstr "&Nascondi la finestra" + +#: wxUI/view.py:20 +msgid "&Lists manager" +msgstr "Gestione &liste" + +#: wxUI/view.py:23 +msgid "&Edit keystrokes" +msgstr "&Modifica comandi" + +#: wxUI/view.py:26 +msgid "E&xit" +msgstr "&Esci" + +# | msgid "Remove from list" +#: wxUI/view.py:34 +#, fuzzy +msgid "&Remove from favorites" +msgstr "Rimuovi dalla lista" + +#: wxUI/view.py:47 +msgid "&Add to list" +msgstr "Aggiungi alla &lista" + +#: wxUI/view.py:48 +msgid "R&emove from list" +msgstr "&Rimuovi dalla lista" + +#: wxUI/view.py:49 +msgid "Show user &profile" +msgstr "Visualizza il profilo &utente" + +#: wxUI/view.py:50 +msgid "V&iew likes" +msgstr "&Visualizza tweet marcati con Mi Piace" + +#: wxUI/view.py:54 +msgid "&Update buffer" +msgstr "&aggiorna buffer" + +#: wxUI/dialogs/mastodon/communityTimeline.py:9 wxUI/view.py:55 +msgid "Create community timeline" +msgstr "" + +#: wxUI/view.py:56 +msgid "New &trending topics buffer..." +msgstr "Nuovo buffer per argomenti di &tendenza..." + +#: wxUI/view.py:59 +msgid "Find a string in the currently focused buffer..." +msgstr "Trova del testo nel buffer attualmente focalizzato" + +#: wxUI/view.py:60 +msgid "&Load previous items" +msgstr "&Carica le voci precedenti" + +#: wxUI/dialogs/mastodon/userActions.py:21 wxUI/view.py:62 +msgid "&Mute" +msgstr "&Mute" + +#: wxUI/view.py:63 +msgid "&Autoread" +msgstr "Lettu&ra automatica" + +#: wxUI/view.py:64 +msgid "&Clear buffer" +msgstr "Ripulisci l'elen&co" + +#: wxUI/view.py:65 +msgid "&Destroy" +msgstr "&Elimina" + +#: wxUI/view.py:69 +msgid "&Seek back 5 seconds" +msgstr "Indietro 5 &secondi" + +#: wxUI/view.py:70 +msgid "&Seek forward 5 seconds" +msgstr "Avanti 5 &secondi" + +#: wxUI/view.py:75 +msgid "Sounds &tutorial" +msgstr "&Tutorial dei suoni" + +#: wxUI/view.py:76 +msgid "&What's new in this version?" +msgstr "Cosa c'è di &nuovo in questa versione?" + +#: wxUI/view.py:77 +msgid "&Check for updates" +msgstr "Controlla &aggiornamenti" + +#: wxUI/view.py:78 +msgid "&Report an error" +msgstr "Riporta un &errore" + +#: wxUI/view.py:79 +#, python-brace-format +msgid "{0}'s &website" +msgstr "{0} Sito &Web di TW Blue" + +#: wxUI/view.py:80 +msgid "Get soundpacks for TWBlue" +msgstr "" + +#: wxUI/view.py:81 +#, python-brace-format +msgid "About &{0}" +msgstr "A proposito di &{0}" + +#: wxUI/view.py:84 +msgid "&Application" +msgstr "&Applicazione" + +#: wxUI/view.py:85 +msgid "&Tweet" +msgstr "&Tweet" + +#: wxUI/dialogs/mastodon/userActions.py:10 wxUI/view.py:86 +msgid "&User" +msgstr "&Utente" + +#: wxUI/view.py:87 +msgid "&Buffer" +msgstr "&Buffer" + +#: wxUI/view.py:88 +msgid "&Audio" +msgstr "&Audio" + +#: wxUI/view.py:89 +msgid "&Help" +msgstr "A&iuto" + +#: wxUI/view.py:175 +msgid "Address" +msgstr "Indirizzo" + +#: wxUI/view.py:206 +#, python-brace-format +msgid "Your {0} version is up to date" +msgstr "La tua versione di {0} è aggiornata" + +#: wxUI/view.py:206 +msgid "Update" +msgstr "Aggiorna" + +#: wxUI/buffers/panels.py:12 wxUI/buffers/panels.py:20 +msgid "Login" +msgstr "Connetti" + +#: wxUI/buffers/panels.py:14 +msgid "Log in automatically" +msgstr "Login automatico" + +#: wxUI/buffers/panels.py:22 +msgid "Logout" +msgstr "Disconnetti" + +#: wxUI/buffers/mastodon/base.py:11 +#: wxUI/buffers/mastodon/conversationList.py:11 wxUI/buffers/mastodon/user.py:8 +#: wxUI/dialogs/mastodon/userTimeline.py:10 wxUI/dialogs/userAliasDialogs.py:14 +msgid "User" +msgstr "Utente" + +#: wxUI/buffers/mastodon/base.py:11 +#: wxUI/buffers/mastodon/conversationList.py:11 +#: wxUI/buffers/mastodon/notifications.py:11 +#: wxUI/dialogs/mastodon/postDialogs.py:37 +#: wxUI/dialogs/mastodon/postDialogs.py:272 +msgid "Text" +msgstr "Testo" + +#: wxUI/buffers/mastodon/base.py:11 +#: wxUI/buffers/mastodon/conversationList.py:11 +#: wxUI/buffers/mastodon/notifications.py:11 +#: wxUI/dialogs/mastodon/postDialogs.py:216 +msgid "Date" +msgstr "Data" + +#: wxUI/buffers/mastodon/base.py:11 +#: wxUI/buffers/mastodon/conversationList.py:11 +msgid "Client" +msgstr "Client" + +#: wxUI/buffers/mastodon/base.py:27 +msgid "Favorite" +msgstr "" + +#: wxUI/buffers/mastodon/base.py:28 +msgid "Bookmark" +msgstr "" + +#: wxUI/buffers/mastodon/base.py:29 +msgid "Direct message" +msgstr "Messaggio diretto" + +#: wxUI/buffers/mastodon/notifications.py:23 +#: wxUI/dialogs/mastodon/dialogs.py:23 +msgid "Dismiss" +msgstr "" + +#: wxUI/buffers/mastodon/user.py:19 wxUI/dialogs/userAliasDialogs.py:48 +#, fuzzy +msgid "Actions" +msgstr "Azione" + +# | msgid "Direct Messages" +#: wxUI/buffers/mastodon/user.py:20 +#, fuzzy +msgid "Message" +msgstr "Messaggi diretti" + +#: wxUI/dialogs/configuration.py:15 +#, fuzzy +msgid "&Language" +msgstr "Lingua" + +#: wxUI/dialogs/configuration.py:22 +#, fuzzy, python-brace-format +msgid "&Ask before exiting {0}" +msgstr "Conferma prima di uscire da {0}" + +#: wxUI/dialogs/configuration.py:24 +#, fuzzy +msgid "&Disable Streaming functions" +msgstr "Disattiva le funzioni di Streaming" + +#: wxUI/dialogs/configuration.py:27 +#, fuzzy +msgid "&Buffer update interval, in minutes" +msgstr "Intervallo d aggiornamento del buffer, in minuti" + +#: wxUI/dialogs/configuration.py:33 +#, fuzzy, python-brace-format +msgid "Pla&y a sound when {0} launches" +msgstr "Riproduci un suono {0} all'avvio" + +#: wxUI/dialogs/configuration.py:35 +#, fuzzy, python-brace-format +msgid "Sp&eak a message when {0} launches" +msgstr "Avvisa con un messaggio {0} all'avvio" + +#: wxUI/dialogs/configuration.py:37 +#, fuzzy +msgid "&Use invisible interface's keyboard shortcuts while GUI is visible" +msgstr "Utilizza i comandi per l'interfaccia invisibile nell'interfaccia grafica" + +#: wxUI/dialogs/configuration.py:39 +#, fuzzy +msgid "A&ctivate Sapi5 when any other screen reader is not being run" +msgstr "Attiva SAPI5 quando non viene eseguito un altro lettore di schermo" + +#: wxUI/dialogs/configuration.py:41 +#, fuzzy +msgid "&Hide GUI on launch" +msgstr "Nascondi Interfaccia grafica all'avvio" + +#: wxUI/dialogs/configuration.py:43 +msgid "&Read long posts in GUI" +msgstr "" + +#: wxUI/dialogs/configuration.py:46 +#, fuzzy +msgid "&Keymap" +msgstr "Keymap" + +#: wxUI/dialogs/configuration.py:51 +#, fuzzy, python-brace-format +msgid "Check for u&pdates when {0} launches" +msgstr "Controlla aggiornamenti all'avvio di {0} " + +#: wxUI/dialogs/configuration.py:61 +#, fuzzy +msgid "Proxy &type: " +msgstr "Servizio Proxy: " + +#: wxUI/dialogs/configuration.py:68 +#, fuzzy +msgid "Proxy s&erver: " +msgstr "Proxy server: " + +#: wxUI/dialogs/configuration.py:74 +#, fuzzy +msgid "&Port: " +msgstr "Port: " + +#: wxUI/dialogs/configuration.py:80 +#, fuzzy +msgid "&User: " +msgstr "Utente" + +#: wxUI/dialogs/configuration.py:86 +#, fuzzy +msgid "P&assword: " +msgstr "Password: " + +#: wxUI/dialogs/configuration.py:98 +#, fuzzy +msgid "Enable automatic s&peech feedback" +msgstr "Attiva automaticamente il feedback vocale" + +#: wxUI/dialogs/configuration.py:100 +#, fuzzy +msgid "Enable automatic &Braille feedback" +msgstr "Attiva automaticamente il feedback braille." + +#: wxUI/dialogs/configuration.py:108 +msgid "Buffer" +msgstr "Buffer" + +#: wxUI/dialogs/configuration.py:108 +msgid "Status" +msgstr "Stato" + +#: wxUI/dialogs/configuration.py:111 +#, fuzzy +msgid "S&how/hide" +msgstr "Mostra/Nascondi" + +#: wxUI/dialogs/configuration.py:112 +#, fuzzy +msgid "Move &up" +msgstr "Sposta su" + +#: wxUI/dialogs/configuration.py:113 +#, fuzzy +msgid "Move &down" +msgstr "Sposta Giù" + +#: wxUI/dialogs/configuration.py:123 wxUI/dialogs/configuration.py:188 +#: wxUI/dialogs/configuration.py:191 wxUI/dialogs/configuration.py:196 +msgid "Show" +msgstr "Mostra" + +#: wxUI/dialogs/configuration.py:125 wxUI/dialogs/configuration.py:135 +#: wxUI/dialogs/configuration.py:159 wxUI/dialogs/configuration.py:189 +msgid "Hide" +msgstr "Nascondi" + +#: wxUI/dialogs/configuration.py:133 wxUI/dialogs/configuration.py:157 +msgid "Select a buffer first." +msgstr "Selezionare un buffer." + +#: wxUI/dialogs/configuration.py:136 wxUI/dialogs/configuration.py:160 +msgid "The buffer is hidden, show it first." +msgstr "Il buffer è nascosto." + +#: wxUI/dialogs/configuration.py:139 +msgid "The buffer is already at the top of the list." +msgstr "Il buffer è già in cima alla lista." + +#: wxUI/dialogs/configuration.py:163 +msgid "The buffer is already at the bottom of the list." +msgstr "Il buffer è già in fondo all'elenco." + +#: wxUI/dialogs/configuration.py:205 +msgid "&LibreTranslate API URL: " +msgstr "" + +#: wxUI/dialogs/configuration.py:211 +msgid "LibreTranslate API &Key (optional): " +msgstr "" + +#: wxUI/dialogs/configuration.py:217 +msgid "&DeepL API Key: " +msgstr "" + +#: wxUI/dialogs/configuration.py:231 +#, python-brace-format +msgid "{0} preferences" +msgstr "{0} Preferenze" + +#: wxUI/dialogs/configuration.py:237 wxUI/dialogs/mastodon/configuration.py:144 +msgid "General" +msgstr "Generale" + +#: wxUI/dialogs/configuration.py:242 +msgid "Proxy" +msgstr "Proxy" + +#: wxUI/dialogs/configuration.py:246 +#, fuzzy +msgid "Translation services" +msgstr "Tradotto" + +#: wxUI/dialogs/configuration.py:251 wxUI/dialogs/mastodon/configuration.py:170 +#, fuzzy +msgid "&Save" +msgstr "Salva" + +#: wxUI/dialogs/configuration.py:253 +#: wxUI/dialogs/mastodon/communityTimeline.py:27 +#: wxUI/dialogs/mastodon/configuration.py:172 +#: wxUI/dialogs/mastodon/search.py:26 +#: wxUI/dialogs/mastodon/showUserProfile.py:170 +#: wxUI/dialogs/mastodon/updateProfile.py:132 +#: wxUI/dialogs/mastodon/userActions.py:38 +#: wxUI/dialogs/mastodon/userTimeline.py:32 +msgid "&Close" +msgstr "&Chiudi" + +#: wxUI/dialogs/find.py:13 +msgid "Find in current buffer" +msgstr "Trova nel buffer corrente" + +#: wxUI/dialogs/find.py:14 +msgid "String" +msgstr "Stringa" + +#: wxUI/dialogs/find.py:23 wxUI/dialogs/mastodon/showUserProfile.py:33 +msgid "Cancel" +msgstr "annulla" + +#: wxUI/dialogs/templateDialogs.py:8 +msgid "Edit Template" +msgstr "" + +#: wxUI/dialogs/templateDialogs.py:13 +msgid "Edit template" +msgstr "" + +#: wxUI/dialogs/templateDialogs.py:17 +#, fuzzy +msgid "Available variables" +msgstr "Non disponibile" + +#: wxUI/dialogs/templateDialogs.py:29 +msgid "Restore template" +msgstr "" + +#: wxUI/dialogs/templateDialogs.py:48 +#, python-brace-format +msgid "Restored template to {}." +msgstr "" + +#: wxUI/dialogs/templateDialogs.py:52 +msgid "" +"the template you have specified include variables that do not exists for " +"the object. Please fix the template and try again. For your reference, " +"you can see a list of all available variables in the variables list while" +" editing your template." +msgstr "" + +#: wxUI/dialogs/templateDialogs.py:52 +#, fuzzy +msgid "Invalid template" +msgstr "Comando non valido" + +#: wxUI/dialogs/urlList.py:6 +msgid "Select URL" +msgstr "Selezionare URL" + +#: wxUI/dialogs/mastodon/userActions.py:13 +#: wxUI/dialogs/mastodon/userTimeline.py:13 wxUI/dialogs/userAliasDialogs.py:13 +msgid "&Autocomplete users" +msgstr "&completamento automatico per gli utenti" + +#: wxUI/dialogs/userAliasDialogs.py:18 +#, fuzzy +msgid "Alias" +msgstr "Sempre" + +#: wxUI/dialogs/userAliasDialogs.py:41 +#, fuzzy +msgid "Edit user aliases" +msgstr "Modificazione del {0} database degli utenti" + +#: wxUI/dialogs/mastodon/search.py:19 wxUI/dialogs/userAliasDialogs.py:43 +msgid "Users" +msgstr "Utente" + +#: wxUI/dialogs/userAliasDialogs.py:50 +#, fuzzy +msgid "Add alias" +msgstr "Aggiungi alla lista" + +#: wxUI/dialogs/userAliasDialogs.py:51 +msgid "Adds a new user alias" +msgstr "" + +#: wxUI/dialogs/userAliasDialogs.py:54 +#, fuzzy +msgid "Edit the currently focused user Alias." +msgstr "Interagisci con il tweet attualmente focalizzato." + +#: wxUI/dialogs/mastodon/filters/create_filter.py:26 +#: wxUI/dialogs/mastodon/filters/manage_filters.py:24 +#: wxUI/dialogs/userAliasDialogs.py:57 +msgid "Remove" +msgstr "Elimina" + +#: wxUI/dialogs/userAliasDialogs.py:58 +#, fuzzy +msgid "Remove the currently focused user alias." +msgstr "Trova del testo nel buffer attualmente focalizzato" + +#: wxUI/dialogs/userAliasDialogs.py:82 +#, fuzzy +msgid "Are you sure you want to delete this user alias?" +msgstr "Sei sicuro di voler eliminare questa lista?" + +#: wxUI/dialogs/userAliasDialogs.py:82 +#, fuzzy +msgid "Remove user alias" +msgstr "Rimuovi utente" + +#: wxUI/dialogs/userAliasDialogs.py:93 +#, fuzzy +msgid "User alias" +msgstr "Dettagli utente" + +#: wxUI/dialogs/userList.py:27 +#, fuzzy +msgid "View profile" +msgstr "Aggiorna il &profilo" + +#: wxUI/dialogs/mastodon/communityTimeline.py:10 +#, fuzzy +msgid "Community URL" +msgstr "Control" + +#: wxUI/dialogs/mastodon/communityTimeline.py:16 +#: wxUI/dialogs/mastodon/userTimeline.py:18 +msgid "Buffer type" +msgstr "Tipo di Buffer" + +#: wxUI/dialogs/mastodon/communityTimeline.py:17 +#, fuzzy +msgid "&Local timeline" +msgstr "Cronologie di..." + +#: wxUI/dialogs/mastodon/communityTimeline.py:18 +#, fuzzy +msgid "&Federated Timeline" +msgstr "Apri una specifica Cronologia per l'utente" + +#: wxUI/dialogs/mastodon/communityTimeline.py:25 +#: wxUI/dialogs/mastodon/search.py:24 +#: wxUI/dialogs/mastodon/updateProfile.py:130 +#: wxUI/dialogs/mastodon/userActions.py:36 +#: wxUI/dialogs/mastodon/userTimeline.py:30 +msgid "&OK" +msgstr "&Ok" + +#: wxUI/dialogs/mastodon/configuration.py:14 +#, fuzzy +msgid "User autocompletion settings" +msgstr "impostazioni di autocompletamento..." + +#: wxUI/dialogs/mastodon/configuration.py:15 +msgid "" +"Scan acc&ount and add followers and following users to the user " +"autocompletion database" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:16 +#, fuzzy +msgid "&Manage autocompletion database" +msgstr "Gestisci autocompletamento per gli utenti nel database" + +#: wxUI/dialogs/mastodon/configuration.py:21 +#, fuzzy +msgid "&Disable Streaming API endpoints" +msgstr "Disattiva le funzioni di Streaming" + +#: wxUI/dialogs/mastodon/configuration.py:23 +#, fuzzy +msgid "&Relative timestamps" +msgstr "Mostra tempo di ricezione trascorso" + +#: wxUI/dialogs/mastodon/configuration.py:25 +msgid "" +"R&ead preferences from instance (default visibility when publishing and " +"displaying sensitive content)" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:28 +#, fuzzy +msgid "&Items on each API call" +msgstr "Elementi per ogni chiamata API " + +# | msgid "" +# | "Inverted buffers: The newest tweets will be shown at the beginning while +# " +# | "the oldest at the end" +#: wxUI/dialogs/mastodon/configuration.py:34 +#, fuzzy +msgid "" +"I&nverted buffers: The newest items will be shown at the beginning while " +"the oldest at the end" +msgstr "" +"Inverti elenco: I nuovi tweets verranno mostrate in cima all'elenco, i " +"precedenti alla fine" + +#: wxUI/dialogs/mastodon/configuration.py:36 +msgid "&Ask confirmation before boosting a post" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:38 +#, fuzzy +msgid "S&how screen names instead of full names" +msgstr "Visualizza nome del riquadro al posto del nome completo" + +#: wxUI/dialogs/mastodon/configuration.py:40 +msgid "Hide e&mojis in usernames" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:42 +#, fuzzy +msgid "" +"&Number of items per buffer to cache in database (0 to disable caching, " +"blank for unlimited)" +msgstr "" +"Numero di voci per buffer per la cache nel database (0 per disabilitare " +"caching, vuoto per un numero illimitato)" + +#: wxUI/dialogs/mastodon/configuration.py:46 +msgid "" +"&Load cache for items in memory (much faster in big datasets but requires" +" more RAM)" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:53 +#, python-brace-format +msgid "Edit template for &posts. Current template: {}" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:55 +#, python-brace-format +msgid "Edit template for c&onversations. Current template: {}" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:57 +#, python-brace-format +msgid "Edit template for p&ersons. Current template: {}" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:65 +#, fuzzy +msgid "&Volume" +msgstr "Volume" + +#: wxUI/dialogs/mastodon/configuration.py:76 +#, fuzzy +msgid "S&ession mute" +msgstr "sessione mute" + +#: wxUI/dialogs/mastodon/configuration.py:78 +#, fuzzy +msgid "&Output device" +msgstr "Dispositivo di uscita" + +#: wxUI/dialogs/mastodon/configuration.py:85 +#, fuzzy +msgid "&Input device" +msgstr "Dispositivo di input" + +#: wxUI/dialogs/mastodon/configuration.py:93 +#, fuzzy +msgid "Sound &pack" +msgstr "Pacchetto audio" + +# | msgid "Indicate audio tweets with sound" +#: wxUI/dialogs/mastodon/configuration.py:99 +#, fuzzy +msgid "Indicate &audio or video in posts with sound" +msgstr "Avvisa con un suono per i tweet audio:" + +# | msgid "Indicate tweets containing images with sound" +#: wxUI/dialogs/mastodon/configuration.py:101 +#, fuzzy +msgid "Indicate posts containing i&mages with sound" +msgstr "Avvisa con un suono i tweet con immagini" + +#: wxUI/dialogs/mastodon/configuration.py:124 +#, fuzzy +msgid "&Language for OCR" +msgstr "Lingua per l'OCR" + +#: wxUI/dialogs/mastodon/configuration.py:149 +msgid "Feedback" +msgstr "Feedback " + +#: wxUI/dialogs/mastodon/configuration.py:153 +msgid "Buffers" +msgstr "Buffers" + +#: wxUI/dialogs/mastodon/configuration.py:157 +msgid "Templates" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:161 +msgid "Sound" +msgstr "Audio" + +#: wxUI/dialogs/mastodon/configuration.py:165 +msgid "Extras" +msgstr "Extra" + +# | msgid "Would you like to add a comment to this tweet?" +#: wxUI/dialogs/mastodon/dialogs.py:7 +#, fuzzy +msgid "Would you like to share this post?" +msgstr "Vuoi aggiungere un commento a questo tweet?" + +# | msgid "" +# | "Do you really want to delete this tweet? It will be deleted from Twitter +# " +# | "as well." +#: wxUI/dialogs/mastodon/dialogs.py:15 +#, fuzzy +msgid "" +"Do you really want to delete this post? It will be deleted from the " +"instance as well." +msgstr "Vuoi eliminare il tweet? Questo sarà cancellato anche da Twitter." + +#: wxUI/dialogs/mastodon/dialogs.py:15 +msgid "Delete" +msgstr "Elimina Tweet" + +#: wxUI/dialogs/mastodon/dialogs.py:23 +msgid "" +"Are you sure you want to dismiss this notification? If you dismiss a " +"mention notification, it also disappears from your mentions buffer. The " +"post is not going to be deleted from the instance, though." +msgstr "" + +# | msgid "" +# | "Do you really want to empty this buffer? It's items will be removed from +# " +# | "the list but not from Twitter" +#: wxUI/dialogs/mastodon/dialogs.py:31 +#, fuzzy +msgid "" +"Do you really want to empty this buffer? It's items will be removed from" +" the list but not from the instance" +msgstr "" +"Svuotare questo buffer? I tweet saranno rimossi dall'elenco, ma non da " +"Twitter" + +# | msgid "This user has no tweets. {0} can't create a timeline." +#: wxUI/dialogs/mastodon/dialogs.py:38 +#, fuzzy, python-brace-format +msgid "This user has no posts. {0} can't create a timeline." +msgstr "" +"Questo utente non ha tweets. {0} non può creare una Cronologia per questo" +" utente" + +# | msgid "This user has no favorited tweets. {0} can't create a timeline." +#: wxUI/dialogs/mastodon/dialogs.py:43 +#, fuzzy, python-brace-format +msgid "This user has no favorited posts. {0} can't create a timeline." +msgstr "" +"Questo utente non ha tweets preferiti. {0} non può creare una Cronologia " +"per questo utente" + +# | msgid "This user has no followers. {0} can't create a timeline." +#: wxUI/dialogs/mastodon/dialogs.py:48 +#, fuzzy, python-brace-format +msgid "This user has no followers yet. {0} can't create a timeline." +msgstr "" +"Non stai seguendo questo utente . {0} non è possibile creare una " +"Cronologia." + +# | msgid "This user has no followers. {0} can't create a timeline." +#: wxUI/dialogs/mastodon/dialogs.py:53 +#, fuzzy, python-brace-format +msgid "This user is not following anyone. {0} can't create a timeline." +msgstr "" +"Non stai seguendo questo utente . {0} non è possibile creare una " +"Cronologia." + +#: wxUI/dialogs/mastodon/dialogs.py:60 +#, python-brace-format +msgid "The focused item has no user in it. {} ca't open a user profile" +msgstr "" + +# | msgid "R&emove from list" +#: wxUI/dialogs/mastodon/menus.py:13 wxUI/dialogs/mastodon/menus.py:41 +#, fuzzy +msgid "R&emove from favorites" +msgstr "&Rimuovi dalla lista" + +#: wxUI/dialogs/mastodon/menus.py:15 wxUI/dialogs/mastodon/menus.py:43 +msgid "&Open URL" +msgstr "C&ollegamento alla pagina..." + +# | msgid "Search on twitter" +#: wxUI/dialogs/mastodon/menus.py:17 wxUI/dialogs/mastodon/menus.py:47 +#, fuzzy +msgid "&Open in instance" +msgstr "Ricerca in Twitter" + +#: wxUI/dialogs/mastodon/menus.py:19 wxUI/dialogs/mastodon/menus.py:45 +msgid "&Play audio" +msgstr "A&vvia audio" + +#: wxUI/dialogs/mastodon/menus.py:23 wxUI/dialogs/mastodon/menus.py:51 +msgid "&Copy to clipboard" +msgstr "&Copia negli appunti" + +#: wxUI/dialogs/mastodon/menus.py:27 wxUI/dialogs/mastodon/menus.py:55 +msgid "&User actions..." +msgstr "&Azioni utente..." + +#: wxUI/dialogs/mastodon/menus.py:53 +msgid "&Dismiss" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:20 +#: wxUI/dialogs/mastodon/postDialogs.py:38 +msgid "Attachments" +msgstr "Allegati" + +#: wxUI/dialogs/mastodon/postDialogs.py:24 +msgid "File" +msgstr "File" + +#: wxUI/dialogs/mastodon/postDialogs.py:25 +msgid "Type" +msgstr "Tipo" + +#: wxUI/dialogs/mastodon/postDialogs.py:26 +#: wxUI/dialogs/mastodon/postDialogs.py:141 +msgid "Description" +msgstr "Descrizione" + +# | msgid "Remove client" +#: wxUI/dialogs/mastodon/postDialogs.py:28 +#, fuzzy +msgid "Remove Attachment" +msgstr "Rimuovi client" + +#: wxUI/dialogs/mastodon/postDialogs.py:33 +msgid "Post in the thread" +msgstr "" + +# | msgid "Remove from list" +#: wxUI/dialogs/mastodon/postDialogs.py:40 +#, fuzzy +msgid "Remove post" +msgstr "Rimuovi dalla lista" + +#: wxUI/dialogs/mastodon/postDialogs.py:47 +msgid "&Visibility" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:54 +#, fuzzy +msgid "Language" +msgstr "Lingua" + +#: wxUI/dialogs/mastodon/postDialogs.py:58 +msgid "A&dd" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:59 +msgid "S&ensitive content" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:64 +msgid "Content warning" +msgstr "" + +# | msgid "Add to list" +#: wxUI/dialogs/mastodon/postDialogs.py:71 +#, fuzzy +msgid "Add p&ost" +msgstr "Aggiungi alla lista" + +#: wxUI/dialogs/mastodon/postDialogs.py:75 +msgid "Auto&complete users" +msgstr "&completamento automatico per gli utenti" + +# | msgid "Check &spelling..." +#: wxUI/dialogs/mastodon/postDialogs.py:77 +#, fuzzy +msgid "Check &spelling" +msgstr "Controllo &ortografico..." + +#: wxUI/dialogs/mastodon/postDialogs.py:79 +#, fuzzy +msgid "&Translate" +msgstr "Tradotto" + +# | msgid "Tweet - %i characters " +#: wxUI/dialogs/mastodon/postDialogs.py:106 +#, fuzzy, python-brace-format +msgid "Post - {} characters" +msgstr "Tweet -% i caratteri " + +#: wxUI/dialogs/mastodon/postDialogs.py:130 +msgid "Image" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:132 +#, fuzzy +msgid "Video" +msgstr "Nascondi" + +# | msgid "&Audio" +#: wxUI/dialogs/mastodon/postDialogs.py:134 +#, fuzzy +msgid "Audio" +msgstr "&Audio" + +#: wxUI/dialogs/mastodon/postDialogs.py:136 +msgid "Poll" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:141 +msgid "please provide a description" +msgstr "Aggiungi una descrizione" + +#: wxUI/dialogs/mastodon/postDialogs.py:148 +msgid "Select the picture to be uploaded" +msgstr "Seleziona l'immagine da caricare" + +#: wxUI/dialogs/mastodon/postDialogs.py:148 +msgid "Image files (*.png, *.jpg, *.gif)|*.png; *.jpg; *.gif" +msgstr "File di immagine (*.png, *.jpg, *.gif)|*.png; *.jpg; *.gif" + +#: wxUI/dialogs/mastodon/postDialogs.py:155 +#, fuzzy +msgid "Select the video to be uploaded" +msgstr "Seleziona l'immagine da caricare" + +# | msgid "Audio Files (*.mp3, *.ogg, *.wav)|*.mp3; *.ogg; *.wav" +#: wxUI/dialogs/mastodon/postDialogs.py:155 +#, fuzzy +msgid "Video files (*.mp4, *.mov, *.m4v, *.webm)| *.mp4; *.m4v; *.mov; *.webm" +msgstr "Audio Files (*.mp3, *.ogg, *.wav)|*.mp3; *.ogg; *.wav" + +#: wxUI/dialogs/mastodon/postDialogs.py:162 +msgid "Select the audio file to be uploaded" +msgstr "Selezionare il file audio da caricare" + +#: wxUI/dialogs/mastodon/postDialogs.py:162 +msgid "" +"Audio files (*.mp3, *.ogg, *.wav, *.flac, *.opus, *.aac, *.m4a, " +"*.3gp)|*.mp3; *.ogg; *.wav; *.flac; *.opus; *.aac; *.m4a; *.3gp" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:169 +msgid "" +"It is not possible to add more attachments. Please take into account that" +" You can add only a maximum of 4 images, or one audio, video or poll per" +" post. Please remove other attachments before continuing." +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:169 +#, fuzzy +msgid "Error adding attachment" +msgstr "Aggiungi allegato" + +#: wxUI/dialogs/mastodon/postDialogs.py:172 +msgid "" +"You can add a poll or media files. In order to add your poll, please " +"remove other attachments first." +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:172 +#, fuzzy +msgid "Error adding poll" +msgstr "Aggiungi allegato" + +# | msgid "Tweet - %i characters " +#: wxUI/dialogs/mastodon/postDialogs.py:177 +#, fuzzy, python-format +msgid "Post - %i characters " +msgstr "Tweet -% i caratteri " + +#: wxUI/dialogs/mastodon/postDialogs.py:200 +msgid "Image description" +msgstr "Descrizione Immagine" + +# | msgid "Private" +#: wxUI/dialogs/mastodon/postDialogs.py:210 +#, fuzzy +msgid "Privacy" +msgstr "Privato" + +#: wxUI/dialogs/mastodon/postDialogs.py:214 +#, fuzzy +msgid "Source" +msgstr "Lingua d'origine" + +#: wxUI/dialogs/mastodon/postDialogs.py:222 +msgid "Boosts" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:224 +msgid "View users who boosted this post" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:231 +msgid "View users who favorited this post" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:239 +#, fuzzy +msgid "Copy link to clipboard" +msgstr "Copia negli appunti" + +#: wxUI/dialogs/mastodon/postDialogs.py:241 +#: wxUI/dialogs/mastodon/postDialogs.py:280 +msgid "Check &spelling..." +msgstr "Controllo &ortografico..." + +#: wxUI/dialogs/mastodon/postDialogs.py:242 +#: wxUI/dialogs/mastodon/postDialogs.py:281 +msgid "&Translate..." +msgstr "&Traduci..." + +#: wxUI/dialogs/mastodon/postDialogs.py:243 +#: wxUI/dialogs/mastodon/postDialogs.py:282 +msgid "C&lose" +msgstr "&Chiudi" + +#: wxUI/dialogs/mastodon/postDialogs.py:294 +msgid "Add a poll" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:298 +msgid "Participation time" +msgstr "" + +# | msgid "%d minutes, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "5 minutes" +msgstr "%d minuti, " + +# | msgid "%d minutes, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "30 minutes" +msgstr "%d minuti, " + +# | msgid "%d hour, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "1 hour" +msgstr "%d ora, " + +# | msgid "%d hours, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "6 hours" +msgstr "%d ore, " + +# | msgid "%d day, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "1 day" +msgstr "%d giorno, " + +# | msgid "%d days, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "2 days" +msgstr "%d giorni, " + +# | msgid "%d days, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "3 days" +msgstr "%d giorni, " + +# | msgid "%d days, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "4 days" +msgstr "%d giorni, " + +# | msgid "%d days, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "5 days" +msgstr "%d giorni, " + +# | msgid "%d days, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "6 days" +msgstr "%d giorni, " + +# | msgid "%d days, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "7 days" +msgstr "%d giorni, " + +#: wxUI/dialogs/mastodon/postDialogs.py:304 +msgid "Choices" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:308 +msgid "Option 1" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:315 +msgid "Option 2" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:322 +msgid "Option 3" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:329 +msgid "Option 4" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:334 +msgid "Allow multiple choices per user" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:337 +msgid "Hide votes count until the poll expires" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:363 +msgid "Please make sure you have provided at least two options for the poll." +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:363 +#, fuzzy +msgid "Not enough information" +msgstr "Informazioni:" + +#: wxUI/dialogs/mastodon/postDialogs.py:368 +msgid "Vote in this poll" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:371 +#, fuzzy +msgid "Options" +msgstr "Azione" + +# | msgid "&Search" +#: wxUI/dialogs/mastodon/search.py:9 +#, fuzzy +msgid "Search" +msgstr "&Ricerca" + +#: wxUI/dialogs/mastodon/search.py:18 +msgid "Posts" +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:22 +#, fuzzy +msgid "Select user" +msgstr "Selezionare URL" + +#: wxUI/dialogs/mastodon/showUserProfile.py:73 +#, fuzzy, python-brace-format +msgid "{}'s Profile" +msgstr "Aggiorna il &profilo" + +#: wxUI/dialogs/mastodon/showUserProfile.py:79 +#, fuzzy +msgid "&Name: " +msgstr "Nome" + +#: wxUI/dialogs/mastodon/showUserProfile.py:84 +#, fuzzy +msgid "&URL: " +msgstr "Utente" + +#: wxUI/dialogs/mastodon/showUserProfile.py:89 +msgid "&Bio: " +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:94 +msgid "&Joined at: " +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:99 +#, fuzzy +msgid "&Actions" +msgstr "Azione" + +#: wxUI/dialogs/mastodon/showUserProfile.py:104 +#, fuzzy +msgid "Header: " +msgstr "Nascondi" + +#: wxUI/dialogs/mastodon/showUserProfile.py:112 +msgid "Avatar: " +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:122 +#, python-brace-format +msgid "Field &{} - Label: " +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:129 +#, fuzzy +msgid "Content: " +msgstr "Contesto" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:43 +#: wxUI/dialogs/mastodon/filters/create_filter.py:65 +#: wxUI/dialogs/mastodon/showUserProfile.py:135 +msgid "Yes" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:43 +#: wxUI/dialogs/mastodon/filters/create_filter.py:65 +#: wxUI/dialogs/mastodon/filters/create_filter.py:69 +#: wxUI/dialogs/mastodon/showUserProfile.py:135 +msgid "No" +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:137 +#, fuzzy +msgid "&Private account: " +msgstr "Rimuovi account" + +#: wxUI/dialogs/mastodon/showUserProfile.py:144 +#, fuzzy +msgid "&Bot account: " +msgstr "Account" + +#: wxUI/dialogs/mastodon/showUserProfile.py:151 +#, fuzzy +msgid "&Discoverable account: " +msgstr "Rimuovi account" + +#: wxUI/dialogs/mastodon/showUserProfile.py:157 +#, python-brace-format +msgid "{} p&osts. Click to open posts timeline" +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:162 +#, python-brace-format +msgid "{} &following. Click to open Following timeline" +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:166 +#, python-brace-format +msgid "{} fo&llowers. Click to open followers timeline" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:43 +msgid "&Display Name" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:50 +#, fuzzy +msgid "&Bio" +msgstr "&Blocca" + +#: wxUI/dialogs/mastodon/updateProfile.py:58 +#, fuzzy +msgid "Header" +msgstr "Nascondi" + +#: wxUI/dialogs/mastodon/updateProfile.py:71 +#, fuzzy +msgid "Change &header" +msgstr "Nascondi" + +#: wxUI/dialogs/mastodon/updateProfile.py:79 +msgid "Avatar" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:92 +msgid "Change &avatar" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:102 +#, python-brace-format +msgid "Field &{}: Label" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:110 +#, fuzzy +msgid "Content" +msgstr "Contesto" + +#: wxUI/dialogs/mastodon/updateProfile.py:120 +#, fuzzy +msgid "&Private account" +msgstr "Rimuovi account" + +#: wxUI/dialogs/mastodon/updateProfile.py:122 +#, fuzzy +msgid "&Bot account" +msgstr "Account" + +#: wxUI/dialogs/mastodon/updateProfile.py:124 +#, fuzzy +msgid "&Discoverable account" +msgstr "Rimuovi account" + +#: wxUI/dialogs/mastodon/updateProfile.py:167 +msgid "Select header image - max 2MB" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:172 +#: wxUI/dialogs/mastodon/updateProfile.py:194 +msgid "The selected file is larger than 2MB. Do you want to select another file?" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:173 +#: wxUI/dialogs/mastodon/updateProfile.py:195 +msgid "File more than 2MB" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:189 +msgid "Select avatar image - max 2MB" +msgstr "" + +#: wxUI/dialogs/mastodon/userActions.py:19 +msgid "&Follow" +msgstr "&Segui" + +#: wxUI/dialogs/mastodon/userActions.py:20 +msgid "U&nfollow" +msgstr "&Non seguire" + +#: wxUI/dialogs/mastodon/userActions.py:22 +msgid "Unmu&te" +msgstr "U&nmute" + +#: wxUI/dialogs/mastodon/userActions.py:23 +msgid "&Block" +msgstr "&Blocca" + +#: wxUI/dialogs/mastodon/userActions.py:24 +msgid "Unbl&ock" +msgstr "&Sblocca" + +#: wxUI/dialogs/mastodon/userTimeline.py:9 +#, python-format +msgid "Timeline for %s" +msgstr "Cronologia di %s" + +#: wxUI/dialogs/mastodon/userTimeline.py:19 +msgid "&Posts" +msgstr "" + +#: wxUI/dialogs/mastodon/userTimeline.py:20 +msgid "&Followers" +msgstr "&Followers" + +#: wxUI/dialogs/mastodon/userTimeline.py:21 +#, fuzzy +msgid "Fo&llowing" +msgstr "&Non seguire" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:12 +#, fuzzy +msgid "Keyword" +msgstr "Key" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:13 +#: wxUI/dialogs/mastodon/filters/create_filter.py:24 +msgid "Whole word" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:19 +msgid "Keyword:" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:25 +#: wxUI/dialogs/mastodon/filters/manage_filters.py:22 +#, fuzzy +msgid "Add" +msgstr "Indirizzo" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:34 +msgid "Palabras clave a filtrar:" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:74 +#, fuzzy +msgid "New filter" +msgstr "Gestisci fi<ri" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:78 +#, fuzzy +msgid "Home timeline" +msgstr "Cronologie di..." + +#: wxUI/dialogs/mastodon/filters/create_filter.py:79 +msgid "Public statuses" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:81 +#, fuzzy +msgid "Threads" +msgstr "Pronto" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:82 +#, fuzzy +msgid "Profiles" +msgstr "Aggiorna il &profilo" + +# | msgid "Delete" +#: wxUI/dialogs/mastodon/filters/create_filter.py:86 +#, fuzzy +msgid "Hide posts" +msgstr "Elimina Tweet" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:87 +msgid "Set a content warning to posts" +msgstr "" + +# | msgid "%d hours, " +#: wxUI/dialogs/mastodon/filters/create_filter.py:91 +#, fuzzy +msgid "Hours" +msgstr "%d ore, " + +# | msgid "%d days, " +#: wxUI/dialogs/mastodon/filters/create_filter.py:92 +#, fuzzy +msgid "Days" +msgstr "%d giorni, " + +#: wxUI/dialogs/mastodon/filters/create_filter.py:93 +msgid "Weeks" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:94 +msgid "months" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:97 +#, fuzzy +msgid "Title:" +msgstr "File" + +# | msgid "Reply to {arg0}" +#: wxUI/dialogs/mastodon/filters/create_filter.py:104 +#, fuzzy +msgid "Apply to:" +msgstr "Rispondi a {arg0}" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:114 +#, fuzzy +msgid "Action:" +msgstr "Azione" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:122 +msgid "Expires in:" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/manage_filters.py:10 +#, fuzzy +msgid "Filters" +msgstr "File" + +#: wxUI/dialogs/mastodon/filters/manage_filters.py:15 +#, fuzzy +msgid "Title" +msgstr "File" + +#: wxUI/dialogs/mastodon/filters/manage_filters.py:16 +msgid "Keywords" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/manage_filters.py:17 +#, fuzzy +msgid "Contexts" +msgstr "Contesto" + +#: wxUI/dialogs/mastodon/filters/manage_filters.py:19 +#, fuzzy +msgid "Expires" +msgstr "Extra" + +#~ msgid "There are no results for the coordinates in this tweet" +#~ msgstr "Nessun risultato per la ricerca in questo tweet" + +#~ msgid "This list is already opened" +#~ msgstr "Questa lista è già aperta" + +# | msgid "Timeline for {}" +#~ msgid "Timelines for {}" +#~ msgstr "Cronologia di {}" + +#~ msgid "{account_name} (Mastodon)" +#~ msgstr "" + +#~ msgid "URL of mastodon instance:" +#~ msgstr "" + +# | msgid "View &address" +#~ msgid "Email address:" +#~ msgstr "Visualizza &indirizzo" + +# | msgid "Password: " +#~ msgid "Password:" +#~ msgstr "Password: " + +# | msgid "Item" +#~ msgid "&Item" +#~ msgstr "Elemento" + +#~ msgid "Visibility" +#~ msgstr "" + +#~ msgid "Sensitive content" +#~ msgstr "" + +#~ msgid "Allow multiple votes per user" +#~ msgstr "" + +#~ msgid "{username} has mentionned you: {status}" +#~ msgstr "" + +#~ msgid "has mentionned you: {status}" +#~ msgstr "" + +#~ msgid "Likes for {}" +#~ msgstr "A {} Piace" + +#~ msgid "Trending topics for %s" +#~ msgstr "Argomenti di tendenza per %s" + +#~ msgid "Select user" +#~ msgstr "Seleziona l'utente" + +#~ msgid "Sent direct messages" +#~ msgstr "Messaggi Inviati" + +#~ msgid "Sent tweets" +#~ msgstr "Tweet inviati" + +#~ msgid "Likes" +#~ msgstr "Mi piace" + +#~ msgid "Friends" +#~ msgstr "Following" + +#~ msgid "{username}'s likes" +#~ msgstr "" + +#~ msgid "{username}'s friends" +#~ msgstr "" + +#~ msgid "Tweet" +#~ msgstr "Tweet" + +#~ msgid "Write the tweet here" +#~ msgstr "Scrivi il tweet qui" + +#~ msgid "New tweet in {0}" +#~ msgstr "Nuovo tweet" + +#~ msgid "{0} new tweets in {1}." +#~ msgstr "@{0} Cita il tuo tweet: {1}" + +#~ msgid "Reply to {arg0}" +#~ msgstr "Rispondi a {arg0}" + +#~ msgid "Reply to %s" +#~ msgstr "Rispondi a %s" + +#~ msgid "Direct message to %s" +#~ msgstr "Messaggio diretto a %s" + +#~ msgid "New direct message" +#~ msgstr "Nuovo messaggio diretto" + +#~ msgid "This action is not supported on protected accounts." +#~ msgstr "Questa azione non è supportata per questo buffer" + +#~ msgid "Quote" +#~ msgstr "Citazione..." + +#~ msgid "Add your comment to the tweet" +#~ msgstr "Aggiungi il tuo commento al tweet" + +#~ msgid "User details" +#~ msgstr "Dettagli utente" + +#~ msgid "MMM D, YYYY. H:m" +#~ msgstr "dddd, MMMM D, YYYY H:m:s" + +#~ msgid "There are no coordinates in this tweet" +#~ msgstr "Non ci sono coordinate in questo Tweet" + +#~ msgid "Error decoding coordinates. Try again later." +#~ msgstr "Errore durante l'autorizzazione. Riprovare più tardi." + +#~ msgid "Invalid buffer" +#~ msgstr "Buffer non valido " + +#~ msgid "{0} new direct messages." +#~ msgstr "Nuovo messaggio diretto" + +#~ msgid "This action is not supported in the buffer yet." +#~ msgstr "Questa azione non è supportata per questo buffer" + +#~ msgid "" +#~ "Getting more items cannot be done " +#~ "in this buffer. Use the direct " +#~ "messages buffer instead." +#~ msgstr "" + +#~ msgid "Mention" +#~ msgstr "Menziona" + +#~ msgid "Mention to %s" +#~ msgstr "Menziona a %s" + +#~ msgid "{0} new followers." +#~ msgstr "Nuovo follower." + +#~ msgid "This action is not supported in the buffer, yet." +#~ msgstr "Questa azione non è supportata per questo buffer" + +#~ msgid "&Retweet" +#~ msgstr "&Retweet" + +#~ msgid "&Like" +#~ msgstr "&Mi Piace" + +#~ msgid "&Unlike" +#~ msgstr "&Non Mi Piace" + +#~ msgid "View &address" +#~ msgstr "Visualizza &indirizzo" + +#~ msgid "&View lists" +#~ msgstr "&Visualizza liste" + +# | msgid "V&iew likes" +#~ msgid "View likes" +#~ msgstr "&Visualizza tweet marcati con Mi Piace" + +#~ msgid "Likes timelines" +#~ msgstr "Cronologie Favorite" + +#~ msgid "Followers timelines" +#~ msgstr "Cronologie dei followers" + +#~ msgid "Following timelines" +#~ msgstr "Cronologie dei followers" + +#~ msgid "Lists" +#~ msgstr "Liste" + +#~ msgid "List for {}" +#~ msgstr "Lista per {}" + +#~ msgid "Filters cannot be applied on this buffer" +#~ msgstr "Il filtro non è supportato in questo buffer" + +#~ msgid "View item" +#~ msgstr "Visualizza elemento" + +#~ msgid "Ask" +#~ msgstr "Richiesta" + +#~ msgid "Retweet without comments" +#~ msgstr "Retweet senza commenti" + +#~ msgid "Retweet with comments" +#~ msgstr "Retweet con commenti" + +#~ msgid "Edit template for tweets. Current template: {}" +#~ msgstr "" + +#~ msgid "Edit template for direct messages. Current template: {}" +#~ msgstr "" + +#~ msgid "Edit template for sent direct messages. Current template: {}" +#~ msgstr "" + +#~ msgid "User has been suspended" +#~ msgstr "L'utente è stato sospeso." + +#~ msgid "Information for %s" +#~ msgstr "Informazioni per %s" + +#~ msgid "Discarded" +#~ msgstr "Scartato" + +#~ msgid "Username: @%s\n" +#~ msgstr "Nome utente: @%s\n" + +#~ msgid "Name: %s\n" +#~ msgstr "Nome: %s\n" + +#~ msgid "Location: %s\n" +#~ msgstr "Localizzazione: %s\n" + +#~ msgid "URL: %s\n" +#~ msgstr "URL: %s\n" + +#~ msgid "Bio: %s\n" +#~ msgstr "Descrizione: %s\n" + +#~ msgid "Yes" +#~ msgstr "Sì" + +#~ msgid "No" +#~ msgstr "No" + +#~ msgid "Protected: %s\n" +#~ msgstr "Protetta: %s\n" + +#~ msgid "Relationship: " +#~ msgstr "" + +#~ msgid "You follow {0}. " +#~ msgstr "Stai seguendo {0}. " + +#~ msgid "{0} is following you." +#~ msgstr "{0} ti sta seguendo." + +#~ msgid "" +#~ "Followers: %s\n" +#~ " Friends: %s\n" +#~ msgstr "" +#~ "Followers: %s\n" +#~ " Following: %s\n" + +#~ msgid "Verified: %s\n" +#~ msgstr "Verificato: %s\n" + +#~ msgid "Tweets: %s\n" +#~ msgstr "Tweets: %s\n" + +#~ msgid "Likes: %s" +#~ msgstr "Mi Piace: %s" + +#~ msgid "You can't ignore direct messages" +#~ msgstr "Non è possibile ignorare i messaggi diretti" + +#~ msgid "Attaching..." +#~ msgstr "Allegando..." + +#~ msgid "Pause" +#~ msgstr "Pausa" + +#~ msgid "&Resume" +#~ msgstr "&Riassumi" + +#~ msgid "Resume" +#~ msgstr "Riassumi" + +#~ msgid "&Pause" +#~ msgstr "&Pausa" + +#~ msgid "&Stop" +#~ msgstr "&Stop" + +#~ msgid "Recording" +#~ msgstr "Registrazione" + +#~ msgid "Stopped" +#~ msgstr "Stoppato" + +#~ msgid "&Record" +#~ msgstr "&Registra" + +#~ msgid "&Play" +#~ msgstr "Ri&produci" + +#~ msgid "Recoding audio..." +#~ msgstr "Ricodifica audio ..." + +#~ msgid "Error in file upload: {0}" +#~ msgstr "Errore nel file in caricamento {0}" + +#~ msgid "Transferred" +#~ msgstr "Trasferito" + +#~ msgid "Total file size" +#~ msgstr "Dimensioni totali del file" + +#~ msgid "Transfer rate" +#~ msgstr "Velocità di trasferimento" + +#~ msgid "Time left" +#~ msgstr "Tempo rimasto" + +#~ msgid "Attach audio" +#~ msgstr "Allega audio" + +#~ msgid "&Add an existing file" +#~ msgstr "&Allega un file esistente" + +#~ msgid "&Discard" +#~ msgstr "&Scarta" + +#~ msgid "Upload to" +#~ msgstr "Carica" + +#~ msgid "Attach" +#~ msgstr "Allega" + +#~ msgid "&Cancel" +#~ msgstr "&annulla" + +#~ msgid "Audio Files (*.mp3, *.ogg, *.wav)|*.mp3; *.ogg; *.wav" +#~ msgstr "Audio Files (*.mp3, *.ogg, *.wav)|*.mp3; *.ogg; *.wav" + +#~ msgid "You have to start writing" +#~ msgstr "Inizia a scrivere" + +#~ msgid "There are no results in your users database" +#~ msgstr "Nessun risultato nel tuo Database utenti" + +#~ msgid "Autocompletion only works for users." +#~ msgstr "Il completamento automatico funziona solo per gli utenti." + +#~ msgid "" +#~ "Updating database... You can close this" +#~ " window now. A message will tell " +#~ "you when the process finishes." +#~ msgstr "" +#~ "Aggiornamento del database... Si può " +#~ "ora chiudere questa finestra. Un " +#~ "messaggio vi informerà Quando il " +#~ "processo termina." + +#~ msgid "Manage Autocompletion database" +#~ msgstr "Gestisci autocompletamento per gli utenti nel database" + +#~ msgid "Editing {0} users database" +#~ msgstr "Modificazione del {0} database degli utenti" + +#~ msgid "Username" +#~ msgstr "Nome utente" + +#~ msgid "Add user" +#~ msgstr "Aggiungi utente" + +#~ msgid "Remove user" +#~ msgstr "Rimuovi utente" + +#~ msgid "Twitter username" +#~ msgstr "Nome utente Twitter" + +#~ msgid "Add user to database" +#~ msgstr "Aggiungi utente al database" + +#~ msgid "The user does not exist" +#~ msgstr "Questo utente non esiste su Twitter" + +#~ msgid "Error!" +#~ msgstr "Errore" + +#~ msgid "Autocomplete users' settings" +#~ msgstr "Impostazioni autocompletamento utenti" + +#~ msgid "Add followers to database" +#~ msgstr "" + +#~ msgid "Add friends to database" +#~ msgstr "Aggiungi utente al database" + +#~ msgid "Updating autocompletion database" +#~ msgstr "Gestisci autocompletamento per gli utenti nel database" + +#~ msgid "" +#~ "This process will retrieve the users " +#~ "you selected from Twitter, and add " +#~ "them to the user autocomplete database." +#~ " Please note that if there are " +#~ "many users or you have tried to" +#~ " perform this action less than 15 " +#~ "minutes ago, TWBlue may reach a " +#~ "limit in Twitter API calls when " +#~ "trying to load the users into the" +#~ " database. If this happens, we will" +#~ " show you an error, in which " +#~ "case you will have to try this " +#~ "process again in a few minutes. If" +#~ " this process ends with no error, " +#~ "you will be redirected back to the" +#~ " account settings dialog. Do you want" +#~ " to continue?" +#~ msgstr "" + +#~ msgid "TWBlue has imported {} users successfully." +#~ msgstr "" + +#~ msgid "Done" +#~ msgstr "Fatto!" + +#~ msgid "Error adding users from Twitter. Please try again in about 15 minutes." +#~ msgstr "" + +#~ msgid "New tweet" +#~ msgstr "Nuovo tweet" + +#~ msgid "Retweet" +#~ msgstr "Retweet" + +#~ msgid "Like a tweet" +#~ msgstr "Mi Piace il tweet" + +#~ msgid "Like/unlike a tweet" +#~ msgstr "Mi piace / Non Mi piace il tweet" + +#~ msgid "Unlike a tweet" +#~ msgstr "Non Mi piace il tweet" + +#~ msgid "See user details" +#~ msgstr "Dettagli utente" + +#~ msgid "Show tweet" +#~ msgstr "Visualizza Tweet" + +#~ msgid "Interact with the currently focused tweet." +#~ msgstr "Interagisci con il tweet attualmente focalizzato." + +#~ msgid "View in Twitter" +#~ msgstr "Ricerca in Twitter" + +#~ msgid "Edit profile" +#~ msgstr "Modifica Profilo" + +#~ msgid "Delete a tweet or direct message" +#~ msgstr "Elimina un tweet o un messaggio diretto" + +#~ msgid "Add to list" +#~ msgstr "Aggiungi alla lista" + +#~ msgid "Remove from list" +#~ msgstr "Rimuovi dalla lista" + +#~ msgid "Search on twitter" +#~ msgstr "Ricerca in Twitter" + +#~ msgid "Show lists for a specified user" +#~ msgstr "Mostra le liste di un utente" + +#~ msgid "Get geolocation" +#~ msgstr "Localizzazione" + +#~ msgid "Display the tweet's geolocation in a dialog" +#~ msgstr "Visualizza la localizzazione del Tweet in una finestra" + +#~ msgid "Create a trending topics buffer" +#~ msgstr "Crea un buffer per gli argomenti di tendenza" + +#~ msgid "" +#~ "Opens the list manager, which allows " +#~ "you to create, edit, delete and " +#~ "open lists in buffers." +#~ msgstr "" +#~ "Apre il gestore lista, che consente " +#~ "di creare, modificare, eliminare e " +#~ "aprire liste nei buffer." + +#~ msgid "Opens the list manager" +#~ msgstr "Gestione liste" + +#~ msgid "{account_name} (Twitter)" +#~ msgstr "" + +#~ msgid "Twitter" +#~ msgstr "Ricerca in Twitter" + +#~ msgid "" +#~ "The request to authorize your Twitter" +#~ " account will be opened in your " +#~ "browser. You only need to do this" +#~ " once. Would you like to continue?" +#~ msgstr "" +#~ "La richiesta di autorizzazione per " +#~ "l'account di Twitter verrà aperto nel" +#~ " browser. Questa operazione verrà richiesta" +#~ " solo una volta. Vuoi continuare?" + +#~ msgid "" +#~ "TWBlue is unable to authenticate the " +#~ "account for {} in Twitter. It " +#~ "might be due to an invalid or " +#~ "expired token, revoqued access to the" +#~ " application, or after an account " +#~ "reactivation. Please remove the account " +#~ "manually from your Twitter sessions in" +#~ " order to stop seeing this message." +#~ msgstr "" + +#~ msgid "Authentication error for session {}" +#~ msgstr "" + +#~ msgid "Dm to %s " +#~ msgstr "Dm a %s " + +#~ msgid "{0}. Quoted tweet from @{1}: {2}" +#~ msgstr "{0}. Tweet citato da @{1}: {2}" + +#~ msgid "Unavailable" +#~ msgstr "Non disponibile" + +#~ msgid "" +#~ "%s (@%s). %s followers, %s friends, " +#~ "%s tweets. Last tweeted %s. Joined " +#~ "Twitter %s" +#~ msgstr "" +#~ "%s (@%s). %s followers, %s following," +#~ " %s tweets. Ultimo tweet %s. Iscritto" +#~ " a Twitter %s" + +#~ msgid "No description available" +#~ msgstr "Nessuna descrizione disponibile" + +#~ msgid "private" +#~ msgstr "Privato" + +#~ msgid "public" +#~ msgstr "Pubblico" + +#~ msgid "Enter your PIN code here" +#~ msgstr "Inserire il codice PIN quì" + +#~ msgid "Authorising account..." +#~ msgstr "Autorizzazione dell'Account..." + +#~ msgid "" +#~ "We could not authorice your Twitter " +#~ "account to be used in TWBlue. This" +#~ " might be caused due to an " +#~ "incorrect verification code. Please try " +#~ "to add the session again." +#~ msgstr "" + +#~ msgid "%s failed. Reason: %s" +#~ msgstr "%s Errore. Motivo: %s" + +#~ msgid "Deleted account" +#~ msgstr "Nuovo Account" + +#~ msgid "$sender_display_name, $text $date" +#~ msgstr "" + +#~ msgid "" +#~ "$display_name (@$screen_name). $followers followers," +#~ " $following following, $tweets tweets. " +#~ "Joined Twitter $created_at." +#~ msgstr "" + +#~ msgid "Image description: {}." +#~ msgstr "Descrizione Immagine" + +#~ msgid "RT @{}: {} Quote from @{}: {}" +#~ msgstr "{0}. Tweet citato da @{1}: {2}" + +# | msgid "{0}. Quoted tweet from @{1}: {2}" +#~ msgid "RT @{}: {}" +#~ msgstr "{0}. Tweet citato da @{1}: {2}" + +# | msgid "{0}. Quoted tweet from @{1}: {2}" +#~ msgid "{} Quote from @{}: {}" +#~ msgstr "{0}. Tweet citato da @{1}: {2}" + +#~ msgid "Sorry, you are not authorised to see this status." +#~ msgstr "Spiacente, non sei autorizzato a visualizzare questo stato." + +#~ msgid "Error {0}" +#~ msgstr "codice di errore {0}" + +#~ msgid "{user_1}, {user_2} and {all_users} more: {text}" +#~ msgstr "" + +#~ msgid "" +#~ "This retweet is over 140 characters. " +#~ "Would you like to post it as " +#~ "a mention to the poster with your" +#~ " comments and a link to the " +#~ "original tweet?" +#~ msgstr "" +#~ "Questo retweet ha superato i 140 " +#~ "caratteri. Preferisci pubblicarlo come una " +#~ "menzione all'autore del post con i " +#~ "vostri commenti e un link per il" +#~ " tweet originale?" + +#~ msgid "Would you like to add a comment to this tweet?" +#~ msgstr "Vuoi aggiungere un commento a questo tweet?" + +#~ msgid "" +#~ "Do you really want to delete this" +#~ " tweet? It will be deleted from " +#~ "Twitter as well." +#~ msgstr "Vuoi eliminare il tweet? Questo sarà cancellato anche da Twitter." + +#~ msgid "Enter the name of the client : " +#~ msgstr "Inserire il nome del cliente" + +#~ msgid "Add client" +#~ msgstr "Aggiungi client" + +#~ msgid "This user has no tweets, so you can't open a timeline for them." +#~ msgstr "" +#~ "Questo utente non ha tweets. Non è" +#~ " possibile aprire una Cronologia per " +#~ "questo utente" + +#~ msgid "" +#~ "This is a protected Twitter user, " +#~ "which means you can't open a " +#~ "timeline using the Streaming API. The" +#~ " user's tweets will not update due" +#~ " to a twitter policy. Do you " +#~ "want to continue?" +#~ msgstr "" +#~ "Questo è un account twitter protetto." +#~ " Non è possibile aprire una " +#~ "Cronologia utilizzando l'API Streaming. I " +#~ "Tweet dell'utente non verranno aggiornati " +#~ "a causa di una politica di " +#~ "Twitter. Vuoi continuare?" + +#~ msgid "" +#~ "This is a protected user account, " +#~ "you need to follow this user to" +#~ " view their tweets or likes." +#~ msgstr "" +#~ "Questo è un account utente protetto, " +#~ "è necessario seguire l'utente per " +#~ "visualizzare i suoi tweet o preferiti." + +#~ msgid "This user has no tweets. {0} can't create a timeline." +#~ msgstr "" +#~ "Questo utente non ha tweets. {0} " +#~ "non può creare una Cronologia per " +#~ "questo utente" + +#~ msgid "This user has no favorited tweets. {0} can't create a timeline." +#~ msgstr "" +#~ "Questo utente non ha tweets preferiti." +#~ " {0} non può creare una Cronologia" +#~ " per questo utente" + +#~ msgid "This user has no followers. {0} can't create a timeline." +#~ msgstr "" +#~ "Non stai seguendo questo utente . " +#~ "{0} non è possibile creare una " +#~ "Cronologia." + +#~ msgid "This user has no friends. {0} can't create a timeline." +#~ msgstr "" +#~ "Questo utente non è tra gli amici." +#~ " {0} non è possibile creare una " +#~ "Cronologia." + +#~ msgid "Geolocation data: {0}" +#~ msgstr "Geolocalizzazione data: {0}" + +#~ msgid "Geo data for this tweet" +#~ msgstr "Informazioni geografiche per questo tweet." + +#~ msgid "You have been blocked from viewing this content" +#~ msgstr "Impossibile visualizzare il contenuto perché sei stato bloccato." + +#~ msgid "" +#~ "You have been blocked from viewing " +#~ "someone's content. In order to avoid " +#~ "conflicts with the full session, TWBlue" +#~ " will remove the affected timeline." +#~ msgstr "" +#~ "Sei stato bloccato e non puoi " +#~ "visualizzare alcun contenuto. Al fine di" +#~ " evitare conflitti con l'intera sezione," +#~ " TWblue rimuoverà la relativa cronologia." +#~ " " + +#~ msgid "" +#~ "TWBlue cannot load this timeline because" +#~ " the user has been suspended from " +#~ "Twitter." +#~ msgstr "" +#~ "TWBlue non può caricare la cronologia" +#~ " perché l'utente è stato sospeso da" +#~ " Twitter." + +#~ msgid "Do you really want to delete this filter?" +#~ msgstr "Sei sicuro di voler eliminare questo filtro??" + +#~ msgid "This filter already exists. Please use a different title" +#~ msgstr "Questo filtro è già esistente. Utilizzare un altro titolo" + +#~ msgid "&Show direct message" +#~ msgstr "Visualizza me&ssaggio diretto" + +#~ msgid "&Show event" +#~ msgstr "&Mostra evento" + +#~ msgid "Direct &message" +#~ msgstr "&Messaggio diretto" + +#~ msgid "&Show user" +#~ msgstr "&Visualizza utente" + +#~ msgid "Search topic" +#~ msgstr "Cerca argomento" + +#~ msgid "&Tweet about this trend" +#~ msgstr "&Tweet su questa tendenza" + +#~ msgid "&Show item" +#~ msgstr "&Visualizza voci" + +#~ msgid "Update &profile" +#~ msgstr "Aggiorna il &profilo" + +#~ msgid "Event" +#~ msgstr "Evento" + +#~ msgid "Remove event" +#~ msgstr "Rimuovere evento" + +#~ msgid "Trending topic" +#~ msgstr "Tendenze" + +#~ msgid "Tweet about this trend" +#~ msgstr "Tweet riguardo questa tendenza" + +#~ msgid "" +#~ "Scan account and add friends and " +#~ "followers to the user autocompletion " +#~ "database" +#~ msgstr "" + +#~ msgid "" +#~ "Inverted buffers: The newest tweets will" +#~ " be shown at the beginning while " +#~ "the oldest at the end" +#~ msgstr "" +#~ "Inverti elenco: I nuovi tweets verranno" +#~ " mostrate in cima all'elenco, i " +#~ "precedenti alla fine" + +#~ msgid "Retweet mode" +#~ msgstr "Retweet mode" + +#~ msgid "" +#~ "Load cache for tweets in memory " +#~ "(much faster in big datasets but " +#~ "requires more RAM)" +#~ msgstr "" + +#~ msgid "Ignored clients" +#~ msgstr "Ignora clients" + +#~ msgid "Remove client" +#~ msgstr "Rimuovi client" + +#~ msgid "Indicate audio tweets with sound" +#~ msgstr "Avvisa con un suono per i tweet audio:" + +#~ msgid "Indicate geotweets with sound" +#~ msgstr "Avvisa con un suono la geolocalizzazione dei tweet" + +#~ msgid "Indicate tweets containing images with sound" +#~ msgstr "Avvisa con un suono i tweet con immagini" + +#~ msgid "API Key for SndUp" +#~ msgstr "API Key per SndUp" + +#~ msgid "Create a filter for this buffer" +#~ msgstr "Crea un filtro per questo buffer" + +#~ msgid "Filter title" +#~ msgstr "Titolo del filtro" + +#~ msgid "Filter by word" +#~ msgstr "Filtra per parola" + +#~ msgid "Ignore tweets wich contain the following word" +#~ msgstr "Ignora i tweet che contengono questa parola" + +#~ msgid "Ignore tweets without the following word" +#~ msgstr "Ignora i tweet che non contengono questa parola" + +#~ msgid "word" +#~ msgstr "Parola" + +#~ msgid "Allow retweets" +#~ msgstr "Consenti retweet" + +#~ msgid "Allow quoted tweets" +#~ msgstr "Consenti i tweet con citazione" + +#~ msgid "Allow replies" +#~ msgstr "Consenti risposte" + +#~ msgid "Use this term as a regular expression" +#~ msgstr "Usa questo elemento come espressione regolare" + +#~ msgid "Filter by language" +#~ msgstr "Filtra per lingua" + +#~ msgid "Load tweets in the following languages" +#~ msgstr "Carica i tweet nelle seguenti lingue" + +#~ msgid "Ignore tweets in the following languages" +#~ msgstr "Ignora i tweet nelle seguenti lingue" + +#~ msgid "Don't filter by language" +#~ msgstr "Non filtrare per lingua" + +#~ msgid "Supported languages" +#~ msgstr "Lingue supportate" + +#~ msgid "Add selected language to filter" +#~ msgstr "Aggiungi la lingua selezionata per il filtro" + +#~ msgid "Selected languages" +#~ msgstr "Lingue selezionate" + +#~ msgid "You must define a name for the filter before creating it." +#~ msgstr "" + +#~ msgid "Missing filter name" +#~ msgstr "" + +#~ msgid "Manage filters" +#~ msgstr "Gestione filtri" + +#~ msgid "Filters" +#~ msgstr "Filtri" + +#~ msgid "Filter" +#~ msgstr "Firltro" + +#~ msgid "Lists manager" +#~ msgstr "Gestione liste" + +#~ msgid "List" +#~ msgstr "Lista" + +#~ msgid "Owner" +#~ msgstr "Proprietario" + +#~ msgid "Members" +#~ msgstr "Membri" + +#~ msgid "mode" +#~ msgstr "Modalità" + +#~ msgid "Create a new list" +#~ msgstr "Crea nuova lista" + +#~ msgid "Open in buffer" +#~ msgstr "Apri nel buffer" + +#~ msgid "Viewing lists for %s" +#~ msgstr "Visualizzazione delle liste per %s" + +#~ msgid "Subscribe" +#~ msgstr "Iscriviti" + +#~ msgid "Unsubscribe" +#~ msgstr "Disiscriviti" + +#~ msgid "Name (20 characters maximun)" +#~ msgstr "Nome (massimo 20 caratteri)" + +#~ msgid "Mode" +#~ msgstr "Modalità" + +#~ msgid "Private" +#~ msgstr "Privato" + +#~ msgid "Editing the list %s" +#~ msgstr "Modifica elenco %s" + +#~ msgid "Select a list to add the user" +#~ msgstr "Seleziona una lista per aggiungere l'utente" + +#~ msgid "Add" +#~ msgstr "Aggiungi" + +#~ msgid "Select a list to remove the user" +#~ msgstr "Seleziona una lista per rimuovere l'utente" + +#~ msgid "Do you really want to delete this list?" +#~ msgstr "Sei sicuro di voler eliminare questa lista?" + +#~ msgid "Search on Twitter" +#~ msgstr "Ricerca in Twitter" + +#~ msgid "Tweets" +#~ msgstr "Tweet" + +#~ msgid "&Language for results: " +#~ msgstr "&Lingua per i risultati:" + +#~ msgid "any" +#~ msgstr "Qualsiasi" + +#~ msgid "Results &type: " +#~ msgstr "Results &type: " + +#~ msgid "Mixed" +#~ msgstr "Misto" + +#~ msgid "Recent" +#~ msgstr "Recenti" + +#~ msgid "Popular" +#~ msgstr "Popolari" + +#~ msgid "Details" +#~ msgstr "Dettagli" + +#~ msgid "&Go to URL" +#~ msgstr "&Vai all'URL" + +#~ msgid "View trending topics" +#~ msgstr "Visualizza tendenze" + +#~ msgid "Trending topics by" +#~ msgstr "Tendenze per" + +#~ msgid "Country" +#~ msgstr "Paese" + +#~ msgid "City" +#~ msgstr "Città" + +#~ msgid "&Location" +#~ msgstr "&Localizzazione, esterno" + +#~ msgid "Update your profile" +#~ msgstr "Aggiorna il tuo profilo" + +#~ msgid "&Name (50 characters maximum)" +#~ msgstr "&Nome (massimo 50 caratteri)" + +#~ msgid "&Website" +#~ msgstr "Sito &web" + +#~ msgid "&Bio (160 characters maximum)" +#~ msgstr "&Descrizione (massimo 160 caratteri)" + +#~ msgid "Upload a &picture" +#~ msgstr "Carica una &foto" + +#~ msgid "Upload a picture" +#~ msgstr "Carica una foto" + +#~ msgid "Discard image" +#~ msgstr "Scartare immagine" + +#~ msgid "&Report as spam" +#~ msgstr "Segnala come spa&m" + +#~ msgid "&Ignore tweets from this client" +#~ msgstr "&Ignora tweet da questo client" + +#~ msgid "&Tweets" +#~ msgstr "&Tweet" + +#~ msgid "&Likes" +#~ msgstr "Mi &piace" + +#~ msgid "F&riends" +#~ msgstr "Followin&g" + +#~ msgid "Delete attachment" +#~ msgstr "Rimuovi allegato" + +#~ msgid "Added Tweets" +#~ msgstr "Tweet inviati" + +#~ msgid "Delete tweet" +#~ msgstr "Tweet inviati" + +#~ msgid "A&dd..." +#~ msgstr "" + +#~ msgid "Add t&weet" +#~ msgstr "Mi Piace il tweet" + +#~ msgid "&Attach audio..." +#~ msgstr "A&llega audio..." + +#~ msgid "Sen&d" +#~ msgstr "In&via" + +#~ msgid "Video files (*.mp4)|*.mp4" +#~ msgstr "" + +#~ msgid "" +#~ "It is not possible to add more " +#~ "attachments. Please make sure your tweet" +#~ " complies with Twitter'S attachment rules." +#~ " You can add only one video or" +#~ " GIF in every tweet, and a " +#~ "maximum of 4 photos." +#~ msgstr "" + +#~ msgid "&Mention to all" +#~ msgstr "Menziona a &tutti" + +#~ msgid "&Recipient" +#~ msgstr "Destinata&rio" + +#~ msgid "Tweet - %i characters " +#~ msgstr "Tweet -% i caratteri " + +#~ msgid "Retweets: " +#~ msgstr "Retweet" + +#~ msgid "Likes: " +#~ msgstr "Mi piace: " + +#~ msgid "View" +#~ msgstr "Visualizza" + +#~ msgid "Item" +#~ msgstr "Elemento" + +#~ msgid "&Expand URL" +#~ msgstr "&Espandi URL" + +#~ msgid "Participation time (in days)" +#~ msgstr "" + +#~ msgid "&Open in Twitter" +#~ msgstr "Ricerca in Twitter" + +#~ msgid "&Show tweet" +#~ msgstr "&Visualizza Tweet" + +#~ msgid "Translated" +#~ msgstr "Tradotto" + +#~ msgid "Afrikaans" +#~ msgstr "Africano" + +#~ msgid "Albanian" +#~ msgstr "Albanese" + +#~ msgid "Amharic" +#~ msgstr "Amarico" + +#~ msgid "Arabic" +#~ msgstr "Arabo" + +#~ msgid "Armenian" +#~ msgstr "Armeno\"" + +#~ msgid "Azerbaijani" +#~ msgstr "Azerbaijano" + +#~ msgid "Basque" +#~ msgstr "Basco" + +#~ msgid "Belarusian" +#~ msgstr "BieloRusso" + +#~ msgid "Bengali" +#~ msgstr "Bengalese" + +#~ msgid "Bihari" +#~ msgstr "Bihari" + +#~ msgid "Bulgarian" +#~ msgstr "Bulgaro" + +#~ msgid "Burmese" +#~ msgstr "Birmano" + +#~ msgid "Catalan" +#~ msgstr "Catalano" + +#~ msgid "Cherokee" +#~ msgstr "Cherokee" + +#~ msgid "Chinese" +#~ msgstr "Cinese" + +#~ msgid "Chinese_simplified" +#~ msgstr "Cinese semplificato" + +#~ msgid "Chinese_traditional" +#~ msgstr "Cinese tradizionale" + +#~ msgid "Croatian" +#~ msgstr "Croato" + +#~ msgid "Czech" +#~ msgstr "Ceco" + +#~ msgid "Dhivehi" +#~ msgstr "Dhivehi" + +#~ msgid "Esperanto" +#~ msgstr "Esperanto" + +#~ msgid "Estonian" +#~ msgstr "Estonian" + +#~ msgid "Filipino" +#~ msgstr "Filippino" + +#~ msgid "Galician" +#~ msgstr "Galiziano" + +#~ msgid "Georgian" +#~ msgstr "Georgiano" + +#~ msgid "Greek" +#~ msgstr "Greco" + +#~ msgid "Guarani" +#~ msgstr "Guarani" + +#~ msgid "Gujarati" +#~ msgstr "Gujarati" + +#~ msgid "Hebrew" +#~ msgstr "Ebraico" + +#~ msgid "Hindi" +#~ msgstr "Hindi" + +#~ msgid "Icelandic" +#~ msgstr "Islandese" + +#~ msgid "Indonesian" +#~ msgstr "Indonesiano" + +#~ msgid "Inuktitut" +#~ msgstr "Inuktitut" + +#~ msgid "Irish" +#~ msgstr "Irlandese" + +#~ msgid "Kannada" +#~ msgstr "Kannada" + +#~ msgid "Kazakh" +#~ msgstr "Kazako" + +#~ msgid "Khmer" +#~ msgstr "Khmer" + +#~ msgid "Kurdish" +#~ msgstr "Curdo" + +#~ msgid "Kyrgyz" +#~ msgstr "Kirghizistan" + +#~ msgid "Laothian" +#~ msgstr "Laothian" + +#~ msgid "Latvian" +#~ msgstr "Léttone" + +#~ msgid "Lithuanian" +#~ msgstr "Lituano" + +#~ msgid "Macedonian" +#~ msgstr "Macedone" + +#~ msgid "Malay" +#~ msgstr "Malese" + +#~ msgid "Malayalam" +#~ msgstr "Malayalam" + +#~ msgid "Maltese" +#~ msgstr "Maltese" + +#~ msgid "Marathi" +#~ msgstr "Marathi" + +#~ msgid "Mongolian" +#~ msgstr "Mongolo" + +#~ msgid "Nepali" +#~ msgstr "Nepali" + +#~ msgid "Norwegian" +#~ msgstr "Norvegese" + +#~ msgid "Oriya" +#~ msgstr " Oriya" + +#~ msgid "Pashto" +#~ msgstr "Pashto" + +#~ msgid "Persian" +#~ msgstr "Persiano" + +#~ msgid "Punjabi" +#~ msgstr "Punjabi" + +#~ msgid "Romanian" +#~ msgstr "Romeno" + +#~ msgid "Sanskrit" +#~ msgstr "Sanskrit" + +#~ msgid "Serbian" +#~ msgstr "Serbo" + +#~ msgid "Sindhi" +#~ msgstr "Sindhi" + +#~ msgid "Sinhalese" +#~ msgstr "Singalese" + +#~ msgid "Slovak" +#~ msgstr "Slovacco" + +#~ msgid "Slovenian" +#~ msgstr "Sloveno" + +#~ msgid "Swahili" +#~ msgstr "Swahili" + +#~ msgid "Swedish" +#~ msgstr "Svedese" + +#~ msgid "Tajik" +#~ msgstr "Tagiko" + +#~ msgid "Tamil" +#~ msgstr "Tamil" + +#~ msgid "Tagalog" +#~ msgstr "Tagalog" + +#~ msgid "Telugu" +#~ msgstr "Telugu" + +#~ msgid "Thai" +#~ msgstr "Thai" + +#~ msgid "Tibetan" +#~ msgstr "Tibetano" + +#~ msgid "Ukrainian" +#~ msgstr "Ucraino" + +#~ msgid "Urdu" +#~ msgstr "Urdu" + +#~ msgid "Uzbek" +#~ msgstr "Uzbeko" + +#~ msgid "Uighur" +#~ msgstr "Uighur" + +#~ msgid "Vietnamese" +#~ msgstr "Vietnamese" + +#~ msgid "Welsh" +#~ msgstr "Gallese" + +#~ msgid "Yiddish" +#~ msgstr "Yiddish" + +#~ msgid "" +#~ "TWBlue has detected that you're running" +#~ " windows 10 and has changed the " +#~ "default keymap to the Windows 10 " +#~ "keymap. It means that some keyboard " +#~ "shorcuts could be different. Please " +#~ "check the keystroke editor by pressing" +#~ " Alt+Win+K to see all available " +#~ "keystrokes for this keymap." +#~ msgstr "" +#~ "TWBlue ha rilevato che si sta " +#~ "eseguendo windows 10 ed ha cambiato " +#~ "la mappatura dei tasti di default " +#~ "per Windows 10. Ciò significa che " +#~ "alcuni tasti di scelta rapida della " +#~ "tastiera potrèbbero essere diversi. Si " +#~ "consiglia di controllare l'editor dei " +#~ "tasti rapidi premendo Alt+Win+K per " +#~ "visualizzare tutti i tasti rapidi " +#~ "disponibili per questa mappatura di " +#~ "tasti. " + +#~ msgid "Boosts: " +#~ msgstr "" + +#~ msgid "Favorites: " +#~ msgstr "" + +#~ msgid "Date: " +#~ msgstr "Data" + +#~ msgid "Community for {}" +#~ msgstr "" + +#~ msgid "Run {0} at Windows startup" +#~ msgstr "Avvia {0} all'avvio di Windows." + +#~ msgid "Use Codeofdusk's longtweet handlers (may decrease client performance)" +#~ msgstr "Lettura completa dei tweet (Può ridurre le prestazioni del client)" + +#~ msgid "Remember state for mention all and long tweet" +#~ msgstr "Riporta stato per i tweet lunghi e l'opzione Menziona tutti." + +#~ msgid "Bio: " +#~ msgstr "" + +#~ msgid "Joined at: " +#~ msgstr "" + +#~ msgid "Field {} - Label: " +#~ msgstr "" + +#~ msgid "{} posts. Click to open posts timeline" +#~ msgstr "" + +#~ msgid "{} following. Click to open Following timeline" +#~ msgstr "" + +#~ msgid "{} followers. Click to open followers timeline" +#~ msgstr "" + +#~ msgid "Display Name" +#~ msgstr "" + +#~ msgid "Bio" +#~ msgstr "" + +#~ msgid "Change header" +#~ msgstr "" + +#~ msgid "Change avatar" +#~ msgstr "" + +#~ msgid "Field {}: Label" +#~ msgstr "" + +#~ msgid "Add following to database" +#~ msgstr "" + +#~ msgid "Read long posts in GUI" +#~ msgstr "" + +#~ msgid "LibreTranslate API URL: " +#~ msgstr "" + +#~ msgid "LibreTranslate API Key (optional): " +#~ msgstr "" + +#~ msgid "DeepL API Key: " +#~ msgstr "" + +#~ msgid "" +#~ "Scan account and add followers and " +#~ "following users to the user " +#~ "autocompletion database" +#~ msgstr "" + +#~ msgid "" +#~ "Read preferences from instance (default " +#~ "visibility when publishing and displaying " +#~ "sensitive content)" +#~ msgstr "" + +#~ msgid "Ask confirmation before boosting a post" +#~ msgstr "" + +#~ msgid "hide emojis in usernames" +#~ msgstr "" + +#~ msgid "" +#~ "Load cache for items in memory " +#~ "(much faster in big datasets but " +#~ "requires more RAM)" +#~ msgstr "" + diff --git a/srcantiguo/locales/ja/LC_MESSAGES/twblue.mo b/srcantiguo/locales/ja/LC_MESSAGES/twblue.mo new file mode 100644 index 00000000..5b10f118 Binary files /dev/null and b/srcantiguo/locales/ja/LC_MESSAGES/twblue.mo differ diff --git a/srcantiguo/locales/ja/LC_MESSAGES/twblue.po b/srcantiguo/locales/ja/LC_MESSAGES/twblue.po new file mode 100644 index 00000000..6eabba92 --- /dev/null +++ b/srcantiguo/locales/ja/LC_MESSAGES/twblue.po @@ -0,0 +1,4524 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2022 ORGANIZATION +# FIRST AUTHOR , 2022. +# Riku , 2022, 2023, 2024. +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: manuel@manuelcortez.net\n" +"POT-Creation-Date: 2025-04-13 01:18+0000\n" +"PO-Revision-Date: 2024-06-03 02:46+0000\n" +"Last-Translator: Riku \n" +"Language: ja\n" +"Language-Team: Japanese " +"\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.17.0\n" + +#: languageHandler.py:61 +msgctxt "languageName" +msgid "Amharic" +msgstr "アムハラ語" + +#: languageHandler.py:62 +msgctxt "languageName" +msgid "Aragonese" +msgstr "アラゴン語" + +#: languageHandler.py:63 +msgctxt "languageName" +msgid "Spanish" +msgstr "スペイン語" + +#: languageHandler.py:64 +msgctxt "languageName" +msgid "Portuguese" +msgstr "ポルトガル語" + +#: languageHandler.py:65 +msgctxt "languageName" +msgid "Russian" +msgstr "ロシア語" + +#: languageHandler.py:66 +msgctxt "languageName" +msgid "italian" +msgstr "イタリア語" + +#: languageHandler.py:67 +msgctxt "languageName" +msgid "Turkey" +msgstr "トルコ語" + +#: languageHandler.py:68 +msgctxt "languageName" +msgid "Galician" +msgstr "ガリシア語" + +#: languageHandler.py:69 +msgctxt "languageName" +msgid "Catala" +msgstr "カタロニア語" + +#: languageHandler.py:70 +msgctxt "languageName" +msgid "Vasque" +msgstr "バスク語" + +#: languageHandler.py:71 +msgctxt "languageName" +msgid "polish" +msgstr "ポーランド語" + +#: languageHandler.py:72 +msgctxt "languageName" +msgid "Arabic" +msgstr "アラビア語" + +#: languageHandler.py:73 +msgctxt "languageName" +msgid "Nepali" +msgstr "ネパール語" + +#: languageHandler.py:74 +msgctxt "languageName" +msgid "Serbian (Latin)" +msgstr "セルビア語 (ラテン)" + +#: languageHandler.py:75 +msgctxt "languageName" +msgid "Japanese" +msgstr "日本語" + +#: languageHandler.py:99 +msgid "User default" +msgstr "ユーザーのデフォルト" + +#: main.py:105 +msgid "https://twblue.mcvsoftware.com/donate" +msgstr "https://twblue.mcvsoftware.com/donate" + +#: main.py:118 +#, python-brace-format +msgid "" +"{0} is already running. Close the other instance before starting this " +"one. If you're sure that {0} isn't running, try deleting the file at {1}." +" If you're unsure of how to do this, contact the {0} developers." +msgstr "{0}は、すでに実行されています。このインスタンスを開始する前に、他のインスタンスを閉じてください。{0}が実行されていないことが確実な場合は、{1}でファイルを削除してみてください。これを行う方法がわからない場合は、{0}開発者に連絡してください。" + +#: sound.py:148 +msgid "Playing..." +msgstr "再生中…" + +#: sound.py:161 +msgid "Stopped." +msgstr "停止。" + +#: controller/mainController.py:261 +msgid "Ready" +msgstr "準備完了" + +#: controller/mainController.py:369 controller/mainController.py:654 +#: controller/mainController.py:673 controller/mainController.py:692 +#: controller/mainController.py:711 +msgid "" +"No session is currently in focus. Focus a session with the next or " +"previous session shortcut." +msgstr "セッションが選択されていません。「次のセッション」または「前のセッション」のショートカットを利用して、セッションを選択してください。" + +#: controller/mainController.py:373 +msgid "Empty buffer." +msgstr "からのバッファ。" + +#: controller/mainController.py:380 +#, python-brace-format +msgid "{0} not found." +msgstr "{0}が見つかりませんでした。" + +#: controller/mainController.py:702 controller/mainController.py:721 +#, python-format +msgid "%s, %s of %s" +msgstr "%s %s/%s" + +#: controller/mainController.py:704 controller/mainController.py:723 +#: controller/mainController.py:751 controller/mainController.py:779 +#, python-format +msgid "%s. Empty" +msgstr "%sは、からです" + +#: controller/mainController.py:739 controller/mainController.py:743 +#: controller/mainController.py:767 +#, python-brace-format +msgid "{0}: This account is not logged into Twitter." +msgstr "{0}: このアカウントは、まだTwitterにログインしていません。" + +#: controller/mainController.py:749 controller/mainController.py:777 +#, python-format +msgid "%s. %s, %s of %s" +msgstr "セッション:%s %s %s/%s" + +#: controller/mainController.py:771 +#, python-brace-format +msgid "{0}: This account is not logged into twitter." +msgstr "{0}: このアカウントは、まだTwitterにログインしていません。" + +#: controller/mainController.py:910 controller/mainController.py:926 +msgid "An error happened while trying to connect to the server. Please try later." +msgstr "サーバーへの接続中に、予期しないエラーが発生しました。あとで再試行してください。" + +#: controller/mainController.py:957 +msgid "The auto-reading of new tweets is enabled for this buffer" +msgstr "自動読み上げ 有効" + +#: controller/mainController.py:960 +msgid "The auto-reading of new tweets is disabled for this buffer" +msgstr "自動読み上げ 無効" + +#: controller/mainController.py:967 +msgid "Session mute on" +msgstr "このセッションのミュートを設定" + +#: controller/mainController.py:970 +msgid "Session mute off" +msgstr "このセッションのミュートを解除" + +#: controller/mainController.py:979 +msgid "Buffer mute on" +msgstr "このバッファのミュートを設定" + +#: controller/mainController.py:982 +msgid "Buffer mute off" +msgstr "このバッファのミュートを解除" + +#: controller/mainController.py:999 +msgid "Copied" +msgstr "コピーしました" + +#: controller/mainController.py:1019 +msgid "Unable to update this buffer." +msgstr "このバッファを更新できません。" + +#: controller/mainController.py:1021 +msgid "Updating buffer..." +msgstr "バッファを更新中…" + +#: controller/mainController.py:1024 +#, python-brace-format +msgid "{0} items retrieved" +msgstr "{0}個のアイテムを取得しました" + +#: controller/buffers/mastodon/base.py:137 controller/mainController.py:1028 +#: controller/mastodon/handler.py:98 controller/mastodon/handler.py:241 +#, python-brace-format +msgid "Timeline for {}" +msgstr "{} のタイムライン" + +#: controller/buffers/mastodon/users.py:93 controller/mainController.py:1030 +#: controller/mastodon/handler.py:100 controller/mastodon/handler.py:255 +#, python-brace-format +msgid "Followers for {}" +msgstr "{}をフォローしているユーザー" + +#: controller/mainController.py:1032 +#, python-brace-format +msgid "Friends for {}" +msgstr "{}がフォローしているユーザー" + +#: controller/buffers/mastodon/users.py:95 controller/mainController.py:1034 +#: controller/mastodon/handler.py:102 controller/mastodon/handler.py:269 +#, python-brace-format +msgid "Following for {}" +msgstr "{}をフォローしているユーザー" + +#: controller/messages.py:18 +msgid "Translated" +msgstr "翻訳済み" + +#: controller/settings.py:60 +msgid "System default" +msgstr "システムのデフォルト" + +#: controller/settings.py:60 +msgid "HTTP" +msgstr "HTTP" + +#: controller/settings.py:60 +msgid "SOCKS v4" +msgstr "SOCKS v4" + +#: controller/settings.py:60 +msgid "SOCKS v4 with DNS support" +msgstr "DNSをサポートする SOCKS v4" + +#: controller/settings.py:60 +msgid "SOCKS v5" +msgstr "SOCKS v5" + +#: controller/settings.py:60 +msgid "SOCKS v5 with DNS support" +msgstr "DNSをサポートする SOCKS v5" + +#: controller/userAlias.py:31 +#, python-brace-format +msgid "Edit alias for {}" +msgstr "{}のエイリアスを編集" + +#: controller/buffers/base/base.py:91 +#: controller/buffers/mastodon/conversations.py:237 +#: controller/buffers/mastodon/search.py:80 +msgid "This action is not supported for this buffer" +msgstr "この動作は、現在のバッファではサポートされていません" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:70 +#: controller/mastodon/settings.py:194 +msgid "Home" +msgstr "ホーム" + +#: controller/buffers/mastodon/base.py:52 +#: controller/buffers/mastodon/community.py:22 +#: controller/mastodon/handler.py:72 controller/mastodon/handler.py:114 +#: controller/mastodon/settings.py:195 +msgid "Local" +msgstr "ローカル" + +#: controller/buffers/mastodon/base.py:52 +#: controller/buffers/mastodon/community.py:22 +#: controller/mastodon/handler.py:74 controller/mastodon/settings.py:196 +msgid "Federated" +msgstr "連合" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:76 +#: controller/mastodon/settings.py:197 +msgid "Mentions" +msgstr "メンション" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:84 +#: controller/mastodon/settings.py:201 +msgid "Bookmarks" +msgstr "ブックマーク" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:78 +msgid "Direct messages" +msgstr "ダイレクトメッセージ" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:80 +#: controller/mastodon/settings.py:199 +msgid "Sent" +msgstr "送信済み" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:82 +#: controller/mastodon/settings.py:200 wxUI/dialogs/mastodon/postDialogs.py:229 +msgid "Favorites" +msgstr "お気に入り" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:86 +#: controller/mastodon/settings.py:202 +msgid "Followers" +msgstr "フォロワー" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:88 +#: controller/mastodon/settings.py:203 +msgid "Following" +msgstr "フォロー中" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:92 +#: controller/mastodon/settings.py:204 +msgid "Blocked users" +msgstr "ブロックしたユーザー" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:90 +#: controller/mastodon/settings.py:205 +msgid "Muted users" +msgstr "ミューとしたユーザー" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:94 +#: controller/mastodon/settings.py:206 +#: wxUI/dialogs/mastodon/filters/create_filter.py:80 +msgid "Notifications" +msgstr "通知" + +#: controller/buffers/mastodon/base.py:58 +#, python-brace-format +msgid "{username}'s timeline" +msgstr "{username} のタイムライン" + +#: controller/buffers/mastodon/base.py:60 +#, python-brace-format +msgid "{username}'s followers" +msgstr "{username} のフォロワー" + +#: controller/buffers/mastodon/base.py:62 +#, python-brace-format +msgid "{username}'s following" +msgstr "{username} をフォローしているユーザー" + +#: controller/buffers/mastodon/base.py:64 +msgid "Unknown buffer" +msgstr "不明なバッファ" + +#: controller/buffers/mastodon/base.py:67 +#: controller/buffers/mastodon/base.py:645 wxUI/buffers/mastodon/base.py:24 +#: wxUI/buffers/mastodon/conversationList.py:24 +#: wxUI/buffers/mastodon/notifications.py:22 wxUI/buffers/mastodon/user.py:18 +#: wxUI/dialogs/mastodon/postDialogs.py:5 +#: wxUI/dialogs/mastodon/postDialogs.py:194 wxUI/sysTrayIcon.py:35 +msgid "Post" +msgstr "投稿" + +#: controller/buffers/mastodon/base.py:68 +#: controller/buffers/mastodon/base.py:646 +msgid "Write your post here" +msgstr "投稿を入力" + +#: controller/buffers/mastodon/base.py:153 +#, python-brace-format +msgid "New post in {0}" +msgstr "{0} への投稿" + +#: controller/buffers/mastodon/base.py:159 +#, python-brace-format +msgid "{0} new posts in {1}." +msgstr "{1}の{0}個の新規投稿。" + +#: controller/buffers/mastodon/base.py:198 +#: controller/buffers/mastodon/community.py:90 +#: controller/buffers/mastodon/conversations.py:100 +#: controller/buffers/mastodon/mentions.py:82 +#: controller/buffers/mastodon/users.py:139 +#, python-format +msgid "%s items retrieved" +msgstr "%s個のアイテムを取得しました" + +#: controller/buffers/mastodon/base.py:216 +#: controller/buffers/mastodon/users.py:206 +msgid "This buffer is not a timeline; it can't be deleted." +msgstr "このバッファは、タイムラインではないため、削除できません。" + +#: controller/buffers/mastodon/base.py:346 +#: controller/buffers/mastodon/base.py:384 +#, python-brace-format +msgid "Conversation with {}" +msgstr "{0}との会話" + +#: controller/buffers/mastodon/base.py:347 +#: controller/buffers/mastodon/base.py:385 +#: controller/buffers/mastodon/conversations.py:181 +#: controller/buffers/mastodon/notifications.py:122 +#: controller/buffers/mastodon/users.py:52 +msgid "Write your message here" +msgstr "メッセージを入力" + +#: controller/buffers/mastodon/base.py:349 +#, python-brace-format +msgid "Reply to {}" +msgstr "{} への返信:" + +#: controller/buffers/mastodon/base.py:350 +msgid "Write your reply here" +msgstr "返信を入力" + +#: controller/buffers/mastodon/base.py:412 +msgid "This action is not supported on conversations." +msgstr "このアクションは、会話ではサポートされていません。" + +#: controller/buffers/mastodon/base.py:477 +msgid "Opening URL..." +msgstr "URLを開いています…" + +#: controller/buffers/mastodon/base.py:490 +msgid "You can delete only your own posts." +msgstr "自分の投稿のみを削除できます。" + +#: controller/buffers/mastodon/base.py:519 +msgid "Opening item in web browser..." +msgstr "ブラウザでアイテムを開いています…" + +#: controller/buffers/mastodon/base.py:527 +#: controller/buffers/mastodon/base.py:547 +msgid "Adding to favorites..." +msgstr "お気に入りに追加中..." + +#: controller/buffers/mastodon/base.py:534 +#: controller/buffers/mastodon/base.py:549 +msgid "Removing from favorites..." +msgstr "お気に入りから削除中..." + +#: controller/buffers/mastodon/base.py:544 +#: controller/buffers/mastodon/base.py:559 +#: controller/buffers/mastodon/base.py:573 +#: controller/buffers/mastodon/conversations.py:213 +msgid "No status found with that ID" +msgstr "そのIDのステータスが見つかりませんでした" + +#: controller/buffers/mastodon/base.py:562 +msgid "Adding to bookmarks..." +msgstr "ブックマークに追加中..." + +#: controller/buffers/mastodon/base.py:564 +msgid "Removing from bookmarks..." +msgstr "ブックマークから削除中..." + +#: controller/buffers/mastodon/base.py:586 +#, python-brace-format +msgid "Picture {0}" +msgstr "画像{0}" + +#: controller/buffers/mastodon/base.py:587 +msgid "Select the picture" +msgstr "画像を選択" + +#: controller/buffers/mastodon/base.py:610 +msgid "Unable to extract text" +msgstr "テキストを抽出できません" + +#: controller/buffers/mastodon/base.py:612 +msgid "OCR Result" +msgstr "OCR結果" + +#: controller/buffers/mastodon/base.py:627 +msgid "this poll no longer exists." +msgstr "このアンケートはもう存在しません。" + +#: controller/buffers/mastodon/base.py:630 +msgid "This poll has already expired." +msgstr "このアンケートは既に期限切れです。" + +#: controller/buffers/mastodon/base.py:633 +msgid "You have already voted on this poll." +msgstr "あなたはすでにこのアンケートに投票しています。" + +#: controller/buffers/mastodon/base.py:642 +msgid "Sending vote..." +msgstr "投票を送信中..." + +#: controller/buffers/mastodon/conversations.py:180 +#, python-brace-format +msgid "Reply to conversation with {}" +msgstr "{} との会話に返信" + +#: controller/buffers/mastodon/notifications.py:121 +#: controller/buffers/mastodon/users.py:51 +#, python-brace-format +msgid "New conversation with {}" +msgstr "{} との新しい会話{0}との会話" + +#: controller/buffers/mastodon/notifications.py:151 +msgid "Notification dismissed." +msgstr "通知を却下しました。" + +#: controller/buffers/mastodon/users.py:110 +msgid "There are no more items in this buffer." +msgstr "このバッファにはこれ以上アイテムがありません。" + +#: controller/mastodon/handler.py:30 wxUI/dialogs/mastodon/updateProfile.py:35 +msgid "Update Profile" +msgstr "プロフィールを更新" + +#: controller/mastodon/handler.py:31 wxUI/dialogs/mastodon/search.py:10 +#: wxUI/view.py:19 +msgid "&Search" +msgstr "検索(&S)" + +#: controller/mastodon/handler.py:33 wxUI/view.py:22 +msgid "Manage user aliases" +msgstr "ユーザーエイリアスの管理" + +#: controller/mastodon/handler.py:35 controller/mastodon/handler.py:59 +#: wxUI/view.py:30 +msgid "&Post" +msgstr "投稿(&P)" + +#: controller/mastodon/handler.py:36 wxUI/dialogs/mastodon/menus.py:9 +#: wxUI/dialogs/mastodon/menus.py:37 wxUI/view.py:31 +msgid "Re&ply" +msgstr "リプライ(&P)" + +#: controller/mastodon/handler.py:37 wxUI/dialogs/mastodon/menus.py:7 +#: wxUI/dialogs/mastodon/menus.py:35 wxUI/view.py:32 +msgid "&Boost" +msgstr "ブースト(&B)" + +#: controller/mastodon/handler.py:38 wxUI/dialogs/mastodon/menus.py:11 +#: wxUI/dialogs/mastodon/menus.py:39 wxUI/view.py:33 +msgid "&Add to favorites" +msgstr "お気に入りへ追加(&A)" + +#: controller/mastodon/handler.py:39 +msgid "Remove from favorites" +msgstr "お気に入りから削除リストから削除" + +#: controller/mastodon/handler.py:40 wxUI/dialogs/mastodon/menus.py:21 +#: wxUI/dialogs/mastodon/menus.py:49 wxUI/view.py:35 +msgid "&Show post" +msgstr "投稿を表示(&S)" + +#: controller/mastodon/handler.py:41 wxUI/view.py:36 +msgid "View conversa&tion" +msgstr "会話を見る(&T)" + +#: controller/mastodon/handler.py:42 wxUI/view.py:37 +msgid "Read text in picture" +msgstr "画像からテキストを読み取り" + +#: controller/mastodon/handler.py:43 wxUI/dialogs/mastodon/menus.py:25 +#: wxUI/view.py:39 +msgid "&Delete" +msgstr "削除(&D)" + +#: controller/mastodon/handler.py:45 wxUI/view.py:43 +msgid "&Actions..." +msgstr "操作(&A)" + +#: controller/mastodon/handler.py:46 wxUI/view.py:44 +msgid "&View timeline..." +msgstr "タイムラインを表示(&V)" + +#: controller/mastodon/handler.py:47 wxUI/view.py:45 +msgid "Direct me&ssage" +msgstr "ダイレクトメッセージ(&S)" + +#: controller/mastodon/handler.py:48 wxUI/view.py:46 +msgid "Add a&lias" +msgstr "エイリアスを追加(&A)" + +#: controller/mastodon/handler.py:51 +msgid "Show user profile" +msgstr "ユーザーのプロフィールを表示" + +#: controller/mastodon/handler.py:54 +#, fuzzy +msgid "Create c&ommunity timeline" +msgstr "コミュニティのタイムラインを作成" + +#: controller/mastodon/handler.py:55 wxUI/view.py:57 +msgid "Create a &filter" +msgstr "新しいフィルターを作成(&F)" + +#: controller/mastodon/handler.py:56 wxUI/view.py:58 +msgid "&Manage filters" +msgstr "フィルターの管理(&M)" + +#: controller/mastodon/handler.py:95 +msgid "Timelines" +msgstr "タイムライン" + +#: controller/mastodon/handler.py:107 +msgid "Searches" +msgstr "検索" + +#: controller/mastodon/handler.py:110 controller/mastodon/handler.py:191 +#: controller/mastodon/handler.py:196 +#, python-brace-format +msgid "Search for {}" +msgstr "{} の検索結果" + +#: controller/mastodon/handler.py:111 +msgid "Communities" +msgstr "コミュニティ" + +#: controller/mastodon/handler.py:114 +msgid "federated" +msgstr "連合" + +#: controller/mastodon/handler.py:143 +#, python-brace-format +msgid "Conversation with {0}" +msgstr "{0}との会話" + +#: controller/mastodon/handler.py:299 +msgid "Add an user alias" +msgstr "ユーザーエイリアスを追加" + +#: controller/mastodon/handler.py:311 +#, python-brace-format +msgid "Alias has been set correctly for {}." +msgstr "{}のエイリアスが正しく設定されています。" + +#: controller/mastodon/handler.py:342 +msgid "Update profile" +msgstr "プロフィールを更新" + +#: controller/mastodon/messages.py:115 +#, python-format +msgid "%s - %s of %d characters" +msgstr "%s - %s/%d" + +#: controller/mastodon/messages.py:239 +#, python-brace-format +msgid "Poll with {} options" +msgstr "{}つの項目の投票" + +#: controller/mastodon/messages.py:272 +#, python-brace-format +msgid "Post from {}" +msgstr "{} からの投稿" + +#: controller/mastodon/messages.py:276 sessions/mastodon/templates.py:82 +#: wxUI/dialogs/mastodon/postDialogs.py:49 +msgid "Public" +msgstr "公開" + +#: controller/mastodon/messages.py:276 sessions/mastodon/templates.py:82 +#: wxUI/dialogs/mastodon/postDialogs.py:49 +msgid "Not listed" +msgstr "未収載" + +#: controller/mastodon/messages.py:276 +msgid "followers only" +msgstr "フォロワーのみ" + +#: controller/mastodon/messages.py:276 sessions/mastodon/templates.py:82 +#: wxUI/dialogs/mastodon/postDialogs.py:49 +msgid "Direct" +msgstr "指定された相手のみ" + +#: controller/mastodon/messages.py:283 +msgid "Remote instance" +msgstr "リモートインスタンス" + +#: controller/mastodon/messages.py:291 controller/mastodon/messages.py:319 +msgid "Unmute conversation" +msgstr "会話のミュートを解除" + +#: controller/mastodon/messages.py:315 wxUI/dialogs/mastodon/postDialogs.py:237 +msgid "Mute conversation" +msgstr "会話をミュート" + +#: controller/mastodon/messages.py:316 +msgid "Conversation unmuted." +msgstr "会話のミュートを解除しました。" + +#: controller/mastodon/messages.py:320 +msgid "Conversation muted." +msgstr "会話をミュートしました。" + +#: controller/mastodon/messages.py:331 +msgid "people who boosted this post" +msgstr "この投稿をブーストした人" + +#: controller/mastodon/messages.py:336 +msgid "people who favorited this post" +msgstr "この投稿をお気に入りした人" + +#: controller/mastodon/messages.py:342 +msgid "Link copied to clipboard." +msgstr "リンクをクリップボードへコピーしました。" + +#: controller/mastodon/settings.py:82 +#, python-format +msgid "Account settings for %s" +msgstr "%sのアカウント設定" + +#: controller/mastodon/settings.py:92 +#, python-brace-format +msgid "Edit template for posts. Current template: {}" +msgstr "投稿のテンプレートを編集します。現在のテンプレート: {}" + +#: controller/mastodon/settings.py:101 +#, python-brace-format +msgid "Edit template for conversations. Current template: {}" +msgstr "会話のテンプレートを編集します。現在のテンプレート: {}" + +#: controller/mastodon/settings.py:110 +#, python-brace-format +msgid "Edit template for persons. Current template: {}" +msgstr "人のテンプレートを編集します。現在のテンプレート: {}" + +#: controller/mastodon/settings.py:198 +msgid "Direct Messages" +msgstr "ダイレクトメッセージ" + +#: controller/mastodon/filters/create_filter.py:75 +#, fuzzy, python-brace-format +msgid "Update Filter: {}" +msgstr "プロフィールを更新" + +#: controller/mastodon/filters/manage_filters.py:57 +#: wxUI/dialogs/mastodon/filters/create_filter.py:90 +msgid "Never" +msgstr "" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:4 +msgid "Audio tweet." +msgstr "音声付きツイート。" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:5 +msgid "User timeline buffer created." +msgstr "ユーザーのタイムラインのバッファを作成。" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:6 +msgid "Buffer destroied." +msgstr "バッファを削除。" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:7 +msgid "Direct message received." +msgstr "ダイレクトメッセージを受信。" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:8 +msgid "Direct message sent." +msgstr "ダイレクトメッセージを送信。" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:9 +msgid "Error." +msgstr "エラー。" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:10 +msgid "Tweet liked." +msgstr "ツイートがいいねされた。" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:11 +msgid "Likes buffer updated." +msgstr "いいねバッファが更新された。" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:12 +msgid "Geotweet." +msgstr "位置情報付きのツイート。" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:13 +msgid "Tweet contains one or more images" +msgstr "ツイートに1つ以上の画像が含まれています" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:14 +msgid "Boundary reached." +msgstr "先頭または最後のツイート。" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:15 +msgid "List updated." +msgstr "リストが更新された。" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:16 +msgid "Too many characters." +msgstr "文字数オーバー。" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:17 +msgid "Mention received." +msgstr "リプライを受信した。" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:18 +msgid "New event." +msgstr "新しいイベント。" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:19 +#, python-brace-format +msgid "{0} is ready." +msgstr "{0}の準備完了。" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:20 +msgid "Mention sent." +msgstr "リプライを送信した。" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:21 +msgid "Tweet retweeted." +msgstr "ツイートをリツイートした。" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:22 +msgid "Search buffer updated." +msgstr "検索バッファが更新された。" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:23 +msgid "Tweet received." +msgstr "ツイートを受信した。" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:24 +msgid "Tweet sent." +msgstr "ツイートを送信した。" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:25 +msgid "Trending topics buffer updated." +msgstr "トレンドのバッファが更新された。" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:26 +msgid "New tweet in user timeline buffer." +msgstr "ユーザーのタイムラインに新しいツイートを受信した。" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:27 +msgid "New follower." +msgstr "新しいフォロワー。" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:28 +msgid "Volume changed." +msgstr "ボリュームを変更した。" + +#: extra/SoundsTutorial/wx_ui.py:8 +msgid "Sounds tutorial" +msgstr "サウンドの確認" + +#: extra/SoundsTutorial/wx_ui.py:11 +msgid "Press enter to listen to the sound for the selected event" +msgstr "選択されたイベントのサウンドを再生するには、Enterキーを押してください" + +#: extra/SpellChecker/spellchecker.py:56 +#, python-format +msgid "Misspelled word: %s" +msgstr "「%s」はスペルが間違っています" + +#: extra/SpellChecker/wx_ui.py:27 +msgid "Misspelled word" +msgstr "スペルミスの単語" + +#: extra/SpellChecker/wx_ui.py:32 +msgid "Context" +msgstr "コンテキスト" + +#: extra/SpellChecker/wx_ui.py:37 +msgid "Suggestions" +msgstr "提案" + +#: extra/SpellChecker/wx_ui.py:42 +msgid "&Ignore" +msgstr "無視(&I)" + +#: extra/SpellChecker/wx_ui.py:43 +msgid "I&gnore all" +msgstr "すべて無視(&G)" + +#: extra/SpellChecker/wx_ui.py:44 +msgid "&Replace" +msgstr "置き換え(&R)" + +#: extra/SpellChecker/wx_ui.py:45 +msgid "R&eplace all" +msgstr "すべて置き換え(&E)" + +#: extra/SpellChecker/wx_ui.py:46 +msgid "&Add to personal dictionary" +msgstr "個人辞書に追加(&A)" + +#: extra/SpellChecker/wx_ui.py:79 +#, python-brace-format +msgid "" +"An error has occurred. There are no dictionaries available for the " +"selected language in {0}" +msgstr "エラーが発生しました。{0}で選択した言語用の辞書がありません" + +#: extra/SpellChecker/wx_ui.py:79 +#: extra/autocompletionUsers/mastodon/wx_scan.py:44 +#: wxUI/commonMessageDialogs.py:23 wxUI/commonMessageDialogs.py:36 +#: wxUI/commonMessageDialogs.py:45 wxUI/commonMessageDialogs.py:52 +#: wxUI/commonMessageDialogs.py:55 wxUI/commonMessageDialogs.py:61 +#: wxUI/dialogs/mastodon/dialogs.py:38 wxUI/dialogs/mastodon/dialogs.py:43 +#: wxUI/dialogs/mastodon/dialogs.py:48 wxUI/dialogs/mastodon/dialogs.py:53 +#: wxUI/dialogs/mastodon/dialogs.py:60 +msgid "Error" +msgstr "エラー" + +#: extra/SpellChecker/wx_ui.py:82 +msgid "Spell check complete." +msgstr "スペルチェックが完了しました。" + +#: extra/autocompletionUsers/completion.py:39 +#: extra/autocompletionUsers/completion.py:57 +msgid "You have to start writing" +msgstr "あなたは、書き込みを開始しなければなりません" + +#: extra/autocompletionUsers/completion.py:49 +#: extra/autocompletionUsers/completion.py:66 +msgid "There are no results in your users database" +msgstr "ユーザーデータベースに見つかりませんでした" + +#: extra/autocompletionUsers/completion.py:51 +msgid "Autocompletion only works for users." +msgstr "オートコンプリートはユーザーに対してのみ機能します。" + +#: extra/autocompletionUsers/wx_manage.py:9 +msgid "Manage Autocompletion database" +msgstr "自動補完のデータベースを管理" + +#: extra/autocompletionUsers/wx_manage.py:12 +#, python-brace-format +msgid "Editing {0} users database" +msgstr "{0} のユーザーのデータベースを編集中" + +#: extra/autocompletionUsers/wx_manage.py:13 +msgid "Username" +msgstr "ユーザー名" + +#: extra/autocompletionUsers/wx_manage.py:13 wxUI/dialogs/configuration.py:108 +msgid "Name" +msgstr "名前" + +#: extra/autocompletionUsers/wx_manage.py:16 +msgid "Add user" +msgstr "ユーザーを追加" + +#: extra/autocompletionUsers/wx_manage.py:17 +msgid "Remove user" +msgstr "ユーザーを削除" + +#: extra/autocompletionUsers/wx_manage.py:38 +msgid "Twitter username" +msgstr "Twitterユーザー名" + +#: extra/autocompletionUsers/wx_manage.py:38 +msgid "Add user to database" +msgstr "ユーザーをデータベースに追加" + +#: extra/autocompletionUsers/wx_manage.py:44 +msgid "The user does not exist" +msgstr "そのユーザーは存在しません" + +#: extra/autocompletionUsers/wx_manage.py:44 +msgid "Error!" +msgstr "エラー!" + +#: extra/autocompletionUsers/mastodon/scan.py:49 +msgid "" +"Updating database... You can close this window now. A message will tell " +"you when the process finishes." +msgstr "データベースを更新しています... このウィンドウは閉じても大丈夫です。プロセスが完了するとメッセージが表示されます。" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:8 +msgid "Autocomplete users' settings" +msgstr "自動補完のユーザーの設定" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:11 +#, fuzzy +msgid "Add &followers to database" +msgstr "フォロワーをデータベースに追加" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:12 +#, fuzzy +msgid "Add f&ollowing to database" +msgstr "フォロー中をデータベースに追加" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:26 +msgid "Updating autocompletion database" +msgstr "自動補完のデータベースを更新中" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:34 +msgid "" +"This process will retrieve the users you selected from your Mastodon " +"account, and add them to the user autocomplete database. Please note that" +" if there are many users or you have tried to perform this action less " +"than 15 minutes ago, TWBlue may reach a limit in API calls when trying to" +" load the users into the database. If this happens, we will show you an " +"error, in which case you will have to try this process again in a few " +"minutes. If this process ends with no error, you will be redirected back " +"to the account settings dialog. Do you want to continue?" +msgstr "このプロセスでは、Mastodonアカウントから選択したユーザーを取得し、ユーザーの自動補完データベースに追加します。多数のユーザーがいる場合、または15分以内にこのアクションを実行しようとした場合、TWBlueはユーザーをデータベースにロードしようとするとAPI呼び出しの制限に達する可能性があることに注意してください。この問題が発生した場合、エラーが表示されます。その場合は、数分後にこのプロセスをもう一度試す必要があります。このプロセスがエラーなしで終了すると、アカウント設定ダイアログにリダイレクトされます。続行しますか?" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:34 +#: wxUI/commonMessageDialogs.py:20 +msgid "Attention" +msgstr "確認" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:40 +#, python-brace-format +msgid "TWBlue has imported {} users successfully." +msgstr "TWBlue は {} ユーザーを正常にインポートしました。" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:40 +msgid "Done" +msgstr "完了" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:44 +msgid "Error adding users from Mastodon. Please try again in about 15 minutes." +msgstr "Mastodonからのユーザーの追加中にエラーが発生しました。15分ほど経ってからもう一度お試しください。" + +#: extra/ocr/OCRSpace.py:7 +msgid "Detect automatically" +msgstr "自動検出" + +#: extra/ocr/OCRSpace.py:7 +msgid "Danish" +msgstr "デンマーク語" + +#: extra/ocr/OCRSpace.py:7 +msgid "Dutch" +msgstr "オランダ語" + +#: extra/ocr/OCRSpace.py:7 +msgid "English" +msgstr "英語" + +#: extra/ocr/OCRSpace.py:7 +msgid "Finnish" +msgstr "フィンランド語" + +#: extra/ocr/OCRSpace.py:7 +msgid "French" +msgstr "フランス語" + +#: extra/ocr/OCRSpace.py:7 +msgid "German" +msgstr "ドイツ語" + +#: extra/ocr/OCRSpace.py:7 +msgid "Hungarian" +msgstr "ハンガリー語" + +#: extra/ocr/OCRSpace.py:7 +msgid "Korean" +msgstr "韓国語" + +#: extra/ocr/OCRSpace.py:7 +msgid "Italian" +msgstr "イタリア語" + +#: extra/ocr/OCRSpace.py:7 +msgid "Japanese" +msgstr "日本語" + +#: extra/ocr/OCRSpace.py:7 +msgid "Polish" +msgstr "ポーランド語" + +#: extra/ocr/OCRSpace.py:7 +msgid "Portuguese" +msgstr "ポルトガル語" + +#: extra/ocr/OCRSpace.py:7 +msgid "Russian" +msgstr "ロシア語" + +#: extra/ocr/OCRSpace.py:7 +msgid "Spanish" +msgstr "スペイン語" + +#: extra/ocr/OCRSpace.py:7 +msgid "Turkish" +msgstr "トルコ語" + +#: extra/translator/wx_ui.py:25 +msgid "Translate message" +msgstr "メッセージを翻訳" + +#: extra/translator/wx_ui.py:29 +msgid "Translation engine" +msgstr "翻訳エンジン" + +#: extra/translator/wx_ui.py:32 +msgid "Target language" +msgstr "翻訳先の言語" + +#: keystrokeEditor/wx_ui.py:8 +msgid "Keystroke editor" +msgstr "キーストロークエディタ" + +#: keystrokeEditor/wx_ui.py:11 +msgid "Select a keystroke to edit" +msgstr "編集するキーストロークを選択" + +#: keystrokeEditor/wx_ui.py:12 +#: wxUI/dialogs/mastodon/filters/manage_filters.py:18 +#: wxUI/dialogs/mastodon/userActions.py:9 +#: wxUI/dialogs/mastodon/userActions.py:18 +#: wxUI/dialogs/mastodon/userActions.py:19 +msgid "Action" +msgstr "操作" + +#: keystrokeEditor/wx_ui.py:12 +msgid "Keystroke" +msgstr "キーストローク" + +#: keystrokeEditor/wx_ui.py:17 +#: wxUI/dialogs/mastodon/filters/manage_filters.py:23 +#: wxUI/dialogs/userAliasDialogs.py:53 +msgid "Edit" +msgstr "編集" + +#: keystrokeEditor/wx_ui.py:19 keystrokeEditor/wx_ui.py:49 +msgid "Undefine keystroke" +msgstr "キーストロークの定義を解除" + +#: keystrokeEditor/wx_ui.py:20 +msgid "Execute action" +msgstr "現在の動作を実行" + +#: keystrokeEditor/wx_ui.py:21 wxUI/dialogs/userAliasDialogs.py:25 +msgid "Close" +msgstr "閉じる" + +#: keystrokeEditor/wx_ui.py:41 +msgid "Undefined" +msgstr "未定義" + +#: keystrokeEditor/wx_ui.py:49 +msgid "Are you sure you want to undefine this keystroke?" +msgstr "このキーストロークの定義を解除してもよろしいですか?" + +#: keystrokeEditor/wx_ui.py:53 +msgid "Editing keystroke" +msgstr "キーストロークを編集" + +#: keystrokeEditor/wx_ui.py:56 +msgid "Control" +msgstr "コントロール" + +#: keystrokeEditor/wx_ui.py:57 +msgid "Alt" +msgstr "オルト" + +#: keystrokeEditor/wx_ui.py:58 +msgid "Shift" +msgstr "シフト" + +#: keystrokeEditor/wx_ui.py:59 +msgid "Windows" +msgstr "ウィンドウズ" + +#: keystrokeEditor/wx_ui.py:65 +msgid "Key" +msgstr "キー名" + +#: keystrokeEditor/wx_ui.py:70 wxUI/dialogs/find.py:21 +#: wxUI/dialogs/mastodon/showUserProfile.py:31 +#: wxUI/dialogs/userAliasDialogs.py:23 +msgid "OK" +msgstr "OK" + +#: keystrokeEditor/wx_ui.py:83 +msgid "You need to use the Windows key" +msgstr "ウィンドウズキーを使用する必要があります" + +#: keystrokeEditor/wx_ui.py:83 keystrokeEditor/wx_ui.py:86 +msgid "Invalid keystroke" +msgstr "無効なキーストローク" + +#: keystrokeEditor/wx_ui.py:86 +msgid "You must provide a character for the keystroke" +msgstr "キー名が入力されていません" + +#: keystrokeEditor/actions/mastodon.py:3 +msgid "Go up in the current buffer" +msgstr "現在のバッファで、前のツイートに移動" + +#: keystrokeEditor/actions/mastodon.py:4 +msgid "Go down in the current buffer" +msgstr "現在のバッファで、次のツイートに移動" + +#: keystrokeEditor/actions/mastodon.py:5 +msgid "Go to the previous buffer" +msgstr "前のバッファに移動" + +#: keystrokeEditor/actions/mastodon.py:6 +msgid "Go to the next buffer" +msgstr "次のバッファに移動" + +#: keystrokeEditor/actions/mastodon.py:7 +msgid "Focus the next session" +msgstr "次のセッションにフォーカス" + +#: keystrokeEditor/actions/mastodon.py:8 +msgid "Focus the previous session" +msgstr "前のセッションにフォーカス" + +#: keystrokeEditor/actions/mastodon.py:9 +msgid "Show or hide the GUI" +msgstr "GUIの表示と非表示を切り替え" + +#: keystrokeEditor/actions/mastodon.py:10 +msgid "Make a new post" +msgstr "新しい投稿" + +#: keystrokeEditor/actions/mastodon.py:11 wxUI/buffers/mastodon/base.py:26 +#: wxUI/buffers/mastodon/conversationList.py:25 +msgid "Reply" +msgstr "返信" + +#: keystrokeEditor/actions/mastodon.py:12 wxUI/buffers/mastodon/base.py:25 +#: wxUI/dialogs/mastodon/dialogs.py:7 +msgid "Boost" +msgstr "ブースト" + +#: keystrokeEditor/actions/mastodon.py:13 +msgid "Send direct message" +msgstr "ダイレクトメッセージを作成" + +#: keystrokeEditor/actions/mastodon.py:14 +msgid "Add post to favorites" +msgstr "投稿をお気に入りに追加" + +#: keystrokeEditor/actions/mastodon.py:15 +msgid "Remove post from favorites" +msgstr "投稿をお気に入りから削除" + +#: keystrokeEditor/actions/mastodon.py:16 +msgid "Add/remove post from favorites" +msgstr "投稿のお気に入りへの追加・削除" + +#: keystrokeEditor/actions/mastodon.py:17 +msgid "Open the user actions dialogue" +msgstr "ユーザーのアクションを選択する画面を表示" + +#: keystrokeEditor/actions/mastodon.py:18 +msgid "See user details" +msgstr "ユーザーの詳細を表示" + +#: keystrokeEditor/actions/mastodon.py:19 +msgid "Show post" +msgstr "投稿を表示" + +#: keystrokeEditor/actions/mastodon.py:20 +msgid "Quit" +msgstr "終了" + +#: keystrokeEditor/actions/mastodon.py:21 +msgid "Open user timeline" +msgstr "特定のユーザーのタイムラインを開く" + +#: keystrokeEditor/actions/mastodon.py:22 +msgid "Destroy buffer" +msgstr "現在のバッファを削除" + +#: keystrokeEditor/actions/mastodon.py:23 +msgid "Interact with the currently focused post." +msgstr "現在フォーカスされている投稿を操作します。" + +#: keystrokeEditor/actions/mastodon.py:24 +msgid "Open URL" +msgstr "URLを開く" + +#: keystrokeEditor/actions/mastodon.py:25 +msgid "View in browser" +msgstr "ブラウザで表示" + +#: keystrokeEditor/actions/mastodon.py:26 +msgid "Increase volume by 5%" +msgstr "音量を5パーセント上げる" + +#: keystrokeEditor/actions/mastodon.py:27 +msgid "Decrease volume by 5%" +msgstr "音量を5パーセント下げる" + +#: keystrokeEditor/actions/mastodon.py:28 +msgid "Jump to the first element of a buffer" +msgstr "現在のバッファの先頭に移動" + +#: keystrokeEditor/actions/mastodon.py:29 +msgid "Jump to the last element of the current buffer" +msgstr "現在のバッファの最後に移動" + +#: keystrokeEditor/actions/mastodon.py:30 +msgid "Jump 20 elements up in the current buffer" +msgstr "20個前の要素に移動" + +#: keystrokeEditor/actions/mastodon.py:31 +msgid "Jump 20 elements down in the current buffer" +msgstr "20個先の要素に移動" + +#: keystrokeEditor/actions/mastodon.py:33 +msgid "Delete post" +msgstr "投稿を削除" + +#: keystrokeEditor/actions/mastodon.py:34 +msgid "Empty the current buffer" +msgstr "現在のバッファをクリア" + +#: keystrokeEditor/actions/mastodon.py:35 +msgid "Repeat last item" +msgstr "現在のアイテムをもう一度読み上げ" + +#: keystrokeEditor/actions/mastodon.py:36 +msgid "Copy to clipboard" +msgstr "クリップボードにコピー" + +#: keystrokeEditor/actions/mastodon.py:39 +msgid "Mute/unmute the active buffer" +msgstr "現在のバッファのミュートを切り替え" + +#: keystrokeEditor/actions/mastodon.py:40 +msgid "Mute/unmute the current session" +msgstr "現在のセッションのミュートを切り替え" + +#: keystrokeEditor/actions/mastodon.py:41 +msgid "toggle the automatic reading of incoming tweets in the active buffer" +msgstr "新着のツイートを自動で読み上げるかどうかを設定" + +#: keystrokeEditor/actions/mastodon.py:42 +msgid "Search on instance" +msgstr "インスタンスで検索" + +#: keystrokeEditor/actions/mastodon.py:43 +msgid "Find a string in the currently focused buffer" +msgstr "現在のバッファ内の文字列を検索" + +#: keystrokeEditor/actions/mastodon.py:44 +msgid "Show the keystroke editor" +msgstr "キーストロークエディタを表示" + +#: keystrokeEditor/actions/mastodon.py:46 +msgid "load previous items" +msgstr "以前のアイテムを取得" + +#: keystrokeEditor/actions/mastodon.py:48 +msgid "View conversation" +msgstr "会話を見る" + +#: keystrokeEditor/actions/mastodon.py:49 +msgid "Check and download updates" +msgstr "アップデートをチェックしてダウンロード" + +#: keystrokeEditor/actions/mastodon.py:50 +msgid "Opens the global settings dialogue" +msgstr "「全般設定」ダイアログを開く" + +#: keystrokeEditor/actions/mastodon.py:52 +msgid "Opens the account settings dialogue" +msgstr "「アカウント設定」ダイアログを開く" + +#: keystrokeEditor/actions/mastodon.py:53 +msgid "Try to play a media file" +msgstr "音声ファイルの再生" + +#: keystrokeEditor/actions/mastodon.py:54 +msgid "Updates the buffer and retrieves possible lost items there." +msgstr "バッファを更新して、取得に失敗したアイテムを取得。" + +#: keystrokeEditor/actions/mastodon.py:55 +msgid "Extracts the text from a picture and displays the result in a dialog." +msgstr "画像からテキストを抽出して、結果をダイアログで表示。" + +#: keystrokeEditor/actions/mastodon.py:56 +msgid "Adds an alias to an user" +msgstr "ユーザーにエイリアスを追加" + +#: sessionmanager/sessionManager.py:69 +#, python-brace-format +msgid "{account_name}@{instance} (Mastodon)" +msgstr "{account_name}@{instance} (Mastodon)" + +#: sessionmanager/wxUI.py:11 +msgid "Session manager" +msgstr "セッションの管理" + +#: sessionmanager/wxUI.py:14 +msgid "Accounts list" +msgstr "アカウントリスト" + +#: sessionmanager/wxUI.py:16 +msgid "Account" +msgstr "アカウント" + +#: sessionmanager/wxUI.py:20 +msgid "New account" +msgstr "新しいアカウントを連携" + +#: sessionmanager/wxUI.py:22 sessionmanager/wxUI.py:79 +msgid "Remove account" +msgstr "このアカウントを削除" + +#: sessionmanager/wxUI.py:24 +msgid "Global Settings" +msgstr "全体の設定" + +#: sessionmanager/wxUI.py:48 +msgid "You need to configure an account." +msgstr "アカウントを設定する必要があります。" + +#: sessionmanager/wxUI.py:48 +msgid "Account Error" +msgstr "アカウントエラー" + +#: sessionmanager/wxUI.py:54 +msgid "Mastodon" +msgstr "Mastodon" + +#: sessionmanager/wxUI.py:59 +msgid "" +"You will be prompted for your Mastodon data (instance URL, email address " +"and password) so we can authorise TWBlue in your instance. Would you like" +" to authorise your account now?" +msgstr "インスタンスでTWBlueを承認できるように、Mastodonデータ(インスタンスURL、メールアドレス、およびパスワード)の入力を求められます。今すぐアカウントを認証しますか?" + +#: sessionmanager/wxUI.py:59 +msgid "Authorization" +msgstr "認証" + +#: sessionmanager/wxUI.py:67 +#, python-format +msgid "Authorized account %d" +msgstr "認証したアカウント%d" + +#: sessionmanager/wxUI.py:73 +msgid "" +"Your access token is invalid or the authorization has failed. Please try " +"again." +msgstr "あなたのアクセストークンが無効であるか、または許可が失敗しました。もう一度やり直してください。" + +#: sessionmanager/wxUI.py:73 +msgid "Invalid user token" +msgstr "無効なユーザートークン" + +#: sessionmanager/wxUI.py:79 +msgid "Do you really want to delete this account?" +msgstr "本当にこのアカウントを削除しますか?" + +#: sessions/base.py:125 +#, python-brace-format +msgid "" +"An exception occurred while saving the {app} database. It will be deleted" +" and rebuilt automatically. If this error persists, send the error log to" +" the {app} developers." +msgstr "" +"{app} データベースの保存中に例外が発生しました。自動的に削除され、再構築されます。このエラーが続く場合は、エラーログを {app} " +"開発者に送信してください。" + +#: sessions/base.py:165 +#, python-brace-format +msgid "" +"An exception occurred while loading the {app} database. It will be " +"deleted and rebuilt automatically. If this error persists, send the error" +" log to the {app} developers." +msgstr "" +"{app} データベースの読み込み中に例外が発生しました。自動的に削除され、再構築されます。このエラーが続く場合は、エラーログを {app} " +"開発者に送信してください。" + +#: sessions/mastodon/compose.py:15 sessions/mastodon/compose.py:61 +msgid "dddd, MMMM D, YYYY H:m" +msgstr "YYYY年MMMMD日(dddd) H時m分s秒" + +#: sessions/mastodon/compose.py:17 sessions/mastodon/templates.py:74 +#: sessions/mastodon/templates.py:75 +#, python-brace-format +msgid "Boosted from @{}: {}" +msgstr "@{} からブースト: {}" + +#: sessions/mastodon/compose.py:22 sessions/mastodon/compose.py:81 +#: sessions/mastodon/templates.py:81 sessions/mastodon/templates.py:176 +#, python-brace-format +msgid "hidden by filter {}" +msgstr "" + +#: sessions/mastodon/compose.py:36 sessions/mastodon/templates.py:28 +msgid "dddd, MMMM D, YYYY H:m:s" +msgstr "YYYY年MMMMD日(dddd) H時m分s秒" + +#: sessions/mastodon/compose.py:38 +#, python-format +msgid "%s (@%s). %s followers, %s following, %s posts. Joined %s" +msgstr "%s (@%s)。%s フォロワー、%s フォロー中、%s 投稿。参加 %s" + +#: sessions/mastodon/compose.py:49 +#, python-brace-format +msgid "Last message from {}: {}" +msgstr "{} からの最後のメッセージ: {}" + +#: sessions/mastodon/compose.py:64 +#, python-brace-format +msgid "{username} has posted: {status}" +msgstr "{username} が投稿しました: {status}" + +#: sessions/mastodon/compose.py:66 +#, python-brace-format +msgid "{username} has mentioned you: {status}" +msgstr "{username} があなたにメンションしました: {status}" + +#: sessions/mastodon/compose.py:68 +#, python-brace-format +msgid "{username} has boosted: {status}" +msgstr "{username} がブーストしました: {status}" + +#: sessions/mastodon/compose.py:70 +#, python-brace-format +msgid "{username} has added to favorites: {status}" +msgstr "{username} がお気に入りに追加しました: {status}" + +#: sessions/mastodon/compose.py:72 +#, python-brace-format +msgid "{username} has followed you." +msgstr "{username} がフォローしました。" + +#: sessions/mastodon/compose.py:74 +#, python-brace-format +msgid "{username} has joined the instance." +msgstr "{username} がインスタンスに参加しました。" + +#: sessions/mastodon/compose.py:76 sessions/mastodon/templates.py:171 +#, python-brace-format +msgid "A poll in which you have voted has expired: {status}" +msgstr "あなたが投票した投票の有効期限が切れました: {status}" + +#: sessions/mastodon/compose.py:78 +#, python-brace-format +msgid "{username} wants to follow you." +msgstr "{username} がフォローしようとしています。" + +#: sessions/mastodon/session.py:69 +msgid "Please enter your instance URL." +msgstr "インスタンスのURLを入力してください。" + +#: sessions/mastodon/session.py:69 +msgid "Mastodon instance" +msgstr "Mastodonのインスタンス" + +#: sessions/mastodon/session.py:80 +msgid "" +"We could not connect to your mastodon instance. Please verify that the " +"domain exists and the instance is accessible via a web browser." +msgstr "Mastodonインスタンスに接続できませんでした。ドメインが存在し、Webブラウザからインスタンスにアクセスできることを確認してください。" + +#: sessions/mastodon/session.py:80 +msgid "Instance error" +msgstr "インスタンスエラー" + +#: sessions/mastodon/session.py:85 +msgid "Enter the verification code" +msgstr "確認コードを入力" + +#: sessions/mastodon/session.py:85 +msgid "PIN code authorization" +msgstr "PINコード認証" + +#: sessions/mastodon/session.py:94 +msgid "" +"We could not authorice your mastodon account to be used in TWBlue. This " +"might be caused due to an incorrect verification code. Please try to add " +"the session again." +msgstr "TWBlueで使用するMastodonアカウントを認証できませんでした。これは、認証コードが正しくないことが原因である可能性があります。もう1度セッションを追加してください。" + +#: sessions/mastodon/session.py:94 +msgid "Authorization error" +msgstr "認証エラー" + +#: sessions/mastodon/session.py:215 +#, python-format +msgid "%s succeeded." +msgstr "%sに成功しました。" + +#: sessions/mastodon/templates.py:18 +msgid "$display_name, $text $image_descriptions $date. $source" +msgstr "$display_name, $text $image_descriptions $date. $source" + +#: sessions/mastodon/templates.py:19 +msgid "Dm to $recipient_display_name, $text $date" +msgstr "$recipient_display_name へのDM, $text $date" + +#: sessions/mastodon/templates.py:20 +msgid "" +"$display_name (@$screen_name). $followers followers, $following " +"following, $posts posts. Joined $created_at." +msgstr "" +"$display_name (@$screen_name)。$followers フォロワー、$following フォロー中、$posts " +"投稿. 参加 $created_at。" + +#: sessions/mastodon/templates.py:21 +msgid "$display_name $text, $date" +msgstr "$display_name $text、$date" + +#: sessions/mastodon/templates.py:34 +#, python-brace-format +msgid "Content warning: {}" +msgstr "コンテンツの警告: {}" + +#: sessions/mastodon/templates.py:45 +#, python-brace-format +msgid "Media description: {}" +msgstr "メディアの説明: {}。" + +#: sessions/mastodon/templates.py:82 wxUI/dialogs/mastodon/postDialogs.py:49 +msgid "Followers only" +msgstr "フォロワーのみ" + +#: sessions/mastodon/templates.py:94 +#, fuzzy +msgid "Pinned." +msgstr "コピーしました" + +#: sessions/mastodon/templates.py:157 +#, python-brace-format +msgid "has posted: {status}" +msgstr "が投稿しました: {status}" + +#: sessions/mastodon/templates.py:159 +#, python-brace-format +msgid "has mentioned you: {status}" +msgstr "があなたにメンションしました: {status}" + +#: sessions/mastodon/templates.py:161 +#, python-brace-format +msgid "has boosted: {status}" +msgstr "がブーストしました: {status}" + +#: sessions/mastodon/templates.py:163 +#, python-brace-format +msgid "has added to favorites: {status}" +msgstr "がお気に入りに追加しました: {status}" + +#: sessions/mastodon/templates.py:165 +#, python-brace-format +msgid "has updated a status: {status}" +msgstr "がステータスを更新しました: {status}" + +#: sessions/mastodon/templates.py:167 +msgid "has followed you." +msgstr "がフォロー。" + +#: sessions/mastodon/templates.py:169 +msgid "has joined the instance." +msgstr "がインスタンスに参加しました。" + +#: sessions/mastodon/templates.py:173 +msgid "wants to follow you." +msgstr "がフォローしようとしています。" + +#: update/utils.py:29 +#, python-format +msgid "%d day, " +msgstr "%d日 " + +#: update/utils.py:31 +#, python-format +msgid "%d days, " +msgstr "%d日 " + +#: update/utils.py:33 +#, python-format +msgid "%d hour, " +msgstr "%d時間 " + +#: update/utils.py:35 +#, python-format +msgid "%d hours, " +msgstr "%d時間 " + +#: update/utils.py:37 +#, python-format +msgid "%d minute, " +msgstr "%d分 " + +#: update/utils.py:39 +#, python-format +msgid "%d minutes, " +msgstr "%d分 " + +#: update/utils.py:41 +#, python-format +msgid "%s second" +msgstr "%s秒" + +#: update/utils.py:43 +#, python-format +msgid "%s seconds" +msgstr "%s秒" + +#: update/wxUpdater.py:11 +#, python-format +msgid "" +"There's a new %s version available, released on %s. Would you like to " +"download it now?\n" +"\n" +" %s version: %s\n" +"\n" +"Changes:\n" +"%s" +msgstr "" +"%sの新しいバージョンが%sにリリースされています。今すぐダウンロードしますか?\n" +"\n" +"%sバージョン: %s\n" +"\n" +"更新履歴: \n" +"%s" + +#: update/wxUpdater.py:14 +#, python-format +msgid "" +"There's a new %s version available, released on %s. Updates are not " +"automatic in Windows 7, so you would need to visit TWBlue's download " +"website to get the latest version.\n" +"\n" +" %s version: %s\n" +"\n" +"Changes:\n" +"%s" +msgstr "" +"%sの新しいバージョンが%sにリリースされています。Windows7では更新が自動的に行われないため、TWBlueのダウンロードWebサイトにアクセスして最新バージョンを入手する必要があります。" +"\n" +"\n" +"%sバージョン: %s\n" +"\n" +"更新履歴: \n" +"%s" + +#: update/wxUpdater.py:16 +#, python-format +msgid "New version for %s" +msgstr "「%s」の新しいバージョン" + +#: update/wxUpdater.py:23 +msgid "Download in Progress" +msgstr "ダウンロード中" + +#: update/wxUpdater.py:23 +msgid "Downloading the new version..." +msgstr "新しいバージョンをダウンロード中…" + +#: update/wxUpdater.py:33 +#, python-format +msgid "Updating... %s of %s" +msgstr "アップデート中… %s/%s" + +#: update/wxUpdater.py:36 +msgid "" +"The update has been downloaded and installed successfully. Press OK to " +"continue." +msgstr "アップデートは正常にダウンロードされ、インストールされました。続行する場合は、「OK」を押してください。" + +#: update/wxUpdater.py:36 +msgid "Done!" +msgstr "完了!" + +#: wxUI/commonMessageDialogs.py:6 +#, python-brace-format +msgid "Do you really want to close {0}?" +msgstr "本当に{0}を終了しますか?" + +#: wxUI/commonMessageDialogs.py:6 +msgid "Exit" +msgstr "終了確認" + +#: wxUI/commonMessageDialogs.py:10 +#, python-brace-format +msgid " {0} must be restarted for these changes to take effect." +msgstr " これらの変更を有効にするには、{0}を再起動する必要があります。" + +#: wxUI/commonMessageDialogs.py:10 +#, python-brace-format +msgid "Restart {0} " +msgstr "{0}を再起動 " + +#: wxUI/commonMessageDialogs.py:13 +msgid "" +"Are you sure you want to delete this user from the database? This user " +"will not appear in autocomplete results anymore." +msgstr "データベースからこのユーザーを削除してもよろしいですか?このユーザーは、自動補完結果には表示されません。" + +#: wxUI/commonMessageDialogs.py:13 +msgid "Confirm" +msgstr "確認" + +#: wxUI/commonMessageDialogs.py:16 +msgid "" +"Do you really want to empty this buffer? It's items will be removed from" +" the list but not from Twitter" +msgstr "本当にこのバッファをクリアしますか?これは、Twitterからは削除されません" + +#: wxUI/commonMessageDialogs.py:16 wxUI/dialogs/mastodon/dialogs.py:31 +msgid "Empty buffer" +msgstr "バッファをクリア" + +#: wxUI/commonMessageDialogs.py:20 +msgid "Do you really want to destroy this buffer?" +msgstr "本当にこのバッファを削除しますか?" + +#: wxUI/commonMessageDialogs.py:23 +msgid "That user does not exist" +msgstr "そのユーザーは存在しません" + +#: wxUI/commonMessageDialogs.py:26 +msgid "A timeline for this user already exists. You can't open another" +msgstr "このユーザーのタイムラインは既に存在します。別のものを開くことはできません" + +#: wxUI/commonMessageDialogs.py:26 +msgid "Existing timeline" +msgstr "既存のタイムライン" + +#: wxUI/commonMessageDialogs.py:29 +#, python-brace-format +msgid "" +"If you like {0} we need your help to keep it going. Help us by donating " +"to the project. This will help us pay for the server, the domain and some" +" other things to ensure that {0} will be actively maintained. Your " +"donation will give us the means to continue the development of {0}, and " +"to keep {0} free. Would you like to donate now?" +msgstr "{0}が好きなら、私たちは、それを続けるために、助けを必要としています。プロジェクトに寄付することで、私たちを助けてください。これは、私たちは{0}が積極的に維持されることを保証するために、サーバー、ドメイン、およびいくつかの他のもののために支払うのに役立ちます。あなたの寄付は私たちに{0}の開発を継続するための手段を与え、自由な{0}を維持します。今すぐ寄付しますか?" + +#: wxUI/commonMessageDialogs.py:29 +msgid "We need your help" +msgstr "寄付のお願い" + +#: wxUI/commonMessageDialogs.py:33 wxUI/dialogs/mastodon/postDialogs.py:207 +msgid "Information" +msgstr "情報" + +#: wxUI/commonMessageDialogs.py:36 +msgid "The configuration file is invalid." +msgstr "設定ファイルが不正です。" + +#: wxUI/commonMessageDialogs.py:39 +#, python-brace-format +msgid "" +"{0} quit unexpectedly the last time it was run. If the problem persists, " +"please report it to the {0} developers." +msgstr "{0}は、前回の実行時に予期せず終了しました。問題が解決しない場合は、{0}開発者に報告してください。" + +#: wxUI/commonMessageDialogs.py:39 +msgid "Warning" +msgstr "警告" + +#: wxUI/commonMessageDialogs.py:45 +#, python-brace-format +msgid "Sorry, you can't update while running {} from source." +msgstr "申し訳ありませんが、ソースから{}を実行している間は更新できません。" + +#: wxUI/commonMessageDialogs.py:49 +msgid "the provided instance is invalid. Please try again." +msgstr "指定されたインスタンスは無効です。もう一度試してください。" + +#: wxUI/commonMessageDialogs.py:49 +msgid "Invalid instance" +msgstr "無効なインスタンス" + +#: wxUI/commonMessageDialogs.py:52 +msgid "" +"TWBlue was unable to add or update the filter with the specified " +"settings. Please try again." +msgstr "" + +#: wxUI/commonMessageDialogs.py:55 +msgid "" +"TWBlue was unable to load your filters from the instance. Please try " +"again." +msgstr "" + +#: wxUI/commonMessageDialogs.py:58 +#, fuzzy +msgid "Do you really want to delete this filter ?" +msgstr "本当にこのアカウントを削除しますか?" + +#: wxUI/commonMessageDialogs.py:58 +#, fuzzy +msgid "Delete filter" +msgstr "新しいフィルターを作成(&F)" + +#: wxUI/commonMessageDialogs.py:61 +msgid "TWBlue was unable to remove the filter you specified. Please try again." +msgstr "" + +#: wxUI/sysTrayIcon.py:36 wxUI/view.py:25 +msgid "&Global settings" +msgstr "全般設定(&G)" + +#: wxUI/sysTrayIcon.py:37 wxUI/view.py:24 +msgid "Account se&ttings" +msgstr "アカウント設定(&T(" + +#: wxUI/sysTrayIcon.py:39 +msgid "&Show / hide" +msgstr "表示または非表示(&S)" + +#: wxUI/sysTrayIcon.py:40 wxUI/view.py:74 +msgid "&Documentation" +msgstr "取扱説明書(&D)" + +#: wxUI/sysTrayIcon.py:41 +msgid "Check for &updates" +msgstr "アップデートを確認(&U)" + +#: wxUI/sysTrayIcon.py:42 +msgid "&Exit" +msgstr "終了(&E)" + +#: wxUI/view.py:16 +msgid "&Manage accounts" +msgstr "アカウントの管理(&M)" + +#: wxUI/view.py:17 +msgid "&Update profile" +msgstr "プロフィールを更新(&U)" + +#: wxUI/view.py:18 +msgid "&Hide window" +msgstr "ウィンドウを隠す(&H)" + +#: wxUI/view.py:20 +msgid "&Lists manager" +msgstr "リストの管理(&L)" + +#: wxUI/view.py:23 +msgid "&Edit keystrokes" +msgstr "キーストロークを編集(&E)" + +#: wxUI/view.py:26 +msgid "E&xit" +msgstr "終了(&X)" + +#: wxUI/view.py:34 +msgid "&Remove from favorites" +msgstr "お気に入りから削除(&R)" + +#: wxUI/view.py:47 +msgid "&Add to list" +msgstr "リストに追加(&A)" + +#: wxUI/view.py:48 +msgid "R&emove from list" +msgstr "リストから削除(&E)" + +#: wxUI/view.py:49 +msgid "Show user &profile" +msgstr "ユーザーのプロフィールを表示(&P)" + +#: wxUI/view.py:50 +msgid "V&iew likes" +msgstr "いいね一覧を見る(&I)" + +#: wxUI/view.py:54 +msgid "&Update buffer" +msgstr "バッファを更新(&U)" + +#: wxUI/dialogs/mastodon/communityTimeline.py:9 wxUI/view.py:55 +msgid "Create community timeline" +msgstr "コミュニティのタイムラインを作成" + +#: wxUI/view.py:56 +msgid "New &trending topics buffer..." +msgstr "新しいトレンドのバッファ(&T)" + +#: wxUI/view.py:59 +msgid "Find a string in the currently focused buffer..." +msgstr "現在フォーカス中のバッファ内の文字列を検索..." + +#: wxUI/view.py:60 +msgid "&Load previous items" +msgstr "以前のアイテムを取得(&L)" + +#: wxUI/dialogs/mastodon/userActions.py:21 wxUI/view.py:62 +msgid "&Mute" +msgstr "ミュート(&M)" + +#: wxUI/view.py:63 +msgid "&Autoread" +msgstr "自動読み上げ(&A)" + +#: wxUI/view.py:64 +msgid "&Clear buffer" +msgstr "バッファをクリア(&C)" + +#: wxUI/view.py:65 +msgid "&Destroy" +msgstr "バッファを削除(&D)" + +#: wxUI/view.py:69 +msgid "&Seek back 5 seconds" +msgstr "5秒戻る(&S)" + +#: wxUI/view.py:70 +msgid "&Seek forward 5 seconds" +msgstr "5秒進む(&S)" + +#: wxUI/view.py:75 +msgid "Sounds &tutorial" +msgstr "サウンドの確認(&T)" + +#: wxUI/view.py:76 +msgid "&What's new in this version?" +msgstr "更新履歴(&W)" + +#: wxUI/view.py:77 +msgid "&Check for updates" +msgstr "アップデートを確認(&C)" + +#: wxUI/view.py:78 +msgid "&Report an error" +msgstr "エラーを報告(&R)" + +#: wxUI/view.py:79 +#, python-brace-format +msgid "{0}'s &website" +msgstr "{0}のウェブサイト(&W)" + +#: wxUI/view.py:80 +msgid "Get soundpacks for TWBlue" +msgstr "TWBlueのサウンドパックを入手" + +#: wxUI/view.py:81 +#, python-brace-format +msgid "About &{0}" +msgstr "{0}について(&A)" + +#: wxUI/view.py:84 +msgid "&Application" +msgstr "アプリケーション(&A)" + +#: wxUI/view.py:85 +msgid "&Tweet" +msgstr "ツイート(&T)" + +#: wxUI/dialogs/mastodon/userActions.py:10 wxUI/view.py:86 +msgid "&User" +msgstr "ユーザー(&U)" + +#: wxUI/view.py:87 +msgid "&Buffer" +msgstr "バッファ(&B)" + +#: wxUI/view.py:88 +msgid "&Audio" +msgstr "音声(&A)" + +#: wxUI/view.py:89 +msgid "&Help" +msgstr "ヘルプ(&H)" + +#: wxUI/view.py:175 +msgid "Address" +msgstr "アドレス" + +#: wxUI/view.py:206 +#, python-brace-format +msgid "Your {0} version is up to date" +msgstr "{0}のバージョンは最新です" + +#: wxUI/view.py:206 +msgid "Update" +msgstr "アップデート" + +#: wxUI/buffers/panels.py:12 wxUI/buffers/panels.py:20 +msgid "Login" +msgstr "ログイン" + +#: wxUI/buffers/panels.py:14 +msgid "Log in automatically" +msgstr "自動的にログインする" + +#: wxUI/buffers/panels.py:22 +msgid "Logout" +msgstr "ログアウト" + +#: wxUI/buffers/mastodon/base.py:11 +#: wxUI/buffers/mastodon/conversationList.py:11 wxUI/buffers/mastodon/user.py:8 +#: wxUI/dialogs/mastodon/userTimeline.py:10 wxUI/dialogs/userAliasDialogs.py:14 +msgid "User" +msgstr "ユーザー" + +#: wxUI/buffers/mastodon/base.py:11 +#: wxUI/buffers/mastodon/conversationList.py:11 +#: wxUI/buffers/mastodon/notifications.py:11 +#: wxUI/dialogs/mastodon/postDialogs.py:37 +#: wxUI/dialogs/mastodon/postDialogs.py:272 +msgid "Text" +msgstr "内容" + +#: wxUI/buffers/mastodon/base.py:11 +#: wxUI/buffers/mastodon/conversationList.py:11 +#: wxUI/buffers/mastodon/notifications.py:11 +#: wxUI/dialogs/mastodon/postDialogs.py:216 +msgid "Date" +msgstr "日時" + +#: wxUI/buffers/mastodon/base.py:11 +#: wxUI/buffers/mastodon/conversationList.py:11 +msgid "Client" +msgstr "クライアント" + +#: wxUI/buffers/mastodon/base.py:27 +msgid "Favorite" +msgstr "お気に入り" + +#: wxUI/buffers/mastodon/base.py:28 +msgid "Bookmark" +msgstr "ブックマーク" + +#: wxUI/buffers/mastodon/base.py:29 +msgid "Direct message" +msgstr "ダイレクトメッセージ" + +#: wxUI/buffers/mastodon/notifications.py:23 +#: wxUI/dialogs/mastodon/dialogs.py:23 +msgid "Dismiss" +msgstr "却下" + +#: wxUI/buffers/mastodon/user.py:19 wxUI/dialogs/userAliasDialogs.py:48 +msgid "Actions" +msgstr "操作" + +#: wxUI/buffers/mastodon/user.py:20 +msgid "Message" +msgstr "メッセージ" + +#: wxUI/dialogs/configuration.py:15 +#, fuzzy +msgid "&Language" +msgstr "言語" + +#: wxUI/dialogs/configuration.py:22 +#, fuzzy, python-brace-format +msgid "&Ask before exiting {0}" +msgstr "{0}を終了する前に確認" + +#: wxUI/dialogs/configuration.py:24 +#, fuzzy +msgid "&Disable Streaming functions" +msgstr "ストリーミング機能を無効化する" + +#: wxUI/dialogs/configuration.py:27 +#, fuzzy +msgid "&Buffer update interval, in minutes" +msgstr "バッファの更新間隔(分)" + +#: wxUI/dialogs/configuration.py:33 +#, fuzzy, python-brace-format +msgid "Pla&y a sound when {0} launches" +msgstr "{0}が起動したときに、音声を再生" + +#: wxUI/dialogs/configuration.py:35 +#, fuzzy, python-brace-format +msgid "Sp&eak a message when {0} launches" +msgstr "{0}が起動した際に、メッセージを読み上げ" + +#: wxUI/dialogs/configuration.py:37 +#, fuzzy +msgid "&Use invisible interface's keyboard shortcuts while GUI is visible" +msgstr "GUI表示中でもGUI非表示時に利用できるショートカットを利用する" + +#: wxUI/dialogs/configuration.py:39 +#, fuzzy +msgid "A&ctivate Sapi5 when any other screen reader is not being run" +msgstr "他のスクリーンリーダーが起動していないときは、Sapi5を利用する" + +#: wxUI/dialogs/configuration.py:41 +#, fuzzy +msgid "&Hide GUI on launch" +msgstr "起動時にGUIを隠す" + +#: wxUI/dialogs/configuration.py:43 +#, fuzzy +msgid "&Read long posts in GUI" +msgstr "GUIで長い投稿を読む" + +#: wxUI/dialogs/configuration.py:46 +#, fuzzy +msgid "&Keymap" +msgstr "キーマップ" + +#: wxUI/dialogs/configuration.py:51 +#, fuzzy, python-brace-format +msgid "Check for u&pdates when {0} launches" +msgstr "{0}の起動時にアップデートを確認" + +#: wxUI/dialogs/configuration.py:61 +#, fuzzy +msgid "Proxy &type: " +msgstr "プロキシタイプ: " + +#: wxUI/dialogs/configuration.py:68 +#, fuzzy +msgid "Proxy s&erver: " +msgstr "プロキシサーバー: " + +#: wxUI/dialogs/configuration.py:74 +#, fuzzy +msgid "&Port: " +msgstr "ポート: " + +#: wxUI/dialogs/configuration.py:80 +#, fuzzy +msgid "&User: " +msgstr "ユーザー名: " + +#: wxUI/dialogs/configuration.py:86 +#, fuzzy +msgid "P&assword: " +msgstr "パスワード: " + +#: wxUI/dialogs/configuration.py:98 +#, fuzzy +msgid "Enable automatic s&peech feedback" +msgstr "自動音声フィードバックを有効化" + +#: wxUI/dialogs/configuration.py:100 +#, fuzzy +msgid "Enable automatic &Braille feedback" +msgstr "自動点字フィードバックを有効化" + +#: wxUI/dialogs/configuration.py:108 +msgid "Buffer" +msgstr "バッファ" + +#: wxUI/dialogs/configuration.py:108 +msgid "Status" +msgstr "ステータス" + +#: wxUI/dialogs/configuration.py:111 +#, fuzzy +msgid "S&how/hide" +msgstr "表示または非表示" + +#: wxUI/dialogs/configuration.py:112 +#, fuzzy +msgid "Move &up" +msgstr "上へ" + +#: wxUI/dialogs/configuration.py:113 +#, fuzzy +msgid "Move &down" +msgstr "下へ" + +#: wxUI/dialogs/configuration.py:123 wxUI/dialogs/configuration.py:188 +#: wxUI/dialogs/configuration.py:191 wxUI/dialogs/configuration.py:196 +msgid "Show" +msgstr "表示" + +#: wxUI/dialogs/configuration.py:125 wxUI/dialogs/configuration.py:135 +#: wxUI/dialogs/configuration.py:159 wxUI/dialogs/configuration.py:189 +msgid "Hide" +msgstr "非表示" + +#: wxUI/dialogs/configuration.py:133 wxUI/dialogs/configuration.py:157 +msgid "Select a buffer first." +msgstr "最初にバッファを選んでください。" + +#: wxUI/dialogs/configuration.py:136 wxUI/dialogs/configuration.py:160 +msgid "The buffer is hidden, show it first." +msgstr "そのバッファは非表示状態です。まず最初に、表示してください。" + +#: wxUI/dialogs/configuration.py:139 +msgid "The buffer is already at the top of the list." +msgstr "既にそのバッファは、リストの先頭です。" + +#: wxUI/dialogs/configuration.py:163 +msgid "The buffer is already at the bottom of the list." +msgstr "既にそのバッファは、リストの最後です。" + +#: wxUI/dialogs/configuration.py:205 +#, fuzzy +msgid "&LibreTranslate API URL: " +msgstr "LibreTranslate API URL: " + +#: wxUI/dialogs/configuration.py:211 +#, fuzzy +msgid "LibreTranslate API &Key (optional): " +msgstr "LibreTranslate API Key (任意): " + +#: wxUI/dialogs/configuration.py:217 +#, fuzzy +msgid "&DeepL API Key: " +msgstr "DeepL API Key: " + +#: wxUI/dialogs/configuration.py:231 +#, python-brace-format +msgid "{0} preferences" +msgstr "{0}の設定" + +#: wxUI/dialogs/configuration.py:237 wxUI/dialogs/mastodon/configuration.py:144 +msgid "General" +msgstr "一般" + +#: wxUI/dialogs/configuration.py:242 +msgid "Proxy" +msgstr "プロキシ" + +#: wxUI/dialogs/configuration.py:246 +msgid "Translation services" +msgstr "翻訳サービス" + +#: wxUI/dialogs/configuration.py:251 wxUI/dialogs/mastodon/configuration.py:170 +#, fuzzy +msgid "&Save" +msgstr "保存" + +#: wxUI/dialogs/configuration.py:253 +#: wxUI/dialogs/mastodon/communityTimeline.py:27 +#: wxUI/dialogs/mastodon/configuration.py:172 +#: wxUI/dialogs/mastodon/search.py:26 +#: wxUI/dialogs/mastodon/showUserProfile.py:170 +#: wxUI/dialogs/mastodon/updateProfile.py:132 +#: wxUI/dialogs/mastodon/userActions.py:38 +#: wxUI/dialogs/mastodon/userTimeline.py:32 +msgid "&Close" +msgstr "閉じる(&C)" + +#: wxUI/dialogs/find.py:13 +msgid "Find in current buffer" +msgstr "現在のバッファ内を検索" + +#: wxUI/dialogs/find.py:14 +msgid "String" +msgstr "検索文字" + +#: wxUI/dialogs/find.py:23 wxUI/dialogs/mastodon/showUserProfile.py:33 +msgid "Cancel" +msgstr "キャンセル" + +#: wxUI/dialogs/templateDialogs.py:8 +msgid "Edit Template" +msgstr "テンプレートを編集" + +#: wxUI/dialogs/templateDialogs.py:13 +msgid "Edit template" +msgstr "テンプレートを編集" + +#: wxUI/dialogs/templateDialogs.py:17 +msgid "Available variables" +msgstr "使用可能な変数" + +#: wxUI/dialogs/templateDialogs.py:29 +msgid "Restore template" +msgstr "テンプレートを復元" + +#: wxUI/dialogs/templateDialogs.py:48 +#, python-brace-format +msgid "Restored template to {}." +msgstr "テンプレートを {} に復元しました。" + +#: wxUI/dialogs/templateDialogs.py:52 +msgid "" +"the template you have specified include variables that do not exists for " +"the object. Please fix the template and try again. For your reference, " +"you can see a list of all available variables in the variables list while" +" editing your template." +msgstr "指定したテンプレートには、オブジェクトに存在しない変数が含まれています。テンプレートを修正して、再試行してください。参考までに、テンプレートの編集中に、変数リストで使用可能なすべての変数のリストを確認できます。" + +#: wxUI/dialogs/templateDialogs.py:52 +msgid "Invalid template" +msgstr "無効なテンプレート" + +#: wxUI/dialogs/urlList.py:6 +msgid "Select URL" +msgstr "URLを選択" + +#: wxUI/dialogs/mastodon/userActions.py:13 +#: wxUI/dialogs/mastodon/userTimeline.py:13 wxUI/dialogs/userAliasDialogs.py:13 +msgid "&Autocomplete users" +msgstr "自動保管されたユーザー" + +#: wxUI/dialogs/userAliasDialogs.py:18 +msgid "Alias" +msgstr "エイリアス" + +#: wxUI/dialogs/userAliasDialogs.py:41 +msgid "Edit user aliases" +msgstr "ユーザーエイリアスを編集" + +#: wxUI/dialogs/mastodon/search.py:19 wxUI/dialogs/userAliasDialogs.py:43 +msgid "Users" +msgstr "ユーザー" + +#: wxUI/dialogs/userAliasDialogs.py:50 +msgid "Add alias" +msgstr "エイリアスを追加" + +#: wxUI/dialogs/userAliasDialogs.py:51 +msgid "Adds a new user alias" +msgstr "新しいユーザーエイリアスを追加" + +#: wxUI/dialogs/userAliasDialogs.py:54 +msgid "Edit the currently focused user Alias." +msgstr "現在フォーカスされているユーザーエイリアスを編集します。" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:26 +#: wxUI/dialogs/mastodon/filters/manage_filters.py:24 +#: wxUI/dialogs/userAliasDialogs.py:57 +msgid "Remove" +msgstr "削除" + +#: wxUI/dialogs/userAliasDialogs.py:58 +msgid "Remove the currently focused user alias." +msgstr "現在フォーカスされているユーザーエイリアスを削除します。" + +#: wxUI/dialogs/userAliasDialogs.py:82 +msgid "Are you sure you want to delete this user alias?" +msgstr "このユーザーエイリアスを削除してもよろしいですか?" + +#: wxUI/dialogs/userAliasDialogs.py:82 +msgid "Remove user alias" +msgstr "ユーザーエイリアスを削除" + +#: wxUI/dialogs/userAliasDialogs.py:93 +msgid "User alias" +msgstr "ユーザーエイリアス" + +#: wxUI/dialogs/userList.py:27 +msgid "View profile" +msgstr "プロフィールを見る" + +#: wxUI/dialogs/mastodon/communityTimeline.py:10 +msgid "Community URL" +msgstr "コミュニティURLコントロール" + +#: wxUI/dialogs/mastodon/communityTimeline.py:16 +#: wxUI/dialogs/mastodon/userTimeline.py:18 +msgid "Buffer type" +msgstr "バッファのタイプ" + +#: wxUI/dialogs/mastodon/communityTimeline.py:17 +msgid "&Local timeline" +msgstr "ローカルタイムライン(&L)" + +#: wxUI/dialogs/mastodon/communityTimeline.py:18 +msgid "&Federated Timeline" +msgstr "連合タイムライン(&F)" + +#: wxUI/dialogs/mastodon/communityTimeline.py:25 +#: wxUI/dialogs/mastodon/search.py:24 +#: wxUI/dialogs/mastodon/updateProfile.py:130 +#: wxUI/dialogs/mastodon/userActions.py:36 +#: wxUI/dialogs/mastodon/userTimeline.py:30 +msgid "&OK" +msgstr "OK(&O)" + +#: wxUI/dialogs/mastodon/configuration.py:14 +msgid "User autocompletion settings" +msgstr "自動保管の設定" + +#: wxUI/dialogs/mastodon/configuration.py:15 +#, fuzzy +msgid "" +"Scan acc&ount and add followers and following users to the user " +"autocompletion database" +msgstr "アカウントをスキャンして、フォロー中のユーザーやフォロワーをユーザーの自動補完のデータベースに追加します" + +#: wxUI/dialogs/mastodon/configuration.py:16 +#, fuzzy +msgid "&Manage autocompletion database" +msgstr "自動補完のデータベースを管理" + +#: wxUI/dialogs/mastodon/configuration.py:21 +#, fuzzy +msgid "&Disable Streaming API endpoints" +msgstr "ストリーミング API エンドポイントを無効にする" + +#: wxUI/dialogs/mastodon/configuration.py:23 +#, fuzzy +msgid "&Relative timestamps" +msgstr "相対的な時刻を利用する" + +#: wxUI/dialogs/mastodon/configuration.py:25 +#, fuzzy +msgid "" +"R&ead preferences from instance (default visibility when publishing and " +"displaying sensitive content)" +msgstr "インスタンスから設定を読み取る(機密コンテンツを公開および表示する際のデフォルトの可視性)" + +#: wxUI/dialogs/mastodon/configuration.py:28 +#, fuzzy +msgid "&Items on each API call" +msgstr "各API呼び出しの回数" + +#: wxUI/dialogs/mastodon/configuration.py:34 +#, fuzzy +msgid "" +"I&nverted buffers: The newest items will be shown at the beginning while " +"the oldest at the end" +msgstr "バッファの並び順を入れ替える: 新しいツイートを先頭に、古いツイートを最後に表示" + +#: wxUI/dialogs/mastodon/configuration.py:36 +#, fuzzy +msgid "&Ask confirmation before boosting a post" +msgstr "投稿をブーストする前に確認する" + +#: wxUI/dialogs/mastodon/configuration.py:38 +#, fuzzy +msgid "S&how screen names instead of full names" +msgstr "表示名の代わりに、ユーザー名を表示する" + +#: wxUI/dialogs/mastodon/configuration.py:40 +#, fuzzy +msgid "Hide e&mojis in usernames" +msgstr "ユーザー名から絵文字を非表示にする" + +#: wxUI/dialogs/mastodon/configuration.py:42 +#, fuzzy +msgid "" +"&Number of items per buffer to cache in database (0 to disable caching, " +"blank for unlimited)" +msgstr "バッファごとにデータベースにキャッシュする項目数(0はキャッシュしない、空欄の場合は無制限)" + +#: wxUI/dialogs/mastodon/configuration.py:46 +#, fuzzy +msgid "" +"&Load cache for items in memory (much faster in big datasets but requires" +" more RAM)" +msgstr "アイテムのキャッシュをメモリにロードする(大きなデータセットでははるかに高速ですが、より多くのRAMが必要です)" + +#: wxUI/dialogs/mastodon/configuration.py:53 +#, fuzzy, python-brace-format +msgid "Edit template for &posts. Current template: {}" +msgstr "投稿のテンプレートを編集します。現在のテンプレート: {}" + +#: wxUI/dialogs/mastodon/configuration.py:55 +#, fuzzy, python-brace-format +msgid "Edit template for c&onversations. Current template: {}" +msgstr "会話のテンプレートを編集します。現在のテンプレート: {}" + +#: wxUI/dialogs/mastodon/configuration.py:57 +#, fuzzy, python-brace-format +msgid "Edit template for p&ersons. Current template: {}" +msgstr "人のテンプレートを編集します。現在のテンプレート: {}" + +#: wxUI/dialogs/mastodon/configuration.py:65 +#, fuzzy +msgid "&Volume" +msgstr "ボリューム" + +#: wxUI/dialogs/mastodon/configuration.py:76 +#, fuzzy +msgid "S&ession mute" +msgstr "セッションのミュート" + +#: wxUI/dialogs/mastodon/configuration.py:78 +#, fuzzy +msgid "&Output device" +msgstr "出力先デバイス" + +#: wxUI/dialogs/mastodon/configuration.py:85 +#, fuzzy +msgid "&Input device" +msgstr "入力デバイス" + +#: wxUI/dialogs/mastodon/configuration.py:93 +#, fuzzy +msgid "Sound &pack" +msgstr "サウンドパック" + +#: wxUI/dialogs/mastodon/configuration.py:99 +#, fuzzy +msgid "Indicate &audio or video in posts with sound" +msgstr "音声や動画付き投稿を音で報告" + +#: wxUI/dialogs/mastodon/configuration.py:101 +#, fuzzy +msgid "Indicate posts containing i&mages with sound" +msgstr "画像付き投稿を音で報告" + +#: wxUI/dialogs/mastodon/configuration.py:124 +#, fuzzy +msgid "&Language for OCR" +msgstr "OCRの言語" + +#: wxUI/dialogs/mastodon/configuration.py:149 +msgid "Feedback" +msgstr "フィードバック" + +#: wxUI/dialogs/mastodon/configuration.py:153 +msgid "Buffers" +msgstr "バッファ" + +#: wxUI/dialogs/mastodon/configuration.py:157 +msgid "Templates" +msgstr "テンプレート" + +#: wxUI/dialogs/mastodon/configuration.py:161 +msgid "Sound" +msgstr "サウンド" + +#: wxUI/dialogs/mastodon/configuration.py:165 +msgid "Extras" +msgstr "その他" + +#: wxUI/dialogs/mastodon/dialogs.py:7 +msgid "Would you like to share this post?" +msgstr "この投稿を共有しますか?" + +#: wxUI/dialogs/mastodon/dialogs.py:15 +msgid "" +"Do you really want to delete this post? It will be deleted from the " +"instance as well." +msgstr "本当にこの投稿を削除しますか?インスタンスからも削除されます。本当にこのツイートを削除しますか?このツイートは、Twitterから削除されます。" + +#: wxUI/dialogs/mastodon/dialogs.py:15 +msgid "Delete" +msgstr "削除" + +#: wxUI/dialogs/mastodon/dialogs.py:23 +msgid "" +"Are you sure you want to dismiss this notification? If you dismiss a " +"mention notification, it also disappears from your mentions buffer. The " +"post is not going to be deleted from the instance, though." +msgstr "この通知を閉じてもよろしいですか?メンション通知を閉じると、メンションバッファからも消えます。ただし、投稿はインスタンスから削除されません。" + +#: wxUI/dialogs/mastodon/dialogs.py:31 +msgid "" +"Do you really want to empty this buffer? It's items will be removed from" +" the list but not from the instance" +msgstr "本当にこのバッファをクリアしますか?アイテムはリストから削除されますが、インスタンスからは削除されません" + +#: wxUI/dialogs/mastodon/dialogs.py:38 +#, python-brace-format +msgid "This user has no posts. {0} can't create a timeline." +msgstr "このユーザーには投稿がないため、 {0} のタイムラインを作成することはできません。" + +#: wxUI/dialogs/mastodon/dialogs.py:43 +#, python-brace-format +msgid "This user has no favorited posts. {0} can't create a timeline." +msgstr "このユーザーには、お気に入り登録された投稿がないため、 {0} のタイムラインを作成することはできません。" + +#: wxUI/dialogs/mastodon/dialogs.py:48 +#, python-brace-format +msgid "This user has no followers yet. {0} can't create a timeline." +msgstr "このユーザーにはフォロワーがいないため、 {0} のタイムラインを作成することはできません。" + +#: wxUI/dialogs/mastodon/dialogs.py:53 +#, python-brace-format +msgid "This user is not following anyone. {0} can't create a timeline." +msgstr "このユーザーは誰もフォローしていないため、 {0} のタイムラインを作成することはできません。" + +#: wxUI/dialogs/mastodon/dialogs.py:60 +#, python-brace-format +msgid "The focused item has no user in it. {} ca't open a user profile" +msgstr "フォーカスされたアイテムにはユーザーが存在しません。 {} ユーザープロフィールを開けません" + +#: wxUI/dialogs/mastodon/menus.py:13 wxUI/dialogs/mastodon/menus.py:41 +msgid "R&emove from favorites" +msgstr "お気に入りから削除(&E)" + +#: wxUI/dialogs/mastodon/menus.py:15 wxUI/dialogs/mastodon/menus.py:43 +msgid "&Open URL" +msgstr "URLを開く(&O)" + +#: wxUI/dialogs/mastodon/menus.py:17 wxUI/dialogs/mastodon/menus.py:47 +msgid "&Open in instance" +msgstr "インスタンスで開く(&O)" + +#: wxUI/dialogs/mastodon/menus.py:19 wxUI/dialogs/mastodon/menus.py:45 +msgid "&Play audio" +msgstr "音声を再生(&P)" + +#: wxUI/dialogs/mastodon/menus.py:23 wxUI/dialogs/mastodon/menus.py:51 +msgid "&Copy to clipboard" +msgstr "クリップボードにコピー(&C)" + +#: wxUI/dialogs/mastodon/menus.py:27 wxUI/dialogs/mastodon/menus.py:55 +msgid "&User actions..." +msgstr "ユーザーのアクション(&U)" + +#: wxUI/dialogs/mastodon/menus.py:53 +msgid "&Dismiss" +msgstr "却下(&D)" + +#: wxUI/dialogs/mastodon/postDialogs.py:20 +#: wxUI/dialogs/mastodon/postDialogs.py:38 +msgid "Attachments" +msgstr "添付ファイル" + +#: wxUI/dialogs/mastodon/postDialogs.py:24 +msgid "File" +msgstr "ファイル" + +#: wxUI/dialogs/mastodon/postDialogs.py:25 +msgid "Type" +msgstr "形式" + +#: wxUI/dialogs/mastodon/postDialogs.py:26 +#: wxUI/dialogs/mastodon/postDialogs.py:141 +msgid "Description" +msgstr "説明" + +#: wxUI/dialogs/mastodon/postDialogs.py:28 +msgid "Remove Attachment" +msgstr "添付ファイルを削除" + +#: wxUI/dialogs/mastodon/postDialogs.py:33 +msgid "Post in the thread" +msgstr "スレッドに投稿" + +#: wxUI/dialogs/mastodon/postDialogs.py:40 +msgid "Remove post" +msgstr "投稿を削除" + +#: wxUI/dialogs/mastodon/postDialogs.py:47 +msgid "&Visibility" +msgstr "公開範囲(&V)" + +#: wxUI/dialogs/mastodon/postDialogs.py:54 +#, fuzzy +msgid "Language" +msgstr "言語" + +#: wxUI/dialogs/mastodon/postDialogs.py:58 +msgid "A&dd" +msgstr "追加(&D)" + +#: wxUI/dialogs/mastodon/postDialogs.py:59 +msgid "S&ensitive content" +msgstr "閲覧注意コンテンツ(&E)" + +#: wxUI/dialogs/mastodon/postDialogs.py:64 +msgid "Content warning" +msgstr "コンテンツ警告" + +#: wxUI/dialogs/mastodon/postDialogs.py:71 +msgid "Add p&ost" +msgstr "投稿を追加(&O)" + +#: wxUI/dialogs/mastodon/postDialogs.py:75 +msgid "Auto&complete users" +msgstr "ユーザーを自動保管(&C)" + +#: wxUI/dialogs/mastodon/postDialogs.py:77 +msgid "Check &spelling" +msgstr "スペルチェック(&S)" + +#: wxUI/dialogs/mastodon/postDialogs.py:79 +msgid "&Translate" +msgstr "翻訳(&T)" + +#: wxUI/dialogs/mastodon/postDialogs.py:106 +#, python-brace-format +msgid "Post - {} characters" +msgstr "投稿 - {}文字" + +#: wxUI/dialogs/mastodon/postDialogs.py:130 +msgid "Image" +msgstr "画像" + +#: wxUI/dialogs/mastodon/postDialogs.py:132 +msgid "Video" +msgstr "動画" + +#: wxUI/dialogs/mastodon/postDialogs.py:134 +msgid "Audio" +msgstr "音声" + +#: wxUI/dialogs/mastodon/postDialogs.py:136 +msgid "Poll" +msgstr "投票" + +#: wxUI/dialogs/mastodon/postDialogs.py:141 +msgid "please provide a description" +msgstr "説明を入力" + +#: wxUI/dialogs/mastodon/postDialogs.py:148 +msgid "Select the picture to be uploaded" +msgstr "アップロードする画像を選択" + +#: wxUI/dialogs/mastodon/postDialogs.py:148 +msgid "Image files (*.png, *.jpg, *.gif)|*.png; *.jpg; *.gif" +msgstr "画像ファイル (*.png, *.jpg, *.gif)|*.png; *.jpg; *.gif" + +#: wxUI/dialogs/mastodon/postDialogs.py:155 +msgid "Select the video to be uploaded" +msgstr "アップロードする動画を選択" + +#: wxUI/dialogs/mastodon/postDialogs.py:155 +msgid "Video files (*.mp4, *.mov, *.m4v, *.webm)| *.mp4; *.m4v; *.mov; *.webm" +msgstr "動画ファイル (*.mp4, *.mov, *.m4v, *.webm)| *.mp4; *.m4v; *.mov; *.webm" + +#: wxUI/dialogs/mastodon/postDialogs.py:162 +msgid "Select the audio file to be uploaded" +msgstr "アップロードする音声ファイルを選択" + +#: wxUI/dialogs/mastodon/postDialogs.py:162 +msgid "" +"Audio files (*.mp3, *.ogg, *.wav, *.flac, *.opus, *.aac, *.m4a, " +"*.3gp)|*.mp3; *.ogg; *.wav; *.flac; *.opus; *.aac; *.m4a; *.3gp" +msgstr "" +"音声ファイル (*.mp3, *.ogg, *.wav, *.flac, *.opus, *.aac, *.m4a, *.3gp)|*.mp3; " +"*.ogg; *.wav; *.flac; *.opus; *.aac; *.m4a; *.3gp" + +#: wxUI/dialogs/mastodon/postDialogs.py:169 +msgid "" +"It is not possible to add more attachments. Please take into account that" +" You can add only a maximum of 4 images, or one audio, video or poll per" +" post. Please remove other attachments before continuing." +msgstr "これ以上添付ファイルを追加することはできません。投稿ごとに最大4つの画像、または1つの音声、ビデオ、または投票のみを追加できることを考慮してください。続行する前に、他の添付ファイルを削除してください。" + +#: wxUI/dialogs/mastodon/postDialogs.py:169 +msgid "Error adding attachment" +msgstr "添付ファイルの追加中にエラーが発生しました" + +#: wxUI/dialogs/mastodon/postDialogs.py:172 +msgid "" +"You can add a poll or media files. In order to add your poll, please " +"remove other attachments first." +msgstr "投票またはメディアファイルを追加できます。投票を追加するには、まず他の添付ファイルを削除してください。" + +#: wxUI/dialogs/mastodon/postDialogs.py:172 +msgid "Error adding poll" +msgstr "投票の追加中にエラーが発生しました" + +#: wxUI/dialogs/mastodon/postDialogs.py:177 +#, python-format +msgid "Post - %i characters " +msgstr "投稿 - %i文字 " + +#: wxUI/dialogs/mastodon/postDialogs.py:200 +msgid "Image description" +msgstr "画像の説明" + +#: wxUI/dialogs/mastodon/postDialogs.py:210 +msgid "Privacy" +msgstr "プライバシー" + +#: wxUI/dialogs/mastodon/postDialogs.py:214 +msgid "Source" +msgstr "ソース" + +#: wxUI/dialogs/mastodon/postDialogs.py:222 +msgid "Boosts" +msgstr "ブースト" + +#: wxUI/dialogs/mastodon/postDialogs.py:224 +msgid "View users who boosted this post" +msgstr "この投稿をブーストしたユーザーを表示" + +#: wxUI/dialogs/mastodon/postDialogs.py:231 +msgid "View users who favorited this post" +msgstr "この投稿をお気に入りしたユーザーを表示" + +#: wxUI/dialogs/mastodon/postDialogs.py:239 +msgid "Copy link to clipboard" +msgstr "リンクをクリップボードへコピー" + +#: wxUI/dialogs/mastodon/postDialogs.py:241 +#: wxUI/dialogs/mastodon/postDialogs.py:280 +msgid "Check &spelling..." +msgstr "スペルチェック(&S)" + +#: wxUI/dialogs/mastodon/postDialogs.py:242 +#: wxUI/dialogs/mastodon/postDialogs.py:281 +msgid "&Translate..." +msgstr "翻訳(&T)..." + +#: wxUI/dialogs/mastodon/postDialogs.py:243 +#: wxUI/dialogs/mastodon/postDialogs.py:282 +msgid "C&lose" +msgstr "閉じる(&C)" + +#: wxUI/dialogs/mastodon/postDialogs.py:294 +msgid "Add a poll" +msgstr "投票を追加" + +#: wxUI/dialogs/mastodon/postDialogs.py:298 +msgid "Participation time" +msgstr "投票期間" + +#: wxUI/dialogs/mastodon/postDialogs.py:300 +msgid "5 minutes" +msgstr "5分" + +#: wxUI/dialogs/mastodon/postDialogs.py:300 +msgid "30 minutes" +msgstr "30分" + +#: wxUI/dialogs/mastodon/postDialogs.py:300 +msgid "1 hour" +msgstr "1時間" + +#: wxUI/dialogs/mastodon/postDialogs.py:300 +msgid "6 hours" +msgstr "6時間" + +#: wxUI/dialogs/mastodon/postDialogs.py:300 +msgid "1 day" +msgstr "1日" + +#: wxUI/dialogs/mastodon/postDialogs.py:300 +msgid "2 days" +msgstr "2日" + +#: wxUI/dialogs/mastodon/postDialogs.py:300 +msgid "3 days" +msgstr "3日" + +#: wxUI/dialogs/mastodon/postDialogs.py:300 +msgid "4 days" +msgstr "4日" + +#: wxUI/dialogs/mastodon/postDialogs.py:300 +msgid "5 days" +msgstr "5日" + +#: wxUI/dialogs/mastodon/postDialogs.py:300 +msgid "6 days" +msgstr "6日" + +#: wxUI/dialogs/mastodon/postDialogs.py:300 +msgid "7 days" +msgstr "7日" + +#: wxUI/dialogs/mastodon/postDialogs.py:304 +msgid "Choices" +msgstr "選択肢" + +#: wxUI/dialogs/mastodon/postDialogs.py:308 +msgid "Option 1" +msgstr "オプション1" + +#: wxUI/dialogs/mastodon/postDialogs.py:315 +msgid "Option 2" +msgstr "オプション2" + +#: wxUI/dialogs/mastodon/postDialogs.py:322 +msgid "Option 3" +msgstr "オプション3" + +#: wxUI/dialogs/mastodon/postDialogs.py:329 +msgid "Option 4" +msgstr "オプション4" + +#: wxUI/dialogs/mastodon/postDialogs.py:334 +msgid "Allow multiple choices per user" +msgstr "ユーザーごとに複数の投票を許可する" + +#: wxUI/dialogs/mastodon/postDialogs.py:337 +msgid "Hide votes count until the poll expires" +msgstr "投票の有効期限が切れるまで投票数を非表示にする" + +#: wxUI/dialogs/mastodon/postDialogs.py:363 +msgid "Please make sure you have provided at least two options for the poll." +msgstr "投票に少なくとも2つのオプションを提供していることを確認してください。" + +#: wxUI/dialogs/mastodon/postDialogs.py:363 +msgid "Not enough information" +msgstr "十分な情報がありません" + +#: wxUI/dialogs/mastodon/postDialogs.py:368 +msgid "Vote in this poll" +msgstr "このアンケートに投票する" + +#: wxUI/dialogs/mastodon/postDialogs.py:371 +msgid "Options" +msgstr "オプション" + +#: wxUI/dialogs/mastodon/search.py:9 +msgid "Search" +msgstr "検索" + +#: wxUI/dialogs/mastodon/search.py:18 +msgid "Posts" +msgstr "投稿" + +#: wxUI/dialogs/mastodon/showUserProfile.py:22 +msgid "Select user" +msgstr "ユーザーを選択" + +#: wxUI/dialogs/mastodon/showUserProfile.py:73 +#, python-brace-format +msgid "{}'s Profile" +msgstr "{} のプロフィール" + +#: wxUI/dialogs/mastodon/showUserProfile.py:79 +msgid "&Name: " +msgstr "名前(&N): " + +#: wxUI/dialogs/mastodon/showUserProfile.py:84 +msgid "&URL: " +msgstr "URL(&U): " + +#: wxUI/dialogs/mastodon/showUserProfile.py:89 +msgid "&Bio: " +msgstr "自己紹介(&B): " + +#: wxUI/dialogs/mastodon/showUserProfile.py:94 +msgid "&Joined at: " +msgstr "参加日(&J): " + +#: wxUI/dialogs/mastodon/showUserProfile.py:99 +msgid "&Actions" +msgstr "操作(&A)" + +#: wxUI/dialogs/mastodon/showUserProfile.py:104 +msgid "Header: " +msgstr "ヘッダー: " + +#: wxUI/dialogs/mastodon/showUserProfile.py:112 +msgid "Avatar: " +msgstr "アバター: " + +#: wxUI/dialogs/mastodon/showUserProfile.py:122 +#, python-brace-format +msgid "Field &{} - Label: " +msgstr "フィールド &{} - ラベル: " + +#: wxUI/dialogs/mastodon/showUserProfile.py:129 +msgid "Content: " +msgstr "内容: " + +#: wxUI/dialogs/mastodon/filters/create_filter.py:43 +#: wxUI/dialogs/mastodon/filters/create_filter.py:65 +#: wxUI/dialogs/mastodon/showUserProfile.py:135 +msgid "Yes" +msgstr "はい" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:43 +#: wxUI/dialogs/mastodon/filters/create_filter.py:65 +#: wxUI/dialogs/mastodon/filters/create_filter.py:69 +#: wxUI/dialogs/mastodon/showUserProfile.py:135 +msgid "No" +msgstr "いいえ" + +#: wxUI/dialogs/mastodon/showUserProfile.py:137 +msgid "&Private account: " +msgstr "承認制アカウント(&P): " + +#: wxUI/dialogs/mastodon/showUserProfile.py:144 +msgid "&Bot account: " +msgstr "ボットアカウント(&B): " + +#: wxUI/dialogs/mastodon/showUserProfile.py:151 +msgid "&Discoverable account: " +msgstr "発見可能なアカウント(&D): " + +#: wxUI/dialogs/mastodon/showUserProfile.py:157 +#, python-brace-format +msgid "{} p&osts. Click to open posts timeline" +msgstr "{}件の投稿。クリックして投稿のタイムラインを開きます(&O)" + +#: wxUI/dialogs/mastodon/showUserProfile.py:162 +#, python-brace-format +msgid "{} &following. Click to open Following timeline" +msgstr "{} フォロー中。クリックしてフォロー中のタイムラインを開きます(&F)" + +#: wxUI/dialogs/mastodon/showUserProfile.py:166 +#, python-brace-format +msgid "{} fo&llowers. Click to open followers timeline" +msgstr "{} フォロワー。クリックしてフォロワーのタイムラインを開きます(&L)" + +#: wxUI/dialogs/mastodon/updateProfile.py:43 +msgid "&Display Name" +msgstr "表示名(&D)" + +#: wxUI/dialogs/mastodon/updateProfile.py:50 +msgid "&Bio" +msgstr "自己紹介(&B)" + +#: wxUI/dialogs/mastodon/updateProfile.py:58 +msgid "Header" +msgstr "ヘッダー" + +#: wxUI/dialogs/mastodon/updateProfile.py:71 +msgid "Change &header" +msgstr "ヘッダーを変更(&H)" + +#: wxUI/dialogs/mastodon/updateProfile.py:79 +msgid "Avatar" +msgstr "アバター" + +#: wxUI/dialogs/mastodon/updateProfile.py:92 +msgid "Change &avatar" +msgstr "アバターを変更(&A)" + +#: wxUI/dialogs/mastodon/updateProfile.py:102 +#, python-brace-format +msgid "Field &{}: Label" +msgstr "フィールド &{}: ラベル" + +#: wxUI/dialogs/mastodon/updateProfile.py:110 +msgid "Content" +msgstr "内容" + +#: wxUI/dialogs/mastodon/updateProfile.py:120 +msgid "&Private account" +msgstr "承認制アカウント(&P)" + +#: wxUI/dialogs/mastodon/updateProfile.py:122 +msgid "&Bot account" +msgstr "ボットアカウント(&B)" + +#: wxUI/dialogs/mastodon/updateProfile.py:124 +msgid "&Discoverable account" +msgstr "発見可能なアカウント(&D)" + +#: wxUI/dialogs/mastodon/updateProfile.py:167 +msgid "Select header image - max 2MB" +msgstr "ヘッダー画像を選択 - 最大 2MB" + +#: wxUI/dialogs/mastodon/updateProfile.py:172 +#: wxUI/dialogs/mastodon/updateProfile.py:194 +msgid "The selected file is larger than 2MB. Do you want to select another file?" +msgstr "選択したファイルは 2MB を超えています。別のファイルを選択しますか?" + +#: wxUI/dialogs/mastodon/updateProfile.py:173 +#: wxUI/dialogs/mastodon/updateProfile.py:195 +msgid "File more than 2MB" +msgstr "2MBを超えるファイル" + +#: wxUI/dialogs/mastodon/updateProfile.py:189 +msgid "Select avatar image - max 2MB" +msgstr "アバター画像を選択 - 最大 2MB" + +#: wxUI/dialogs/mastodon/userActions.py:19 +msgid "&Follow" +msgstr "フォロー(&F)" + +#: wxUI/dialogs/mastodon/userActions.py:20 +msgid "U&nfollow" +msgstr "フォロー解除(&N)" + +#: wxUI/dialogs/mastodon/userActions.py:22 +msgid "Unmu&te" +msgstr "ミュート解除(&T)" + +#: wxUI/dialogs/mastodon/userActions.py:23 +msgid "&Block" +msgstr "ブロック(&B)" + +#: wxUI/dialogs/mastodon/userActions.py:24 +msgid "Unbl&ock" +msgstr "ブロック解除(&O)" + +#: wxUI/dialogs/mastodon/userTimeline.py:9 +#, python-format +msgid "Timeline for %s" +msgstr "「%s」のタイムライン" + +#: wxUI/dialogs/mastodon/userTimeline.py:19 +msgid "&Posts" +msgstr "投稿(&P)" + +#: wxUI/dialogs/mastodon/userTimeline.py:20 +msgid "&Followers" +msgstr "フォロワー(&F)" + +#: wxUI/dialogs/mastodon/userTimeline.py:21 +msgid "Fo&llowing" +msgstr "フォロー中(&L)" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:12 +#, fuzzy +msgid "Keyword" +msgstr "キー名" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:13 +#: wxUI/dialogs/mastodon/filters/create_filter.py:24 +msgid "Whole word" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:19 +msgid "Keyword:" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:25 +#: wxUI/dialogs/mastodon/filters/manage_filters.py:22 +#, fuzzy +msgid "Add" +msgstr "追加(&D)" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:34 +msgid "Palabras clave a filtrar:" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:74 +#, fuzzy +msgid "New filter" +msgstr "フィルターの管理(&M)" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:78 +#, fuzzy +msgid "Home timeline" +msgstr "タイムライン" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:79 +msgid "Public statuses" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:81 +#, fuzzy +msgid "Threads" +msgstr "準備完了" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:82 +#, fuzzy +msgid "Profiles" +msgstr "{} のプロフィール" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:86 +#, fuzzy +msgid "Hide posts" +msgstr "投稿" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:87 +#, fuzzy +msgid "Set a content warning to posts" +msgstr "コンテンツ警告" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:91 +#, fuzzy +msgid "Hours" +msgstr "6時間" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:92 +#, fuzzy +msgid "Days" +msgstr "7日" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:93 +msgid "Weeks" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:94 +msgid "months" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:97 +#, fuzzy +msgid "Title:" +msgstr "ファイル" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:104 +#, fuzzy +msgid "Apply to:" +msgstr "{} への返信:" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:114 +#, fuzzy +msgid "Action:" +msgstr "操作" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:122 +msgid "Expires in:" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/manage_filters.py:10 +#, fuzzy +msgid "Filters" +msgstr "ファイル" + +#: wxUI/dialogs/mastodon/filters/manage_filters.py:15 +#, fuzzy +msgid "Title" +msgstr "ファイル" + +#: wxUI/dialogs/mastodon/filters/manage_filters.py:16 +msgid "Keywords" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/manage_filters.py:17 +#, fuzzy +msgid "Contexts" +msgstr "コンテキスト" + +#: wxUI/dialogs/mastodon/filters/manage_filters.py:19 +#, fuzzy +msgid "Expires" +msgstr "その他" + +#~ msgid "Unable to find address in OpenStreetMap." +#~ msgstr "OpenStreetMapでアドレスが見つかりません。" + +#~ msgid "There are no results for the coordinates in this tweet" +#~ msgstr "このツイートの位置情報には、なにも含まれていません" + +#~ msgid "This list is already opened" +#~ msgstr "既に開かれています" + +#~ msgid "Timelines for {}" +#~ msgstr "{} のタイムライン" + +#~ msgid "URL of mastodon instance:" +#~ msgstr "MastodonインスタンスのURL:" + +#~ msgid "Email address:" +#~ msgstr "メールアドレス:" + +#~ msgid "Password:" +#~ msgstr "パスワード:" + +#~ msgid "&Item" +#~ msgstr "アイテム(&I)" + +#~ msgid "Likes for {}" +#~ msgstr "{}のいいね一覧" + +#~ msgid "Trending topics for %s" +#~ msgstr "%s のトレンド" + +#~ msgid "Select user" +#~ msgstr "ユーザーを選択" + +#~ msgid "Sent direct messages" +#~ msgstr "送信済みのダイレクトメッセージ" + +#~ msgid "Sent tweets" +#~ msgstr "送信済みのツイート" + +#~ msgid "Likes" +#~ msgstr "いいね" + +#~ msgid "Friends" +#~ msgstr "フォロー" + +#~ msgid "{username}'s likes" +#~ msgstr "{username} のいいね一覧" + +#~ msgid "{username}'s friends" +#~ msgstr "{username} のフォロー" + +#~ msgid "Tweet" +#~ msgstr "ツイート" + +#~ msgid "Write the tweet here" +#~ msgstr "ツイートを入力" + +#~ msgid "New tweet in {0}" +#~ msgstr "{0} への新規ツイート" + +#~ msgid "{0} new tweets in {1}." +#~ msgstr "{1} への {0}個の新規ツイート。" + +#~ msgid "Reply to {arg0}" +#~ msgstr "{arg0} への返信:" + +#~ msgid "Reply to %s" +#~ msgstr "「%s」への返信" + +#~ msgid "Direct message to %s" +#~ msgstr "「%s」へのダイレクトメッセージ" + +#~ msgid "New direct message" +#~ msgstr "新しいダイレクトメッセージ" + +#~ msgid "This action is not supported on protected accounts." +#~ msgstr "この動作は、保護されたアカウントではサポートされていません。" + +#~ msgid "Quote" +#~ msgstr "引用" + +#~ msgid "Add your comment to the tweet" +#~ msgstr "ツイートにコメントを追加" + +#~ msgid "User details" +#~ msgstr "ユーザーの詳細" + +#~ msgid "MMM D, YYYY. H:m" +#~ msgstr "YYYY年MMMMD日 H時m分" + +#~ msgid "There are no coordinates in this tweet" +#~ msgstr "このツイートに位置情報は存在しません" + +#~ msgid "Error decoding coordinates. Try again later." +#~ msgstr "位置情報の取得に失敗しました。あとで再試行してください。" + +#~ msgid "Invalid buffer" +#~ msgstr "無効なバッファ" + +#~ msgid "{0} new direct messages." +#~ msgstr "{0}件の新しいダイレクトメッセージ。" + +#~ msgid "This action is not supported in the buffer yet." +#~ msgstr "この動作は、現在のバッファではサポートされていません。" + +#~ msgid "" +#~ "Getting more items cannot be done " +#~ "in this buffer. Use the direct " +#~ "messages buffer instead." +#~ msgstr "このバッファでは、さらにアイテムを取得することはできません。代わりにダイレクトメッセージバッファを使用してください。" + +#~ msgid "Mention" +#~ msgstr "メンション" + +#~ msgid "Mention to %s" +#~ msgstr "%sへのメンション" + +#~ msgid "{0} new followers." +#~ msgstr "{0}人の新しいフォロワー。" + +#~ msgid "This action is not supported in the buffer, yet." +#~ msgstr "この動作は、現在のバッファではサポートされていません。" + +#~ msgid "&Retweet" +#~ msgstr "リツイート(&R)" + +#~ msgid "&Like" +#~ msgstr "いいね(&L)" + +#~ msgid "&Unlike" +#~ msgstr "いいねを解除(&U)" + +#~ msgid "View &address" +#~ msgstr "位置情報を表示(&A)" + +#~ msgid "&View lists" +#~ msgstr "リストを見る(&V)" + +#~ msgid "View likes" +#~ msgstr "いいね一覧を見る" + +#~ msgid "Likes timelines" +#~ msgstr "ほかのユーザーのいいね一覧" + +#~ msgid "Followers timelines" +#~ msgstr "フォロワー一覧" + +#~ msgid "Following timelines" +#~ msgstr "フォロー一覧" + +#~ msgid "Lists" +#~ msgstr "リスト" + +#~ msgid "List for {}" +#~ msgstr "{}のリスト" + +#~ msgid "Filters cannot be applied on this buffer" +#~ msgstr "このバッファにはフィルターを適応できません" + +#~ msgid "View item" +#~ msgstr "アイテムを見る" + +#~ msgid "Ask" +#~ msgstr "その都度、質問する" + +#~ msgid "Retweet without comments" +#~ msgstr "コメントを付けずにリツイート(公式RT)" + +#~ msgid "Retweet with comments" +#~ msgstr "コメントをつけてリツイート(非公式RT)" + +#~ msgid "Edit template for tweets. Current template: {}" +#~ msgstr "ツイートのテンプレートを編集します。現在のテンプレート: {}" + +#~ msgid "Edit template for direct messages. Current template: {}" +#~ msgstr "ダイレクトメッセージのテンプレートを編集します。現在のテンプレート: {}" + +#~ msgid "Edit template for sent direct messages. Current template: {}" +#~ msgstr "送信済みのダイレクトメッセージのテンプレートを編集します。現在のテンプレート: {}" + +#~ msgid "User has been suspended" +#~ msgstr "ユーザーが凍結されています" + +#~ msgid "Information for %s" +#~ msgstr "%s の情報" + +#~ msgid "Discarded" +#~ msgstr "破棄しました" + +#~ msgid "Username: @%s\n" +#~ msgstr "ユーザー名: @%s\n" + +#~ msgid "Name: %s\n" +#~ msgstr "名前: %s\n" + +#~ msgid "Location: %s\n" +#~ msgstr "居住地: %s\n" + +#~ msgid "URL: %s\n" +#~ msgstr "URL: %s\n" + +#~ msgid "Bio: %s\n" +#~ msgstr "自己紹介: %s\n" + +#~ msgid "Yes" +#~ msgstr "はい" + +#~ msgid "No" +#~ msgstr "いいえ" + +#~ msgid "Protected: %s\n" +#~ msgstr "保護設定: %s\n" + +#~ msgid "Relationship: " +#~ msgstr "関係: " + +#~ msgid "You follow {0}. " +#~ msgstr "{0}をフォロー。 " + +#~ msgid "{0} is following you." +#~ msgstr "{0}がフォロー。" + +#~ msgid "" +#~ "Followers: %s\n" +#~ " Friends: %s\n" +#~ msgstr "" +#~ "フォロワー: %s\n" +#~ "フォロー: %s\n" + +#~ msgid "Verified: %s\n" +#~ msgstr "認証済み: %s\n" + +#~ msgid "Tweets: %s\n" +#~ msgstr "ツイート数: %s\n" + +#~ msgid "Likes: %s" +#~ msgstr "いいね数: %s" + +#~ msgid "You can't ignore direct messages" +#~ msgstr "ダイレクトメッセージを無視することはできません" + +#~ msgid "Attaching..." +#~ msgstr "添付中…" + +#~ msgid "Pause" +#~ msgstr "一時停止" + +#~ msgid "&Resume" +#~ msgstr "再開(&R)" + +#~ msgid "Resume" +#~ msgstr "再開" + +#~ msgid "&Pause" +#~ msgstr "一時停止(&P)" + +#~ msgid "&Stop" +#~ msgstr "停止(&S)" + +#~ msgid "Recording" +#~ msgstr "録音中" + +#~ msgid "Stopped" +#~ msgstr "停止" + +#~ msgid "&Record" +#~ msgstr "録音(&R)" + +#~ msgid "&Play" +#~ msgstr "再生(&P)" + +#~ msgid "Recoding audio..." +#~ msgstr "音声を録音中…" + +#~ msgid "Error in file upload: {0}" +#~ msgstr "ファイルアップロードエラー: {0}" + +#~ msgid "Transferred" +#~ msgstr "転送済み" + +#~ msgid "Total file size" +#~ msgstr "合計サイズ" + +#~ msgid "Transfer rate" +#~ msgstr "転送速度" + +#~ msgid "Time left" +#~ msgstr "残り時間" + +#~ msgid "Attach audio" +#~ msgstr "音声を添付" + +#~ msgid "&Add an existing file" +#~ msgstr "既存のファイルを追加(&A)" + +#~ msgid "&Discard" +#~ msgstr "拒否(&D)" + +#~ msgid "Upload to" +#~ msgstr "アップロード先" + +#~ msgid "Attach" +#~ msgstr "添付" + +#~ msgid "&Cancel" +#~ msgstr "キャンセル(&C)" + +#~ msgid "Audio Files (*.mp3, *.ogg, *.wav)|*.mp3; *.ogg; *.wav" +#~ msgstr "音声ファイル (*.mp3, *.ogg, *.wav)|*.mp3; *.ogg; *.wav" + +#~ msgid "You have to start writing" +#~ msgstr "あなたは、書き込みを開始しなければなりません" + +#~ msgid "There are no results in your users database" +#~ msgstr "あなたのユーザーのデータベースには、見つかりませんでした" + +#~ msgid "Autocompletion only works for users." +#~ msgstr "自動補完はユーザーのみで動作します。" + +#~ msgid "" +#~ "Updating database... You can close this" +#~ " window now. A message will tell " +#~ "you when the process finishes." +#~ msgstr "データベースの更新中… なお、このウィンドウを閉じることができます。処理が終了すると、メッセージが表示されます。" + +#~ msgid "Manage Autocompletion database" +#~ msgstr "自動補完のデータベースを管理" + +#~ msgid "Editing {0} users database" +#~ msgstr "{0}のユーザーデータベースを編集中" + +#~ msgid "Username" +#~ msgstr "ユーザー名" + +#~ msgid "Add user" +#~ msgstr "ユーザーを追加" + +#~ msgid "Remove user" +#~ msgstr "ユーザーを削除" + +#~ msgid "Twitter username" +#~ msgstr "Twitterのユーザー名" + +#~ msgid "Add user to database" +#~ msgstr "データベースにユーザーを追加" + +#~ msgid "The user does not exist" +#~ msgstr "そのユーザーは存在しません" + +#~ msgid "Error!" +#~ msgstr "エラー!" + +#~ msgid "Autocomplete users' settings" +#~ msgstr "自動補完のユーザーの設定" + +#~ msgid "Add followers to database" +#~ msgstr "フォロワーをデータベースに追加" + +#~ msgid "Add friends to database" +#~ msgstr "データベースにフォロー中のユーザーを追加" + +#~ msgid "Updating autocompletion database" +#~ msgstr "自動補完のデータベースを更新中" + +#~ msgid "" +#~ "This process will retrieve the users " +#~ "you selected from Twitter, and add " +#~ "them to the user autocomplete database." +#~ " Please note that if there are " +#~ "many users or you have tried to" +#~ " perform this action less than 15 " +#~ "minutes ago, TWBlue may reach a " +#~ "limit in Twitter API calls when " +#~ "trying to load the users into the" +#~ " database. If this happens, we will" +#~ " show you an error, in which " +#~ "case you will have to try this " +#~ "process again in a few minutes. If" +#~ " this process ends with no error, " +#~ "you will be redirected back to the" +#~ " account settings dialog. Do you want" +#~ " to continue?" +#~ msgstr "このプロセスにより、選択したユーザーがTwitterから取得され、ユーザーの自動補完のデータベースに追加されます。多くのユーザーがいる場合、またはこのアクションを実行しようとしてから15分以内にユーザーをデータベースにロードしようとしたときに、TWBlueがTwitterAPI呼び出しの制限に達する可能性があることに注意してください。これが発生した場合、エラーが表示されます。その場合、数分後にこのプロセスを再試行する必要があります。このプロセスがエラーなしで終了すると、アカウント設定ダイアログにリダイレクトされます。続行してもよろしいですか?" + +#~ msgid "TWBlue has imported {} users successfully." +#~ msgstr "TWBlueは{}ユーザーを正常にインポートしました。" + +#~ msgid "Done" +#~ msgstr "完了" + +#~ msgid "Error adding users from Twitter. Please try again in about 15 minutes." +#~ msgstr "Twitterからユーザーを追加するときにエラーが発生しました。約15分後にもう1度お試しください。" + +#~ msgid "New tweet" +#~ msgstr "新規ツイート" + +#~ msgid "Retweet" +#~ msgstr "リツイート" + +#~ msgid "Like a tweet" +#~ msgstr "ツイートをいいねする" + +#~ msgid "Like/unlike a tweet" +#~ msgstr "ツイートをいいね・いいね解除" + +#~ msgid "Unlike a tweet" +#~ msgstr "ツイートのいいねを解除" + +#~ msgid "See user details" +#~ msgstr "ユーザーの詳細を表示" + +#~ msgid "Show tweet" +#~ msgstr "ツイートを表示" + +#~ msgid "Interact with the currently focused tweet." +#~ msgstr "現在フォーカス中のツイートを相呼応する。" + +#~ msgid "View in Twitter" +#~ msgstr "Twitterで見る" + +#~ msgid "Edit profile" +#~ msgstr "プロフィールを編集" + +#~ msgid "Delete a tweet or direct message" +#~ msgstr "ツイートまたはダイレクトメッセージを削除" + +#~ msgid "Add to list" +#~ msgstr "リストに追加" + +#~ msgid "Remove from list" +#~ msgstr "リストから削除" + +#~ msgid "Search on twitter" +#~ msgstr "Twitterを検索" + +#~ msgid "Show lists for a specified user" +#~ msgstr "特定のユーザーのリストを表示" + +#~ msgid "Get geolocation" +#~ msgstr "位置情報を取得" + +#~ msgid "Display the tweet's geolocation in a dialog" +#~ msgstr "位置情報を表示" + +#~ msgid "Create a trending topics buffer" +#~ msgstr "トレンドのバッファを作成" + +#~ msgid "" +#~ "Opens the list manager, which allows " +#~ "you to create, edit, delete and " +#~ "open lists in buffers." +#~ msgstr "リストを作成したり、編集したり、削除したりするために「リストの管理」を開く。" + +#~ msgid "Opens the list manager" +#~ msgstr "リストの管理" + +#~ msgid "{account_name} (Twitter)" +#~ msgstr "{account_name} (Twitter)" + +#~ msgid "Twitter" +#~ msgstr "Twitter" + +#~ msgid "" +#~ "The request to authorize your Twitter" +#~ " account will be opened in your " +#~ "browser. You only need to do this" +#~ " once. Would you like to continue?" +#~ msgstr "アカウントを認証するために、ブラウザを開きます。あなたは、一度だけ、これを実行する必要があります。続行しますか?" + +#~ msgid "" +#~ "TWBlue is unable to authenticate the " +#~ "account for {} in Twitter. It " +#~ "might be due to an invalid or " +#~ "expired token, revoqued access to the" +#~ " application, or after an account " +#~ "reactivation. Please remove the account " +#~ "manually from your Twitter sessions in" +#~ " order to stop seeing this message." +#~ msgstr "" +#~ "TWBlueはTwitterで {} " +#~ "のアカウントを認証できません。トークンが無効または期限切れであるか、アプリケーションへのアクセスが取り消されているか、アカウントの再アクティブ化が原因である可能性があります。このメッセージの表示を停止するには、Twitterセッションからアカウントを手動で削除してください。" + +#~ msgid "Authentication error for session {}" +#~ msgstr "セッション {} の認証エラー" + +#~ msgid "Dm to %s " +#~ msgstr "「%s」へのDM " + +#~ msgid "{0}. Quoted tweet from @{1}: {2}" +#~ msgstr "{0} 引用:@{1}:{2}" + +#~ msgid "Unavailable" +#~ msgstr "無効" + +#~ msgid "" +#~ "%s (@%s). %s followers, %s friends, " +#~ "%s tweets. Last tweeted %s. Joined " +#~ "Twitter %s" +#~ msgstr "%s: @%s フォロワー: %s フォロー: %s ツイート数: %s 最後のツイート: %s ツイッターへの参加: %s" + +#~ msgid "No description available" +#~ msgstr "説明はありません" + +#~ msgid "private" +#~ msgstr "プライベート" + +#~ msgid "public" +#~ msgstr "公式" + +#~ msgid "Enter your PIN code here" +#~ msgstr "PINコードを入力" + +#~ msgid "Authorising account..." +#~ msgstr "アカウントを連携中…" + +#~ msgid "" +#~ "We could not authorice your Twitter " +#~ "account to be used in TWBlue. This" +#~ " might be caused due to an " +#~ "incorrect verification code. Please try " +#~ "to add the session again." +#~ msgstr "TWBlueで使用するTwitterアカウントを認証できませんでした。これは、認証コードが正しくないことが原因である可能性があります。もう1度セッションを追加してください。" + +#~ msgid "%s failed. Reason: %s" +#~ msgstr "%s が失敗しました。理由: %s" + +#~ msgid "Deleted account" +#~ msgstr "削除されたアカウント" + +#~ msgid "$sender_display_name, $text $date" +#~ msgstr "$sender_display_name, $text $date" + +#~ msgid "" +#~ "$display_name (@$screen_name). $followers followers," +#~ " $following following, $tweets tweets. " +#~ "Joined Twitter $created_at." +#~ msgstr "" +#~ "$display_name (@$screen_name)。$followers フォロワー、$following" +#~ " フォロー中、$tweets 件のツイート。Twitter への参加 $created_at。" + +#~ msgid "Image description: {}." +#~ msgstr "画像の説明: {}。" + +#~ msgid "RT @{}: {} Quote from @{}: {}" +#~ msgstr "{0} 引用:@{1}:{2}" + +#~ msgid "RT @{}: {}" +#~ msgstr "@{} からブースト: {}" + +#~ msgid "{} Quote from @{}: {}" +#~ msgstr "@{} からブースト: {}" + +#~ msgid "Sorry, you are not authorised to see this status." +#~ msgstr "申し訳ありませんが、あなたはこのステータスを表示する権限がありません。" + +#~ msgid "Error {0}" +#~ msgstr "エラー {0}" + +#~ msgid "{user_1}, {user_2} and {all_users} more: {text}" +#~ msgstr "{user_1}、{user_2}、ほか{all_users}ユーザー: {text}" + +#~ msgid "" +#~ "This retweet is over 140 characters. " +#~ "Would you like to post it as " +#~ "a mention to the poster with your" +#~ " comments and a link to the " +#~ "original tweet?" +#~ msgstr "このリツイートは、140文字を超えています。投稿者へのリプライとコメント、および元のツイートへのリンクで登校しますか?" + +#~ msgid "Would you like to add a comment to this tweet?" +#~ msgstr "このツイートにコメントをつけますか?" + +#~ msgid "" +#~ "Do you really want to delete this" +#~ " tweet? It will be deleted from " +#~ "Twitter as well." +#~ msgstr "本当にこのツイートを削除しますか?このツイートは、Twitterから削除されます。" + +#~ msgid "Enter the name of the client : " +#~ msgstr "クライアントの名前: " + +#~ msgid "Add client" +#~ msgstr "クライアントを追加" + +#~ msgid "This user has no tweets, so you can't open a timeline for them." +#~ msgstr "このユーザーは、何もツイートしていないため、タイムラインを開くことができません。" + +#~ msgid "" +#~ "This is a protected Twitter user, " +#~ "which means you can't open a " +#~ "timeline using the Streaming API. The" +#~ " user's tweets will not update due" +#~ " to a twitter policy. Do you " +#~ "want to continue?" +#~ msgstr "このアカウントは、保護されています。これは、ストリーミングAPIを利用して、タイムラインを開くことができないことを意味します。ユーザーのツイートはTwitterのポリシーにより更新されません。続行しますか?" + +#~ msgid "" +#~ "This is a protected user account, " +#~ "you need to follow this user to" +#~ " view their tweets or likes." +#~ msgstr "このユーザーは保護されています。このユーザーのツイートやお気に入り一覧を見るには、このユーザーをフォローする必要があります。" + +#~ msgid "This user has no tweets. {0} can't create a timeline." +#~ msgstr "このユーザーにはツイートがないため、 {0} のタイムラインを作成することはできません。" + +#~ msgid "This user has no favorited tweets. {0} can't create a timeline." +#~ msgstr "このユーザーには、お気に入り登録されたツイートがないため、 {0} のタイムラインを作成することはできません。" + +#~ msgid "This user has no followers. {0} can't create a timeline." +#~ msgstr "このユーザーはフォロワーがいないため、 {0} のタイムラインを作成することはできません。" + +#~ msgid "This user has no friends. {0} can't create a timeline." +#~ msgstr "このユーザーは誰もフォローしていないため、 {0} のタイムラインを作成することはできません。" + +#~ msgid "Geolocation data: {0}" +#~ msgstr "位置情報: {0}" + +#~ msgid "Geo data for this tweet" +#~ msgstr "このツイートの位置情報" + +#~ msgid "You have been blocked from viewing this content" +#~ msgstr "このコンテンツの表示がブロックされています" + +#~ msgid "" +#~ "You have been blocked from viewing " +#~ "someone's content. In order to avoid " +#~ "conflicts with the full session, TWBlue" +#~ " will remove the affected timeline." +#~ msgstr "他のユーザーのコンテンツを表示できないようになっています。フルセッションとの競合を避けるため、TWBlueは影響を受けるタイムラインを削除します。" + +#~ msgid "" +#~ "TWBlue cannot load this timeline because" +#~ " the user has been suspended from " +#~ "Twitter." +#~ msgstr "ユーザーがTwitterから凍結されているため、このタイムラインをロードできません。" + +#~ msgid "Do you really want to delete this filter?" +#~ msgstr "本当に、このフィルターを削除しますか?" + +#~ msgid "This filter already exists. Please use a different title" +#~ msgstr "このフィルターはすでに利用されています。別の名前を利用してください" + +#~ msgid "&Show direct message" +#~ msgstr "ダイレクトメッセージを表示(&S)" + +#~ msgid "&Show event" +#~ msgstr "イベントを表示(&S)" + +#~ msgid "Direct &message" +#~ msgstr "ダイレクトメッセージ(&M)" + +#~ msgid "&Show user" +#~ msgstr "ユーザーを表示(&S)" + +#~ msgid "Search topic" +#~ msgstr "トピックを検索" + +#~ msgid "&Tweet about this trend" +#~ msgstr "このトレンドのツイート(&T)" + +#~ msgid "&Show item" +#~ msgstr "アイテムを表示(&S)" + +#~ msgid "Update &profile" +#~ msgstr "プロフィールを更新(&P)" + +#~ msgid "Event" +#~ msgstr "イベント" + +#~ msgid "Remove event" +#~ msgstr "イベントを削除" + +#~ msgid "Trending topic" +#~ msgstr "トレンド" + +#~ msgid "Tweet about this trend" +#~ msgstr "このトレンドのツイート" + +#~ msgid "" +#~ "Scan account and add friends and " +#~ "followers to the user autocompletion " +#~ "database" +#~ msgstr "アカウントをスキャンして、フォロー中のユーザーやフォロワーをユーザーの自動補完のデータベースに追加します" + +#~ msgid "" +#~ "Inverted buffers: The newest tweets will" +#~ " be shown at the beginning while " +#~ "the oldest at the end" +#~ msgstr "バッファの並び順を入れ替える(新しいツイートを先頭に、古いツイートを最後に表示)" + +#~ msgid "Retweet mode" +#~ msgstr "リツイートのモード" + +#~ msgid "" +#~ "Load cache for tweets in memory " +#~ "(much faster in big datasets but " +#~ "requires more RAM)" +#~ msgstr "ツイートのキャッシュをメモリにロードする(大きなデータセットでははるかに高速ですが、より多くのRAMが必要です)" + +#~ msgid "Ignored clients" +#~ msgstr "無視するクライアント" + +#~ msgid "Remove client" +#~ msgstr "クライアントを削除" + +#~ msgid "Indicate audio tweets with sound" +#~ msgstr "音声付きツイートを音で報告" + +#~ msgid "Indicate geotweets with sound" +#~ msgstr "位置情報付きツイートを音で報告" + +#~ msgid "Indicate tweets containing images with sound" +#~ msgstr "画像付きツイートを音で報告" + +#~ msgid "API Key for SndUp" +#~ msgstr "SndUpのAPIキー" + +#~ msgid "Create a filter for this buffer" +#~ msgstr "このバッファのフィルタを作成" + +#~ msgid "Filter title" +#~ msgstr "フィルター名" + +#~ msgid "Filter by word" +#~ msgstr "単語でフィルター" + +#~ msgid "Ignore tweets wich contain the following word" +#~ msgstr "次の単語が含まれるツイートを無視する" + +#~ msgid "Ignore tweets without the following word" +#~ msgstr "次の単語が含まれないツイートを無視する" + +#~ msgid "word" +#~ msgstr "単語" + +#~ msgid "Allow retweets" +#~ msgstr "リツイートを許可する" + +#~ msgid "Allow quoted tweets" +#~ msgstr "引用ツイートを許可する" + +#~ msgid "Allow replies" +#~ msgstr "リプライを許可するフォロワー一覧" + +#~ msgid "Use this term as a regular expression" +#~ msgstr "正規表現を利用" + +#~ msgid "Filter by language" +#~ msgstr "言語でフィルター" + +#~ msgid "Load tweets in the following languages" +#~ msgstr "下記の言語のツイートを表示" + +#~ msgid "Ignore tweets in the following languages" +#~ msgstr "下記の言語のツイートを無視する" + +#~ msgid "Don't filter by language" +#~ msgstr "言語でフィルタしない" + +#~ msgid "Supported languages" +#~ msgstr "サポートしている言語" + +#~ msgid "Add selected language to filter" +#~ msgstr "選択した言語をフィルターに追加" + +#~ msgid "Selected languages" +#~ msgstr "選択した言語" + +#~ msgid "You must define a name for the filter before creating it." +#~ msgstr "フィルターを作成する前に、フィルターの名前を定義する必要があります。" + +#~ msgid "Missing filter name" +#~ msgstr "フィルター名がありません" + +#~ msgid "Manage filters" +#~ msgstr "フィルターの管理" + +#~ msgid "Filters" +#~ msgstr "フィルター" + +#~ msgid "Filter" +#~ msgstr "フィルター" + +#~ msgid "Lists manager" +#~ msgstr "リストの管理" + +#~ msgid "List" +#~ msgstr "リスト" + +#~ msgid "Owner" +#~ msgstr "所有者" + +#~ msgid "Members" +#~ msgstr "メンバー" + +#~ msgid "mode" +#~ msgstr "モード" + +#~ msgid "Create a new list" +#~ msgstr "新しいリストを作成" + +#~ msgid "Open in buffer" +#~ msgstr "バッファで開く" + +#~ msgid "Viewing lists for %s" +#~ msgstr "「%s」のリストを閲覧中" + +#~ msgid "Subscribe" +#~ msgstr "登録" + +#~ msgid "Unsubscribe" +#~ msgstr "登録解除" + +#~ msgid "Name (20 characters maximun)" +#~ msgstr "名前(20文字以内)" + +#~ msgid "Mode" +#~ msgstr "モード" + +#~ msgid "Private" +#~ msgstr "プライベート" + +#~ msgid "Editing the list %s" +#~ msgstr "リスト「%s」を編集中" + +#~ msgid "Select a list to add the user" +#~ msgstr "ユーザーを追加するリストを選択" + +#~ msgid "Add" +#~ msgstr "追加" + +#~ msgid "Select a list to remove the user" +#~ msgstr "ユーザーを削除するには、リストを選択" + +#~ msgid "Do you really want to delete this list?" +#~ msgstr "本当に、このリストを削除しますか?" + +#~ msgid "Search on Twitter" +#~ msgstr "ツイッターを検索" + +#~ msgid "Tweets" +#~ msgstr "ツイート" + +#~ msgid "&Language for results: " +#~ msgstr "結果の言語(&L): " + +#~ msgid "any" +#~ msgstr "指定しない" + +#~ msgid "Results &type: " +#~ msgstr "結果のタイプ(&T): " + +#~ msgid "Mixed" +#~ msgstr "混合" + +#~ msgid "Recent" +#~ msgstr "最近" + +#~ msgid "Popular" +#~ msgstr "人気" + +#~ msgid "Details" +#~ msgstr "詳細" + +#~ msgid "&Go to URL" +#~ msgstr "URLへ移動(&G)" + +#~ msgid "View trending topics" +#~ msgstr "トレンドを表示" + +#~ msgid "Trending topics by" +#~ msgstr "トレンド" + +#~ msgid "Country" +#~ msgstr "国" + +#~ msgid "City" +#~ msgstr "都市" + +#~ msgid "&Location" +#~ msgstr "場所(&L)" + +#~ msgid "Update your profile" +#~ msgstr "プロフィールを更新" + +#~ msgid "&Name (50 characters maximum)" +#~ msgstr "名前(50文字以内)(&N)" + +#~ msgid "&Website" +#~ msgstr "ウェブサイト(&W)" + +#~ msgid "&Bio (160 characters maximum)" +#~ msgstr "自己紹介(160文字以内)(&B)" + +#~ msgid "Upload a &picture" +#~ msgstr "画像をアップロード(&P)" + +#~ msgid "Upload a picture" +#~ msgstr "画像をアップロード" + +#~ msgid "Discard image" +#~ msgstr "画像を破棄" + +#~ msgid "&Report as spam" +#~ msgstr "スパムとして報告(&R)" + +#~ msgid "&Ignore tweets from this client" +#~ msgstr "このクライアントからのツイートを無視(&I)" + +#~ msgid "&Tweets" +#~ msgstr "ツイート(&T)" + +#~ msgid "&Likes" +#~ msgstr "いいね(&L)" + +#~ msgid "F&riends" +#~ msgstr "フォロー(&R)" + +#~ msgid "Delete attachment" +#~ msgstr "添付ファイルを削除" + +#~ msgid "Added Tweets" +#~ msgstr "ツイートを追加" + +#~ msgid "Delete tweet" +#~ msgstr "ツイートを削除" + +#~ msgid "A&dd..." +#~ msgstr "追加(&D)" + +#~ msgid "Add t&weet" +#~ msgstr "ツイートを追加(&W)" + +#~ msgid "&Attach audio..." +#~ msgstr "音声を添付(&A)" + +#~ msgid "Sen&d" +#~ msgstr "送信(&D)" + +#~ msgid "Video files (*.mp4)|*.mp4" +#~ msgstr "動画ファイル (*.mp4)|*.mp4" + +#~ msgid "" +#~ "It is not possible to add more " +#~ "attachments. Please make sure your tweet" +#~ " complies with Twitter'S attachment rules." +#~ " You can add only one video or" +#~ " GIF in every tweet, and a " +#~ "maximum of 4 photos." +#~ msgstr "これ以上添付ファイルを追加することはできません。ツイートがTwitterの添付ルールに準拠していることを確認してください。すべてのツイートに追加できるビデオまたはGIFは1つだけで、最大4枚の写真を追加できます。" + +#~ msgid "&Mention to all" +#~ msgstr "全員にリプライ(&M)" + +#~ msgid "&Recipient" +#~ msgstr "送信先(&R)" + +#~ msgid "Tweet - %i characters " +#~ msgstr "ツイート - %i文字 " + +#~ msgid "Retweets: " +#~ msgstr "リツイート: " + +#~ msgid "Likes: " +#~ msgstr "いいね: " + +#~ msgid "View" +#~ msgstr "ツイート" + +#~ msgid "Item" +#~ msgstr "アイテム" + +#~ msgid "&Expand URL" +#~ msgstr "URLを元に戻す(&E)" + +#~ msgid "Participation time (in days)" +#~ msgstr "投票期間(日数)" + +#~ msgid "&Open in Twitter" +#~ msgstr "ツイッターを検索" + +#~ msgid "&Show tweet" +#~ msgstr "ツイートを表示(&S)" + +#~ msgid "Translated" +#~ msgstr "翻訳完了" + +#~ msgid "Afrikaans" +#~ msgstr "アフリカ語" + +#~ msgid "Albanian" +#~ msgstr "アルバニア語" + +#~ msgid "Amharic" +#~ msgstr "アムハラ語" + +#~ msgid "Arabic" +#~ msgstr "アラビア語" + +#~ msgid "Armenian" +#~ msgstr "アルメニア語" + +#~ msgid "Azerbaijani" +#~ msgstr "アゼルバイジャン語" + +#~ msgid "Basque" +#~ msgstr "バスク語" + +#~ msgid "Belarusian" +#~ msgstr "ベラルーシ語" + +#~ msgid "Bengali" +#~ msgstr "ベンガル語" + +#~ msgid "Bihari" +#~ msgstr "ビハール語" + +#~ msgid "Bulgarian" +#~ msgstr "ブルガリア語" + +#~ msgid "Burmese" +#~ msgstr "ビルマ語" + +#~ msgid "Catalan" +#~ msgstr "カタロニア語" + +#~ msgid "Cherokee" +#~ msgstr "チェロキー語" + +#~ msgid "Chinese" +#~ msgstr "中国語" + +#~ msgid "Chinese_simplified" +#~ msgstr "簡体字中国語" + +#~ msgid "Chinese_traditional" +#~ msgstr "繁体字中国語" + +#~ msgid "Croatian" +#~ msgstr "クロアチア語" + +#~ msgid "Czech" +#~ msgstr "チェコ語" + +#~ msgid "Dhivehi" +#~ msgstr "ディベヒ語" + +#~ msgid "Esperanto" +#~ msgstr "エスペラント語" + +#~ msgid "Estonian" +#~ msgstr "エストニア語" + +#~ msgid "Filipino" +#~ msgstr "フィリピン語" + +#~ msgid "Galician" +#~ msgstr "ガリシア語" + +#~ msgid "Georgian" +#~ msgstr "ジョージア語" + +#~ msgid "Greek" +#~ msgstr "ギリシャ語" + +#~ msgid "Guarani" +#~ msgstr "グアラニ語" + +#~ msgid "Gujarati" +#~ msgstr "グジャラート語" + +#~ msgid "Hebrew" +#~ msgstr "ヘブライ語" + +#~ msgid "Hindi" +#~ msgstr "ヒンディー語" + +#~ msgid "Icelandic" +#~ msgstr "アイスランド語" + +#~ msgid "Indonesian" +#~ msgstr "インドネシア語" + +#~ msgid "Inuktitut" +#~ msgstr "イヌクティトゥト語" + +#~ msgid "Irish" +#~ msgstr "アイリス語" + +#~ msgid "Kannada" +#~ msgstr "カンナダ語" + +#~ msgid "Kazakh" +#~ msgstr "カザフ語" + +#~ msgid "Khmer" +#~ msgstr "クメール語" + +#~ msgid "Kurdish" +#~ msgstr "クルド語" + +#~ msgid "Kyrgyz" +#~ msgstr "キルギス語" + +#~ msgid "Laothian" +#~ msgstr "ラオス語" + +#~ msgid "Latvian" +#~ msgstr "ラトビア語" + +#~ msgid "Lithuanian" +#~ msgstr "リトアニア語" + +#~ msgid "Macedonian" +#~ msgstr "マケドニア語" + +#~ msgid "Malay" +#~ msgstr "マレー語" + +#~ msgid "Malayalam" +#~ msgstr "マラヤーラム語" + +#~ msgid "Maltese" +#~ msgstr "マルタ語" + +#~ msgid "Marathi" +#~ msgstr "マラーティー語" + +#~ msgid "Mongolian" +#~ msgstr "モンゴル語" + +#~ msgid "Nepali" +#~ msgstr "ネパール語" + +#~ msgid "Norwegian" +#~ msgstr "ノルウェー語" + +#~ msgid "Oriya" +#~ msgstr "オリヤー語" + +#~ msgid "Pashto" +#~ msgstr "パシュトウ語" + +#~ msgid "Persian" +#~ msgstr "ペルシア語" + +#~ msgid "Punjabi" +#~ msgstr "パンジャブ語" + +#~ msgid "Romanian" +#~ msgstr "ルーマニア語" + +#~ msgid "Sanskrit" +#~ msgstr "サンスクリット語" + +#~ msgid "Serbian" +#~ msgstr "セルビア語" + +#~ msgid "Sindhi" +#~ msgstr "シンド語" + +#~ msgid "Sinhalese" +#~ msgstr "シンハラ語" + +#~ msgid "Slovak" +#~ msgstr "スロバキア語" + +#~ msgid "Slovenian" +#~ msgstr "スロベニア語" + +#~ msgid "Swahili" +#~ msgstr "スワヒリ語" + +#~ msgid "Swedish" +#~ msgstr "スウェーデン語" + +#~ msgid "Tajik" +#~ msgstr "タジク語" + +#~ msgid "Tamil" +#~ msgstr "タミル語" + +#~ msgid "Tagalog" +#~ msgstr "タガログ語" + +#~ msgid "Telugu" +#~ msgstr "テルグ語" + +#~ msgid "Thai" +#~ msgstr "タイ語" + +#~ msgid "Tibetan" +#~ msgstr "チベット語" + +#~ msgid "Ukrainian" +#~ msgstr "ウクライナ語" + +#~ msgid "Urdu" +#~ msgstr "ウルドゥー語" + +#~ msgid "Uzbek" +#~ msgstr "ウズベク語" + +#~ msgid "Uighur" +#~ msgstr "ウイグル語" + +#~ msgid "Vietnamese" +#~ msgstr "ベトナム語" + +#~ msgid "Welsh" +#~ msgstr "ウェールズ語" + +#~ msgid "Yiddish" +#~ msgstr "イディッシュ語" + +#~ msgid "" +#~ "TWBlue has detected that you're running" +#~ " windows 10 and has changed the " +#~ "default keymap to the Windows 10 " +#~ "keymap. It means that some keyboard " +#~ "shorcuts could be different. Please " +#~ "check the keystroke editor by pressing" +#~ " Alt+Win+K to see all available " +#~ "keystrokes for this keymap." +#~ msgstr "TWBlueは、Windows10で動作していることを検出したため、デフォルトのキーマップをWindows10のキーマップに変更しました。これは、一部のキーボードショートカットが違うことを意味します。このキーマップで使用できる全てのショートカットを見るには、Alt+Win+Kで、キーストロークエディタを開いて確認してください。" + +#~ msgid "Favorites: " +#~ msgstr "お気に入り: " + +#~ msgid "Date: " +#~ msgstr "日付: " + +#~ msgid "Community for {}" +#~ msgstr "" + +#~ msgid "Run {0} at Windows startup" +#~ msgstr "Windows起動時に{0}を実行" + +#~ msgid "Use Codeofdusk's longtweet handlers (may decrease client performance)" +#~ msgstr "Codeofduskを利用して長いツイートをできるようにする(パフォーマンスが低下する場合があります)" + +#~ msgid "Remember state for mention all and long tweet" +#~ msgstr "「全員にリプライ」および「ツイートを短縮して投稿」のチェック状態を保持する" + diff --git a/srcantiguo/locales/mn/LC_MESSAGES/twblue.mo b/srcantiguo/locales/mn/LC_MESSAGES/twblue.mo new file mode 100644 index 00000000..4b9c0bd6 Binary files /dev/null and b/srcantiguo/locales/mn/LC_MESSAGES/twblue.mo differ diff --git a/srcantiguo/locales/mn/LC_MESSAGES/twblue.po b/srcantiguo/locales/mn/LC_MESSAGES/twblue.po new file mode 100644 index 00000000..0ee9bb62 --- /dev/null +++ b/srcantiguo/locales/mn/LC_MESSAGES/twblue.po @@ -0,0 +1,4867 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2018 ORGANIZATION +# FIRST AUTHOR , 2018. +# +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: manuel@manuelcortez.net\n" +"POT-Creation-Date: 2025-04-13 01:18+0000\n" +"PO-Revision-Date: 2022-12-20 22:43+0000\n" +"Last-Translator: Anonymous \n" +"Language: mn\n" +"Language-Team: Mongolian " +"\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.17.0\n" + +#: languageHandler.py:61 +#, fuzzy +msgctxt "languageName" +msgid "Amharic" +msgstr "Амхерик хэл" + +#: languageHandler.py:62 +#, fuzzy +msgctxt "languageName" +msgid "Aragonese" +msgstr "Япон хэл" + +#: languageHandler.py:63 +#, fuzzy +msgctxt "languageName" +msgid "Spanish" +msgstr "Спань хэл" + +#: languageHandler.py:64 +#, fuzzy +msgctxt "languageName" +msgid "Portuguese" +msgstr "Португаль хэл" + +#: languageHandler.py:65 +#, fuzzy +msgctxt "languageName" +msgid "Russian" +msgstr "Орос хэл" + +#: languageHandler.py:66 +#, fuzzy +msgctxt "languageName" +msgid "italian" +msgstr "итали хэл " + +#: languageHandler.py:67 +#, fuzzy +msgctxt "languageName" +msgid "Turkey" +msgstr "үйлдэл" + +#: languageHandler.py:68 +#, fuzzy +msgctxt "languageName" +msgid "Galician" +msgstr "Галац хэл" + +#: languageHandler.py:69 +#, fuzzy +msgctxt "languageName" +msgid "Catala" +msgstr "Каталан хэл" + +#: languageHandler.py:70 +#, fuzzy +msgctxt "languageName" +msgid "Vasque" +msgstr "Баск хэл" + +#: languageHandler.py:71 +#, fuzzy +msgctxt "languageName" +msgid "polish" +msgstr "Польш хэл" + +#: languageHandler.py:72 +#, fuzzy +msgctxt "languageName" +msgid "Arabic" +msgstr "Араб хэл" + +#: languageHandler.py:73 +#, fuzzy +msgctxt "languageName" +msgid "Nepali" +msgstr "балба  хэл" + +#: languageHandler.py:74 +msgctxt "languageName" +msgid "Serbian (Latin)" +msgstr "" + +#: languageHandler.py:75 +#, fuzzy +msgctxt "languageName" +msgid "Japanese" +msgstr "Япон хэл" + +#: languageHandler.py:99 +msgid "User default" +msgstr "" + +#: main.py:105 +msgid "https://twblue.mcvsoftware.com/donate" +msgstr "" + +#: main.py:118 +#, python-brace-format +msgid "" +"{0} is already running. Close the other instance before starting this " +"one. If you're sure that {0} isn't running, try deleting the file at {1}." +" If you're unsure of how to do this, contact the {0} developers." +msgstr "" + +#: sound.py:148 +msgid "Playing..." +msgstr "Тоглож байна..." + +#: sound.py:161 +msgid "Stopped." +msgstr "" + +#: controller/mainController.py:261 +msgid "Ready" +msgstr "Бэлэн" + +#: controller/mainController.py:369 controller/mainController.py:654 +#: controller/mainController.py:673 controller/mainController.py:692 +#: controller/mainController.py:711 +msgid "" +"No session is currently in focus. Focus a session with the next or " +"previous session shortcut." +msgstr "Ямарч зүйл идэвхижээгүй байна." + +#: controller/mainController.py:373 +msgid "Empty buffer." +msgstr "Хоосон буфер." + +#: controller/mainController.py:380 +#, python-brace-format +msgid "{0} not found." +msgstr "{0} олдсонгүй." + +#: controller/mainController.py:702 controller/mainController.py:721 +#, python-format +msgid "%s, %s of %s" +msgstr "%s, %s -аас %s" + +#: controller/mainController.py:704 controller/mainController.py:723 +#: controller/mainController.py:751 controller/mainController.py:779 +#, python-format +msgid "%s. Empty" +msgstr "%s. Хоосон" + +#: controller/mainController.py:739 controller/mainController.py:743 +#: controller/mainController.py:767 +#, python-brace-format +msgid "{0}: This account is not logged into Twitter." +msgstr "{0}: Энэ нэр Тивитерт ороогүй байна." + +#: controller/mainController.py:749 controller/mainController.py:777 +#, python-format +msgid "%s. %s, %s of %s" +msgstr "%s. %s, %s -аас %s" + +#: controller/mainController.py:771 +#, python-brace-format +msgid "{0}: This account is not logged into twitter." +msgstr "{0}: Энэ нэр Тивитерт ороогүй байна." + +#: controller/mainController.py:910 controller/mainController.py:926 +#, fuzzy +msgid "An error happened while trying to connect to the server. Please try later." +msgstr "Алдааг мэдэгдэж байх үед хүлээгдээгүй алдаа гарлаа." + +#: controller/mainController.py:957 +msgid "The auto-reading of new tweets is enabled for this buffer" +msgstr "Энэ буферт автоматаар жиргээ унших тохиргоо нээгдсэн" + +#: controller/mainController.py:960 +msgid "The auto-reading of new tweets is disabled for this buffer" +msgstr "Энэ буферт автоматаар жиргээ унших тохиргоо хаагдсан" + +#: controller/mainController.py:967 +msgid "Session mute on" +msgstr "Чимээгүй хэсэг нээх" + +#: controller/mainController.py:970 +msgid "Session mute off" +msgstr "Чимээгүй хэсэг хаах" + +#: controller/mainController.py:979 +msgid "Buffer mute on" +msgstr "Буфер чимээгүй нээх" + +#: controller/mainController.py:982 +msgid "Buffer mute off" +msgstr "Буфер чимээгүй хаах" + +#: controller/mainController.py:999 +msgid "Copied" +msgstr "Хуулагдсан" + +#: controller/mainController.py:1019 +msgid "Unable to update this buffer." +msgstr "Буферийг шинэчлэх боломжгүй." + +#: controller/mainController.py:1021 +msgid "Updating buffer..." +msgstr "Буфер шинэчлэгдэж байна." + +#: controller/mainController.py:1024 +#, python-brace-format +msgid "{0} items retrieved" +msgstr "{0} зүйлс автлаа" + +#: controller/buffers/mastodon/base.py:137 controller/mainController.py:1028 +#: controller/mastodon/handler.py:98 controller/mastodon/handler.py:241 +#, python-brace-format +msgid "Timeline for {}" +msgstr "{} -ийн цагийн хүрд" + +#: controller/buffers/mastodon/users.py:93 controller/mainController.py:1030 +#: controller/mastodon/handler.py:100 controller/mastodon/handler.py:255 +#, python-brace-format +msgid "Followers for {}" +msgstr "{} -ийн дагагчид" + +#: controller/mainController.py:1032 +#, python-brace-format +msgid "Friends for {}" +msgstr "{} -ийн найзууд" + +# | msgid "Followers for {}" +#: controller/buffers/mastodon/users.py:95 controller/mainController.py:1034 +#: controller/mastodon/handler.py:102 controller/mastodon/handler.py:269 +#, fuzzy, python-brace-format +msgid "Following for {}" +msgstr "{} -ийн дагагчид" + +#: controller/messages.py:18 +#, fuzzy +msgid "Translated" +msgstr "Орчуулагдлаа" + +#: controller/settings.py:60 +msgid "System default" +msgstr "" + +#: controller/settings.py:60 +msgid "HTTP" +msgstr "" + +#: controller/settings.py:60 +msgid "SOCKS v4" +msgstr "" + +#: controller/settings.py:60 +msgid "SOCKS v4 with DNS support" +msgstr "" + +#: controller/settings.py:60 +msgid "SOCKS v5" +msgstr "" + +#: controller/settings.py:60 +msgid "SOCKS v5 with DNS support" +msgstr "" + +#: controller/userAlias.py:31 +#, fuzzy, python-brace-format +msgid "Edit alias for {}" +msgstr "{} -ийн жагсаалт" + +#: controller/buffers/base/base.py:91 +#: controller/buffers/mastodon/conversations.py:237 +#: controller/buffers/mastodon/search.py:80 +msgid "This action is not supported for this buffer" +msgstr "Энэ үйлдэл нь тухайн буферт дэмжигдэхгүй" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:70 +#: controller/mastodon/settings.py:194 +msgid "Home" +msgstr "Эхлэл" + +#: controller/buffers/mastodon/base.py:52 +#: controller/buffers/mastodon/community.py:22 +#: controller/mastodon/handler.py:72 controller/mastodon/handler.py:114 +#: controller/mastodon/settings.py:195 +msgid "Local" +msgstr "" + +#: controller/buffers/mastodon/base.py:52 +#: controller/buffers/mastodon/community.py:22 +#: controller/mastodon/handler.py:74 controller/mastodon/settings.py:196 +msgid "Federated" +msgstr "" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:76 +#: controller/mastodon/settings.py:197 +msgid "Mentions" +msgstr "Дурдатгал" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:84 +#: controller/mastodon/settings.py:201 +msgid "Bookmarks" +msgstr "" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:78 +msgid "Direct messages" +msgstr "Зурвасууд" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:80 +#: controller/mastodon/settings.py:199 +msgid "Sent" +msgstr "" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:82 +#: controller/mastodon/settings.py:200 wxUI/dialogs/mastodon/postDialogs.py:229 +msgid "Favorites" +msgstr "" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:86 +#: controller/mastodon/settings.py:202 +msgid "Followers" +msgstr "Дагагчид" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:88 +#: controller/mastodon/settings.py:203 +#, fuzzy +msgid "Following" +msgstr "{0} таныг дагаж байна." + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:92 +#: controller/mastodon/settings.py:204 +msgid "Blocked users" +msgstr "Блоклогдсон хэрэглэгчид" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:90 +#: controller/mastodon/settings.py:205 +msgid "Muted users" +msgstr "Чимээгүй болгогдсон хэрэглэгчид" + +# | msgid "Location: %s\n" +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:94 +#: controller/mastodon/settings.py:206 +#: wxUI/dialogs/mastodon/filters/create_filter.py:80 +#, fuzzy +msgid "Notifications" +msgstr "Газар: %s\n" + +#: controller/buffers/mastodon/base.py:58 +#, fuzzy, python-brace-format +msgid "{username}'s timeline" +msgstr "хэрэглэгчийн цагийн хүрдийг нээх" + +#: controller/buffers/mastodon/base.py:60 +#, python-brace-format +msgid "{username}'s followers" +msgstr "" + +#: controller/buffers/mastodon/base.py:62 +#, fuzzy, python-brace-format +msgid "{username}'s following" +msgstr "хэрэглэгчийн цагийн хүрдийг нээх" + +#: controller/buffers/mastodon/base.py:64 +msgid "Unknown buffer" +msgstr "" + +#: controller/buffers/mastodon/base.py:67 +#: controller/buffers/mastodon/base.py:645 wxUI/buffers/mastodon/base.py:24 +#: wxUI/buffers/mastodon/conversationList.py:24 +#: wxUI/buffers/mastodon/notifications.py:22 wxUI/buffers/mastodon/user.py:18 +#: wxUI/dialogs/mastodon/postDialogs.py:5 +#: wxUI/dialogs/mastodon/postDialogs.py:194 wxUI/sysTrayIcon.py:35 +msgid "Post" +msgstr "" + +# | msgid "Write the tweet here" +#: controller/buffers/mastodon/base.py:68 +#: controller/buffers/mastodon/base.py:646 +#, fuzzy +msgid "Write your post here" +msgstr "Жиргэх мэдээллээ оруулна уу" + +#: controller/buffers/mastodon/base.py:153 +#, fuzzy, python-brace-format +msgid "New post in {0}" +msgstr "шинэ жиргээ" + +#: controller/buffers/mastodon/base.py:159 +#, python-brace-format +msgid "{0} new posts in {1}." +msgstr "" + +#: controller/buffers/mastodon/base.py:198 +#: controller/buffers/mastodon/community.py:90 +#: controller/buffers/mastodon/conversations.py:100 +#: controller/buffers/mastodon/mentions.py:82 +#: controller/buffers/mastodon/users.py:139 +#, python-format +msgid "%s items retrieved" +msgstr "%s зүйлс хүлээж авлаа. " + +#: controller/buffers/mastodon/base.py:216 +#: controller/buffers/mastodon/users.py:206 +msgid "This buffer is not a timeline; it can't be deleted." +msgstr "Энэ буфер нь цагийн хүрд биш учраас устгах боломжгүй." + +# | msgid "Conversation with {0}" +#: controller/buffers/mastodon/base.py:346 +#: controller/buffers/mastodon/base.py:384 +#, fuzzy, python-brace-format +msgid "Conversation with {}" +msgstr "{0} -той харилцах" + +# | msgid "Write the tweet here" +#: controller/buffers/mastodon/base.py:347 +#: controller/buffers/mastodon/base.py:385 +#: controller/buffers/mastodon/conversations.py:181 +#: controller/buffers/mastodon/notifications.py:122 +#: controller/buffers/mastodon/users.py:52 +#, fuzzy +msgid "Write your message here" +msgstr "Жиргэх мэдээллээ оруулна уу" + +#: controller/buffers/mastodon/base.py:349 +#, fuzzy, python-brace-format +msgid "Reply to {}" +msgstr "%s руу хариу бичих" + +# | msgid "Write the tweet here" +#: controller/buffers/mastodon/base.py:350 +#, fuzzy +msgid "Write your reply here" +msgstr "Жиргэх мэдээллээ оруулна уу" + +#: controller/buffers/mastodon/base.py:412 +#, fuzzy +msgid "This action is not supported on conversations." +msgstr "Энэ үйлдэл нь тухайн буферт дэмжигдэхгүй" + +#: controller/buffers/mastodon/base.py:477 +msgid "Opening URL..." +msgstr "Холбоосыг нээж байна..." + +#: controller/buffers/mastodon/base.py:490 +msgid "You can delete only your own posts." +msgstr "" + +#: controller/buffers/mastodon/base.py:519 +msgid "Opening item in web browser..." +msgstr "" + +#: controller/buffers/mastodon/base.py:527 +#: controller/buffers/mastodon/base.py:547 +msgid "Adding to favorites..." +msgstr "" + +# | msgid "Remove from list" +#: controller/buffers/mastodon/base.py:534 +#: controller/buffers/mastodon/base.py:549 +#, fuzzy +msgid "Removing from favorites..." +msgstr "жагсаалтаас устгах" + +#: controller/buffers/mastodon/base.py:544 +#: controller/buffers/mastodon/base.py:559 +#: controller/buffers/mastodon/base.py:573 +#: controller/buffers/mastodon/conversations.py:213 +msgid "No status found with that ID" +msgstr "" + +#: controller/buffers/mastodon/base.py:562 +msgid "Adding to bookmarks..." +msgstr "" + +#: controller/buffers/mastodon/base.py:564 +msgid "Removing from bookmarks..." +msgstr "" + +#: controller/buffers/mastodon/base.py:586 +#, python-brace-format +msgid "Picture {0}" +msgstr "зураг {0}" + +#: controller/buffers/mastodon/base.py:587 +msgid "Select the picture" +msgstr "зураг сонгоно уу" + +#: controller/buffers/mastodon/base.py:610 +msgid "Unable to extract text" +msgstr "текст задлах боломжгүй" + +#: controller/buffers/mastodon/base.py:612 +msgid "OCR Result" +msgstr "" + +#: controller/buffers/mastodon/base.py:627 +msgid "this poll no longer exists." +msgstr "" + +#: controller/buffers/mastodon/base.py:630 +msgid "This poll has already expired." +msgstr "" + +#: controller/buffers/mastodon/base.py:633 +msgid "You have already voted on this poll." +msgstr "" + +#: controller/buffers/mastodon/base.py:642 +#, fuzzy +msgid "Sending vote..." +msgstr "Аудио бичлэг хийж байна..." + +# | msgid "Conversation with {0}" +#: controller/buffers/mastodon/conversations.py:180 +#, fuzzy, python-brace-format +msgid "Reply to conversation with {}" +msgstr "{0} -той харилцах" + +# | msgid "Conversation with {0}" +#: controller/buffers/mastodon/notifications.py:121 +#: controller/buffers/mastodon/users.py:51 +#, fuzzy, python-brace-format +msgid "New conversation with {}" +msgstr "{0} -той харилцах" + +#: controller/buffers/mastodon/notifications.py:151 +msgid "Notification dismissed." +msgstr "" + +# | msgid "There are no coordinates in this tweet" +#: controller/buffers/mastodon/users.py:110 +#, fuzzy +msgid "There are no more items in this buffer." +msgstr "Энэ жиргээнд координет байхгүй" + +#: controller/mastodon/handler.py:30 wxUI/dialogs/mastodon/updateProfile.py:35 +msgid "Update Profile" +msgstr "" + +#: controller/mastodon/handler.py:31 wxUI/dialogs/mastodon/search.py:10 +#: wxUI/view.py:19 +msgid "&Search" +msgstr "" + +#: controller/mastodon/handler.py:33 wxUI/view.py:22 +msgid "Manage user aliases" +msgstr "" + +#: controller/mastodon/handler.py:35 controller/mastodon/handler.py:59 +#: wxUI/view.py:30 +msgid "&Post" +msgstr "" + +#: controller/mastodon/handler.py:36 wxUI/dialogs/mastodon/menus.py:9 +#: wxUI/dialogs/mastodon/menus.py:37 wxUI/view.py:31 +msgid "Re&ply" +msgstr "" + +#: controller/mastodon/handler.py:37 wxUI/dialogs/mastodon/menus.py:7 +#: wxUI/dialogs/mastodon/menus.py:35 wxUI/view.py:32 +msgid "&Boost" +msgstr "" + +# | msgid "Add to list" +#: controller/mastodon/handler.py:38 wxUI/dialogs/mastodon/menus.py:11 +#: wxUI/dialogs/mastodon/menus.py:39 wxUI/view.py:33 +#, fuzzy +msgid "&Add to favorites" +msgstr "жагсаалтанд нэмэх" + +# | msgid "Remove from list" +#: controller/mastodon/handler.py:39 +#, fuzzy +msgid "Remove from favorites" +msgstr "жагсаалтаас устгах" + +# | msgid "Show tweet" +#: controller/mastodon/handler.py:40 wxUI/dialogs/mastodon/menus.py:21 +#: wxUI/dialogs/mastodon/menus.py:49 wxUI/view.py:35 +#, fuzzy +msgid "&Show post" +msgstr "жиргээг харах" + +#: controller/mastodon/handler.py:41 wxUI/view.py:36 +msgid "View conversa&tion" +msgstr "" + +#: controller/mastodon/handler.py:42 wxUI/view.py:37 +msgid "Read text in picture" +msgstr "" + +#: controller/mastodon/handler.py:43 wxUI/dialogs/mastodon/menus.py:25 +#: wxUI/view.py:39 +msgid "&Delete" +msgstr "" + +#: controller/mastodon/handler.py:45 wxUI/view.py:43 +msgid "&Actions..." +msgstr "" + +#: controller/mastodon/handler.py:46 wxUI/view.py:44 +msgid "&View timeline..." +msgstr "" + +#: controller/mastodon/handler.py:47 wxUI/view.py:45 +msgid "Direct me&ssage" +msgstr "" + +#: controller/mastodon/handler.py:48 wxUI/view.py:46 +msgid "Add a&lias" +msgstr "" + +#: controller/mastodon/handler.py:51 +msgid "Show user profile" +msgstr "" + +#: controller/mastodon/handler.py:54 +msgid "Create c&ommunity timeline" +msgstr "" + +#: controller/mastodon/handler.py:55 wxUI/view.py:57 +msgid "Create a &filter" +msgstr "" + +#: controller/mastodon/handler.py:56 wxUI/view.py:58 +msgid "&Manage filters" +msgstr "" + +#: controller/mastodon/handler.py:95 +msgid "Timelines" +msgstr "Цагийн хүрднүүд" + +#: controller/mastodon/handler.py:107 +msgid "Searches" +msgstr "Хайлтууд" + +#: controller/mastodon/handler.py:110 controller/mastodon/handler.py:191 +#: controller/mastodon/handler.py:196 +#, python-brace-format +msgid "Search for {}" +msgstr "{} -ийн хайлт" + +#: controller/mastodon/handler.py:111 +msgid "Communities" +msgstr "" + +#: controller/mastodon/handler.py:114 +#, fuzzy +msgid "federated" +msgstr "хэрэглэгчийн цагийн хүрдийг нээх" + +#: controller/mastodon/handler.py:143 +#, python-brace-format +msgid "Conversation with {0}" +msgstr "{0} -той харилцах" + +#: controller/mastodon/handler.py:299 +msgid "Add an user alias" +msgstr "" + +#: controller/mastodon/handler.py:311 +#, python-brace-format +msgid "Alias has been set correctly for {}." +msgstr "" + +#: controller/mastodon/handler.py:342 +msgid "Update profile" +msgstr "" + +#: controller/mastodon/messages.py:115 +#, python-format +msgid "%s - %s of %d characters" +msgstr "%s - %s -ны %d үсэгнүүд" + +#: controller/mastodon/messages.py:239 +#, python-brace-format +msgid "Poll with {} options" +msgstr "" + +# | msgid "List for {}" +#: controller/mastodon/messages.py:272 +#, fuzzy, python-brace-format +msgid "Post from {}" +msgstr "{} -ийн жагсаалт" + +#: controller/mastodon/messages.py:276 sessions/mastodon/templates.py:82 +#: wxUI/dialogs/mastodon/postDialogs.py:49 +msgid "Public" +msgstr "" + +# | msgid "Accounts list" +#: controller/mastodon/messages.py:276 sessions/mastodon/templates.py:82 +#: wxUI/dialogs/mastodon/postDialogs.py:49 +#, fuzzy +msgid "Not listed" +msgstr "бүртгэлийн жагсаалт" + +# | msgid "Followers" +#: controller/mastodon/messages.py:276 +#, fuzzy +msgid "followers only" +msgstr "Дагагчид" + +#: controller/mastodon/messages.py:276 sessions/mastodon/templates.py:82 +#: wxUI/dialogs/mastodon/postDialogs.py:49 +msgid "Direct" +msgstr "" + +# | msgid "Remove user" +#: controller/mastodon/messages.py:283 +#, fuzzy +msgid "Remote instance" +msgstr "Хэрэглэгч устгах" + +#: controller/mastodon/messages.py:291 controller/mastodon/messages.py:319 +#, fuzzy +msgid "Unmute conversation" +msgstr "Харилцан яриаг бүтнээр нээх" + +#: controller/mastodon/messages.py:315 wxUI/dialogs/mastodon/postDialogs.py:237 +#, fuzzy +msgid "Mute conversation" +msgstr "Харилцан яриаг бүтнээр нээх" + +# | msgid "Conversation with {0}" +#: controller/mastodon/messages.py:316 +#, fuzzy +msgid "Conversation unmuted." +msgstr "{0} -той харилцах" + +# | msgid "Conversation with {0}" +#: controller/mastodon/messages.py:320 +#, fuzzy +msgid "Conversation muted." +msgstr "{0} -той харилцах" + +#: controller/mastodon/messages.py:331 +msgid "people who boosted this post" +msgstr "" + +#: controller/mastodon/messages.py:336 +msgid "people who favorited this post" +msgstr "" + +#: controller/mastodon/messages.py:342 +#, fuzzy +msgid "Link copied to clipboard." +msgstr "хуулах" + +#: controller/mastodon/settings.py:82 +#, python-format +msgid "Account settings for %s" +msgstr "%s еийн тохиргоо" + +#: controller/mastodon/settings.py:92 +#, python-brace-format +msgid "Edit template for posts. Current template: {}" +msgstr "" + +#: controller/mastodon/settings.py:101 +#, python-brace-format +msgid "Edit template for conversations. Current template: {}" +msgstr "" + +#: controller/mastodon/settings.py:110 +#, python-brace-format +msgid "Edit template for persons. Current template: {}" +msgstr "" + +#: controller/mastodon/settings.py:198 +msgid "Direct Messages" +msgstr "Зурвасууд" + +#: controller/mastodon/filters/create_filter.py:75 +#, python-brace-format +msgid "Update Filter: {}" +msgstr "" + +#: controller/mastodon/filters/manage_filters.py:57 +#: wxUI/dialogs/mastodon/filters/create_filter.py:90 +msgid "Never" +msgstr "" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:4 +msgid "Audio tweet." +msgstr "Аудио жиргээ." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:5 +msgid "User timeline buffer created." +msgstr "Хэрэглэгчийн цагийн хүрд буфер үүсгэгдлээ." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:6 +msgid "Buffer destroied." +msgstr "Буфер устгагдлаа." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:7 +msgid "Direct message received." +msgstr "Зурвас хүлээж авлаа." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:8 +msgid "Direct message sent." +msgstr "Зурвасыг явууллаа." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:9 +msgid "Error." +msgstr "Алдаа." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:10 +msgid "Tweet liked." +msgstr "Жиргээг дуртай гэж тэмдэглэв." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:11 +msgid "Likes buffer updated." +msgstr "Дуртай буфер шинэчлэгдлээ." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:12 +msgid "Geotweet." +msgstr "Газар зүйн жиргээ." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:13 +msgid "Tweet contains one or more images" +msgstr "жиргээ нэг эсвэл олон зураг агуулсан байна" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:14 +msgid "Boundary reached." +msgstr "Хязгаарт хүрлээ." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:15 +msgid "List updated." +msgstr "Жагсаалт шинэчлэгдлээ." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:16 +msgid "Too many characters." +msgstr "Үсгийн хэмжээ хэтэрсэн." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:17 +msgid "Mention received." +msgstr "Таныг дурдсан жиргээ хүлээж авлаа." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:18 +msgid "New event." +msgstr "ШИнэ арга хэмжээ." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:19 +#, python-brace-format +msgid "{0} is ready." +msgstr "{0} бэлэн боллоо." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:20 +msgid "Mention sent." +msgstr "Таны дурдсан жиргээ илгээгдлээ." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:21 +msgid "Tweet retweeted." +msgstr "Жиргээ дахин жиргэгдлээ." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:22 +msgid "Search buffer updated." +msgstr "Хайлт буфер шинэчлэгдлээ." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:23 +msgid "Tweet received." +msgstr "Жиргээ ирлээ." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:24 +msgid "Tweet sent." +msgstr "Жиргээ явлаа." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:25 +msgid "Trending topics buffer updated." +msgstr "Сэдвүүдийн чиг хандлагатай буфер шинэчлэгдлээ." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:26 +msgid "New tweet in user timeline buffer." +msgstr "Хэрэглэгчийн цагийн хүрдэндэх шинэ жиргээний буфер." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:27 +msgid "New follower." +msgstr "Шинэ дагагч" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:28 +msgid "Volume changed." +msgstr "Дууны төвшин өөрчлөгдлөө." + +#: extra/SoundsTutorial/wx_ui.py:8 +msgid "Sounds tutorial" +msgstr "Дуу чимээг сурах" + +#: extra/SoundsTutorial/wx_ui.py:11 +msgid "Press enter to listen to the sound for the selected event" +msgstr "Энтэр товчлуурыг дарж сонгогдсон арга хэмжээний дууг сонсоно уу" + +#: extra/SpellChecker/spellchecker.py:56 +#, python-format +msgid "Misspelled word: %s" +msgstr "Буруу бичигдсэн үг: %s" + +#: extra/SpellChecker/wx_ui.py:27 +msgid "Misspelled word" +msgstr "Буруу бичигдсэн үг" + +#: extra/SpellChecker/wx_ui.py:32 +msgid "Context" +msgstr "Контекст" + +#: extra/SpellChecker/wx_ui.py:37 +msgid "Suggestions" +msgstr "Санал болгосон" + +#: extra/SpellChecker/wx_ui.py:42 +#, fuzzy +msgid "&Ignore" +msgstr "Үгүйсгэх" + +#: extra/SpellChecker/wx_ui.py:43 +#, fuzzy +msgid "I&gnore all" +msgstr "Бүгдийг нь Үгүүсгэх" + +#: extra/SpellChecker/wx_ui.py:44 +#, fuzzy +msgid "&Replace" +msgstr "Давхарлах" + +#: extra/SpellChecker/wx_ui.py:45 +#, fuzzy +msgid "R&eplace all" +msgstr "Бүгдийг нь давхарлах" + +#: extra/SpellChecker/wx_ui.py:46 +msgid "&Add to personal dictionary" +msgstr "" + +#: extra/SpellChecker/wx_ui.py:79 +#, python-brace-format +msgid "" +"An error has occurred. There are no dictionaries available for the " +"selected language in {0}" +msgstr "Алдаа гарлаа. Сонгогдсон {0} хэлэнд тохирох толь бичиг олдсонгүй." + +#: extra/SpellChecker/wx_ui.py:79 +#: extra/autocompletionUsers/mastodon/wx_scan.py:44 +#: wxUI/commonMessageDialogs.py:23 wxUI/commonMessageDialogs.py:36 +#: wxUI/commonMessageDialogs.py:45 wxUI/commonMessageDialogs.py:52 +#: wxUI/commonMessageDialogs.py:55 wxUI/commonMessageDialogs.py:61 +#: wxUI/dialogs/mastodon/dialogs.py:38 wxUI/dialogs/mastodon/dialogs.py:43 +#: wxUI/dialogs/mastodon/dialogs.py:48 wxUI/dialogs/mastodon/dialogs.py:53 +#: wxUI/dialogs/mastodon/dialogs.py:60 +msgid "Error" +msgstr "Алдаа" + +#: extra/SpellChecker/wx_ui.py:82 +msgid "Spell check complete." +msgstr "Зөв бичсэн эсэхийг шалгаж дууслаа." + +#: extra/autocompletionUsers/completion.py:39 +#: extra/autocompletionUsers/completion.py:57 +msgid "You have to start writing" +msgstr "" + +# | msgid "There are no coordinates in this tweet" +#: extra/autocompletionUsers/completion.py:49 +#: extra/autocompletionUsers/completion.py:66 +#, fuzzy +msgid "There are no results in your users database" +msgstr "Энэ жиргээнд координет байхгүй" + +#: extra/autocompletionUsers/completion.py:51 +msgid "Autocompletion only works for users." +msgstr "" + +#: extra/autocompletionUsers/wx_manage.py:9 +#, fuzzy +msgid "Manage Autocompletion database" +msgstr "Автоматаар гүйцээх дата багцыг өөрчлөх" + +#: extra/autocompletionUsers/wx_manage.py:12 +#, fuzzy, python-brace-format +msgid "Editing {0} users database" +msgstr "{0} хэрэглэгчдийн дата багцыг өөрчилж байна" + +#: extra/autocompletionUsers/wx_manage.py:13 +#, fuzzy +msgid "Username" +msgstr "Нэр" + +#: extra/autocompletionUsers/wx_manage.py:13 wxUI/dialogs/configuration.py:108 +msgid "Name" +msgstr "Нэр" + +#: extra/autocompletionUsers/wx_manage.py:16 +#, fuzzy +msgid "Add user" +msgstr "Чимээгүй болгогдсон хэрэглэгчид" + +#: extra/autocompletionUsers/wx_manage.py:17 +#, fuzzy +msgid "Remove user" +msgstr "Хэрэглэгч устгах" + +#: extra/autocompletionUsers/wx_manage.py:38 +msgid "Twitter username" +msgstr "" + +#: extra/autocompletionUsers/wx_manage.py:38 +msgid "Add user to database" +msgstr "" + +#: extra/autocompletionUsers/wx_manage.py:44 +#, fuzzy +msgid "The user does not exist" +msgstr "энэ хэрэглэгч байхгүй байна" + +#: extra/autocompletionUsers/wx_manage.py:44 +#, fuzzy +msgid "Error!" +msgstr "Алдаа" + +#: extra/autocompletionUsers/mastodon/scan.py:49 +msgid "" +"Updating database... You can close this window now. A message will tell " +"you when the process finishes." +msgstr "" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:8 +#, fuzzy +msgid "Autocomplete users' settings" +msgstr "Автоматаар хэрэглэгчийн тохргоог гүйцээх" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:11 +msgid "Add &followers to database" +msgstr "" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:12 +msgid "Add f&ollowing to database" +msgstr "" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:26 +#, fuzzy +msgid "Updating autocompletion database" +msgstr "Автоматаар гүйцээх дата багцыг өөрчлөх" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:34 +msgid "" +"This process will retrieve the users you selected from your Mastodon " +"account, and add them to the user autocomplete database. Please note that" +" if there are many users or you have tried to perform this action less " +"than 15 minutes ago, TWBlue may reach a limit in API calls when trying to" +" load the users into the database. If this happens, we will show you an " +"error, in which case you will have to try this process again in a few " +"minutes. If this process ends with no error, you will be redirected back " +"to the account settings dialog. Do you want to continue?" +msgstr "" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:34 +#: wxUI/commonMessageDialogs.py:20 +msgid "Attention" +msgstr "" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:40 +#, python-brace-format +msgid "TWBlue has imported {} users successfully." +msgstr "" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:40 +msgid "Done" +msgstr "" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:44 +msgid "Error adding users from Mastodon. Please try again in about 15 minutes." +msgstr "" + +#: extra/ocr/OCRSpace.py:7 +msgid "Detect automatically" +msgstr "автоматаар илрүүлэх" + +#: extra/ocr/OCRSpace.py:7 +msgid "Danish" +msgstr "Дани хэл" + +#: extra/ocr/OCRSpace.py:7 +msgid "Dutch" +msgstr "голланд хэл " + +#: extra/ocr/OCRSpace.py:7 +msgid "English" +msgstr "Англи хэл" + +#: extra/ocr/OCRSpace.py:7 +msgid "Finnish" +msgstr "финлянд хэл " + +#: extra/ocr/OCRSpace.py:7 +msgid "French" +msgstr "Франц хэл" + +#: extra/ocr/OCRSpace.py:7 +msgid "German" +msgstr "Герман хэл" + +#: extra/ocr/OCRSpace.py:7 +msgid "Hungarian" +msgstr "Унгер хэл" + +#: extra/ocr/OCRSpace.py:7 +msgid "Korean" +msgstr "Солонгос хэл" + +#: extra/ocr/OCRSpace.py:7 +msgid "Italian" +msgstr "итали хэл " + +#: extra/ocr/OCRSpace.py:7 +msgid "Japanese" +msgstr "Япон хэл" + +#: extra/ocr/OCRSpace.py:7 +msgid "Polish" +msgstr "Польш хэл" + +#: extra/ocr/OCRSpace.py:7 +msgid "Portuguese" +msgstr "Португаль хэл" + +#: extra/ocr/OCRSpace.py:7 +msgid "Russian" +msgstr "Орос хэл" + +#: extra/ocr/OCRSpace.py:7 +msgid "Spanish" +msgstr "Спань хэл" + +#: extra/ocr/OCRSpace.py:7 +msgid "Turkish" +msgstr "Турк хэл" + +#: extra/translator/wx_ui.py:25 +msgid "Translate message" +msgstr "Зурвас орчуулах" + +#: extra/translator/wx_ui.py:29 +#, fuzzy +msgid "Translation engine" +msgstr "Орчуулагдлаа" + +#: extra/translator/wx_ui.py:32 +msgid "Target language" +msgstr "Хэл рүү орчуулах" + +#: keystrokeEditor/wx_ui.py:8 +msgid "Keystroke editor" +msgstr "Товчлуурын хослол засварлах" + +#: keystrokeEditor/wx_ui.py:11 +msgid "Select a keystroke to edit" +msgstr "Засварлах товчлуурын хослолыг сонго" + +#: keystrokeEditor/wx_ui.py:12 +#: wxUI/dialogs/mastodon/filters/manage_filters.py:18 +#: wxUI/dialogs/mastodon/userActions.py:9 +#: wxUI/dialogs/mastodon/userActions.py:18 +#: wxUI/dialogs/mastodon/userActions.py:19 +msgid "Action" +msgstr "үйлдэл" + +#: keystrokeEditor/wx_ui.py:12 +msgid "Keystroke" +msgstr "товчлуурын хослол" + +#: keystrokeEditor/wx_ui.py:17 +#: wxUI/dialogs/mastodon/filters/manage_filters.py:23 +#: wxUI/dialogs/userAliasDialogs.py:53 +msgid "Edit" +msgstr "засварлах" + +#: keystrokeEditor/wx_ui.py:19 keystrokeEditor/wx_ui.py:49 +#, fuzzy +msgid "Undefine keystroke" +msgstr "товчлуурын хослолыг засварлаж байна." + +#: keystrokeEditor/wx_ui.py:20 +msgid "Execute action" +msgstr "үйлдлийг гүйцэтгэх" + +#: keystrokeEditor/wx_ui.py:21 wxUI/dialogs/userAliasDialogs.py:25 +msgid "Close" +msgstr "хаах" + +#: keystrokeEditor/wx_ui.py:41 +msgid "Undefined" +msgstr "" + +#: keystrokeEditor/wx_ui.py:49 +#, fuzzy +msgid "Are you sure you want to undefine this keystroke?" +msgstr "Та энэ бүртгэлийг үнэхээр устгах уу?" + +#: keystrokeEditor/wx_ui.py:53 +msgid "Editing keystroke" +msgstr "товчлуурын хослолыг засварлаж байна." + +#: keystrokeEditor/wx_ui.py:56 +msgid "Control" +msgstr "control" + +#: keystrokeEditor/wx_ui.py:57 +msgid "Alt" +msgstr "alt" + +#: keystrokeEditor/wx_ui.py:58 +msgid "Shift" +msgstr "shift" + +#: keystrokeEditor/wx_ui.py:59 +msgid "Windows" +msgstr "windows" + +#: keystrokeEditor/wx_ui.py:65 +msgid "Key" +msgstr "товчлуур" + +#: keystrokeEditor/wx_ui.py:70 wxUI/dialogs/find.py:21 +#: wxUI/dialogs/mastodon/showUserProfile.py:31 +#: wxUI/dialogs/userAliasDialogs.py:23 +msgid "OK" +msgstr "ok" + +#: keystrokeEditor/wx_ui.py:83 +msgid "You need to use the Windows key" +msgstr "windows Товчлуур ашиглах шаардлагатай" + +#: keystrokeEditor/wx_ui.py:83 keystrokeEditor/wx_ui.py:86 +msgid "Invalid keystroke" +msgstr "товчлуурын хослол буруу" + +#: keystrokeEditor/wx_ui.py:86 +msgid "You must provide a character for the keystroke" +msgstr "товчлуурын хослолдоо үсэг тодорхойлох ёстой" + +#: keystrokeEditor/actions/mastodon.py:3 +msgid "Go up in the current buffer" +msgstr "Одоо байгаа буфферт дээш явах" + +#: keystrokeEditor/actions/mastodon.py:4 +msgid "Go down in the current buffer" +msgstr "Одоо байгаа буфферт доош явах" + +#: keystrokeEditor/actions/mastodon.py:5 +msgid "Go to the previous buffer" +msgstr "өмнөх буффер луу очих" + +#: keystrokeEditor/actions/mastodon.py:6 +msgid "Go to the next buffer" +msgstr "дараагийн буффер луу очих" + +#: keystrokeEditor/actions/mastodon.py:7 +msgid "Focus the next session" +msgstr "дараагийн хэсгийг идэвхижүүлэх" + +#: keystrokeEditor/actions/mastodon.py:8 +msgid "Focus the previous session" +msgstr "өмнөх хэсгийг идэвхифүүлэх" + +#: keystrokeEditor/actions/mastodon.py:9 +msgid "Show or hide the GUI" +msgstr "Gue нуух эсвэл харуулах" + +#: keystrokeEditor/actions/mastodon.py:10 +msgid "Make a new post" +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:11 wxUI/buffers/mastodon/base.py:26 +#: wxUI/buffers/mastodon/conversationList.py:25 +msgid "Reply" +msgstr "Хариу бичих" + +#: keystrokeEditor/actions/mastodon.py:12 wxUI/buffers/mastodon/base.py:25 +#: wxUI/dialogs/mastodon/dialogs.py:7 +msgid "Boost" +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:13 +msgid "Send direct message" +msgstr "Шууд мессиж явуулах" + +#: keystrokeEditor/actions/mastodon.py:14 +msgid "Add post to favorites" +msgstr "" + +# | msgid "Remove from list" +#: keystrokeEditor/actions/mastodon.py:15 +#, fuzzy +msgid "Remove post from favorites" +msgstr "жагсаалтаас устгах" + +#: keystrokeEditor/actions/mastodon.py:16 +msgid "Add/remove post from favorites" +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:17 +msgid "Open the user actions dialogue" +msgstr "хэрэглэгчийн харилцах үйлдлийн хайрцгийг нээх" + +#: keystrokeEditor/actions/mastodon.py:18 +#, fuzzy +msgid "See user details" +msgstr "Хэрэглэгч устгах" + +# | msgid "Show tweet" +#: keystrokeEditor/actions/mastodon.py:19 +#, fuzzy +msgid "Show post" +msgstr "жиргээг харах" + +#: keystrokeEditor/actions/mastodon.py:20 +msgid "Quit" +msgstr "гарах" + +#: keystrokeEditor/actions/mastodon.py:21 +msgid "Open user timeline" +msgstr "хэрэглэгчийн цагийн хүрдийг нээх" + +#: keystrokeEditor/actions/mastodon.py:22 +msgid "Destroy buffer" +msgstr "буффер устгах" + +# | msgid "Interact with the currently focused tweet." +#: keystrokeEditor/actions/mastodon.py:23 +#, fuzzy +msgid "Interact with the currently focused post." +msgstr "Одоо очсон байгаа жиргээтэй харьцах." + +#: keystrokeEditor/actions/mastodon.py:24 +msgid "Open URL" +msgstr "холбоосыг нээх" + +#: keystrokeEditor/actions/mastodon.py:25 +#, fuzzy +msgid "View in browser" +msgstr "Твиттерээс хайх" + +#: keystrokeEditor/actions/mastodon.py:26 +msgid "Increase volume by 5%" +msgstr "дууны түвшинг 5% нэмэх" + +#: keystrokeEditor/actions/mastodon.py:27 +msgid "Decrease volume by 5%" +msgstr "дууны түвшинг 5% багасгах" + +#: keystrokeEditor/actions/mastodon.py:28 +msgid "Jump to the first element of a buffer" +msgstr "Буфферийн эхний зүйл дээр очих" + +#: keystrokeEditor/actions/mastodon.py:29 +msgid "Jump to the last element of the current buffer" +msgstr "Буфферийн сүүлийн зүйл рүү очих" + +#: keystrokeEditor/actions/mastodon.py:30 +msgid "Jump 20 elements up in the current buffer" +msgstr "Одоо байгаа буфферт 20 зүйлээр дээш явах" + +#: keystrokeEditor/actions/mastodon.py:31 +msgid "Jump 20 elements down in the current buffer" +msgstr "Одоо байгаа буфферт 20 зүйлээр доош явах" + +#: keystrokeEditor/actions/mastodon.py:33 +#, fuzzy +msgid "Delete post" +msgstr "Жиргэсэн жиргээнүүд" + +#: keystrokeEditor/actions/mastodon.py:34 +msgid "Empty the current buffer" +msgstr "Одоо байгаа буфферийг цэвэрлэх" + +#: keystrokeEditor/actions/mastodon.py:35 +msgid "Repeat last item" +msgstr "сүүлийн зүйлийг давтах" + +#: keystrokeEditor/actions/mastodon.py:36 +msgid "Copy to clipboard" +msgstr "хуулах" + +#: keystrokeEditor/actions/mastodon.py:39 +msgid "Mute/unmute the active buffer" +msgstr "Идэвхитэй буфферийн дууг хаах/нээх" + +#: keystrokeEditor/actions/mastodon.py:40 +msgid "Mute/unmute the current session" +msgstr "одоо байгаа хэсгийн дууг хаах/нээх" + +#: keystrokeEditor/actions/mastodon.py:41 +msgid "toggle the automatic reading of incoming tweets in the active buffer" +msgstr "идэвхитэй байгаа буфферийн ирж буй жиргээг автоматаар унших эсэх" + +# | msgid "Search on twitter" +#: keystrokeEditor/actions/mastodon.py:42 +#, fuzzy +msgid "Search on instance" +msgstr "Твиттерээс хайх" + +#: keystrokeEditor/actions/mastodon.py:43 +msgid "Find a string in the currently focused buffer" +msgstr "Одоо байгаа буфферээс хэсэг хайж олох" + +#: keystrokeEditor/actions/mastodon.py:44 +msgid "Show the keystroke editor" +msgstr "Товчлуур зохицуулагчийг гаргах" + +#: keystrokeEditor/actions/mastodon.py:46 +msgid "load previous items" +msgstr "өмнөх зүйлсийг уншуулах" + +#: keystrokeEditor/actions/mastodon.py:48 +msgid "View conversation" +msgstr "Харилцан яриаг бүтнээр нээх" + +#: keystrokeEditor/actions/mastodon.py:49 +msgid "Check and download updates" +msgstr "шинэ хувилбар байгаа эсэхийг шалгах ба татах" + +#: keystrokeEditor/actions/mastodon.py:50 +msgid "Opens the global settings dialogue" +msgstr "Ерөнхий тохиргооны хайрцгийг нээх" + +#: keystrokeEditor/actions/mastodon.py:52 +msgid "Opens the account settings dialogue" +msgstr "бүртгэлийн тохиргооны хайрцгийг нээх" + +# | msgid "Try to play an audio file" +#: keystrokeEditor/actions/mastodon.py:53 +#, fuzzy +msgid "Try to play a media file" +msgstr "аудио файл тоглуулсан" + +#: keystrokeEditor/actions/mastodon.py:54 +msgid "Updates the buffer and retrieves possible lost items there." +msgstr "Буфферийг шинэчилж алдагдсан зүйлсийг гаргах" + +#: keystrokeEditor/actions/mastodon.py:55 +msgid "Extracts the text from a picture and displays the result in a dialog." +msgstr "Зурагнаас текстийг ялган хуулж хайрцагт харуулах." + +#: keystrokeEditor/actions/mastodon.py:56 +msgid "Adds an alias to an user" +msgstr "" + +#: sessionmanager/sessionManager.py:69 +#, python-brace-format +msgid "{account_name}@{instance} (Mastodon)" +msgstr "" + +#: sessionmanager/wxUI.py:11 +msgid "Session manager" +msgstr "хэсэг засварлах" + +#: sessionmanager/wxUI.py:14 +msgid "Accounts list" +msgstr "бүртгэлийн жагсаалт" + +#: sessionmanager/wxUI.py:16 +msgid "Account" +msgstr "бүртгэл" + +#: sessionmanager/wxUI.py:20 +msgid "New account" +msgstr "шинэ бүртгэл" + +#: sessionmanager/wxUI.py:22 sessionmanager/wxUI.py:79 +msgid "Remove account" +msgstr "бүртгэл устгах" + +#: sessionmanager/wxUI.py:24 +msgid "Global Settings" +msgstr "ерөнхий тохиргоо" + +#: sessionmanager/wxUI.py:48 +msgid "You need to configure an account." +msgstr "бүртгэлээ шалгах шаардлагатай байна." + +#: sessionmanager/wxUI.py:48 +msgid "Account Error" +msgstr "бүртгэлд алдаа гарлаа" + +#: sessionmanager/wxUI.py:54 +msgid "Mastodon" +msgstr "" + +#: sessionmanager/wxUI.py:59 +msgid "" +"You will be prompted for your Mastodon data (instance URL, email address " +"and password) so we can authorise TWBlue in your instance. Would you like" +" to authorise your account now?" +msgstr "" + +#: sessionmanager/wxUI.py:59 +msgid "Authorization" +msgstr "зөвшөөрөлт" + +#: sessionmanager/wxUI.py:67 +#, python-format +msgid "Authorized account %d" +msgstr "%d бүртгэл зөвшөөрлөө." + +#: sessionmanager/wxUI.py:73 +msgid "" +"Your access token is invalid or the authorization has failed. Please try " +"again." +msgstr "таны бүртгэл эсвэл зөрвшөөрөх явцад алдаа гарлаа. Дараа дахин оролдоно уу." + +#: sessionmanager/wxUI.py:73 +msgid "Invalid user token" +msgstr "бүртгэл буруу" + +#: sessionmanager/wxUI.py:79 +msgid "Do you really want to delete this account?" +msgstr "Та энэ бүртгэлийг үнэхээр устгах уу?" + +#: sessions/base.py:125 +#, python-brace-format +msgid "" +"An exception occurred while saving the {app} database. It will be deleted" +" and rebuilt automatically. If this error persists, send the error log to" +" the {app} developers." +msgstr "" + +#: sessions/base.py:165 +#, python-brace-format +msgid "" +"An exception occurred while loading the {app} database. It will be " +"deleted and rebuilt automatically. If this error persists, send the error" +" log to the {app} developers." +msgstr "" + +# | msgid "dddd, MMMM D, YYYY H:m:s" +#: sessions/mastodon/compose.py:15 sessions/mastodon/compose.py:61 +#, fuzzy +msgid "dddd, MMMM D, YYYY H:m" +msgstr "dddd, MMMM D, YYYY H:m:s" + +# | msgid "{0}. Quoted tweet from @{1}: {2}" +#: sessions/mastodon/compose.py:17 sessions/mastodon/templates.py:74 +#: sessions/mastodon/templates.py:75 +#, fuzzy, python-brace-format +msgid "Boosted from @{}: {}" +msgstr "{0}. Quoted tweet from @{1}: {2}" + +#: sessions/mastodon/compose.py:22 sessions/mastodon/compose.py:81 +#: sessions/mastodon/templates.py:81 sessions/mastodon/templates.py:176 +#, python-brace-format +msgid "hidden by filter {}" +msgstr "" + +#: sessions/mastodon/compose.py:36 sessions/mastodon/templates.py:28 +msgid "dddd, MMMM D, YYYY H:m:s" +msgstr "dddd, MMMM D, YYYY H:m:s" + +#: sessions/mastodon/compose.py:38 +#, python-format +msgid "%s (@%s). %s followers, %s following, %s posts. Joined %s" +msgstr "" + +#: sessions/mastodon/compose.py:49 +#, python-brace-format +msgid "Last message from {}: {}" +msgstr "" + +# | msgid "{0} is following you." +#: sessions/mastodon/compose.py:64 +#, fuzzy, python-brace-format +msgid "{username} has posted: {status}" +msgstr "{0} таныг дагаж байна." + +# | msgid "{0} is following you." +#: sessions/mastodon/compose.py:66 +#, fuzzy, python-brace-format +msgid "{username} has mentioned you: {status}" +msgstr "{0} таныг дагаж байна." + +#: sessions/mastodon/compose.py:68 +#, python-brace-format +msgid "{username} has boosted: {status}" +msgstr "" + +#: sessions/mastodon/compose.py:70 +#, python-brace-format +msgid "{username} has added to favorites: {status}" +msgstr "" + +# | msgid "{0} is following you." +#: sessions/mastodon/compose.py:72 +#, fuzzy, python-brace-format +msgid "{username} has followed you." +msgstr "{0} таныг дагаж байна." + +# | msgid "{0} is following you." +#: sessions/mastodon/compose.py:74 +#, fuzzy, python-brace-format +msgid "{username} has joined the instance." +msgstr "{0} таныг дагаж байна." + +#: sessions/mastodon/compose.py:76 sessions/mastodon/templates.py:171 +#, python-brace-format +msgid "A poll in which you have voted has expired: {status}" +msgstr "" + +# | msgid "{0} is following you." +#: sessions/mastodon/compose.py:78 +#, fuzzy, python-brace-format +msgid "{username} wants to follow you." +msgstr "{0} таныг дагаж байна." + +#: sessions/mastodon/session.py:69 +msgid "Please enter your instance URL." +msgstr "" + +#: sessions/mastodon/session.py:69 +msgid "Mastodon instance" +msgstr "" + +#: sessions/mastodon/session.py:80 +msgid "" +"We could not connect to your mastodon instance. Please verify that the " +"domain exists and the instance is accessible via a web browser." +msgstr "" + +#: sessions/mastodon/session.py:80 +msgid "Instance error" +msgstr "" + +#: sessions/mastodon/session.py:85 +msgid "Enter the verification code" +msgstr "" + +# | msgid "Authorization" +#: sessions/mastodon/session.py:85 +#, fuzzy +msgid "PIN code authorization" +msgstr "зөвшөөрөлт" + +#: sessions/mastodon/session.py:94 +msgid "" +"We could not authorice your mastodon account to be used in TWBlue. This " +"might be caused due to an incorrect verification code. Please try to add " +"the session again." +msgstr "" + +# | msgid "Authorization" +#: sessions/mastodon/session.py:94 +#, fuzzy +msgid "Authorization error" +msgstr "зөвшөөрөлт" + +#: sessions/mastodon/session.py:215 +#, python-format +msgid "%s succeeded." +msgstr "%s амжилттай." + +#: sessions/mastodon/templates.py:18 +msgid "$display_name, $text $image_descriptions $date. $source" +msgstr "" + +#: sessions/mastodon/templates.py:19 +msgid "Dm to $recipient_display_name, $text $date" +msgstr "" + +#: sessions/mastodon/templates.py:20 +msgid "" +"$display_name (@$screen_name). $followers followers, $following " +"following, $posts posts. Joined $created_at." +msgstr "" + +#: sessions/mastodon/templates.py:21 +msgid "$display_name $text, $date" +msgstr "" + +#: sessions/mastodon/templates.py:34 +#, python-brace-format +msgid "Content warning: {}" +msgstr "" + +#: sessions/mastodon/templates.py:45 +#, python-brace-format +msgid "Media description: {}" +msgstr "" + +# | msgid "Followers" +#: sessions/mastodon/templates.py:82 wxUI/dialogs/mastodon/postDialogs.py:49 +#, fuzzy +msgid "Followers only" +msgstr "Дагагчид" + +#: sessions/mastodon/templates.py:94 +#, fuzzy +msgid "Pinned." +msgstr "Хуулагдсан" + +#: sessions/mastodon/templates.py:157 +#, python-brace-format +msgid "has posted: {status}" +msgstr "" + +#: sessions/mastodon/templates.py:159 +#, python-brace-format +msgid "has mentioned you: {status}" +msgstr "" + +#: sessions/mastodon/templates.py:161 +#, python-brace-format +msgid "has boosted: {status}" +msgstr "" + +#: sessions/mastodon/templates.py:163 +#, python-brace-format +msgid "has added to favorites: {status}" +msgstr "" + +#: sessions/mastodon/templates.py:165 +#, python-brace-format +msgid "has updated a status: {status}" +msgstr "" + +# | msgid "{0} is following you." +#: sessions/mastodon/templates.py:167 +#, fuzzy +msgid "has followed you." +msgstr "{0} таныг дагаж байна." + +# | msgid "Remove user" +#: sessions/mastodon/templates.py:169 +#, fuzzy +msgid "has joined the instance." +msgstr "Хэрэглэгч устгах" + +# | msgid "{0} is following you." +#: sessions/mastodon/templates.py:173 +#, fuzzy +msgid "wants to follow you." +msgstr "{0} таныг дагаж байна." + +#: update/utils.py:29 +#, python-format +msgid "%d day, " +msgstr "%d өдөр, " + +#: update/utils.py:31 +#, python-format +msgid "%d days, " +msgstr "%d өдрийн, " + +#: update/utils.py:33 +#, python-format +msgid "%d hour, " +msgstr "%d цаг, " + +#: update/utils.py:35 +#, python-format +msgid "%d hours, " +msgstr "%d цагийн, " + +#: update/utils.py:37 +#, python-format +msgid "%d minute, " +msgstr "%d минут, " + +#: update/utils.py:39 +#, python-format +msgid "%d minutes, " +msgstr "%d минутын, " + +#: update/utils.py:41 +#, python-format +msgid "%s second" +msgstr "%s секунд" + +#: update/utils.py:43 +#, python-format +msgid "%s seconds" +msgstr "%s секундын" + +#: update/wxUpdater.py:11 +#, python-format +msgid "" +"There's a new %s version available, released on %s. Would you like to " +"download it now?\n" +"\n" +" %s version: %s\n" +"\n" +"Changes:\n" +"%s" +msgstr "" + +#: update/wxUpdater.py:14 +#, python-format +msgid "" +"There's a new %s version available, released on %s. Updates are not " +"automatic in Windows 7, so you would need to visit TWBlue's download " +"website to get the latest version.\n" +"\n" +" %s version: %s\n" +"\n" +"Changes:\n" +"%s" +msgstr "" + +#: update/wxUpdater.py:16 +#, python-format +msgid "New version for %s" +msgstr "" + +#: update/wxUpdater.py:23 +msgid "Download in Progress" +msgstr "" + +#: update/wxUpdater.py:23 +msgid "Downloading the new version..." +msgstr "" + +#: update/wxUpdater.py:33 +#, python-format +msgid "Updating... %s of %s" +msgstr "" + +#: update/wxUpdater.py:36 +msgid "" +"The update has been downloaded and installed successfully. Press OK to " +"continue." +msgstr "" + +#: update/wxUpdater.py:36 +msgid "Done!" +msgstr "" + +#: wxUI/commonMessageDialogs.py:6 +#, python-brace-format +msgid "Do you really want to close {0}?" +msgstr "" + +#: wxUI/commonMessageDialogs.py:6 +msgid "Exit" +msgstr "" + +#: wxUI/commonMessageDialogs.py:10 +#, python-brace-format +msgid " {0} must be restarted for these changes to take effect." +msgstr "" + +#: wxUI/commonMessageDialogs.py:10 +#, python-brace-format +msgid "Restart {0} " +msgstr "" + +#: wxUI/commonMessageDialogs.py:13 +msgid "" +"Are you sure you want to delete this user from the database? This user " +"will not appear in autocomplete results anymore." +msgstr "" + +#: wxUI/commonMessageDialogs.py:13 +msgid "Confirm" +msgstr "" + +#: wxUI/commonMessageDialogs.py:16 +msgid "" +"Do you really want to empty this buffer? It's items will be removed from" +" the list but not from Twitter" +msgstr "" + +#: wxUI/commonMessageDialogs.py:16 wxUI/dialogs/mastodon/dialogs.py:31 +msgid "Empty buffer" +msgstr "" + +#: wxUI/commonMessageDialogs.py:20 +msgid "Do you really want to destroy this buffer?" +msgstr "" + +#: wxUI/commonMessageDialogs.py:23 +msgid "That user does not exist" +msgstr "энэ хэрэглэгч байхгүй байна" + +#: wxUI/commonMessageDialogs.py:26 +msgid "A timeline for this user already exists. You can't open another" +msgstr "" + +#: wxUI/commonMessageDialogs.py:26 +msgid "Existing timeline" +msgstr "" + +#: wxUI/commonMessageDialogs.py:29 +#, python-brace-format +msgid "" +"If you like {0} we need your help to keep it going. Help us by donating " +"to the project. This will help us pay for the server, the domain and some" +" other things to ensure that {0} will be actively maintained. Your " +"donation will give us the means to continue the development of {0}, and " +"to keep {0} free. Would you like to donate now?" +msgstr "" + +#: wxUI/commonMessageDialogs.py:29 +msgid "We need your help" +msgstr "" + +#: wxUI/commonMessageDialogs.py:33 wxUI/dialogs/mastodon/postDialogs.py:207 +msgid "Information" +msgstr "" + +#: wxUI/commonMessageDialogs.py:36 +msgid "The configuration file is invalid." +msgstr "" + +#: wxUI/commonMessageDialogs.py:39 +#, python-brace-format +msgid "" +"{0} quit unexpectedly the last time it was run. If the problem persists, " +"please report it to the {0} developers." +msgstr "" + +#: wxUI/commonMessageDialogs.py:39 +msgid "Warning" +msgstr "" + +#: wxUI/commonMessageDialogs.py:45 +#, python-brace-format +msgid "Sorry, you can't update while running {} from source." +msgstr "" + +#: wxUI/commonMessageDialogs.py:49 +msgid "the provided instance is invalid. Please try again." +msgstr "" + +#: wxUI/commonMessageDialogs.py:49 +#, fuzzy +msgid "Invalid instance" +msgstr "товчлуурын хослол буруу" + +#: wxUI/commonMessageDialogs.py:52 +msgid "" +"TWBlue was unable to add or update the filter with the specified " +"settings. Please try again." +msgstr "" + +#: wxUI/commonMessageDialogs.py:55 +msgid "" +"TWBlue was unable to load your filters from the instance. Please try " +"again." +msgstr "" + +#: wxUI/commonMessageDialogs.py:58 +#, fuzzy +msgid "Do you really want to delete this filter ?" +msgstr "Та энэ бүртгэлийг үнэхээр устгах уу?" + +#: wxUI/commonMessageDialogs.py:58 +#, fuzzy +msgid "Delete filter" +msgstr "Жиргэсэн жиргээнүүд" + +#: wxUI/commonMessageDialogs.py:61 +msgid "TWBlue was unable to remove the filter you specified. Please try again." +msgstr "" + +#: wxUI/sysTrayIcon.py:36 wxUI/view.py:25 +msgid "&Global settings" +msgstr "" + +#: wxUI/sysTrayIcon.py:37 wxUI/view.py:24 +msgid "Account se&ttings" +msgstr "" + +#: wxUI/sysTrayIcon.py:39 +msgid "&Show / hide" +msgstr "" + +#: wxUI/sysTrayIcon.py:40 wxUI/view.py:74 +msgid "&Documentation" +msgstr "" + +#: wxUI/sysTrayIcon.py:41 +msgid "Check for &updates" +msgstr "" + +#: wxUI/sysTrayIcon.py:42 +msgid "&Exit" +msgstr "" + +#: wxUI/view.py:16 +msgid "&Manage accounts" +msgstr "" + +#: wxUI/view.py:17 +msgid "&Update profile" +msgstr "" + +#: wxUI/view.py:18 +msgid "&Hide window" +msgstr "" + +#: wxUI/view.py:20 +msgid "&Lists manager" +msgstr "" + +#: wxUI/view.py:23 +msgid "&Edit keystrokes" +msgstr "" + +#: wxUI/view.py:26 +msgid "E&xit" +msgstr "" + +# | msgid "Remove from list" +#: wxUI/view.py:34 +#, fuzzy +msgid "&Remove from favorites" +msgstr "жагсаалтаас устгах" + +#: wxUI/view.py:47 +msgid "&Add to list" +msgstr "" + +#: wxUI/view.py:48 +msgid "R&emove from list" +msgstr "" + +#: wxUI/view.py:49 +msgid "Show user &profile" +msgstr "" + +#: wxUI/view.py:50 +msgid "V&iew likes" +msgstr "" + +#: wxUI/view.py:54 +msgid "&Update buffer" +msgstr "" + +#: wxUI/dialogs/mastodon/communityTimeline.py:9 wxUI/view.py:55 +msgid "Create community timeline" +msgstr "" + +#: wxUI/view.py:56 +msgid "New &trending topics buffer..." +msgstr "" + +#: wxUI/view.py:59 +msgid "Find a string in the currently focused buffer..." +msgstr "" + +#: wxUI/view.py:60 +msgid "&Load previous items" +msgstr "" + +#: wxUI/dialogs/mastodon/userActions.py:21 wxUI/view.py:62 +msgid "&Mute" +msgstr "" + +#: wxUI/view.py:63 +msgid "&Autoread" +msgstr "" + +#: wxUI/view.py:64 +msgid "&Clear buffer" +msgstr "" + +#: wxUI/view.py:65 +msgid "&Destroy" +msgstr "" + +#: wxUI/view.py:69 +msgid "&Seek back 5 seconds" +msgstr "" + +#: wxUI/view.py:70 +msgid "&Seek forward 5 seconds" +msgstr "" + +#: wxUI/view.py:75 +msgid "Sounds &tutorial" +msgstr "" + +#: wxUI/view.py:76 +msgid "&What's new in this version?" +msgstr "" + +#: wxUI/view.py:77 +msgid "&Check for updates" +msgstr "" + +#: wxUI/view.py:78 +msgid "&Report an error" +msgstr "" + +#: wxUI/view.py:79 +#, python-brace-format +msgid "{0}'s &website" +msgstr "" + +#: wxUI/view.py:80 +msgid "Get soundpacks for TWBlue" +msgstr "" + +#: wxUI/view.py:81 +#, python-brace-format +msgid "About &{0}" +msgstr "" + +#: wxUI/view.py:84 +msgid "&Application" +msgstr "" + +#: wxUI/view.py:85 +msgid "&Tweet" +msgstr "" + +#: wxUI/dialogs/mastodon/userActions.py:10 wxUI/view.py:86 +msgid "&User" +msgstr "" + +#: wxUI/view.py:87 +msgid "&Buffer" +msgstr "" + +#: wxUI/view.py:88 +msgid "&Audio" +msgstr "" + +#: wxUI/view.py:89 +msgid "&Help" +msgstr "" + +#: wxUI/view.py:175 +msgid "Address" +msgstr "" + +#: wxUI/view.py:206 +#, python-brace-format +msgid "Your {0} version is up to date" +msgstr "" + +#: wxUI/view.py:206 +msgid "Update" +msgstr "" + +#: wxUI/buffers/panels.py:12 wxUI/buffers/panels.py:20 +msgid "Login" +msgstr "" + +#: wxUI/buffers/panels.py:14 +msgid "Log in automatically" +msgstr "" + +#: wxUI/buffers/panels.py:22 +msgid "Logout" +msgstr "" + +#: wxUI/buffers/mastodon/base.py:11 +#: wxUI/buffers/mastodon/conversationList.py:11 wxUI/buffers/mastodon/user.py:8 +#: wxUI/dialogs/mastodon/userTimeline.py:10 wxUI/dialogs/userAliasDialogs.py:14 +msgid "User" +msgstr "" + +#: wxUI/buffers/mastodon/base.py:11 +#: wxUI/buffers/mastodon/conversationList.py:11 +#: wxUI/buffers/mastodon/notifications.py:11 +#: wxUI/dialogs/mastodon/postDialogs.py:37 +#: wxUI/dialogs/mastodon/postDialogs.py:272 +msgid "Text" +msgstr "" + +#: wxUI/buffers/mastodon/base.py:11 +#: wxUI/buffers/mastodon/conversationList.py:11 +#: wxUI/buffers/mastodon/notifications.py:11 +#: wxUI/dialogs/mastodon/postDialogs.py:216 +msgid "Date" +msgstr "" + +#: wxUI/buffers/mastodon/base.py:11 +#: wxUI/buffers/mastodon/conversationList.py:11 +msgid "Client" +msgstr "" + +#: wxUI/buffers/mastodon/base.py:27 +msgid "Favorite" +msgstr "" + +#: wxUI/buffers/mastodon/base.py:28 +msgid "Bookmark" +msgstr "" + +#: wxUI/buffers/mastodon/base.py:29 +msgid "Direct message" +msgstr "" + +#: wxUI/buffers/mastodon/notifications.py:23 +#: wxUI/dialogs/mastodon/dialogs.py:23 +msgid "Dismiss" +msgstr "" + +#: wxUI/buffers/mastodon/user.py:19 wxUI/dialogs/userAliasDialogs.py:48 +#, fuzzy +msgid "Actions" +msgstr "үйлдэл" + +# | msgid "Direct Messages" +#: wxUI/buffers/mastodon/user.py:20 +#, fuzzy +msgid "Message" +msgstr "Зурвасууд" + +#: wxUI/dialogs/configuration.py:15 +#, fuzzy +msgid "&Language" +msgstr "Хэл рүү орчуулах" + +#: wxUI/dialogs/configuration.py:22 +#, python-brace-format +msgid "&Ask before exiting {0}" +msgstr "" + +#: wxUI/dialogs/configuration.py:24 +msgid "&Disable Streaming functions" +msgstr "" + +#: wxUI/dialogs/configuration.py:27 +msgid "&Buffer update interval, in minutes" +msgstr "" + +#: wxUI/dialogs/configuration.py:33 +#, python-brace-format +msgid "Pla&y a sound when {0} launches" +msgstr "" + +#: wxUI/dialogs/configuration.py:35 +#, python-brace-format +msgid "Sp&eak a message when {0} launches" +msgstr "" + +#: wxUI/dialogs/configuration.py:37 +msgid "&Use invisible interface's keyboard shortcuts while GUI is visible" +msgstr "" + +#: wxUI/dialogs/configuration.py:39 +msgid "A&ctivate Sapi5 when any other screen reader is not being run" +msgstr "" + +#: wxUI/dialogs/configuration.py:41 +msgid "&Hide GUI on launch" +msgstr "" + +#: wxUI/dialogs/configuration.py:43 +msgid "&Read long posts in GUI" +msgstr "" + +#: wxUI/dialogs/configuration.py:46 +#, fuzzy +msgid "&Keymap" +msgstr "товчлуур" + +#: wxUI/dialogs/configuration.py:51 +#, python-brace-format +msgid "Check for u&pdates when {0} launches" +msgstr "" + +#: wxUI/dialogs/configuration.py:61 +msgid "Proxy &type: " +msgstr "" + +#: wxUI/dialogs/configuration.py:68 +msgid "Proxy s&erver: " +msgstr "" + +#: wxUI/dialogs/configuration.py:74 +msgid "&Port: " +msgstr "" + +#: wxUI/dialogs/configuration.py:80 +msgid "&User: " +msgstr "" + +#: wxUI/dialogs/configuration.py:86 +msgid "P&assword: " +msgstr "" + +#: wxUI/dialogs/configuration.py:98 +msgid "Enable automatic s&peech feedback" +msgstr "" + +#: wxUI/dialogs/configuration.py:100 +msgid "Enable automatic &Braille feedback" +msgstr "" + +#: wxUI/dialogs/configuration.py:108 +msgid "Buffer" +msgstr "" + +#: wxUI/dialogs/configuration.py:108 +msgid "Status" +msgstr "" + +#: wxUI/dialogs/configuration.py:111 +msgid "S&how/hide" +msgstr "" + +#: wxUI/dialogs/configuration.py:112 +#, fuzzy +msgid "Move &up" +msgstr "Хэрэглэгч устгах" + +#: wxUI/dialogs/configuration.py:113 +msgid "Move &down" +msgstr "" + +#: wxUI/dialogs/configuration.py:123 wxUI/dialogs/configuration.py:188 +#: wxUI/dialogs/configuration.py:191 wxUI/dialogs/configuration.py:196 +msgid "Show" +msgstr "" + +#: wxUI/dialogs/configuration.py:125 wxUI/dialogs/configuration.py:135 +#: wxUI/dialogs/configuration.py:159 wxUI/dialogs/configuration.py:189 +msgid "Hide" +msgstr "" + +#: wxUI/dialogs/configuration.py:133 wxUI/dialogs/configuration.py:157 +msgid "Select a buffer first." +msgstr "" + +#: wxUI/dialogs/configuration.py:136 wxUI/dialogs/configuration.py:160 +msgid "The buffer is hidden, show it first." +msgstr "" + +#: wxUI/dialogs/configuration.py:139 +msgid "The buffer is already at the top of the list." +msgstr "" + +#: wxUI/dialogs/configuration.py:163 +msgid "The buffer is already at the bottom of the list." +msgstr "" + +#: wxUI/dialogs/configuration.py:205 +msgid "&LibreTranslate API URL: " +msgstr "" + +#: wxUI/dialogs/configuration.py:211 +msgid "LibreTranslate API &Key (optional): " +msgstr "" + +#: wxUI/dialogs/configuration.py:217 +msgid "&DeepL API Key: " +msgstr "" + +#: wxUI/dialogs/configuration.py:231 +#, python-brace-format +msgid "{0} preferences" +msgstr "" + +#: wxUI/dialogs/configuration.py:237 wxUI/dialogs/mastodon/configuration.py:144 +msgid "General" +msgstr "Ерөнхий" + +#: wxUI/dialogs/configuration.py:242 +msgid "Proxy" +msgstr "" + +#: wxUI/dialogs/configuration.py:246 +#, fuzzy +msgid "Translation services" +msgstr "Орчуулагдлаа" + +#: wxUI/dialogs/configuration.py:251 wxUI/dialogs/mastodon/configuration.py:170 +msgid "&Save" +msgstr "" + +#: wxUI/dialogs/configuration.py:253 +#: wxUI/dialogs/mastodon/communityTimeline.py:27 +#: wxUI/dialogs/mastodon/configuration.py:172 +#: wxUI/dialogs/mastodon/search.py:26 +#: wxUI/dialogs/mastodon/showUserProfile.py:170 +#: wxUI/dialogs/mastodon/updateProfile.py:132 +#: wxUI/dialogs/mastodon/userActions.py:38 +#: wxUI/dialogs/mastodon/userTimeline.py:32 +msgid "&Close" +msgstr "" + +#: wxUI/dialogs/find.py:13 +msgid "Find in current buffer" +msgstr "" + +#: wxUI/dialogs/find.py:14 +msgid "String" +msgstr "" + +#: wxUI/dialogs/find.py:23 wxUI/dialogs/mastodon/showUserProfile.py:33 +msgid "Cancel" +msgstr "цуцлах" + +#: wxUI/dialogs/templateDialogs.py:8 +msgid "Edit Template" +msgstr "" + +#: wxUI/dialogs/templateDialogs.py:13 +msgid "Edit template" +msgstr "" + +#: wxUI/dialogs/templateDialogs.py:17 +#, fuzzy +msgid "Available variables" +msgstr "боломжгүй" + +#: wxUI/dialogs/templateDialogs.py:29 +msgid "Restore template" +msgstr "" + +#: wxUI/dialogs/templateDialogs.py:48 +#, python-brace-format +msgid "Restored template to {}." +msgstr "" + +#: wxUI/dialogs/templateDialogs.py:52 +msgid "" +"the template you have specified include variables that do not exists for " +"the object. Please fix the template and try again. For your reference, " +"you can see a list of all available variables in the variables list while" +" editing your template." +msgstr "" + +#: wxUI/dialogs/templateDialogs.py:52 +#, fuzzy +msgid "Invalid template" +msgstr "товчлуурын хослол буруу" + +#: wxUI/dialogs/urlList.py:6 +msgid "Select URL" +msgstr "" + +#: wxUI/dialogs/mastodon/userActions.py:13 +#: wxUI/dialogs/mastodon/userTimeline.py:13 wxUI/dialogs/userAliasDialogs.py:13 +msgid "&Autocomplete users" +msgstr "" + +#: wxUI/dialogs/userAliasDialogs.py:18 +#, fuzzy +msgid "Alias" +msgstr "Үргэлж" + +#: wxUI/dialogs/userAliasDialogs.py:41 +#, fuzzy +msgid "Edit user aliases" +msgstr "{0} хэрэглэгчдийн дата багцыг өөрчилж байна" + +#: wxUI/dialogs/mastodon/search.py:19 wxUI/dialogs/userAliasDialogs.py:43 +msgid "Users" +msgstr "" + +#: wxUI/dialogs/userAliasDialogs.py:50 +#, fuzzy +msgid "Add alias" +msgstr "жагсаалтанд нэмэх" + +#: wxUI/dialogs/userAliasDialogs.py:51 +msgid "Adds a new user alias" +msgstr "" + +#: wxUI/dialogs/userAliasDialogs.py:54 +#, fuzzy +msgid "Edit the currently focused user Alias." +msgstr "Одоо очсон байгаа жиргээтэй харьцах." + +#: wxUI/dialogs/mastodon/filters/create_filter.py:26 +#: wxUI/dialogs/mastodon/filters/manage_filters.py:24 +#: wxUI/dialogs/userAliasDialogs.py:57 +msgid "Remove" +msgstr "" + +#: wxUI/dialogs/userAliasDialogs.py:58 +#, fuzzy +msgid "Remove the currently focused user alias." +msgstr "Одоо байгаа буфферээс хэсэг хайж олох" + +#: wxUI/dialogs/userAliasDialogs.py:82 +#, fuzzy +msgid "Are you sure you want to delete this user alias?" +msgstr "Та энэ бүртгэлийг үнэхээр устгах уу?" + +#: wxUI/dialogs/userAliasDialogs.py:82 +#, fuzzy +msgid "Remove user alias" +msgstr "Хэрэглэгч устгах" + +#: wxUI/dialogs/userAliasDialogs.py:93 +#, fuzzy +msgid "User alias" +msgstr "Хэрэглэгчийн мэдээлэл" + +#: wxUI/dialogs/userList.py:27 +msgid "View profile" +msgstr "" + +#: wxUI/dialogs/mastodon/communityTimeline.py:10 +#, fuzzy +msgid "Community URL" +msgstr "control" + +#: wxUI/dialogs/mastodon/communityTimeline.py:16 +#: wxUI/dialogs/mastodon/userTimeline.py:18 +msgid "Buffer type" +msgstr "" + +#: wxUI/dialogs/mastodon/communityTimeline.py:17 +#, fuzzy +msgid "&Local timeline" +msgstr "Цагийн хүрднүүд" + +#: wxUI/dialogs/mastodon/communityTimeline.py:18 +#, fuzzy +msgid "&Federated Timeline" +msgstr "хэрэглэгчийн цагийн хүрдийг нээх" + +#: wxUI/dialogs/mastodon/communityTimeline.py:25 +#: wxUI/dialogs/mastodon/search.py:24 +#: wxUI/dialogs/mastodon/updateProfile.py:130 +#: wxUI/dialogs/mastodon/userActions.py:36 +#: wxUI/dialogs/mastodon/userTimeline.py:30 +msgid "&OK" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:14 +#, fuzzy +msgid "User autocompletion settings" +msgstr "Автоматаар хэрэглэгчийн тохргоог гүйцээх" + +#: wxUI/dialogs/mastodon/configuration.py:15 +msgid "" +"Scan acc&ount and add followers and following users to the user " +"autocompletion database" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:16 +#, fuzzy +msgid "&Manage autocompletion database" +msgstr "Автоматаар гүйцээх дата багцыг өөрчлөх" + +#: wxUI/dialogs/mastodon/configuration.py:21 +msgid "&Disable Streaming API endpoints" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:23 +msgid "&Relative timestamps" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:25 +msgid "" +"R&ead preferences from instance (default visibility when publishing and " +"displaying sensitive content)" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:28 +msgid "&Items on each API call" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:34 +msgid "" +"I&nverted buffers: The newest items will be shown at the beginning while " +"the oldest at the end" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:36 +msgid "&Ask confirmation before boosting a post" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:38 +msgid "S&how screen names instead of full names" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:40 +msgid "Hide e&mojis in usernames" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:42 +msgid "" +"&Number of items per buffer to cache in database (0 to disable caching, " +"blank for unlimited)" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:46 +msgid "" +"&Load cache for items in memory (much faster in big datasets but requires" +" more RAM)" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:53 +#, python-brace-format +msgid "Edit template for &posts. Current template: {}" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:55 +#, python-brace-format +msgid "Edit template for c&onversations. Current template: {}" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:57 +#, python-brace-format +msgid "Edit template for p&ersons. Current template: {}" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:65 +msgid "&Volume" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:76 +#, fuzzy +msgid "S&ession mute" +msgstr "Чимээгүй хэсэг нээх" + +#: wxUI/dialogs/mastodon/configuration.py:78 +msgid "&Output device" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:85 +msgid "&Input device" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:93 +msgid "Sound &pack" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:99 +msgid "Indicate &audio or video in posts with sound" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:101 +msgid "Indicate posts containing i&mages with sound" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:124 +msgid "&Language for OCR" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:149 +msgid "Feedback" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:153 +msgid "Buffers" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:157 +msgid "Templates" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:161 +msgid "Sound" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:165 +msgid "Extras" +msgstr "" + +#: wxUI/dialogs/mastodon/dialogs.py:7 +msgid "Would you like to share this post?" +msgstr "" + +#: wxUI/dialogs/mastodon/dialogs.py:15 +msgid "" +"Do you really want to delete this post? It will be deleted from the " +"instance as well." +msgstr "" + +#: wxUI/dialogs/mastodon/dialogs.py:15 +msgid "Delete" +msgstr "" + +#: wxUI/dialogs/mastodon/dialogs.py:23 +msgid "" +"Are you sure you want to dismiss this notification? If you dismiss a " +"mention notification, it also disappears from your mentions buffer. The " +"post is not going to be deleted from the instance, though." +msgstr "" + +#: wxUI/dialogs/mastodon/dialogs.py:31 +msgid "" +"Do you really want to empty this buffer? It's items will be removed from" +" the list but not from the instance" +msgstr "" + +#: wxUI/dialogs/mastodon/dialogs.py:38 +#, python-brace-format +msgid "This user has no posts. {0} can't create a timeline." +msgstr "" + +#: wxUI/dialogs/mastodon/dialogs.py:43 +#, python-brace-format +msgid "This user has no favorited posts. {0} can't create a timeline." +msgstr "" + +#: wxUI/dialogs/mastodon/dialogs.py:48 +#, python-brace-format +msgid "This user has no followers yet. {0} can't create a timeline." +msgstr "" + +#: wxUI/dialogs/mastodon/dialogs.py:53 +#, python-brace-format +msgid "This user is not following anyone. {0} can't create a timeline." +msgstr "" + +#: wxUI/dialogs/mastodon/dialogs.py:60 +#, python-brace-format +msgid "The focused item has no user in it. {} ca't open a user profile" +msgstr "" + +# | msgid "Remove from list" +#: wxUI/dialogs/mastodon/menus.py:13 wxUI/dialogs/mastodon/menus.py:41 +#, fuzzy +msgid "R&emove from favorites" +msgstr "жагсаалтаас устгах" + +#: wxUI/dialogs/mastodon/menus.py:15 wxUI/dialogs/mastodon/menus.py:43 +msgid "&Open URL" +msgstr "" + +# | msgid "Search on twitter" +#: wxUI/dialogs/mastodon/menus.py:17 wxUI/dialogs/mastodon/menus.py:47 +#, fuzzy +msgid "&Open in instance" +msgstr "Твиттерээс хайх" + +#: wxUI/dialogs/mastodon/menus.py:19 wxUI/dialogs/mastodon/menus.py:45 +msgid "&Play audio" +msgstr "" + +#: wxUI/dialogs/mastodon/menus.py:23 wxUI/dialogs/mastodon/menus.py:51 +msgid "&Copy to clipboard" +msgstr "" + +#: wxUI/dialogs/mastodon/menus.py:27 wxUI/dialogs/mastodon/menus.py:55 +msgid "&User actions..." +msgstr "" + +#: wxUI/dialogs/mastodon/menus.py:53 +msgid "&Dismiss" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:20 +#: wxUI/dialogs/mastodon/postDialogs.py:38 +msgid "Attachments" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:24 +msgid "File" +msgstr "Файл" + +#: wxUI/dialogs/mastodon/postDialogs.py:25 +msgid "Type" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:26 +#: wxUI/dialogs/mastodon/postDialogs.py:141 +msgid "Description" +msgstr "" + +# | msgid "Remove account" +#: wxUI/dialogs/mastodon/postDialogs.py:28 +#, fuzzy +msgid "Remove Attachment" +msgstr "бүртгэл устгах" + +#: wxUI/dialogs/mastodon/postDialogs.py:33 +msgid "Post in the thread" +msgstr "" + +# | msgid "Remove from list" +#: wxUI/dialogs/mastodon/postDialogs.py:40 +#, fuzzy +msgid "Remove post" +msgstr "жагсаалтаас устгах" + +#: wxUI/dialogs/mastodon/postDialogs.py:47 +msgid "&Visibility" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:54 +#, fuzzy +msgid "Language" +msgstr "Хэл рүү орчуулах" + +#: wxUI/dialogs/mastodon/postDialogs.py:58 +msgid "A&dd" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:59 +msgid "S&ensitive content" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:64 +msgid "Content warning" +msgstr "" + +# | msgid "Add to list" +#: wxUI/dialogs/mastodon/postDialogs.py:71 +#, fuzzy +msgid "Add p&ost" +msgstr "жагсаалтанд нэмэх" + +#: wxUI/dialogs/mastodon/postDialogs.py:75 +msgid "Auto&complete users" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:77 +msgid "Check &spelling" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:79 +#, fuzzy +msgid "&Translate" +msgstr "Орчуулагдлаа" + +# | msgid "%s - %s of %d characters" +#: wxUI/dialogs/mastodon/postDialogs.py:106 +#, fuzzy, python-brace-format +msgid "Post - {} characters" +msgstr "%s - %s -ны %d үсэгнүүд" + +#: wxUI/dialogs/mastodon/postDialogs.py:130 +msgid "Image" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:132 +msgid "Video" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:134 +msgid "Audio" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:136 +msgid "Poll" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:141 +msgid "please provide a description" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:148 +msgid "Select the picture to be uploaded" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:148 +msgid "Image files (*.png, *.jpg, *.gif)|*.png; *.jpg; *.gif" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:155 +#, fuzzy +msgid "Select the video to be uploaded" +msgstr "Суурьлуулах аудио файлаа сонгоно уу" + +# | msgid "Audio Files (*.mp3, *.ogg, *.wav)|*.mp3; *.ogg; *.wav" +#: wxUI/dialogs/mastodon/postDialogs.py:155 +#, fuzzy +msgid "Video files (*.mp4, *.mov, *.m4v, *.webm)| *.mp4; *.m4v; *.mov; *.webm" +msgstr "Аудио файлууд (*.mp3, *.ogg, *.wav)|*.mp3; *.ogg; *.wav" + +#: wxUI/dialogs/mastodon/postDialogs.py:162 +msgid "Select the audio file to be uploaded" +msgstr "Суурьлуулах аудио файлаа сонгоно уу" + +#: wxUI/dialogs/mastodon/postDialogs.py:162 +msgid "" +"Audio files (*.mp3, *.ogg, *.wav, *.flac, *.opus, *.aac, *.m4a, " +"*.3gp)|*.mp3; *.ogg; *.wav; *.flac; *.opus; *.aac; *.m4a; *.3gp" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:169 +msgid "" +"It is not possible to add more attachments. Please take into account that" +" You can add only a maximum of 4 images, or one audio, video or poll per" +" post. Please remove other attachments before continuing." +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:169 +msgid "Error adding attachment" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:172 +msgid "" +"You can add a poll or media files. In order to add your poll, please " +"remove other attachments first." +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:172 +msgid "Error adding poll" +msgstr "" + +# | msgid "%s - %s of %d characters" +#: wxUI/dialogs/mastodon/postDialogs.py:177 +#, fuzzy, python-format +msgid "Post - %i characters " +msgstr "%s - %s -ны %d үсэгнүүд" + +#: wxUI/dialogs/mastodon/postDialogs.py:200 +msgid "Image description" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:210 +msgid "Privacy" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:214 +msgid "Source" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:222 +msgid "Boosts" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:224 +msgid "View users who boosted this post" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:231 +msgid "View users who favorited this post" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:239 +#, fuzzy +msgid "Copy link to clipboard" +msgstr "хуулах" + +#: wxUI/dialogs/mastodon/postDialogs.py:241 +#: wxUI/dialogs/mastodon/postDialogs.py:280 +msgid "Check &spelling..." +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:242 +#: wxUI/dialogs/mastodon/postDialogs.py:281 +msgid "&Translate..." +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:243 +#: wxUI/dialogs/mastodon/postDialogs.py:282 +msgid "C&lose" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:294 +msgid "Add a poll" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:298 +msgid "Participation time" +msgstr "" + +# | msgid "%d minutes, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "5 minutes" +msgstr "%d минутын, " + +# | msgid "%d minutes, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "30 minutes" +msgstr "%d минутын, " + +# | msgid "%d hour, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "1 hour" +msgstr "%d цаг, " + +# | msgid "%d hours, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "6 hours" +msgstr "%d цагийн, " + +# | msgid "%d day, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "1 day" +msgstr "%d өдөр, " + +# | msgid "%d days, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "2 days" +msgstr "%d өдрийн, " + +# | msgid "%d days, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "3 days" +msgstr "%d өдрийн, " + +# | msgid "%d days, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "4 days" +msgstr "%d өдрийн, " + +# | msgid "%d days, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "5 days" +msgstr "%d өдрийн, " + +# | msgid "%d days, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "6 days" +msgstr "%d өдрийн, " + +# | msgid "%d days, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "7 days" +msgstr "%d өдрийн, " + +#: wxUI/dialogs/mastodon/postDialogs.py:304 +msgid "Choices" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:308 +msgid "Option 1" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:315 +msgid "Option 2" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:322 +msgid "Option 3" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:329 +msgid "Option 4" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:334 +msgid "Allow multiple choices per user" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:337 +msgid "Hide votes count until the poll expires" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:363 +msgid "Please make sure you have provided at least two options for the poll." +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:363 +msgid "Not enough information" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:368 +msgid "Vote in this poll" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:371 +#, fuzzy +msgid "Options" +msgstr "үйлдэл" + +# | msgid "Searches" +#: wxUI/dialogs/mastodon/search.py:9 +#, fuzzy +msgid "Search" +msgstr "Хайлтууд" + +#: wxUI/dialogs/mastodon/search.py:18 +msgid "Posts" +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:22 +#, fuzzy +msgid "Select user" +msgstr "зураг сонгоно уу" + +#: wxUI/dialogs/mastodon/showUserProfile.py:73 +#, python-brace-format +msgid "{}'s Profile" +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:79 +#, fuzzy +msgid "&Name: " +msgstr "Нэр" + +#: wxUI/dialogs/mastodon/showUserProfile.py:84 +msgid "&URL: " +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:89 +msgid "&Bio: " +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:94 +msgid "&Joined at: " +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:99 +#, fuzzy +msgid "&Actions" +msgstr "үйлдэл" + +#: wxUI/dialogs/mastodon/showUserProfile.py:104 +msgid "Header: " +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:112 +msgid "Avatar: " +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:122 +#, python-brace-format +msgid "Field &{} - Label: " +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:129 +#, fuzzy +msgid "Content: " +msgstr "Контекст" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:43 +#: wxUI/dialogs/mastodon/filters/create_filter.py:65 +#: wxUI/dialogs/mastodon/showUserProfile.py:135 +msgid "Yes" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:43 +#: wxUI/dialogs/mastodon/filters/create_filter.py:65 +#: wxUI/dialogs/mastodon/filters/create_filter.py:69 +#: wxUI/dialogs/mastodon/showUserProfile.py:135 +msgid "No" +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:137 +#, fuzzy +msgid "&Private account: " +msgstr "бүртгэл устгах" + +#: wxUI/dialogs/mastodon/showUserProfile.py:144 +#, fuzzy +msgid "&Bot account: " +msgstr "бүртгэл" + +#: wxUI/dialogs/mastodon/showUserProfile.py:151 +#, fuzzy +msgid "&Discoverable account: " +msgstr "бүртгэл устгах" + +#: wxUI/dialogs/mastodon/showUserProfile.py:157 +#, python-brace-format +msgid "{} p&osts. Click to open posts timeline" +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:162 +#, python-brace-format +msgid "{} &following. Click to open Following timeline" +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:166 +#, python-brace-format +msgid "{} fo&llowers. Click to open followers timeline" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:43 +msgid "&Display Name" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:50 +msgid "&Bio" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:58 +msgid "Header" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:71 +msgid "Change &header" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:79 +msgid "Avatar" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:92 +msgid "Change &avatar" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:102 +#, python-brace-format +msgid "Field &{}: Label" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:110 +#, fuzzy +msgid "Content" +msgstr "Контекст" + +#: wxUI/dialogs/mastodon/updateProfile.py:120 +#, fuzzy +msgid "&Private account" +msgstr "бүртгэл устгах" + +#: wxUI/dialogs/mastodon/updateProfile.py:122 +#, fuzzy +msgid "&Bot account" +msgstr "бүртгэл" + +#: wxUI/dialogs/mastodon/updateProfile.py:124 +#, fuzzy +msgid "&Discoverable account" +msgstr "бүртгэл устгах" + +#: wxUI/dialogs/mastodon/updateProfile.py:167 +msgid "Select header image - max 2MB" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:172 +#: wxUI/dialogs/mastodon/updateProfile.py:194 +msgid "The selected file is larger than 2MB. Do you want to select another file?" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:173 +#: wxUI/dialogs/mastodon/updateProfile.py:195 +msgid "File more than 2MB" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:189 +msgid "Select avatar image - max 2MB" +msgstr "" + +#: wxUI/dialogs/mastodon/userActions.py:19 +msgid "&Follow" +msgstr "" + +#: wxUI/dialogs/mastodon/userActions.py:20 +msgid "U&nfollow" +msgstr "" + +#: wxUI/dialogs/mastodon/userActions.py:22 +msgid "Unmu&te" +msgstr "" + +#: wxUI/dialogs/mastodon/userActions.py:23 +msgid "&Block" +msgstr "" + +#: wxUI/dialogs/mastodon/userActions.py:24 +msgid "Unbl&ock" +msgstr "" + +#: wxUI/dialogs/mastodon/userTimeline.py:9 +#, python-format +msgid "Timeline for %s" +msgstr "" + +#: wxUI/dialogs/mastodon/userTimeline.py:19 +msgid "&Posts" +msgstr "" + +#: wxUI/dialogs/mastodon/userTimeline.py:20 +msgid "&Followers" +msgstr "" + +#: wxUI/dialogs/mastodon/userTimeline.py:21 +#, fuzzy +msgid "Fo&llowing" +msgstr "{0} таныг дагаж байна." + +#: wxUI/dialogs/mastodon/filters/create_filter.py:12 +#, fuzzy +msgid "Keyword" +msgstr "товчлуур" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:13 +#: wxUI/dialogs/mastodon/filters/create_filter.py:24 +msgid "Whole word" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:19 +msgid "Keyword:" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:25 +#: wxUI/dialogs/mastodon/filters/manage_filters.py:22 +msgid "Add" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:34 +msgid "Palabras clave a filtrar:" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:74 +#, fuzzy +msgid "New filter" +msgstr "Шинэ дагагч" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:78 +#, fuzzy +msgid "Home timeline" +msgstr "Цагийн хүрднүүд" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:79 +msgid "Public statuses" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:81 +#, fuzzy +msgid "Threads" +msgstr "Бэлэн" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:82 +#, fuzzy +msgid "Profiles" +msgstr "Файл" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:86 +#, fuzzy +msgid "Hide posts" +msgstr "Жиргэсэн жиргээнүүд" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:87 +msgid "Set a content warning to posts" +msgstr "" + +# | msgid "%d hours, " +#: wxUI/dialogs/mastodon/filters/create_filter.py:91 +#, fuzzy +msgid "Hours" +msgstr "%d цагийн, " + +# | msgid "%d days, " +#: wxUI/dialogs/mastodon/filters/create_filter.py:92 +#, fuzzy +msgid "Days" +msgstr "%d өдрийн, " + +#: wxUI/dialogs/mastodon/filters/create_filter.py:93 +msgid "Weeks" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:94 +msgid "months" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:97 +#, fuzzy +msgid "Title:" +msgstr "Файл" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:104 +#, fuzzy +msgid "Apply to:" +msgstr "%s руу хариу бичих" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:114 +#, fuzzy +msgid "Action:" +msgstr "үйлдэл" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:122 +msgid "Expires in:" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/manage_filters.py:10 +#, fuzzy +msgid "Filters" +msgstr "Файл" + +#: wxUI/dialogs/mastodon/filters/manage_filters.py:15 +#, fuzzy +msgid "Title" +msgstr "Файл" + +#: wxUI/dialogs/mastodon/filters/manage_filters.py:16 +msgid "Keywords" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/manage_filters.py:17 +#, fuzzy +msgid "Contexts" +msgstr "Контекст" + +#: wxUI/dialogs/mastodon/filters/manage_filters.py:19 +msgid "Expires" +msgstr "" + +#~ msgid "There are no results for the coordinates in this tweet" +#~ msgstr "Энэ жиргээнд коордиетийн үр дүн байхгүй" + +#~ msgid "This list is already opened" +#~ msgstr "Энэ жагсаалт аль хэдийн нээгдчихсэн" + +# | msgid "Timeline for {}" +#~ msgid "Timelines for {}" +#~ msgstr "{} -ийн цагийн хүрд" + +#~ msgid "{account_name} (Mastodon)" +#~ msgstr "" + +#~ msgid "Image description: {}" +#~ msgstr "" + +#~ msgid "URL of mastodon instance:" +#~ msgstr "" + +#~ msgid "Email address:" +#~ msgstr "" + +#~ msgid "Password:" +#~ msgstr "" + +#~ msgid "&Item" +#~ msgstr "" + +#~ msgid "Visibility" +#~ msgstr "" + +#~ msgid "Sensitive content" +#~ msgstr "" + +#~ msgid "Allow multiple votes per user" +#~ msgstr "" + +#~ msgid "{username} has mentionned you: {status}" +#~ msgstr "" + +#~ msgid "has mentionned you: {status}" +#~ msgstr "" + +#~ msgid "Likes for {}" +#~ msgstr "{} -ийн дуртай" + +#~ msgid "Trending topics for %s" +#~ msgstr "%s -ийн сэдвийн чиг хандлага" + +#~ msgid "Select user" +#~ msgstr "Хэрэглэгч сонгох" + +#~ msgid "Sent direct messages" +#~ msgstr "Явуулсан зурвасууд" + +#~ msgid "Sent tweets" +#~ msgstr "Жиргэсэн жиргээнүүд" + +#~ msgid "Likes" +#~ msgstr "Дуртай гэж тэмдэглэсэн зүйлс" + +#~ msgid "Friends" +#~ msgstr "Найзууд" + +#~ msgid "{username}'s likes" +#~ msgstr "" + +#~ msgid "{username}'s friends" +#~ msgstr "" + +#~ msgid "Tweet" +#~ msgstr "Жиргэх" + +#~ msgid "Write the tweet here" +#~ msgstr "Жиргэх мэдээллээ оруулна уу" + +#~ msgid "New tweet in {0}" +#~ msgstr "шинэ жиргээ" + +#~ msgid "{0} new tweets in {1}." +#~ msgstr "" + +#~ msgid "Reply to {arg0}" +#~ msgstr "%s руу хариу бичих" + +#~ msgid "Reply to %s" +#~ msgstr "%s руу хариу бичих" + +#~ msgid "Direct message to %s" +#~ msgstr "%s рүү зурвас бичих" + +#~ msgid "New direct message" +#~ msgstr "шинэ зурвас" + +#~ msgid "This action is not supported on protected accounts." +#~ msgstr "Энэ үйлдэл нь тухайн буферт дэмжигдэхгүй" + +#~ msgid "Quote" +#~ msgstr "Ишлэл" + +#~ msgid "Add your comment to the tweet" +#~ msgstr "Жиргээн дээр өөрийн сэтгэгдлийг нэмэх" + +#~ msgid "User details" +#~ msgstr "Хэрэглэгчийн мэдээлэл" + +#~ msgid "MMM D, YYYY. H:m" +#~ msgstr "dddd, MMMM D, YYYY H:m:s" + +#~ msgid "There are no coordinates in this tweet" +#~ msgstr "Энэ жиргээнд координет байхгүй" + +#~ msgid "Error decoding coordinates. Try again later." +#~ msgstr "Координет тодорхойлоход алдаа гарлаа. Дараа дахин оролдоно уу." + +#~ msgid "Invalid buffer" +#~ msgstr "буффер байхгүй" + +#~ msgid "{0} new direct messages." +#~ msgstr "шинэ зурвас" + +#~ msgid "This action is not supported in the buffer yet." +#~ msgstr "Энэ үйлдэл нь тухайн буферт дэмжигдэхгүй" + +#~ msgid "" +#~ "Getting more items cannot be done " +#~ "in this buffer. Use the direct " +#~ "messages buffer instead." +#~ msgstr "" + +#~ msgid "Mention" +#~ msgstr "Дурдах" + +#~ msgid "Mention to %s" +#~ msgstr "%s ийг дурдах" + +#~ msgid "{0} new followers." +#~ msgstr "Шинэ дагагч" + +#~ msgid "This action is not supported in the buffer, yet." +#~ msgstr "Энэ үйлдэл нь тухайн буферт дэмжигдэхгүй" + +#~ msgid "&Retweet" +#~ msgstr "" + +#~ msgid "&Like" +#~ msgstr "" + +#~ msgid "&Unlike" +#~ msgstr "" + +#~ msgid "View &address" +#~ msgstr "" + +#~ msgid "&View lists" +#~ msgstr "" + +#~ msgid "View likes" +#~ msgstr "" + +#~ msgid "Likes timelines" +#~ msgstr "Дуртай цагийн хүрднүүд" + +#~ msgid "Followers timelines" +#~ msgstr "Дагагчдын цагийн хүрднүүд" + +#~ msgid "Following timelines" +#~ msgstr "Дагагчдын цагийн хүрднүүд" + +#~ msgid "Lists" +#~ msgstr "Жагсаалтууд" + +#~ msgid "List for {}" +#~ msgstr "{} -ийн жагсаалт" + +#~ msgid "Filters cannot be applied on this buffer" +#~ msgstr "Энэ үйлдэл нь тухайн буферт дэмжигдэхгүй" + +#~ msgid "View item" +#~ msgstr "" + +#~ msgid "Ask" +#~ msgstr "асуух" + +#~ msgid "Retweet without comments" +#~ msgstr "Сэтгэгдэл нэмэхгүйгээр жиргэх" + +#~ msgid "Retweet with comments" +#~ msgstr "Сэтгэгдэл нэмж жиргэх" + +#~ msgid "Edit template for tweets. Current template: {}" +#~ msgstr "" + +#~ msgid "Edit template for direct messages. Current template: {}" +#~ msgstr "" + +#~ msgid "Edit template for sent direct messages. Current template: {}" +#~ msgstr "" + +#~ msgid "User has been suspended" +#~ msgstr "хэрэглэгч устгагдсан" + +#~ msgid "Information for %s" +#~ msgstr "%s -ийн мэдээлэл" + +#~ msgid "Discarded" +#~ msgstr "Цуцлагдсан" + +#~ msgid "Username: @%s\n" +#~ msgstr "Хэрэглэгчийн нэр: @%s\n" + +#~ msgid "Name: %s\n" +#~ msgstr "Нэр: %s\n" + +#~ msgid "Location: %s\n" +#~ msgstr "Газар: %s\n" + +#~ msgid "URL: %s\n" +#~ msgstr "Холбоос: %s\n" + +#~ msgid "Bio: %s\n" +#~ msgstr "Мэдээлэл: %s\n" + +#~ msgid "Yes" +#~ msgstr "Тийм" + +#~ msgid "No" +#~ msgstr "Үгүй" + +#~ msgid "Protected: %s\n" +#~ msgstr "Хамгаалагдсан: %s\n" + +#~ msgid "Relationship: " +#~ msgstr "" + +#~ msgid "You follow {0}. " +#~ msgstr "Та {0} -ийг дагалаа." + +#~ msgid "{0} is following you." +#~ msgstr "{0} таныг дагаж байна." + +#~ msgid "" +#~ "Followers: %s\n" +#~ " Friends: %s\n" +#~ msgstr "" +#~ "Дагагчид: %s\n" +#~ " Найзууд: %s\n" + +#~ msgid "Verified: %s\n" +#~ msgstr "Бататгагдсан: %s\n" + +#~ msgid "Tweets: %s\n" +#~ msgstr "Жиргээ: %s\n" + +#~ msgid "Likes: %s" +#~ msgstr "Дуртай: %s" + +#~ msgid "You can't ignore direct messages" +#~ msgstr "Та зурвасуудыг өгүүсгэж болохгүй" + +#~ msgid "Attaching..." +#~ msgstr "Нэмж байна..." + +#~ msgid "Pause" +#~ msgstr "Түр зогсоох" + +#~ msgid "&Resume" +#~ msgstr "&үргэлжлүүлэх" + +#~ msgid "Resume" +#~ msgstr "Үргэлжлүүлэх" + +#~ msgid "&Pause" +#~ msgstr "&Түр зогсоох" + +#~ msgid "&Stop" +#~ msgstr "&Зогсоох" + +#~ msgid "Recording" +#~ msgstr "Бичиж байна" + +#~ msgid "Stopped" +#~ msgstr "Зогсоосон" + +#~ msgid "&Record" +#~ msgstr "&Бичих" + +#~ msgid "&Play" +#~ msgstr "&Тоглуулах" + +#~ msgid "Recoding audio..." +#~ msgstr "Аудио бичлэг хийж байна..." + +#~ msgid "Error in file upload: {0}" +#~ msgstr "" + +#~ msgid "Transferred" +#~ msgstr "Шилжсэн" + +#~ msgid "Total file size" +#~ msgstr "Файлын нийт хэмжээ" + +#~ msgid "Transfer rate" +#~ msgstr "Шилжүүлгийн хувь" + +#~ msgid "Time left" +#~ msgstr "цаг үлдлээ" + +#~ msgid "Attach audio" +#~ msgstr "Аудио нэмэх" + +#~ msgid "&Add an existing file" +#~ msgstr "& Байгаа файл нэмэх" + +#~ msgid "&Discard" +#~ msgstr "&цуцлах" + +#~ msgid "Upload to" +#~ msgstr "руу суурьлуулах" + +#~ msgid "Attach" +#~ msgstr "Нэмэх" + +#~ msgid "&Cancel" +#~ msgstr "&цуцлах" + +#~ msgid "Audio Files (*.mp3, *.ogg, *.wav)|*.mp3; *.ogg; *.wav" +#~ msgstr "Аудио файлууд (*.mp3, *.ogg, *.wav)|*.mp3; *.ogg; *.wav" + +#~ msgid "You have to start writing" +#~ msgstr "Та бичиж эхлэх шаардлагатай" + +#~ msgid "There are no results in your users database" +#~ msgstr "Хэрэглэгчийн дата багцад үр дүн байхгүй" + +#~ msgid "Autocompletion only works for users." +#~ msgstr "Автоматаар гүйцээгч зөвхөн хэрэглэгчдэд ажиллах боломжтой" + +#~ msgid "" +#~ "Updating database... You can close this" +#~ " window now. A message will tell " +#~ "you when the process finishes." +#~ msgstr "" +#~ "Дата багц шинэчлэгдэж байна... Та энэ" +#~ " цонхыг хааж болох бөгөөд шинэчлэгдэж " +#~ "дуусахад зурвасаар мэдэгдэх болно." + +#~ msgid "Manage Autocompletion database" +#~ msgstr "Автоматаар гүйцээх дата багцыг өөрчлөх" + +#~ msgid "Editing {0} users database" +#~ msgstr "{0} хэрэглэгчдийн дата багцыг өөрчилж байна" + +#~ msgid "Username" +#~ msgstr "Хэрэглэгчийн нэр" + +#~ msgid "Add user" +#~ msgstr "Хэрэглэгч нэмэх" + +#~ msgid "Remove user" +#~ msgstr "Хэрэглэгч устгах" + +#~ msgid "Twitter username" +#~ msgstr "Тивитер хэрэглэгчийн нэр" + +#~ msgid "Add user to database" +#~ msgstr "Дата багцад хэрэглэгч нэмэх" + +#~ msgid "The user does not exist" +#~ msgstr "Тийм нэртэй хэрэглэгч олдсонгүй" + +#~ msgid "Error!" +#~ msgstr "Алдаа!" + +#~ msgid "Autocomplete users' settings" +#~ msgstr "Автоматаар хэрэглэгчийн тохргоог гүйцээх" + +#~ msgid "Add followers to database" +#~ msgstr "" + +#~ msgid "Add friends to database" +#~ msgstr "Дата багцад хэрэглэгч нэмэх" + +#~ msgid "Updating autocompletion database" +#~ msgstr "Автоматаар гүйцээх дата багцыг өөрчлөх" + +#~ msgid "" +#~ "This process will retrieve the users " +#~ "you selected from Twitter, and add " +#~ "them to the user autocomplete database." +#~ " Please note that if there are " +#~ "many users or you have tried to" +#~ " perform this action less than 15 " +#~ "minutes ago, TWBlue may reach a " +#~ "limit in Twitter API calls when " +#~ "trying to load the users into the" +#~ " database. If this happens, we will" +#~ " show you an error, in which " +#~ "case you will have to try this " +#~ "process again in a few minutes. If" +#~ " this process ends with no error, " +#~ "you will be redirected back to the" +#~ " account settings dialog. Do you want" +#~ " to continue?" +#~ msgstr "" + +#~ msgid "TWBlue has imported {} users successfully." +#~ msgstr "" + +#~ msgid "Done" +#~ msgstr "дууслаа" + +#~ msgid "Error adding users from Twitter. Please try again in about 15 minutes." +#~ msgstr "" + +#~ msgid "New tweet" +#~ msgstr "шинэ жиргээ" + +#~ msgid "Retweet" +#~ msgstr "Дахин жиргэх" + +#~ msgid "Like a tweet" +#~ msgstr "жиргээнд лайк дарах" + +#~ msgid "Like/unlike a tweet" +#~ msgstr "Жиргээний лайкыг болилуулах" + +#~ msgid "Unlike a tweet" +#~ msgstr "Жиргээний лайкыг болилуулах" + +#~ msgid "See user details" +#~ msgstr "хэрэглэгчийн мэдээллийг харах" + +#~ msgid "Show tweet" +#~ msgstr "жиргээг харах" + +#~ msgid "Interact with the currently focused tweet." +#~ msgstr "Одоо очсон байгаа жиргээтэй харьцах." + +#~ msgid "View in Twitter" +#~ msgstr "Твиттерээс хайх" + +#~ msgid "Edit profile" +#~ msgstr "Мэдээллээ өөрчлөх" + +#~ msgid "Delete a tweet or direct message" +#~ msgstr "Жиргээ эсвэл мэссиж устгах" + +#~ msgid "Add to list" +#~ msgstr "жагсаалтанд нэмэх" + +#~ msgid "Remove from list" +#~ msgstr "жагсаалтаас устгах" + +#~ msgid "Search on twitter" +#~ msgstr "Твиттерээс хайх" + +#~ msgid "Show lists for a specified user" +#~ msgstr "тодруулсан хэрэглэгчийн жагсаалтыг харах" + +#~ msgid "Get geolocation" +#~ msgstr "газар нутгийн байдлыг мэдэх" + +#~ msgid "Display the tweet's geolocation in a dialog" +#~ msgstr "байгаа газраа жиргээнд оруулах" + +#~ msgid "Create a trending topics buffer" +#~ msgstr "Тренд болж буй сэдвийн буффер нээх" + +#~ msgid "" +#~ "Opens the list manager, which allows " +#~ "you to create, edit, delete and " +#~ "open lists in buffers." +#~ msgstr "" +#~ "жагсаалтын тохиргоог нээх. энэ нь таныг" +#~ " буфферт жагсаалт үүсгэх, устгах болон " +#~ "засварлахад хэрэгтэй." + +#~ msgid "Opens the list manager" +#~ msgstr "хэрэглэгчийн харилцах үйлдлийн хайрцгийг нээх" + +#~ msgid "{account_name} (Twitter)" +#~ msgstr "" + +#~ msgid "Twitter" +#~ msgstr "Твиттерээс хайх" + +#~ msgid "" +#~ "The request to authorize your Twitter" +#~ " account will be opened in your " +#~ "browser. You only need to do this" +#~ " once. Would you like to continue?" +#~ msgstr "" +#~ "Таны бүртгэлийг тухайн программтай ашиглах " +#~ "зөвшөөрлийг авах ёстой. Энэ нь ганц " +#~ "л удаагийн алхам юм. Үргэлжлүүлэх үү?" + +#~ msgid "" +#~ "TWBlue is unable to authenticate the " +#~ "account for {} in Twitter. It " +#~ "might be due to an invalid or " +#~ "expired token, revoqued access to the" +#~ " application, or after an account " +#~ "reactivation. Please remove the account " +#~ "manually from your Twitter sessions in" +#~ " order to stop seeing this message." +#~ msgstr "" + +#~ msgid "Authentication error for session {}" +#~ msgstr "" + +#~ msgid "Dm to %s " +#~ msgstr "Dm to %s " + +#~ msgid "{0}. Quoted tweet from @{1}: {2}" +#~ msgstr "{0}. Quoted tweet from @{1}: {2}" + +#~ msgid "Unavailable" +#~ msgstr "боломжгүй" + +#~ msgid "" +#~ "%s (@%s). %s followers, %s friends, " +#~ "%s tweets. Last tweeted %s. Joined " +#~ "Twitter %s" +#~ msgstr "" + +#~ msgid "No description available" +#~ msgstr "" + +#~ msgid "private" +#~ msgstr "" + +#~ msgid "public" +#~ msgstr "" + +#~ msgid "Enter your PIN code here" +#~ msgstr "" + +#~ msgid "Authorising account..." +#~ msgstr "зөвшөөрлийг шалгаж байна." + +#~ msgid "" +#~ "We could not authorice your Twitter " +#~ "account to be used in TWBlue. This" +#~ " might be caused due to an " +#~ "incorrect verification code. Please try " +#~ "to add the session again." +#~ msgstr "" + +#~ msgid "%s failed. Reason: %s" +#~ msgstr "%s болсонгүй. Шалтгаан: %s" + +#~ msgid "Deleted account" +#~ msgstr "шинэ бүртгэл" + +#~ msgid "$sender_display_name, $text $date" +#~ msgstr "" + +#~ msgid "" +#~ "$display_name (@$screen_name). $followers followers," +#~ " $following following, $tweets tweets. " +#~ "Joined Twitter $created_at." +#~ msgstr "" + +#~ msgid "Image description: {}." +#~ msgstr "" + +#~ msgid "RT @{}: {} Quote from @{}: {}" +#~ msgstr "{0}. Quoted tweet from @{1}: {2}" + +# | msgid "{0}. Quoted tweet from @{1}: {2}" +#~ msgid "RT @{}: {}" +#~ msgstr "{0}. Quoted tweet from @{1}: {2}" + +# | msgid "{0}. Quoted tweet from @{1}: {2}" +#~ msgid "{} Quote from @{}: {}" +#~ msgstr "{0}. Quoted tweet from @{1}: {2}" + +#~ msgid "Sorry, you are not authorised to see this status." +#~ msgstr "" + +#~ msgid "Error {0}" +#~ msgstr "{} -ийн хайлт" + +#~ msgid "{user_1}, {user_2} and {all_users} more: {text}" +#~ msgstr "" + +#~ msgid "" +#~ "This retweet is over 140 characters. " +#~ "Would you like to post it as " +#~ "a mention to the poster with your" +#~ " comments and a link to the " +#~ "original tweet?" +#~ msgstr "" + +#~ msgid "Would you like to add a comment to this tweet?" +#~ msgstr "" + +#~ msgid "" +#~ "Do you really want to delete this" +#~ " tweet? It will be deleted from " +#~ "Twitter as well." +#~ msgstr "" + +#~ msgid "Enter the name of the client : " +#~ msgstr "" + +#~ msgid "Add client" +#~ msgstr "" + +#~ msgid "This user has no tweets, so you can't open a timeline for them." +#~ msgstr "" + +#~ msgid "" +#~ "This is a protected Twitter user, " +#~ "which means you can't open a " +#~ "timeline using the Streaming API. The" +#~ " user's tweets will not update due" +#~ " to a twitter policy. Do you " +#~ "want to continue?" +#~ msgstr "" + +#~ msgid "" +#~ "This is a protected user account, " +#~ "you need to follow this user to" +#~ " view their tweets or likes." +#~ msgstr "" + +#~ msgid "This user has no tweets. {0} can't create a timeline." +#~ msgstr "" + +#~ msgid "This user has no favorited tweets. {0} can't create a timeline." +#~ msgstr "" + +#~ msgid "This user has no followers. {0} can't create a timeline." +#~ msgstr "" + +#~ msgid "This user has no friends. {0} can't create a timeline." +#~ msgstr "" + +#~ msgid "Geolocation data: {0}" +#~ msgstr "" + +#~ msgid "Geo data for this tweet" +#~ msgstr "" + +#~ msgid "You have been blocked from viewing this content" +#~ msgstr "" + +#~ msgid "" +#~ "You have been blocked from viewing " +#~ "someone's content. In order to avoid " +#~ "conflicts with the full session, TWBlue" +#~ " will remove the affected timeline." +#~ msgstr "" + +#~ msgid "" +#~ "TWBlue cannot load this timeline because" +#~ " the user has been suspended from " +#~ "Twitter." +#~ msgstr "" + +#~ msgid "Do you really want to delete this filter?" +#~ msgstr "" + +#~ msgid "This filter already exists. Please use a different title" +#~ msgstr "" + +#~ msgid "&Show direct message" +#~ msgstr "" + +#~ msgid "&Show event" +#~ msgstr "" + +#~ msgid "Direct &message" +#~ msgstr "" + +#~ msgid "&Show user" +#~ msgstr "" + +#~ msgid "Search topic" +#~ msgstr "" + +#~ msgid "&Tweet about this trend" +#~ msgstr "" + +#~ msgid "&Show item" +#~ msgstr "" + +#~ msgid "Update &profile" +#~ msgstr "" + +#~ msgid "Event" +#~ msgstr "" + +#~ msgid "Remove event" +#~ msgstr "" + +#~ msgid "Trending topic" +#~ msgstr "" + +#~ msgid "Tweet about this trend" +#~ msgstr "" + +#~ msgid "" +#~ "Scan account and add friends and " +#~ "followers to the user autocompletion " +#~ "database" +#~ msgstr "" + +#~ msgid "" +#~ "Inverted buffers: The newest tweets will" +#~ " be shown at the beginning while " +#~ "the oldest at the end" +#~ msgstr "" + +#~ msgid "Retweet mode" +#~ msgstr "" + +#~ msgid "" +#~ "Load cache for tweets in memory " +#~ "(much faster in big datasets but " +#~ "requires more RAM)" +#~ msgstr "" + +#~ msgid "Ignored clients" +#~ msgstr "" + +#~ msgid "Remove client" +#~ msgstr "" + +#~ msgid "Indicate audio tweets with sound" +#~ msgstr "" + +#~ msgid "Indicate geotweets with sound" +#~ msgstr "" + +#~ msgid "Indicate tweets containing images with sound" +#~ msgstr "" + +#~ msgid "API Key for SndUp" +#~ msgstr "" + +#~ msgid "Create a filter for this buffer" +#~ msgstr "" + +#~ msgid "Filter title" +#~ msgstr "" + +#~ msgid "Filter by word" +#~ msgstr "" + +#~ msgid "Ignore tweets wich contain the following word" +#~ msgstr "" + +#~ msgid "Ignore tweets without the following word" +#~ msgstr "" + +#~ msgid "word" +#~ msgstr "" + +#~ msgid "Allow retweets" +#~ msgstr "жиргээг харах" + +#~ msgid "Allow quoted tweets" +#~ msgstr "" + +#~ msgid "Allow replies" +#~ msgstr "Дагагчдын цагийн хүрднүүд" + +#~ msgid "Use this term as a regular expression" +#~ msgstr "" + +#~ msgid "Filter by language" +#~ msgstr "Хэлнээс орчуулах" + +#~ msgid "Load tweets in the following languages" +#~ msgstr "" + +#~ msgid "Ignore tweets in the following languages" +#~ msgstr "" + +#~ msgid "Don't filter by language" +#~ msgstr "" + +#~ msgid "Supported languages" +#~ msgstr "Хэлнээс орчуулах" + +#~ msgid "Add selected language to filter" +#~ msgstr "" + +#~ msgid "Selected languages" +#~ msgstr "Хэлнээс орчуулах" + +#~ msgid "You must define a name for the filter before creating it." +#~ msgstr "" + +#~ msgid "Missing filter name" +#~ msgstr "" + +#~ msgid "Manage filters" +#~ msgstr "" + +#~ msgid "Filters" +#~ msgstr "" + +#~ msgid "Filter" +#~ msgstr "" + +#~ msgid "Lists manager" +#~ msgstr "" + +#~ msgid "List" +#~ msgstr "" + +#~ msgid "Owner" +#~ msgstr "" + +#~ msgid "Members" +#~ msgstr "" + +#~ msgid "mode" +#~ msgstr "" + +#~ msgid "Create a new list" +#~ msgstr "" + +#~ msgid "Open in buffer" +#~ msgstr "" + +#~ msgid "Viewing lists for %s" +#~ msgstr "" + +#~ msgid "Subscribe" +#~ msgstr "" + +#~ msgid "Unsubscribe" +#~ msgstr "" + +#~ msgid "Name (20 characters maximun)" +#~ msgstr "" + +#~ msgid "Mode" +#~ msgstr "" + +#~ msgid "Private" +#~ msgstr "" + +#~ msgid "Editing the list %s" +#~ msgstr "" + +#~ msgid "Select a list to add the user" +#~ msgstr "" + +#~ msgid "Add" +#~ msgstr "" + +#~ msgid "Select a list to remove the user" +#~ msgstr "" + +#~ msgid "Do you really want to delete this list?" +#~ msgstr "" + +#~ msgid "Search on Twitter" +#~ msgstr "" + +#~ msgid "Tweets" +#~ msgstr "" + +#~ msgid "&Language for results: " +#~ msgstr "" + +#~ msgid "any" +#~ msgstr "" + +#~ msgid "Results &type: " +#~ msgstr "" + +#~ msgid "Mixed" +#~ msgstr "" + +#~ msgid "Recent" +#~ msgstr "" + +#~ msgid "Popular" +#~ msgstr "" + +#~ msgid "Details" +#~ msgstr "" + +#~ msgid "&Go to URL" +#~ msgstr "" + +#~ msgid "View trending topics" +#~ msgstr "" + +#~ msgid "Trending topics by" +#~ msgstr "" + +#~ msgid "Country" +#~ msgstr "" + +#~ msgid "City" +#~ msgstr "" + +#~ msgid "&Location" +#~ msgstr "" + +#~ msgid "Update your profile" +#~ msgstr "" + +#~ msgid "&Name (50 characters maximum)" +#~ msgstr "" + +#~ msgid "&Website" +#~ msgstr "" + +#~ msgid "&Bio (160 characters maximum)" +#~ msgstr "" + +#~ msgid "Upload a &picture" +#~ msgstr "" + +#~ msgid "Upload a picture" +#~ msgstr "" + +#~ msgid "Discard image" +#~ msgstr "" + +#~ msgid "&Report as spam" +#~ msgstr "" + +#~ msgid "&Ignore tweets from this client" +#~ msgstr "" + +#~ msgid "&Tweets" +#~ msgstr "" + +#~ msgid "&Likes" +#~ msgstr "" + +#~ msgid "F&riends" +#~ msgstr "" + +#~ msgid "Delete attachment" +#~ msgstr "" + +#~ msgid "Added Tweets" +#~ msgstr "Жиргэсэн жиргээнүүд" + +#~ msgid "Delete tweet" +#~ msgstr "Жиргэсэн жиргээнүүд" + +#~ msgid "A&dd..." +#~ msgstr "" + +#~ msgid "Add t&weet" +#~ msgstr "жиргээнд лайк дарах" + +#~ msgid "&Attach audio..." +#~ msgstr "" + +#~ msgid "Sen&d" +#~ msgstr "" + +#~ msgid "Video files (*.mp4)|*.mp4" +#~ msgstr "" + +#~ msgid "" +#~ "It is not possible to add more " +#~ "attachments. Please make sure your tweet" +#~ " complies with Twitter'S attachment rules." +#~ " You can add only one video or" +#~ " GIF in every tweet, and a " +#~ "maximum of 4 photos." +#~ msgstr "" + +#~ msgid "&Mention to all" +#~ msgstr "" + +#~ msgid "&Recipient" +#~ msgstr "" + +#~ msgid "Tweet - %i characters " +#~ msgstr "" + +#~ msgid "Retweets: " +#~ msgstr "" + +#~ msgid "Likes: " +#~ msgstr "" + +#~ msgid "View" +#~ msgstr "" + +#~ msgid "Item" +#~ msgstr "" + +#~ msgid "&Expand URL" +#~ msgstr "" + +#~ msgid "Participation time (in days)" +#~ msgstr "" + +#~ msgid "https://twblue.es/donate" +#~ msgstr "" + +#~ msgid "&Open in Twitter" +#~ msgstr "Твиттерээс хайх" + +#~ msgid "&Show tweet" +#~ msgstr "" + +#~ msgid "Translated" +#~ msgstr "Орчуулагдлаа" + +#~ msgid "Afrikaans" +#~ msgstr "Африк хэл" + +#~ msgid "Albanian" +#~ msgstr "Албани хэл" + +#~ msgid "Amharic" +#~ msgstr "Амхерик хэл" + +#~ msgid "Arabic" +#~ msgstr "Араб хэл" + +#~ msgid "Armenian" +#~ msgstr "Армен хэл" + +#~ msgid "Azerbaijani" +#~ msgstr "Азербайжан хэл" + +#~ msgid "Basque" +#~ msgstr "Баск хэл" + +#~ msgid "Belarusian" +#~ msgstr "Беларус хэл" + +#~ msgid "Bengali" +#~ msgstr "Бангладешь хэл" + +#~ msgid "Bihari" +#~ msgstr "Бахар хэл" + +#~ msgid "Bulgarian" +#~ msgstr "Болгарь хэл" + +#~ msgid "Burmese" +#~ msgstr "Мьянмар хэл" + +#~ msgid "Catalan" +#~ msgstr "Каталан хэл" + +#~ msgid "Cherokee" +#~ msgstr "Чероки хэл" + +#~ msgid "Chinese" +#~ msgstr "Хятад хэл" + +#~ msgid "Chinese_simplified" +#~ msgstr "Хятадын хялбарчилсан үсэг" + +#~ msgid "Chinese_traditional" +#~ msgstr "Хятад ханз" + +#~ msgid "Croatian" +#~ msgstr "Хорват хэл" + +#~ msgid "Czech" +#~ msgstr "Чех хэл" + +#~ msgid "Dhivehi" +#~ msgstr "Дивих хэл" + +#~ msgid "Esperanto" +#~ msgstr "эсперанто хэл " + +#~ msgid "Estonian" +#~ msgstr "эстони хэл " + +#~ msgid "Filipino" +#~ msgstr "филиппин хэл " + +#~ msgid "Galician" +#~ msgstr "Галац хэл" + +#~ msgid "Georgian" +#~ msgstr "гүрж хэл " + +#~ msgid "Greek" +#~ msgstr "Грек хэл" + +#~ msgid "Guarani" +#~ msgstr "Гуаран хэл" + +#~ msgid "Gujarati" +#~ msgstr "Гужари хэл" + +#~ msgid "Hebrew" +#~ msgstr "еврей  хэл" + +#~ msgid "Hindi" +#~ msgstr "хинди хэл " + +#~ msgid "Icelandic" +#~ msgstr "исланд хэл " + +#~ msgid "Indonesian" +#~ msgstr "индонези хэл" + +#~ msgid "Inuktitut" +#~ msgstr "Иньют хэл" + +#~ msgid "Irish" +#~ msgstr "ирланд хэл " + +#~ msgid "Kannada" +#~ msgstr "Кинада хэл" + +#~ msgid "Kazakh" +#~ msgstr "Казак хэл" + +#~ msgid "Khmer" +#~ msgstr "кхмер  хэл" + +#~ msgid "Kurdish" +#~ msgstr "курд хэл " + +#~ msgid "Kyrgyz" +#~ msgstr "Киргиз хэл" + +#~ msgid "Laothian" +#~ msgstr "лаос хэл " + +#~ msgid "Latvian" +#~ msgstr "латви хэл " + +#~ msgid "Lithuanian" +#~ msgstr "литва хэл " + +#~ msgid "Macedonian" +#~ msgstr "македон хэл" + +#~ msgid "Malay" +#~ msgstr "малай хэл " + +#~ msgid "Malayalam" +#~ msgstr "Малайлан хэл" + +#~ msgid "Maltese" +#~ msgstr "мальти хэл " + +#~ msgid "Marathi" +#~ msgstr "Мараци хэл" + +#~ msgid "Mongolian" +#~ msgstr "Монгол хэл" + +#~ msgid "Nepali" +#~ msgstr "балба  хэл" + +#~ msgid "Norwegian" +#~ msgstr "Норвеги хэл" + +#~ msgid "Oriya" +#~ msgstr "Орье хэл" + +#~ msgid "Pashto" +#~ msgstr "Пашта хэл" + +#~ msgid "Persian" +#~ msgstr "перс хэл " + +#~ msgid "Punjabi" +#~ msgstr "Панжаби хэл" + +#~ msgid "Romanian" +#~ msgstr "Армейн хэл" + +#~ msgid "Sanskrit" +#~ msgstr "санскрит хэл " + +#~ msgid "Serbian" +#~ msgstr "серб хэл " + +#~ msgid "Sindhi" +#~ msgstr "Синди хэл" + +#~ msgid "Sinhalese" +#~ msgstr "Синигаль хэл" + +#~ msgid "Slovak" +#~ msgstr "словак хэл " + +#~ msgid "Slovenian" +#~ msgstr "словен хэл " + +#~ msgid "Swahili" +#~ msgstr "Свахаль хэл" + +#~ msgid "Swedish" +#~ msgstr "Швед хэл " + +#~ msgid "Tajik" +#~ msgstr "тажик хэл " + +#~ msgid "Tamil" +#~ msgstr "Тамиль хэл" + +#~ msgid "Tagalog" +#~ msgstr "Такалак хэл" + +#~ msgid "Telugu" +#~ msgstr "Телуку хэл" + +#~ msgid "Thai" +#~ msgstr "тайланд хэл " + +#~ msgid "Tibetan" +#~ msgstr "Төвд хэл" + +#~ msgid "Ukrainian" +#~ msgstr "Украйн хэл " + +#~ msgid "Urdu" +#~ msgstr "Урду хэл" + +#~ msgid "Uzbek" +#~ msgstr "узбек хэл" + +#~ msgid "Uighur" +#~ msgstr "Уйгар хэл" + +#~ msgid "Vietnamese" +#~ msgstr "вьетнам  хэл" + +#~ msgid "Welsh" +#~ msgstr "уэльс хэл " + +#~ msgid "Yiddish" +#~ msgstr "еврей хэл " + +#~ msgid "" +#~ "TWBlue has detected that you're running" +#~ " windows 10 and has changed the " +#~ "default keymap to the Windows 10 " +#~ "keymap. It means that some keyboard " +#~ "shorcuts could be different. Please " +#~ "check the keystroke editor by pressing" +#~ " Alt+Win+K to see all available " +#~ "keystrokes for this keymap." +#~ msgstr "" + +#~ msgid "Boosts: " +#~ msgstr "" + +#~ msgid "Favorites: " +#~ msgstr "" + +#~ msgid "Source: " +#~ msgstr "" + +#~ msgid "Date: " +#~ msgstr "" + +#~ msgid "Community for {}" +#~ msgstr "" + +#~ msgid "Run {0} at Windows startup" +#~ msgstr "" + +#~ msgid "Use Codeofdusk's longtweet handlers (may decrease client performance)" +#~ msgstr "" + +#~ msgid "Remember state for mention all and long tweet" +#~ msgstr "" + +#~ msgid "URL: " +#~ msgstr "" + +#~ msgid "Bio: " +#~ msgstr "" + +#~ msgid "Joined at: " +#~ msgstr "" + +#~ msgid "Field {} - Label: " +#~ msgstr "" + +#~ msgid "{} posts. Click to open posts timeline" +#~ msgstr "" + +#~ msgid "{} following. Click to open Following timeline" +#~ msgstr "" + +#~ msgid "{} followers. Click to open followers timeline" +#~ msgstr "" + +#~ msgid "Display Name" +#~ msgstr "" + +#~ msgid "Bio" +#~ msgstr "" + +#~ msgid "Change header" +#~ msgstr "" + +#~ msgid "Change avatar" +#~ msgstr "" + +#~ msgid "Field {}: Label" +#~ msgstr "" + +#~ msgid "Add following to database" +#~ msgstr "" + +#~ msgid "Language" +#~ msgstr "" + +#~ msgid "ask before exiting {0}" +#~ msgstr "" + +#~ msgid "Disable Streaming functions" +#~ msgstr "" + +#~ msgid "Buffer update interval, in minutes" +#~ msgstr "" + +#~ msgid "Play a sound when {0} launches" +#~ msgstr "" + +#~ msgid "Speak a message when {0} launches" +#~ msgstr "" + +#~ msgid "Use invisible interface's keyboard shortcuts while GUI is visible" +#~ msgstr "" + +#~ msgid "Activate Sapi5 when any other screen reader is not being run" +#~ msgstr "" + +#~ msgid "Hide GUI on launch" +#~ msgstr "" + +#~ msgid "Read long posts in GUI" +#~ msgstr "" + +#~ msgid "Keymap" +#~ msgstr "" + +#~ msgid "Check for updates when {0} launches" +#~ msgstr "" + +#~ msgid "Proxy type: " +#~ msgstr "" + +#~ msgid "Proxy server: " +#~ msgstr "" + +#~ msgid "Port: " +#~ msgstr "" + +#~ msgid "User: " +#~ msgstr "" + +#~ msgid "Password: " +#~ msgstr "" + +#~ msgid "Enable automatic speech feedback" +#~ msgstr "" + +#~ msgid "Enable automatic Braille feedback" +#~ msgstr "" + +#~ msgid "Show/hide" +#~ msgstr "" + +#~ msgid "Move up" +#~ msgstr "" + +#~ msgid "Move down" +#~ msgstr "" + +#~ msgid "LibreTranslate API URL: " +#~ msgstr "" + +#~ msgid "LibreTranslate API Key (optional): " +#~ msgstr "" + +#~ msgid "DeepL API Key: " +#~ msgstr "" + +#~ msgid "Save" +#~ msgstr "" + +#~ msgid "" +#~ "Scan account and add followers and " +#~ "following users to the user " +#~ "autocompletion database" +#~ msgstr "" + +#~ msgid "Disable Streaming API endpoints" +#~ msgstr "" + +#~ msgid "Relative timestamps" +#~ msgstr "" + +#~ msgid "" +#~ "Read preferences from instance (default " +#~ "visibility when publishing and displaying " +#~ "sensitive content)" +#~ msgstr "" + +#~ msgid "Items on each API call" +#~ msgstr "" + +#~ msgid "" +#~ "Inverted buffers: The newest items will" +#~ " be shown at the beginning while " +#~ "the oldest at the end" +#~ msgstr "" + +#~ msgid "Ask confirmation before boosting a post" +#~ msgstr "" + +#~ msgid "Show screen names instead of full names" +#~ msgstr "" + +#~ msgid "hide emojis in usernames" +#~ msgstr "" + +#~ msgid "" +#~ "Number of items per buffer to " +#~ "cache in database (0 to disable " +#~ "caching, blank for unlimited)" +#~ msgstr "" + +#~ msgid "" +#~ "Load cache for items in memory " +#~ "(much faster in big datasets but " +#~ "requires more RAM)" +#~ msgstr "" + +#~ msgid "Volume" +#~ msgstr "" + +#~ msgid "Session mute" +#~ msgstr "" + +#~ msgid "Output device" +#~ msgstr "" + +#~ msgid "Input device" +#~ msgstr "" + +#~ msgid "Sound pack" +#~ msgstr "" + +#~ msgid "Indicate audio or video in posts with sound" +#~ msgstr "" + +#~ msgid "Indicate posts containing images with sound" +#~ msgstr "" + +#~ msgid "Language for OCR" +#~ msgstr "" + diff --git a/srcantiguo/locales/pl/LC_MESSAGES/twblue.mo b/srcantiguo/locales/pl/LC_MESSAGES/twblue.mo new file mode 100644 index 00000000..2292b7a9 Binary files /dev/null and b/srcantiguo/locales/pl/LC_MESSAGES/twblue.mo differ diff --git a/srcantiguo/locales/pl/LC_MESSAGES/twblue.po b/srcantiguo/locales/pl/LC_MESSAGES/twblue.po new file mode 100644 index 00000000..b30bc1dc --- /dev/null +++ b/srcantiguo/locales/pl/LC_MESSAGES/twblue.po @@ -0,0 +1,4863 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2019 ORGANIZATION +# FIRST AUTHOR , 2019. +# zvonimir stanecic , 2023, 2025. +msgid "" +msgstr "" +"Project-Id-Version: Tw Blue 0.80\n" +"Report-Msgid-Bugs-To: manuel@manuelcortez.net\n" +"POT-Creation-Date: 2025-04-13 01:18+0000\n" +"PO-Revision-Date: 2025-08-10 16:08+0000\n" +"Last-Translator: zvonimir stanecic \n" +"Language-Team: Polish \n" +"Language: pl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " +"|| n%100>=20) ? 1 : 2;\n" +"X-Generator: Weblate 5.10.4\n" +"Generated-By: Babel 2.17.0\n" + +#: languageHandler.py:61 +msgctxt "languageName" +msgid "Amharic" +msgstr "Amharski" + +#: languageHandler.py:62 +msgctxt "languageName" +msgid "Aragonese" +msgstr "Aragoński" + +#: languageHandler.py:63 +msgctxt "languageName" +msgid "Spanish" +msgstr "Hiszpański" + +#: languageHandler.py:64 +msgctxt "languageName" +msgid "Portuguese" +msgstr "Portugalski" + +#: languageHandler.py:65 +msgctxt "languageName" +msgid "Russian" +msgstr "Rosyjski" + +#: languageHandler.py:66 +msgctxt "languageName" +msgid "italian" +msgstr "Włoski" + +#: languageHandler.py:67 +msgctxt "languageName" +msgid "Turkey" +msgstr "Turcja" + +#: languageHandler.py:68 +msgctxt "languageName" +msgid "Galician" +msgstr "Galicyjski" + +#: languageHandler.py:69 +msgctxt "languageName" +msgid "Catala" +msgstr "Kataloński" + +#: languageHandler.py:70 +msgctxt "languageName" +msgid "Vasque" +msgstr "Baskijski" + +#: languageHandler.py:71 +msgctxt "languageName" +msgid "polish" +msgstr "Polski" + +#: languageHandler.py:72 +msgctxt "languageName" +msgid "Arabic" +msgstr "Arabski" + +#: languageHandler.py:73 +msgctxt "languageName" +msgid "Nepali" +msgstr "Nepalski" + +#: languageHandler.py:74 +msgctxt "languageName" +msgid "Serbian (Latin)" +msgstr "Serbski (łaciński)" + +#: languageHandler.py:75 +msgctxt "languageName" +msgid "Japanese" +msgstr "Japoński" + +#: languageHandler.py:99 +msgid "User default" +msgstr "Domyślne dla użytkownika" + +#: main.py:105 +#, fuzzy +msgid "https://twblue.mcvsoftware.com/donate" +msgstr "https://twblue.mcvsoftware.com/donate" + +#: main.py:118 +#, python-brace-format +msgid "" +"{0} is already running. Close the other instance before starting this " +"one. If you're sure that {0} isn't running, try deleting the file at {1}." +" If you're unsure of how to do this, contact the {0} developers." +msgstr "" +"{0} już działa. Zamknij inne wystąpienie przed uruchomieniem tego. Jeśli " +"masz pewność, że {0} nie jest uruchomiona, spróbuj usunąć plik w witrynie" +" {1}. Jeśli nie wiesz, jak to zrobić, skontaktuj się z {0} deweloperami." + +#: sound.py:148 +msgid "Playing..." +msgstr "Odtwarzanie..." + +#: sound.py:161 +msgid "Stopped." +msgstr "Zatrzymane." + +#: controller/mainController.py:261 +msgid "Ready" +msgstr "Gotowy" + +#: controller/mainController.py:369 controller/mainController.py:654 +#: controller/mainController.py:673 controller/mainController.py:692 +#: controller/mainController.py:711 +msgid "" +"No session is currently in focus. Focus a session with the next or " +"previous session shortcut." +msgstr "" +"Żadna sesja nie jest obecnie podświetlona. Sfokusuj sesję na skrótach do " +"następnej lub poprzedniej sesji." + +#: controller/mainController.py:373 +msgid "Empty buffer." +msgstr "Pusty bufor." + +#: controller/mainController.py:380 +#, python-brace-format +msgid "{0} not found." +msgstr "{0} Nie został znaleziony." + +#: controller/mainController.py:702 controller/mainController.py:721 +#, python-format +msgid "%s, %s of %s" +msgstr "%s, %s %s" + +#: controller/mainController.py:704 controller/mainController.py:723 +#: controller/mainController.py:751 controller/mainController.py:779 +#, python-format +msgid "%s. Empty" +msgstr "%s. pusty" + +#: controller/mainController.py:739 controller/mainController.py:743 +#: controller/mainController.py:767 +#, python-brace-format +msgid "{0}: This account is not logged into Twitter." +msgstr "{0}: To konto nie jest zalogowane na Twitterze." + +#: controller/mainController.py:749 controller/mainController.py:777 +#, python-format +msgid "%s. %s, %s of %s" +msgstr "%s. %s, %s z %s" + +#: controller/mainController.py:771 +#, python-brace-format +msgid "{0}: This account is not logged into twitter." +msgstr "{0}: To konto nie jest aktualnie zalogowane do Twittera." + +#: controller/mainController.py:910 controller/mainController.py:926 +msgid "An error happened while trying to connect to the server. Please try later." +msgstr "" +"Zdarzył się nieoczekiwany błąd podczas próby nawiązywania połączenia na " +"serwer. proszę spróbować później." + +#: controller/mainController.py:957 +msgid "The auto-reading of new tweets is enabled for this buffer" +msgstr "Automatyczne odczytywanie nowych tweetów zostało włączone dla tej zakładki" + +#: controller/mainController.py:960 +msgid "The auto-reading of new tweets is disabled for this buffer" +msgstr "" +"Automatyczne odczytywanie nowych tweetów zostało wyłączone dla tej " +"zakładki" + +#: controller/mainController.py:967 +msgid "Session mute on" +msgstr "Wyciszenie sesji włączone" + +#: controller/mainController.py:970 +msgid "Session mute off" +msgstr "Wyciszenie sesji wyłączone" + +#: controller/mainController.py:979 +msgid "Buffer mute on" +msgstr "Wyciszenie zakładki włączone" + +#: controller/mainController.py:982 +msgid "Buffer mute off" +msgstr "Wyciszenie zakładki wyłączone" + +#: controller/mainController.py:999 +msgid "Copied" +msgstr "Skopiowano" + +#: controller/mainController.py:1019 +msgid "Unable to update this buffer." +msgstr "Nie udało się odświeżyć ten bufor." + +#: controller/mainController.py:1021 +msgid "Updating buffer..." +msgstr "odświeżam bufor..." + +#: controller/mainController.py:1024 +#, python-brace-format +msgid "{0} items retrieved" +msgstr "{0} elementów dostarczono" + +#: controller/buffers/mastodon/base.py:137 controller/mainController.py:1028 +#: controller/mastodon/handler.py:98 controller/mastodon/handler.py:241 +#, python-brace-format +msgid "Timeline for {}" +msgstr "Oś czasu {}" + +#: controller/buffers/mastodon/users.py:93 controller/mainController.py:1030 +#: controller/mastodon/handler.py:100 controller/mastodon/handler.py:255 +#, python-brace-format +msgid "Followers for {}" +msgstr "śledzący dla {}" + +#: controller/mainController.py:1032 +#, python-brace-format +msgid "Friends for {}" +msgstr "przyjaciele dla {}" + +# | msgid "Followers for {}" +#: controller/buffers/mastodon/users.py:95 controller/mainController.py:1034 +#: controller/mastodon/handler.py:102 controller/mastodon/handler.py:269 +#, python-brace-format +msgid "Following for {}" +msgstr "Śledzący użytkownika {}" + +#: controller/messages.py:18 +msgid "Translated" +msgstr "Przetłumaczono" + +#: controller/settings.py:60 +msgid "System default" +msgstr "Domyślne ustawienie systemowe" + +#: controller/settings.py:60 +msgid "HTTP" +msgstr "HTTP" + +#: controller/settings.py:60 +msgid "SOCKS v4" +msgstr "SOCKS v4" + +#: controller/settings.py:60 +msgid "SOCKS v4 with DNS support" +msgstr "SOCKS v4 z obsługą DNS" + +#: controller/settings.py:60 +msgid "SOCKS v5" +msgstr "SOCKS v5" + +#: controller/settings.py:60 +msgid "SOCKS v5 with DNS support" +msgstr "SOCKS v5 z obsługą DNS" + +#: controller/userAlias.py:31 +#, python-brace-format +msgid "Edit alias for {}" +msgstr "Edytuj alias dla {}" + +#: controller/buffers/base/base.py:91 +#: controller/buffers/mastodon/conversations.py:237 +#: controller/buffers/mastodon/search.py:80 +msgid "This action is not supported for this buffer" +msgstr "Ta operacja nie jest wspierana w tym buforze" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:70 +#: controller/mastodon/settings.py:194 +msgid "Home" +msgstr "Główna" + +#: controller/buffers/mastodon/base.py:52 +#: controller/buffers/mastodon/community.py:22 +#: controller/mastodon/handler.py:72 controller/mastodon/handler.py:114 +#: controller/mastodon/settings.py:195 +msgid "Local" +msgstr "Lokalna" + +#: controller/buffers/mastodon/base.py:52 +#: controller/buffers/mastodon/community.py:22 +#: controller/mastodon/handler.py:74 controller/mastodon/settings.py:196 +msgid "Federated" +msgstr "federowana" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:76 +#: controller/mastodon/settings.py:197 +msgid "Mentions" +msgstr "Wzmianki" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:84 +#: controller/mastodon/settings.py:201 +msgid "Bookmarks" +msgstr "Zakładki" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:78 +msgid "Direct messages" +msgstr "Wiadomości prywatne" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:80 +#: controller/mastodon/settings.py:199 +msgid "Sent" +msgstr "Wysłane" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:82 +#: controller/mastodon/settings.py:200 wxUI/dialogs/mastodon/postDialogs.py:229 +msgid "Favorites" +msgstr "Ulubione" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:86 +#: controller/mastodon/settings.py:202 +msgid "Followers" +msgstr "Śledzący" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:88 +#: controller/mastodon/settings.py:203 +msgid "Following" +msgstr "Śledzące" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:92 +#: controller/mastodon/settings.py:204 +msgid "Blocked users" +msgstr "Zablokowani użytkownicy" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:90 +#: controller/mastodon/settings.py:205 +msgid "Muted users" +msgstr "Wyciszeni użytkownicy" + +# | msgid "&Location" +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:94 +#: controller/mastodon/settings.py:206 +#: wxUI/dialogs/mastodon/filters/create_filter.py:80 +msgid "Notifications" +msgstr "Powiadomienia" + +#: controller/buffers/mastodon/base.py:58 +#, python-brace-format +msgid "{username}'s timeline" +msgstr "Oś czasu {username}a" + +#: controller/buffers/mastodon/base.py:60 +#, python-brace-format +msgid "{username}'s followers" +msgstr "śledzeni {username}a" + +# | msgid "{username}'s followers" +#: controller/buffers/mastodon/base.py:62 +#, python-brace-format +msgid "{username}'s following" +msgstr "Śledzeni użytkownika {username}" + +#: controller/buffers/mastodon/base.py:64 +msgid "Unknown buffer" +msgstr "Nieznany bufor" + +#: controller/buffers/mastodon/base.py:67 +#: controller/buffers/mastodon/base.py:645 wxUI/buffers/mastodon/base.py:24 +#: wxUI/buffers/mastodon/conversationList.py:24 +#: wxUI/buffers/mastodon/notifications.py:22 wxUI/buffers/mastodon/user.py:18 +#: wxUI/dialogs/mastodon/postDialogs.py:5 +#: wxUI/dialogs/mastodon/postDialogs.py:194 wxUI/sysTrayIcon.py:35 +msgid "Post" +msgstr "Post" + +# | msgid "Write the tweet here" +#: controller/buffers/mastodon/base.py:68 +#: controller/buffers/mastodon/base.py:646 +msgid "Write your post here" +msgstr "Napisz swój post tutaj" + +# | msgid "New tweet in {0}" +#: controller/buffers/mastodon/base.py:153 +#, python-brace-format +msgid "New post in {0}" +msgstr "Nowy post w {0}" + +# | msgid "{0} new tweets in {1}." +#: controller/buffers/mastodon/base.py:159 +#, python-brace-format +msgid "{0} new posts in {1}." +msgstr "{0} nowych postów w {1}." + +#: controller/buffers/mastodon/base.py:198 +#: controller/buffers/mastodon/community.py:90 +#: controller/buffers/mastodon/conversations.py:100 +#: controller/buffers/mastodon/mentions.py:82 +#: controller/buffers/mastodon/users.py:139 +#, python-format +msgid "%s items retrieved" +msgstr "Pobrano %s elementów" + +#: controller/buffers/mastodon/base.py:216 +#: controller/buffers/mastodon/users.py:206 +msgid "This buffer is not a timeline; it can't be deleted." +msgstr "Ta zakładka nie jest osią czasu; nie można jej usunąć." + +# | msgid "Conversation with {0}" +#: controller/buffers/mastodon/base.py:346 +#: controller/buffers/mastodon/base.py:384 +#, python-brace-format +msgid "Conversation with {}" +msgstr "Konwersacja z {}" + +# | msgid "Write the tweet here" +#: controller/buffers/mastodon/base.py:347 +#: controller/buffers/mastodon/base.py:385 +#: controller/buffers/mastodon/conversations.py:181 +#: controller/buffers/mastodon/notifications.py:122 +#: controller/buffers/mastodon/users.py:52 +msgid "Write your message here" +msgstr "Napisz swoją wiadomość tutaj" + +# | msgid "Reply to {arg0}" +#: controller/buffers/mastodon/base.py:349 +#, python-brace-format +msgid "Reply to {}" +msgstr "Odpowiedź dla {}" + +# | msgid "Write the tweet here" +#: controller/buffers/mastodon/base.py:350 +msgid "Write your reply here" +msgstr "Napisz swoją odpowiedź tutaj" + +#: controller/buffers/mastodon/base.py:412 +msgid "This action is not supported on conversations." +msgstr "Ta akcja nie jest obsługiwana w konwersacjach." + +#: controller/buffers/mastodon/base.py:477 +msgid "Opening URL..." +msgstr "Otwieranie adresu..." + +#: controller/buffers/mastodon/base.py:490 +msgid "You can delete only your own posts." +msgstr "Możesz usuwać tylko swoje posty." + +#: controller/buffers/mastodon/base.py:519 +msgid "Opening item in web browser..." +msgstr "Otwieram element w przeglądarce..." + +#: controller/buffers/mastodon/base.py:527 +#: controller/buffers/mastodon/base.py:547 +msgid "Adding to favorites..." +msgstr "Dodaję do ulubionych..." + +# | msgid "Remove from list" +#: controller/buffers/mastodon/base.py:534 +#: controller/buffers/mastodon/base.py:549 +msgid "Removing from favorites..." +msgstr "Usuwanie z ulubionych..." + +#: controller/buffers/mastodon/base.py:544 +#: controller/buffers/mastodon/base.py:559 +#: controller/buffers/mastodon/base.py:573 +#: controller/buffers/mastodon/conversations.py:213 +msgid "No status found with that ID" +msgstr "Nie znaleziono statusu o tym ID" + +#: controller/buffers/mastodon/base.py:562 +msgid "Adding to bookmarks..." +msgstr "Dodaję do zakładek..." + +#: controller/buffers/mastodon/base.py:564 +msgid "Removing from bookmarks..." +msgstr "Usuwam z zakładek..." + +#: controller/buffers/mastodon/base.py:586 +#, python-brace-format +msgid "Picture {0}" +msgstr "zdjęcie {0}" + +#: controller/buffers/mastodon/base.py:587 +msgid "Select the picture" +msgstr "Wybierz zdjęcie" + +#: controller/buffers/mastodon/base.py:610 +msgid "Unable to extract text" +msgstr "nie można wyodrębnić tekst" + +#: controller/buffers/mastodon/base.py:612 +msgid "OCR Result" +msgstr "Wynik Ocr" + +#: controller/buffers/mastodon/base.py:627 +msgid "this poll no longer exists." +msgstr "Ta ankieta nie istnieje." + +#: controller/buffers/mastodon/base.py:630 +msgid "This poll has already expired." +msgstr "Ta ankieta już wygasła." + +#: controller/buffers/mastodon/base.py:633 +msgid "You have already voted on this poll." +msgstr "Głosowałeś już w tej ankiecie." + +#: controller/buffers/mastodon/base.py:642 +msgid "Sending vote..." +msgstr "Wysyłanie głosu..." + +# | msgid "Conversation with {0}" +#: controller/buffers/mastodon/conversations.py:180 +#, python-brace-format +msgid "Reply to conversation with {}" +msgstr "Odpowiedź do konwersacji z {}" + +# | msgid "Conversation with {0}" +#: controller/buffers/mastodon/notifications.py:121 +#: controller/buffers/mastodon/users.py:51 +#, python-brace-format +msgid "New conversation with {}" +msgstr "Nowa konwersacja z {}" + +#: controller/buffers/mastodon/notifications.py:151 +msgid "Notification dismissed." +msgstr "Powiadomienie odrzucone." + +# | msgid "There are no coordinates in this tweet" +#: controller/buffers/mastodon/users.py:110 +msgid "There are no more items in this buffer." +msgstr "W tym buforze nie ma więcej elementów." + +#: controller/mastodon/handler.py:30 wxUI/dialogs/mastodon/updateProfile.py:35 +msgid "Update Profile" +msgstr "Zaktualizuj profil" + +#: controller/mastodon/handler.py:31 wxUI/dialogs/mastodon/search.py:10 +#: wxUI/view.py:19 +msgid "&Search" +msgstr "&Szukaj" + +#: controller/mastodon/handler.py:33 wxUI/view.py:22 +msgid "Manage user aliases" +msgstr "Zarządzanie aliasami użytkowników" + +#: controller/mastodon/handler.py:35 controller/mastodon/handler.py:59 +#: wxUI/view.py:30 +msgid "&Post" +msgstr "&Post" + +#: controller/mastodon/handler.py:36 wxUI/dialogs/mastodon/menus.py:9 +#: wxUI/dialogs/mastodon/menus.py:37 wxUI/view.py:31 +msgid "Re&ply" +msgstr "&Odpowiedz" + +#: controller/mastodon/handler.py:37 wxUI/dialogs/mastodon/menus.py:7 +#: wxUI/dialogs/mastodon/menus.py:35 wxUI/view.py:32 +msgid "&Boost" +msgstr "&Przekaż dalej" + +# | msgid "&Add to list" +#: controller/mastodon/handler.py:38 wxUI/dialogs/mastodon/menus.py:11 +#: wxUI/dialogs/mastodon/menus.py:39 wxUI/view.py:33 +msgid "&Add to favorites" +msgstr "Dodaj do &ulubionych" + +# | msgid "Remove from list" +#: controller/mastodon/handler.py:39 +msgid "Remove from favorites" +msgstr "Usuń z ulubionych" + +# | msgid "&Show user" +#: controller/mastodon/handler.py:40 wxUI/dialogs/mastodon/menus.py:21 +#: wxUI/dialogs/mastodon/menus.py:49 wxUI/view.py:35 +msgid "&Show post" +msgstr "&Pokaż post" + +#: controller/mastodon/handler.py:41 wxUI/view.py:36 +msgid "View conversa&tion" +msgstr "Zobacz &konwersację" + +#: controller/mastodon/handler.py:42 wxUI/view.py:37 +msgid "Read text in picture" +msgstr "Przeczytaj tekst z obrazka" + +#: controller/mastodon/handler.py:43 wxUI/dialogs/mastodon/menus.py:25 +#: wxUI/view.py:39 +msgid "&Delete" +msgstr "&Usuń" + +#: controller/mastodon/handler.py:45 wxUI/view.py:43 +msgid "&Actions..." +msgstr "&Czynności..." + +#: controller/mastodon/handler.py:46 wxUI/view.py:44 +msgid "&View timeline..." +msgstr "&Zobacz oś czasu..." + +#: controller/mastodon/handler.py:47 wxUI/view.py:45 +msgid "Direct me&ssage" +msgstr "Wiadomość &prywatna" + +#: controller/mastodon/handler.py:48 wxUI/view.py:46 +msgid "Add a&lias" +msgstr "Dodaj a&lias" + +#: controller/mastodon/handler.py:51 +msgid "Show user profile" +msgstr "Pokaż profil użytkownika" + +#: controller/mastodon/handler.py:54 +msgid "Create c&ommunity timeline" +msgstr "Stwórz &oś czasu społeczności" + +#: controller/mastodon/handler.py:55 wxUI/view.py:57 +msgid "Create a &filter" +msgstr "Utwórz &filtr" + +#: controller/mastodon/handler.py:56 wxUI/view.py:58 +msgid "&Manage filters" +msgstr "&Zarządzanie filtrami" + +#: controller/mastodon/handler.py:95 +msgid "Timelines" +msgstr "Osi czasu" + +#: controller/mastodon/handler.py:107 +msgid "Searches" +msgstr "Wyszukiwania" + +#: controller/mastodon/handler.py:110 controller/mastodon/handler.py:191 +#: controller/mastodon/handler.py:196 +#, python-brace-format +msgid "Search for {}" +msgstr "Wyszukiwanie {}" + +#: controller/mastodon/handler.py:111 +msgid "Communities" +msgstr "Społeczności" + +#: controller/mastodon/handler.py:114 +msgid "federated" +msgstr "federowana" + +#: controller/mastodon/handler.py:143 +#, python-brace-format +msgid "Conversation with {0}" +msgstr "Konwersacja z {0}" + +#: controller/mastodon/handler.py:299 +msgid "Add an user alias" +msgstr "Dodawanie aliasu użytkownika" + +#: controller/mastodon/handler.py:311 +#, python-brace-format +msgid "Alias has been set correctly for {}." +msgstr "Alias został ustawiony poprawnie dla {}." + +#: controller/mastodon/handler.py:342 +#, fuzzy +msgid "Update profile" +msgstr "&Edytuj profil" + +#: controller/mastodon/messages.py:115 +#, python-format +msgid "%s - %s of %d characters" +msgstr "%s - %s z %d znaków" + +#: controller/mastodon/messages.py:239 +#, python-brace-format +msgid "Poll with {} options" +msgstr "Ankieta z opcjami {}" + +# | msgid "List for {}" +#: controller/mastodon/messages.py:272 +#, python-brace-format +msgid "Post from {}" +msgstr "Post od {}" + +#: controller/mastodon/messages.py:276 sessions/mastodon/templates.py:82 +#: wxUI/dialogs/mastodon/postDialogs.py:49 +msgid "Public" +msgstr "Publiczna" + +# | msgid "Accounts list" +#: controller/mastodon/messages.py:276 sessions/mastodon/templates.py:82 +#: wxUI/dialogs/mastodon/postDialogs.py:49 +msgid "Not listed" +msgstr "Niewymienione na liście" + +# | msgid "Followers" +#: controller/mastodon/messages.py:276 +msgid "followers only" +msgstr "Tylko obserwujący" + +# | msgid "Direct message" +#: controller/mastodon/messages.py:276 sessions/mastodon/templates.py:82 +#: wxUI/dialogs/mastodon/postDialogs.py:49 +msgid "Direct" +msgstr "Bezpośrednio" + +# | msgid "Remove client" +#: controller/mastodon/messages.py:283 +msgid "Remote instance" +msgstr "Zdalna instancja" + +#: controller/mastodon/messages.py:291 controller/mastodon/messages.py:319 +#, fuzzy +msgid "Unmute conversation" +msgstr "Zobacz konwersację" + +#: controller/mastodon/messages.py:315 wxUI/dialogs/mastodon/postDialogs.py:237 +#, fuzzy +msgid "Mute conversation" +msgstr "Zobacz konwersację" + +# | msgid "Conversation with {0}" +#: controller/mastodon/messages.py:316 +#, fuzzy +msgid "Conversation unmuted." +msgstr "Konwersacja z {}" + +# | msgid "Conversation with {0}" +#: controller/mastodon/messages.py:320 +#, fuzzy +msgid "Conversation muted." +msgstr "Konwersacja z {}" + +#: controller/mastodon/messages.py:331 +msgid "people who boosted this post" +msgstr "" + +#: controller/mastodon/messages.py:336 +msgid "people who favorited this post" +msgstr "" + +#: controller/mastodon/messages.py:342 +msgid "Link copied to clipboard." +msgstr "Link skopiowany do schowka." + +#: controller/mastodon/settings.py:82 +#, python-format +msgid "Account settings for %s" +msgstr "Ustawienia konta %s" + +#: controller/mastodon/settings.py:92 +#, python-brace-format +msgid "Edit template for posts. Current template: {}" +msgstr "Edytuj szablon postów. Obecny szablon: {}" + +#: controller/mastodon/settings.py:101 +#, python-brace-format +msgid "Edit template for conversations. Current template: {}" +msgstr "Edytuj szablon dla konwersacji. Obecny szablon: {}" + +#: controller/mastodon/settings.py:110 +#, python-brace-format +msgid "Edit template for persons. Current template: {}" +msgstr "Edytuj szablon dla osób. Obecny szablon: {}" + +#: controller/mastodon/settings.py:198 +msgid "Direct Messages" +msgstr "wiadomości prywatne" + +#: controller/mastodon/filters/create_filter.py:75 +#, fuzzy, python-brace-format +msgid "Update Filter: {}" +msgstr "&Edytuj profil" + +#: controller/mastodon/filters/manage_filters.py:57 +#: wxUI/dialogs/mastodon/filters/create_filter.py:90 +msgid "Never" +msgstr "" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:4 +msgid "Audio tweet." +msgstr "Tweet audio" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:5 +msgid "User timeline buffer created." +msgstr "Stworzono zakładkę osi czasu użytkownika" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:6 +msgid "Buffer destroied." +msgstr "Zamknięto zakładkę" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:7 +msgid "Direct message received." +msgstr "Otrzymano wiadomość prywatną." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:8 +msgid "Direct message sent." +msgstr "Wysłano wiadomość prywatną" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:9 +msgid "Error." +msgstr "Błąd." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:10 +msgid "Tweet liked." +msgstr "Polubiono Tweet." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:11 +msgid "Likes buffer updated." +msgstr "Bufor polubieni uaktualniony." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:12 +msgid "Geotweet." +msgstr "Tweet zawierający współrzędne." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:13 +msgid "Tweet contains one or more images" +msgstr "Tweet zawiera jeden lub wiele obrazków" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:14 +msgid "Boundary reached." +msgstr "Granica osiągnięta." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:15 +msgid "List updated." +msgstr "Lista została zaktualizowana." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:16 +msgid "Too many characters." +msgstr "Zbyt wiele znaków." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:17 +msgid "Mention received." +msgstr "Otrzymano wzmiankę." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:18 +msgid "New event." +msgstr "Nowe zdarzenie." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:19 +#, python-brace-format +msgid "{0} is ready." +msgstr "{0} gotowy" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:20 +msgid "Mention sent." +msgstr "Wysłano wzmiankę." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:21 +msgid "Tweet retweeted." +msgstr "Podano tweeta dalej." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:22 +msgid "Search buffer updated." +msgstr "Zakładka wyszukiwania uaktualniona." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:23 +msgid "Tweet received." +msgstr "Otrzymano tweet." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:24 +msgid "Tweet sent." +msgstr "Wysłano tweeta." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:25 +msgid "Trending topics buffer updated." +msgstr "Zakładka trendów uaktualniona." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:26 +msgid "New tweet in user timeline buffer." +msgstr "Nowy tweet w zakładce osi czasu użytkownika." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:27 +msgid "New follower." +msgstr "Nowy obserwujący." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:28 +msgid "Volume changed." +msgstr "Zmieniono głośność." + +#: extra/SoundsTutorial/wx_ui.py:8 +msgid "Sounds tutorial" +msgstr "Przewodnik dźwiękowy" + +#: extra/SoundsTutorial/wx_ui.py:11 +msgid "Press enter to listen to the sound for the selected event" +msgstr "Naciśnij enter, aby usłyszeć dźwięk dla wybranego wydarzenia" + +#: extra/SpellChecker/spellchecker.py:56 +#, python-format +msgid "Misspelled word: %s" +msgstr "Błędnie napisany wyraz: %s" + +#: extra/SpellChecker/wx_ui.py:27 +msgid "Misspelled word" +msgstr "Błędnie napisany wyraz" + +#: extra/SpellChecker/wx_ui.py:32 +msgid "Context" +msgstr "Kontekst" + +#: extra/SpellChecker/wx_ui.py:37 +msgid "Suggestions" +msgstr "Sugestie" + +#: extra/SpellChecker/wx_ui.py:42 +msgid "&Ignore" +msgstr "&Ignoruj" + +#: extra/SpellChecker/wx_ui.py:43 +msgid "I&gnore all" +msgstr "I&gnoruj wszystko" + +#: extra/SpellChecker/wx_ui.py:44 +msgid "&Replace" +msgstr "&zamień" + +#: extra/SpellChecker/wx_ui.py:45 +msgid "R&eplace all" +msgstr "z&amień wszystko" + +#: extra/SpellChecker/wx_ui.py:46 +msgid "&Add to personal dictionary" +msgstr "&Dodaj do słownika osobistego" + +#: extra/SpellChecker/wx_ui.py:79 +#, python-brace-format +msgid "" +"An error has occurred. There are no dictionaries available for the " +"selected language in {0}" +msgstr "Wystąpił błąd. Brak zainstalowanych słowników dla wybranego języka w {0}." + +#: extra/SpellChecker/wx_ui.py:79 +#: extra/autocompletionUsers/mastodon/wx_scan.py:44 +#: wxUI/commonMessageDialogs.py:23 wxUI/commonMessageDialogs.py:36 +#: wxUI/commonMessageDialogs.py:45 wxUI/commonMessageDialogs.py:52 +#: wxUI/commonMessageDialogs.py:55 wxUI/commonMessageDialogs.py:61 +#: wxUI/dialogs/mastodon/dialogs.py:38 wxUI/dialogs/mastodon/dialogs.py:43 +#: wxUI/dialogs/mastodon/dialogs.py:48 wxUI/dialogs/mastodon/dialogs.py:53 +#: wxUI/dialogs/mastodon/dialogs.py:60 +msgid "Error" +msgstr "Błąd" + +#: extra/SpellChecker/wx_ui.py:82 +msgid "Spell check complete." +msgstr "Sprawdzanie pisowni zakończone." + +#: extra/autocompletionUsers/completion.py:39 +#: extra/autocompletionUsers/completion.py:57 +msgid "You have to start writing" +msgstr "" + +# | msgid "There are no coordinates in this tweet" +#: extra/autocompletionUsers/completion.py:49 +#: extra/autocompletionUsers/completion.py:66 +#, fuzzy +msgid "There are no results in your users database" +msgstr "W tym buforze nie ma więcej elementów." + +#: extra/autocompletionUsers/completion.py:51 +#, fuzzy +msgid "Autocompletion only works for users." +msgstr "Automatycznie &uzupełniaj użytkowników" + +#: extra/autocompletionUsers/wx_manage.py:9 +#, fuzzy +msgid "Manage Autocompletion database" +msgstr "Zarządzanie bazą danych autouzupełniania" + +#: extra/autocompletionUsers/wx_manage.py:12 +#, fuzzy, python-brace-format +msgid "Editing {0} users database" +msgstr "Edytowanie aliasów użytkowników" + +#: extra/autocompletionUsers/wx_manage.py:13 +#, fuzzy +msgid "Username" +msgstr "Użytkownik" + +#: extra/autocompletionUsers/wx_manage.py:13 wxUI/dialogs/configuration.py:108 +msgid "Name" +msgstr "Nazwa wyświetlana" + +#: extra/autocompletionUsers/wx_manage.py:16 +#, fuzzy +msgid "Add user" +msgstr "Użytkownik" + +#: extra/autocompletionUsers/wx_manage.py:17 +#, fuzzy +msgid "Remove user" +msgstr "Usuwanie aliasu użytkownika" + +#: extra/autocompletionUsers/wx_manage.py:38 +msgid "Twitter username" +msgstr "" + +#: extra/autocompletionUsers/wx_manage.py:38 +#, fuzzy +msgid "Add user to database" +msgstr "Dodawanie aliasu użytkownika" + +#: extra/autocompletionUsers/wx_manage.py:44 +#, fuzzy +msgid "The user does not exist" +msgstr "Ten Użytkownik nie istnieje" + +#: extra/autocompletionUsers/wx_manage.py:44 +#, fuzzy +msgid "Error!" +msgstr "Błąd" + +#: extra/autocompletionUsers/mastodon/scan.py:49 +msgid "" +"Updating database... You can close this window now. A message will tell " +"you when the process finishes." +msgstr "" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:8 +#, fuzzy +msgid "Autocomplete users' settings" +msgstr "Automatycznie &uzupełniaj użytkowników" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:11 +#, fuzzy +msgid "Add &followers to database" +msgstr "Dodawanie aliasu użytkownika" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:12 +#, fuzzy +msgid "Add f&ollowing to database" +msgstr "Dodawanie aliasu użytkownika" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:26 +#, fuzzy +msgid "Updating autocompletion database" +msgstr "Zarządzanie bazą danych autouzupełniania" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:34 +msgid "" +"This process will retrieve the users you selected from your Mastodon " +"account, and add them to the user autocomplete database. Please note that" +" if there are many users or you have tried to perform this action less " +"than 15 minutes ago, TWBlue may reach a limit in API calls when trying to" +" load the users into the database. If this happens, we will show you an " +"error, in which case you will have to try this process again in a few " +"minutes. If this process ends with no error, you will be redirected back " +"to the account settings dialog. Do you want to continue?" +msgstr "" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:34 +#: wxUI/commonMessageDialogs.py:20 +msgid "Attention" +msgstr "Uwaga" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:40 +#, python-brace-format +msgid "TWBlue has imported {} users successfully." +msgstr "" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:40 +#, fuzzy +msgid "Done" +msgstr "Gotowe!" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:44 +msgid "Error adding users from Mastodon. Please try again in about 15 minutes." +msgstr "" + +#: extra/ocr/OCRSpace.py:7 +msgid "Detect automatically" +msgstr "Wykryj automatycznie" + +#: extra/ocr/OCRSpace.py:7 +msgid "Danish" +msgstr "duński" + +#: extra/ocr/OCRSpace.py:7 +msgid "Dutch" +msgstr "holenderski" + +#: extra/ocr/OCRSpace.py:7 +msgid "English" +msgstr "angielski" + +#: extra/ocr/OCRSpace.py:7 +msgid "Finnish" +msgstr "ffiński" + +#: extra/ocr/OCRSpace.py:7 +msgid "French" +msgstr "francuski" + +#: extra/ocr/OCRSpace.py:7 +msgid "German" +msgstr "niemiecki" + +#: extra/ocr/OCRSpace.py:7 +msgid "Hungarian" +msgstr "węgierski" + +#: extra/ocr/OCRSpace.py:7 +msgid "Korean" +msgstr "koreański" + +#: extra/ocr/OCRSpace.py:7 +msgid "Italian" +msgstr "włoski" + +#: extra/ocr/OCRSpace.py:7 +msgid "Japanese" +msgstr "japoński" + +#: extra/ocr/OCRSpace.py:7 +msgid "Polish" +msgstr "polski" + +#: extra/ocr/OCRSpace.py:7 +msgid "Portuguese" +msgstr "portugalski" + +#: extra/ocr/OCRSpace.py:7 +msgid "Russian" +msgstr "rosyjski" + +#: extra/ocr/OCRSpace.py:7 +msgid "Spanish" +msgstr "hiszpański" + +#: extra/ocr/OCRSpace.py:7 +msgid "Turkish" +msgstr "turecki" + +#: extra/translator/wx_ui.py:25 +msgid "Translate message" +msgstr "Przetłumacz" + +#: extra/translator/wx_ui.py:29 +#, fuzzy +msgid "Translation engine" +msgstr "&Przetłumacz" + +#: extra/translator/wx_ui.py:32 +msgid "Target language" +msgstr "Język docelowy" + +#: keystrokeEditor/wx_ui.py:8 +msgid "Keystroke editor" +msgstr "Edytor skrótów klawiszowych" + +#: keystrokeEditor/wx_ui.py:11 +msgid "Select a keystroke to edit" +msgstr "Wybierz skrót, który chcesz zmienić" + +#: keystrokeEditor/wx_ui.py:12 +#: wxUI/dialogs/mastodon/filters/manage_filters.py:18 +#: wxUI/dialogs/mastodon/userActions.py:9 +#: wxUI/dialogs/mastodon/userActions.py:18 +#: wxUI/dialogs/mastodon/userActions.py:19 +msgid "Action" +msgstr "Czynność" + +#: keystrokeEditor/wx_ui.py:12 +msgid "Keystroke" +msgstr "Skrót" + +#: keystrokeEditor/wx_ui.py:17 +#: wxUI/dialogs/mastodon/filters/manage_filters.py:23 +#: wxUI/dialogs/userAliasDialogs.py:53 +msgid "Edit" +msgstr "Edytuj" + +#: keystrokeEditor/wx_ui.py:19 keystrokeEditor/wx_ui.py:49 +msgid "Undefine keystroke" +msgstr "Usuń skrót" + +#: keystrokeEditor/wx_ui.py:20 +msgid "Execute action" +msgstr "Wykonaj akcję" + +#: keystrokeEditor/wx_ui.py:21 wxUI/dialogs/userAliasDialogs.py:25 +msgid "Close" +msgstr "Zamknij" + +#: keystrokeEditor/wx_ui.py:41 +msgid "Undefined" +msgstr "Niezdefiniowany" + +#: keystrokeEditor/wx_ui.py:49 +msgid "Are you sure you want to undefine this keystroke?" +msgstr "Czy naprawdę chcesz usunąć ten skrót?" + +#: keystrokeEditor/wx_ui.py:53 +msgid "Editing keystroke" +msgstr "Edycja skrótu" + +#: keystrokeEditor/wx_ui.py:56 +msgid "Control" +msgstr "ctrl" + +#: keystrokeEditor/wx_ui.py:57 +msgid "Alt" +msgstr "Alt" + +#: keystrokeEditor/wx_ui.py:58 +msgid "Shift" +msgstr "Shift" + +#: keystrokeEditor/wx_ui.py:59 +msgid "Windows" +msgstr "Windows" + +#: keystrokeEditor/wx_ui.py:65 +msgid "Key" +msgstr "klawisz" + +#: keystrokeEditor/wx_ui.py:70 wxUI/dialogs/find.py:21 +#: wxUI/dialogs/mastodon/showUserProfile.py:31 +#: wxUI/dialogs/userAliasDialogs.py:23 +msgid "OK" +msgstr "OK" + +#: keystrokeEditor/wx_ui.py:83 +msgid "You need to use the Windows key" +msgstr "Musisz użyć klawisza Windows" + +#: keystrokeEditor/wx_ui.py:83 keystrokeEditor/wx_ui.py:86 +msgid "Invalid keystroke" +msgstr "Niepoprawny skrót klawiszowy" + +#: keystrokeEditor/wx_ui.py:86 +msgid "You must provide a character for the keystroke" +msgstr "Musisz podać znak, aby utworzyć skrót" + +#: keystrokeEditor/actions/mastodon.py:3 +msgid "Go up in the current buffer" +msgstr "Przejdź w górę obecnej listy" + +#: keystrokeEditor/actions/mastodon.py:4 +msgid "Go down in the current buffer" +msgstr "Przejdź w dół obecnej listy" + +#: keystrokeEditor/actions/mastodon.py:5 +msgid "Go to the previous buffer" +msgstr "Przejdź do poprzedniej zakładki" + +#: keystrokeEditor/actions/mastodon.py:6 +msgid "Go to the next buffer" +msgstr "Przejdź do następnej zakładki" + +#: keystrokeEditor/actions/mastodon.py:7 +msgid "Focus the next session" +msgstr "Podświetl następną sesję" + +#: keystrokeEditor/actions/mastodon.py:8 +msgid "Focus the previous session" +msgstr "Podświetl poprzednią sesję" + +#: keystrokeEditor/actions/mastodon.py:9 +msgid "Show or hide the GUI" +msgstr "Pokaż / ukryj interfejs graficzny" + +# | msgid "Create a new list" +#: keystrokeEditor/actions/mastodon.py:10 +msgid "Make a new post" +msgstr "Utwórz nowy post" + +#: keystrokeEditor/actions/mastodon.py:11 wxUI/buffers/mastodon/base.py:26 +#: wxUI/buffers/mastodon/conversationList.py:25 +msgid "Reply" +msgstr "Odpowiedz" + +#: keystrokeEditor/actions/mastodon.py:12 wxUI/buffers/mastodon/base.py:25 +#: wxUI/dialogs/mastodon/dialogs.py:7 +msgid "Boost" +msgstr "Przekaź dalej" + +#: keystrokeEditor/actions/mastodon.py:13 +msgid "Send direct message" +msgstr "Wyślij wiadomość prywatną" + +#: keystrokeEditor/actions/mastodon.py:14 +msgid "Add post to favorites" +msgstr "Dodaj post do ulubionych" + +# | msgid "Remove from list" +#: keystrokeEditor/actions/mastodon.py:15 +msgid "Remove post from favorites" +msgstr "Usuń post z ulubionych" + +#: keystrokeEditor/actions/mastodon.py:16 +msgid "Add/remove post from favorites" +msgstr "Dodaj/usuń post z ulubionych" + +#: keystrokeEditor/actions/mastodon.py:17 +msgid "Open the user actions dialogue" +msgstr "Otwórz menu akcji użytkownika" + +#: keystrokeEditor/actions/mastodon.py:18 +#, fuzzy +msgid "See user details" +msgstr "Usuwanie aliasu użytkownika" + +# | msgid "Show tweet" +#: keystrokeEditor/actions/mastodon.py:19 +msgid "Show post" +msgstr "Pokaż post" + +#: keystrokeEditor/actions/mastodon.py:20 +msgid "Quit" +msgstr "Wyjdź" + +#: keystrokeEditor/actions/mastodon.py:21 +msgid "Open user timeline" +msgstr "Otwórz oś czasu użytkownika" + +#: keystrokeEditor/actions/mastodon.py:22 +msgid "Destroy buffer" +msgstr "Zamknij zakładkę" + +# | msgid "Interact with the currently focused tweet." +#: keystrokeEditor/actions/mastodon.py:23 +msgid "Interact with the currently focused post." +msgstr "Interakcja z aktualnie aktywnym postem." + +#: keystrokeEditor/actions/mastodon.py:24 +msgid "Open URL" +msgstr "Otwórz link" + +# | msgid "View in Twitter" +#: keystrokeEditor/actions/mastodon.py:25 +msgid "View in browser" +msgstr "Wyświetl w przeglądarce internetowej" + +#: keystrokeEditor/actions/mastodon.py:26 +msgid "Increase volume by 5%" +msgstr "Zwiększ głośność o 5%" + +#: keystrokeEditor/actions/mastodon.py:27 +msgid "Decrease volume by 5%" +msgstr "Zmniejsz głośność o 5%" + +#: keystrokeEditor/actions/mastodon.py:28 +msgid "Jump to the first element of a buffer" +msgstr "Przeskocz do pierwszego elementu w zakładce" + +#: keystrokeEditor/actions/mastodon.py:29 +msgid "Jump to the last element of the current buffer" +msgstr "Przeskocz do ostatniego elementu w zakładce" + +#: keystrokeEditor/actions/mastodon.py:30 +msgid "Jump 20 elements up in the current buffer" +msgstr "Przeskocz 20 elementów w górę obecnej zakładki" + +#: keystrokeEditor/actions/mastodon.py:31 +msgid "Jump 20 elements down in the current buffer" +msgstr "Przeskocz 20 elementów w dół obecnej zakładki" + +# | msgid "Delete" +#: keystrokeEditor/actions/mastodon.py:33 +msgid "Delete post" +msgstr "Usuń post" + +#: keystrokeEditor/actions/mastodon.py:34 +msgid "Empty the current buffer" +msgstr "Opróżnij aktualną zakładkę" + +#: keystrokeEditor/actions/mastodon.py:35 +msgid "Repeat last item" +msgstr "Powtórz ostatni element" + +#: keystrokeEditor/actions/mastodon.py:36 +msgid "Copy to clipboard" +msgstr "Skopiuj do schowka" + +#: keystrokeEditor/actions/mastodon.py:39 +msgid "Mute/unmute the active buffer" +msgstr "Włącz/wyłącz wyciszenie aktywnej zakładki" + +#: keystrokeEditor/actions/mastodon.py:40 +msgid "Mute/unmute the current session" +msgstr "Wycisz/wyłącz wyciszenie obecnej sesji" + +#: keystrokeEditor/actions/mastodon.py:41 +msgid "toggle the automatic reading of incoming tweets in the active buffer" +msgstr "Przełącz automatyczny odczyt przychodzących tweetów w obecnej zakładce" + +# | msgid "Search on twitter" +#: keystrokeEditor/actions/mastodon.py:42 +msgid "Search on instance" +msgstr "Szukaj na instancji" + +#: keystrokeEditor/actions/mastodon.py:43 +msgid "Find a string in the currently focused buffer" +msgstr "Znajdź frazę w aktualnie podświetlonej zakładce" + +#: keystrokeEditor/actions/mastodon.py:44 +msgid "Show the keystroke editor" +msgstr "Pokaż edytor skrótów klawiszowych" + +#: keystrokeEditor/actions/mastodon.py:46 +msgid "load previous items" +msgstr "Załaduj poprzednie elementy" + +#: keystrokeEditor/actions/mastodon.py:48 +msgid "View conversation" +msgstr "Zobacz konwersację" + +#: keystrokeEditor/actions/mastodon.py:49 +msgid "Check and download updates" +msgstr "Sprawdź i pobierz uaktualnienia" + +#: keystrokeEditor/actions/mastodon.py:50 +msgid "Opens the global settings dialogue" +msgstr "Otwarza dialog ustawień globalnych" + +#: keystrokeEditor/actions/mastodon.py:52 +msgid "Opens the account settings dialogue" +msgstr "Otwarza dialog ustawień kont" + +# | msgid "Try to play an audio file" +#: keystrokeEditor/actions/mastodon.py:53 +msgid "Try to play a media file" +msgstr "Spróbuj odtworzyć plik multimedialny" + +#: keystrokeEditor/actions/mastodon.py:54 +msgid "Updates the buffer and retrieves possible lost items there." +msgstr "Aktualizuje bufor i pobiera możliwe utracone elementy tam." + +#: keystrokeEditor/actions/mastodon.py:55 +msgid "Extracts the text from a picture and displays the result in a dialog." +msgstr "Wyodrębnia tekst z obrazu i wyświetla wynik w oknie dialogowym." + +#: keystrokeEditor/actions/mastodon.py:56 +msgid "Adds an alias to an user" +msgstr "Dodaje alias do użytkownika" + +#: sessionmanager/sessionManager.py:69 +#, python-brace-format +msgid "{account_name}@{instance} (Mastodon)" +msgstr "{account_name}@{instance} (Mastodon)" + +#: sessionmanager/wxUI.py:11 +msgid "Session manager" +msgstr "Menedżer sesji" + +#: sessionmanager/wxUI.py:14 +msgid "Accounts list" +msgstr "Lista kont" + +#: sessionmanager/wxUI.py:16 +msgid "Account" +msgstr "Konto" + +#: sessionmanager/wxUI.py:20 +msgid "New account" +msgstr "Nowe konto" + +#: sessionmanager/wxUI.py:22 sessionmanager/wxUI.py:79 +msgid "Remove account" +msgstr "Usuń konto" + +#: sessionmanager/wxUI.py:24 +msgid "Global Settings" +msgstr "Ustawienia globalne." + +#: sessionmanager/wxUI.py:48 +msgid "You need to configure an account." +msgstr "Musisz skonfigurować konto" + +#: sessionmanager/wxUI.py:48 +msgid "Account Error" +msgstr "Błąd konta" + +#: sessionmanager/wxUI.py:54 +msgid "Mastodon" +msgstr "Mastodon" + +#: sessionmanager/wxUI.py:59 +msgid "" +"You will be prompted for your Mastodon data (instance URL, email address " +"and password) so we can authorise TWBlue in your instance. Would you like" +" to authorise your account now?" +msgstr "" +"Zostaniesz poproszony o podanie danych Mastodona (adres URL instancji, " +"adres e-mail i hasło), abyśmy mogli autoryzować TWBlue w Twojej " +"instancji. Chcesz teraz autoryzować swoje konto?" + +#: sessionmanager/wxUI.py:59 +msgid "Authorization" +msgstr "Autoryzacja" + +#: sessionmanager/wxUI.py:67 +#, python-format +msgid "Authorized account %d" +msgstr "autoryzowane konto %d" + +#: sessionmanager/wxUI.py:73 +msgid "" +"Your access token is invalid or the authorization has failed. Please try " +"again." +msgstr "" +"Twój token dostępu jest nieprawidłowy bądź autoryzacja nie powiodła się. " +"Spróbuj ponownie." + +#: sessionmanager/wxUI.py:73 +msgid "Invalid user token" +msgstr "Nieprawidłowy token użytkownika" + +#: sessionmanager/wxUI.py:79 +msgid "Do you really want to delete this account?" +msgstr "Czy napewno chcesz usunąć to konto?" + +#: sessions/base.py:125 +#, python-brace-format +msgid "" +"An exception occurred while saving the {app} database. It will be deleted" +" and rebuilt automatically. If this error persists, send the error log to" +" the {app} developers." +msgstr "" +"Wystąpił wyjątek podczas zapisywania bazy danych {app}. Zostanie on " +"automatycznie usunięty i odbudowany. Jeśli ten błąd będzie się powtarzał," +" wyślij dziennik błędów do {app} deweloperów." + +#: sessions/base.py:165 +#, python-brace-format +msgid "" +"An exception occurred while loading the {app} database. It will be " +"deleted and rebuilt automatically. If this error persists, send the error" +" log to the {app} developers." +msgstr "" +"Wystąpił wyjątek podczas ładowania bazy danych {app}. Zostanie on " +"automatycznie usunięty i odbudowany. Jeśli ten błąd będzie się powtarzał," +" wyślij dziennik błędów do {app} deweloperów." + +# | msgid "dddd, MMMM D, YYYY H:m:s" +#: sessions/mastodon/compose.py:15 sessions/mastodon/compose.py:61 +msgid "dddd, MMMM D, YYYY H:m" +msgstr "dddd, MMMM D, YYYY H:m" + +# | msgid "{0}. Quoted tweet from @{1}: {2}" +#: sessions/mastodon/compose.py:17 sessions/mastodon/templates.py:74 +#: sessions/mastodon/templates.py:75 +#, python-brace-format +msgid "Boosted from @{}: {}" +msgstr "Przekazane dalej od @{}: {}" + +#: sessions/mastodon/compose.py:22 sessions/mastodon/compose.py:81 +#: sessions/mastodon/templates.py:81 sessions/mastodon/templates.py:176 +#, python-brace-format +msgid "hidden by filter {}" +msgstr "" + +#: sessions/mastodon/compose.py:36 sessions/mastodon/templates.py:28 +msgid "dddd, MMMM D, YYYY H:m:s" +msgstr "dddd, MMMM D, YYYY H:m:s" + +# | msgid "" +# | "%s (@%s). %s followers, %s friends, %s tweets. Last tweeted %s. Joined " +# | "Twitter %s" +#: sessions/mastodon/compose.py:38 +#, python-format +msgid "%s (@%s). %s followers, %s following, %s posts. Joined %s" +msgstr "%s (@%s). %s obserwowanych, %s obserwujących, %s postów. Dołączył %s" + +#: sessions/mastodon/compose.py:49 +#, python-brace-format +msgid "Last message from {}: {}" +msgstr "Ostatnia wiadomość od {}: {}" + +# | msgid "{username}'s followers" +#: sessions/mastodon/compose.py:64 +#, python-brace-format +msgid "{username} has posted: {status}" +msgstr "{username} opublikował: {status}" + +# | msgid "{username}'s followers" +#: sessions/mastodon/compose.py:66 +#, python-brace-format +msgid "{username} has mentioned you: {status}" +msgstr "{username} wspomniał o Tobie: {status}" + +#: sessions/mastodon/compose.py:68 +#, python-brace-format +msgid "{username} has boosted: {status}" +msgstr "{username} wysłał dalej: {status}" + +#: sessions/mastodon/compose.py:70 +#, python-brace-format +msgid "{username} has added to favorites: {status}" +msgstr "{username} dodał do ulubionych: {status}" + +# | msgid "{username}'s followers" +#: sessions/mastodon/compose.py:72 +#, python-brace-format +msgid "{username} has followed you." +msgstr "{username} zaczął cie obserwowaću." + +# | msgid "{username}'s followers" +#: sessions/mastodon/compose.py:74 +#, python-brace-format +msgid "{username} has joined the instance." +msgstr "{username} dołączył do instancji." + +#: sessions/mastodon/compose.py:76 sessions/mastodon/templates.py:171 +#, python-brace-format +msgid "A poll in which you have voted has expired: {status}" +msgstr "Ankieta, w której głosowałeś wygasła: {status}" + +# | msgid "{username}'s followers" +#: sessions/mastodon/compose.py:78 +#, python-brace-format +msgid "{username} wants to follow you." +msgstr "{username} chcę cie obserwować." + +#: sessions/mastodon/session.py:69 +msgid "Please enter your instance URL." +msgstr "Wprowadź adres URL instancji." + +#: sessions/mastodon/session.py:69 +msgid "Mastodon instance" +msgstr "Instancja Mastodona" + +#: sessions/mastodon/session.py:80 +msgid "" +"We could not connect to your mastodon instance. Please verify that the " +"domain exists and the instance is accessible via a web browser." +msgstr "" +"Nie mogliśmy połączyć się z twoją instancją mastodona. Sprawdź, czy " +"domena istnieje, a instancja jest dostępna za pośrednictwem przeglądarki " +"internetowej." + +# | msgid "&Report an error" +#: sessions/mastodon/session.py:80 +msgid "Instance error" +msgstr "Błąd instancji" + +#: sessions/mastodon/session.py:85 +msgid "Enter the verification code" +msgstr "Wprowadź kod weryfikacyjny" + +# | msgid "Authorization" +#: sessions/mastodon/session.py:85 +msgid "PIN code authorization" +msgstr "Autoryzacja kodu PIN" + +#: sessions/mastodon/session.py:94 +msgid "" +"We could not authorice your mastodon account to be used in TWBlue. This " +"might be caused due to an incorrect verification code. Please try to add " +"the session again." +msgstr "" +"Nie mogliśmy autoryzować Twojego konta mastodon do wykorzystania w " +"TWBlue. Może to być spowodowane nieprawidłowym kodem weryfikacyjnym. " +"Spróbuj ponownie dodać sesję." + +# | msgid "Authorization" +#: sessions/mastodon/session.py:94 +msgid "Authorization error" +msgstr "Błąd autoryzacji" + +#: sessions/mastodon/session.py:215 +#, python-format +msgid "%s succeeded." +msgstr "%s powiódł się." + +#: sessions/mastodon/templates.py:18 +msgid "$display_name, $text $image_descriptions $date. $source" +msgstr "$display_name, $text $image_descriptions $date. $source" + +#: sessions/mastodon/templates.py:19 +msgid "Dm to $recipient_display_name, $text $date" +msgstr "Dm do $recipient_display_name, $text $date" + +#: sessions/mastodon/templates.py:20 +msgid "" +"$display_name (@$screen_name). $followers followers, $following " +"following, $posts posts. Joined $created_at." +msgstr "" +"$display_name (@$screen_nazwa). $followers obserwujących, $following " +"obserwujących, $posts posty. Dołączył do $created_at." + +#: sessions/mastodon/templates.py:21 +msgid "$display_name $text, $date" +msgstr "$display_name $text, $date" + +#: sessions/mastodon/templates.py:34 +#, python-brace-format +msgid "Content warning: {}" +msgstr "Ostrzeżenie dotyczące zawartości: {}" + +#: sessions/mastodon/templates.py:45 +#, python-brace-format +msgid "Media description: {}" +msgstr "Opis multimedia: {}" + +# | msgid "Followers" +#: sessions/mastodon/templates.py:82 wxUI/dialogs/mastodon/postDialogs.py:49 +msgid "Followers only" +msgstr "Tylko śledzący" + +#: sessions/mastodon/templates.py:94 +#, fuzzy +msgid "Pinned." +msgstr "Skopiowano" + +#: sessions/mastodon/templates.py:157 +#, python-brace-format +msgid "has posted: {status}" +msgstr "opublikował: {status}" + +#: sessions/mastodon/templates.py:159 +#, python-brace-format +msgid "has mentioned you: {status}" +msgstr "wspomniał o Tobie: {status}" + +#: sessions/mastodon/templates.py:161 +#, python-brace-format +msgid "has boosted: {status}" +msgstr "przekazał: {status}" + +#: sessions/mastodon/templates.py:163 +#, python-brace-format +msgid "has added to favorites: {status}" +msgstr "Dodał do ulubionych: {status}" + +#: sessions/mastodon/templates.py:165 +#, python-brace-format +msgid "has updated a status: {status}" +msgstr "zaktualizował status: {status}" + +# | msgid "{0} is following you." +#: sessions/mastodon/templates.py:167 +msgid "has followed you." +msgstr "Zaczął cie śledzić." + +# | msgid "Remove client" +#: sessions/mastodon/templates.py:169 +msgid "has joined the instance." +msgstr "dołączył do instancji." + +# | msgid "{0} is following you." +#: sessions/mastodon/templates.py:173 +msgid "wants to follow you." +msgstr "Chce cie obserwować." + +#: update/utils.py:29 +#, python-format +msgid "%d day, " +msgstr "%d dzień, " + +#: update/utils.py:31 +#, python-format +msgid "%d days, " +msgstr "%d dni, " + +#: update/utils.py:33 +#, python-format +msgid "%d hour, " +msgstr "%d godzina, " + +#: update/utils.py:35 +#, python-format +msgid "%d hours, " +msgstr "%d godzin, " + +#: update/utils.py:37 +#, python-format +msgid "%d minute, " +msgstr "%d minuta, " + +#: update/utils.py:39 +#, python-format +msgid "%d minutes, " +msgstr "%d minut, " + +#: update/utils.py:41 +#, python-format +msgid "%s second" +msgstr "%s sekunda" + +#: update/utils.py:43 +#, python-format +msgid "%s seconds" +msgstr "%s sekund" + +#: update/wxUpdater.py:11 +#, python-format +msgid "" +"There's a new %s version available, released on %s. Would you like to " +"download it now?\n" +"\n" +" %s version: %s\n" +"\n" +"Changes:\n" +"%s" +msgstr "" +"dostępna jest nowa wersja %s, wydana %s. czy chcesz pobrać ją teraz?\n" +"\n" +" %s wersja: %s\n" +"\n" +"Zmiany:\n" +"%s" + +# | msgid "" +# | "There's a new %s version available, released on %s. Would you like to " +# | "download it now?\n" +# | "\n" +# | " %s version: %s\n" +# | "Changes:\n" +# | "%s" +#: update/wxUpdater.py:14 +#, python-format +msgid "" +"There's a new %s version available, released on %s. Updates are not " +"automatic in Windows 7, so you would need to visit TWBlue's download " +"website to get the latest version.\n" +"\n" +" %s version: %s\n" +"\n" +"Changes:\n" +"%s" +msgstr "" +"Dostępna jest nowa wersja %s, wydana w dniu %s. Aktualizacje nie są " +"automatyczne w systemie Windows 7, więc musisz odwiedzić stronę " +"pobierania TWBlue, aby uzyskać najnowszą wersję.\n" +"\n" +"Wersja %s: %s\n" +"\n" +"Zmiany:\n" +"%s" + +#: update/wxUpdater.py:16 +#, python-format +msgid "New version for %s" +msgstr "Nowa wersja %s" + +#: update/wxUpdater.py:23 +msgid "Download in Progress" +msgstr "Pobieranie w toku" + +#: update/wxUpdater.py:23 +msgid "Downloading the new version..." +msgstr "Pobieranie nowej wersji..." + +#: update/wxUpdater.py:33 +#, python-format +msgid "Updating... %s of %s" +msgstr "Aktualizowanie... %s z%s" + +#: update/wxUpdater.py:36 +msgid "" +"The update has been downloaded and installed successfully. Press OK to " +"continue." +msgstr "" +"Nowa wersja Tw Blue została pobrana i zainstalowana. Naciśnij OK, aby " +"kontynuować." + +#: update/wxUpdater.py:36 +msgid "Done!" +msgstr "Gotowe!" + +#: wxUI/commonMessageDialogs.py:6 +#, python-brace-format +msgid "Do you really want to close {0}?" +msgstr "Czy napewno chcesz zamknąć {0}?" + +#: wxUI/commonMessageDialogs.py:6 +msgid "Exit" +msgstr "Wyjdź" + +#: wxUI/commonMessageDialogs.py:10 +#, python-brace-format +msgid " {0} must be restarted for these changes to take effect." +msgstr " {0} musi zostać uruchomiony ponownie, aby zmiany odniosły skutek." + +#: wxUI/commonMessageDialogs.py:10 +#, python-brace-format +msgid "Restart {0} " +msgstr "Uruchom {0} ponownie" + +#: wxUI/commonMessageDialogs.py:13 +msgid "" +"Are you sure you want to delete this user from the database? This user " +"will not appear in autocomplete results anymore." +msgstr "" +"Czy napewno chcesz usunąć tego użytkownika z bazy danych? Ten użytkownik " +"nigdy więcej nie będzie pokazywany na liście bazy danych." + +#: wxUI/commonMessageDialogs.py:13 +msgid "Confirm" +msgstr "Potwierdź" + +#: wxUI/commonMessageDialogs.py:16 +msgid "" +"Do you really want to empty this buffer? It's items will be removed from" +" the list but not from Twitter" +msgstr "" +"Czy napewno chcesz opróżnić tę zakładkę? Wszystkie tweety zostaną " +"usunięte z listy, ale nie z Twittera." + +#: wxUI/commonMessageDialogs.py:16 wxUI/dialogs/mastodon/dialogs.py:31 +msgid "Empty buffer" +msgstr "Pusta zakładka" + +#: wxUI/commonMessageDialogs.py:20 +msgid "Do you really want to destroy this buffer?" +msgstr "Czy napewno chcesz usunąć ten bufor?" + +#: wxUI/commonMessageDialogs.py:23 +msgid "That user does not exist" +msgstr "Ten Użytkownik nie istnieje" + +#: wxUI/commonMessageDialogs.py:26 +msgid "A timeline for this user already exists. You can't open another" +msgstr "Oś czasu tego użytkownika jest już otwarta. Nie możesz otworzyć kolejnej." + +#: wxUI/commonMessageDialogs.py:26 +msgid "Existing timeline" +msgstr "Istniejąca oś czasu" + +#: wxUI/commonMessageDialogs.py:29 +#, python-brace-format +msgid "" +"If you like {0} we need your help to keep it going. Help us by donating " +"to the project. This will help us pay for the server, the domain and some" +" other things to ensure that {0} will be actively maintained. Your " +"donation will give us the means to continue the development of {0}, and " +"to keep {0} free. Would you like to donate now?" +msgstr "" +"Jeśli podoba Ci się {0} potrzebujemy Twojej pomocy, abyśmy go mogli " +"rozwijać. Pomóż nam przez dotacje na projekt. To pomoże nam płacić za " +"serwer, domenę i kilka innych rzeczy, aby upewnić się, że {0} będzie " +"aktywnie rozwijany. Twoja darowizna da nam środki na dalszy rozwój {0} i " +"utrzymanie {0} bezpłatnym. Chcesz wesprzeć teraz?" + +#: wxUI/commonMessageDialogs.py:29 +msgid "We need your help" +msgstr "Potrzebujemy Twojej pomocy" + +#: wxUI/commonMessageDialogs.py:33 wxUI/dialogs/mastodon/postDialogs.py:207 +msgid "Information" +msgstr "informacja" + +#: wxUI/commonMessageDialogs.py:36 +msgid "The configuration file is invalid." +msgstr "Plik konfiguracyjny jest nieprawidłowy." + +#: wxUI/commonMessageDialogs.py:39 +#, python-brace-format +msgid "" +"{0} quit unexpectedly the last time it was run. If the problem persists, " +"please report it to the {0} developers." +msgstr "" +"{0} został nieoczekiwanie zamknięty przed ostatnim uruchomieniem. jeżeli " +"problem jeszcze występuje, Proszę go zgłosićdo deweloperów {0}." + +#: wxUI/commonMessageDialogs.py:39 +msgid "Warning" +msgstr "Ostrzeżenie" + +#: wxUI/commonMessageDialogs.py:45 +#, python-brace-format +msgid "Sorry, you can't update while running {} from source." +msgstr "" + +#: wxUI/commonMessageDialogs.py:49 +msgid "the provided instance is invalid. Please try again." +msgstr "" + +#: wxUI/commonMessageDialogs.py:49 +#, fuzzy +msgid "Invalid instance" +msgstr "Instancja Mastodona" + +#: wxUI/commonMessageDialogs.py:52 +msgid "" +"TWBlue was unable to add or update the filter with the specified " +"settings. Please try again." +msgstr "" + +#: wxUI/commonMessageDialogs.py:55 +msgid "" +"TWBlue was unable to load your filters from the instance. Please try " +"again." +msgstr "" + +#: wxUI/commonMessageDialogs.py:58 +#, fuzzy +msgid "Do you really want to delete this filter ?" +msgstr "Czy napewno chcesz usunąć to konto?" + +#: wxUI/commonMessageDialogs.py:58 +#, fuzzy +msgid "Delete filter" +msgstr "Utwórz &filtr" + +#: wxUI/commonMessageDialogs.py:61 +msgid "TWBlue was unable to remove the filter you specified. Please try again." +msgstr "" + +#: wxUI/sysTrayIcon.py:36 wxUI/view.py:25 +msgid "&Global settings" +msgstr "Ustawienia globalne" + +#: wxUI/sysTrayIcon.py:37 wxUI/view.py:24 +msgid "Account se&ttings" +msgstr "Ustawienia &konta" + +#: wxUI/sysTrayIcon.py:39 +msgid "&Show / hide" +msgstr "Pokaż / ukryj" + +#: wxUI/sysTrayIcon.py:40 wxUI/view.py:74 +msgid "&Documentation" +msgstr "&Dokumentacja" + +#: wxUI/sysTrayIcon.py:41 +msgid "Check for &updates" +msgstr "Sprawdź czy jest nowa wersja" + +#: wxUI/sysTrayIcon.py:42 +msgid "&Exit" +msgstr "Wyjdź" + +#: wxUI/view.py:16 +msgid "&Manage accounts" +msgstr "&Zarządzaj kontami" + +#: wxUI/view.py:17 +msgid "&Update profile" +msgstr "&Edytuj profil" + +#: wxUI/view.py:18 +msgid "&Hide window" +msgstr "&Ukryj okno" + +#: wxUI/view.py:20 +msgid "&Lists manager" +msgstr "&Menedżer list" + +#: wxUI/view.py:23 +msgid "&Edit keystrokes" +msgstr "&Edytuj skróty klawiszowe" + +#: wxUI/view.py:26 +msgid "E&xit" +msgstr "&Wyjście" + +# | msgid "Remove from list" +#: wxUI/view.py:34 +msgid "&Remove from favorites" +msgstr "Usuń z &ulubionych" + +#: wxUI/view.py:47 +msgid "&Add to list" +msgstr "&Dodaj do listy" + +#: wxUI/view.py:48 +msgid "R&emove from list" +msgstr "&Usuń z listy" + +#: wxUI/view.py:49 +msgid "Show user &profile" +msgstr "&Pokaż profil użytkownika" + +#: wxUI/view.py:50 +msgid "V&iew likes" +msgstr "&zobacz polubienia" + +#: wxUI/view.py:54 +msgid "&Update buffer" +msgstr "&Odśwież bufor" + +#: wxUI/dialogs/mastodon/communityTimeline.py:9 wxUI/view.py:55 +msgid "Create community timeline" +msgstr "" + +#: wxUI/view.py:56 +msgid "New &trending topics buffer..." +msgstr "Nowa zakładka &trendów" + +#: wxUI/view.py:59 +msgid "Find a string in the currently focused buffer..." +msgstr "Znajdź frazę w obecnie podświetlonej zakładce" + +#: wxUI/view.py:60 +msgid "&Load previous items" +msgstr "&Załaduj poprzednie elementy" + +#: wxUI/dialogs/mastodon/userActions.py:21 wxUI/view.py:62 +msgid "&Mute" +msgstr "&Wycisz" + +#: wxUI/view.py:63 +msgid "&Autoread" +msgstr "&Autoodczyt" + +#: wxUI/view.py:64 +msgid "&Clear buffer" +msgstr "&Wyczyść zawartość bufora" + +#: wxUI/view.py:65 +msgid "&Destroy" +msgstr "&Zamknij" + +#: wxUI/view.py:69 +msgid "&Seek back 5 seconds" +msgstr "&Przewiń do tyłu o 5 sekund" + +#: wxUI/view.py:70 +msgid "&Seek forward 5 seconds" +msgstr "Przewiń do &przodu o 5 sekund" + +#: wxUI/view.py:75 +msgid "Sounds &tutorial" +msgstr "&Samouczek dźwięków" + +#: wxUI/view.py:76 +msgid "&What's new in this version?" +msgstr "&Co nowego w tej wersji?" + +#: wxUI/view.py:77 +msgid "&Check for updates" +msgstr "&Sprawdź czy jest nowa wersja" + +#: wxUI/view.py:78 +msgid "&Report an error" +msgstr "&Zgłoś błąd" + +#: wxUI/view.py:79 +#, python-brace-format +msgid "{0}'s &website" +msgstr "&Strona internetowa {0}" + +#: wxUI/view.py:80 +msgid "Get soundpacks for TWBlue" +msgstr "Pobierz paczki dźwiękowe do TW blue" + +#: wxUI/view.py:81 +#, python-brace-format +msgid "About &{0}" +msgstr "O &{0}" + +#: wxUI/view.py:84 +msgid "&Application" +msgstr "&Program" + +#: wxUI/view.py:85 +msgid "&Tweet" +msgstr "&Tweet" + +#: wxUI/dialogs/mastodon/userActions.py:10 wxUI/view.py:86 +msgid "&User" +msgstr "&Użytkownik" + +#: wxUI/view.py:87 +msgid "&Buffer" +msgstr "&Bufor" + +#: wxUI/view.py:88 +msgid "&Audio" +msgstr "&Audio" + +#: wxUI/view.py:89 +msgid "&Help" +msgstr "&Pomoc" + +#: wxUI/view.py:175 +msgid "Address" +msgstr "Adres" + +#: wxUI/view.py:206 +#, python-brace-format +msgid "Your {0} version is up to date" +msgstr "Twoja wersja {0} jest aktualna" + +#: wxUI/view.py:206 +msgid "Update" +msgstr "Aktualizacja" + +#: wxUI/buffers/panels.py:12 wxUI/buffers/panels.py:20 +msgid "Login" +msgstr "Zaloguj" + +#: wxUI/buffers/panels.py:14 +msgid "Log in automatically" +msgstr "Zaloguj automatycznie" + +#: wxUI/buffers/panels.py:22 +msgid "Logout" +msgstr "Wyloguj" + +#: wxUI/buffers/mastodon/base.py:11 +#: wxUI/buffers/mastodon/conversationList.py:11 wxUI/buffers/mastodon/user.py:8 +#: wxUI/dialogs/mastodon/userTimeline.py:10 wxUI/dialogs/userAliasDialogs.py:14 +msgid "User" +msgstr "Użytkownik" + +#: wxUI/buffers/mastodon/base.py:11 +#: wxUI/buffers/mastodon/conversationList.py:11 +#: wxUI/buffers/mastodon/notifications.py:11 +#: wxUI/dialogs/mastodon/postDialogs.py:37 +#: wxUI/dialogs/mastodon/postDialogs.py:272 +msgid "Text" +msgstr "Tekst" + +#: wxUI/buffers/mastodon/base.py:11 +#: wxUI/buffers/mastodon/conversationList.py:11 +#: wxUI/buffers/mastodon/notifications.py:11 +#: wxUI/dialogs/mastodon/postDialogs.py:216 +msgid "Date" +msgstr "Data" + +#: wxUI/buffers/mastodon/base.py:11 +#: wxUI/buffers/mastodon/conversationList.py:11 +msgid "Client" +msgstr "Klient" + +#: wxUI/buffers/mastodon/base.py:27 +msgid "Favorite" +msgstr "Ulubione" + +#: wxUI/buffers/mastodon/base.py:28 +msgid "Bookmark" +msgstr "Zakładka" + +#: wxUI/buffers/mastodon/base.py:29 +msgid "Direct message" +msgstr "Wiadomość prywatna" + +#: wxUI/buffers/mastodon/notifications.py:23 +#: wxUI/dialogs/mastodon/dialogs.py:23 +msgid "Dismiss" +msgstr "Odrzuć" + +#: wxUI/buffers/mastodon/user.py:19 wxUI/dialogs/userAliasDialogs.py:48 +msgid "Actions" +msgstr "Czynności" + +# | msgid "Direct Messages" +#: wxUI/buffers/mastodon/user.py:20 +msgid "Message" +msgstr "Wiadomość" + +#: wxUI/dialogs/configuration.py:15 +#, fuzzy +msgid "&Language" +msgstr "Język" + +#: wxUI/dialogs/configuration.py:22 +#, fuzzy, python-brace-format +msgid "&Ask before exiting {0}" +msgstr "Pytaj przed wyjściem z {0}" + +#: wxUI/dialogs/configuration.py:24 +#, fuzzy +msgid "&Disable Streaming functions" +msgstr "Wyłącz funkcje strumieniowania" + +#: wxUI/dialogs/configuration.py:27 +#, fuzzy +msgid "&Buffer update interval, in minutes" +msgstr "Czas odświeżania bufora, w minutach" + +#: wxUI/dialogs/configuration.py:33 +#, fuzzy, python-brace-format +msgid "Pla&y a sound when {0} launches" +msgstr "Odtwarzaj dźwięk podczas uruchamiania {0}" + +#: wxUI/dialogs/configuration.py:35 +#, fuzzy, python-brace-format +msgid "Sp&eak a message when {0} launches" +msgstr "Wypowiadaj komunikat podczas uruchamiania {0}" + +#: wxUI/dialogs/configuration.py:37 +#, fuzzy +msgid "&Use invisible interface's keyboard shortcuts while GUI is visible" +msgstr "" +"Używaj skrótów klawiszowych niewidzialnego interfejsu w interfejsie " +"graficznym" + +#: wxUI/dialogs/configuration.py:39 +#, fuzzy +msgid "A&ctivate Sapi5 when any other screen reader is not being run" +msgstr "Aktywuj SAPI5, gdy nie jest uruchomiony żaden program odczytu ekranu" + +#: wxUI/dialogs/configuration.py:41 +#, fuzzy +msgid "&Hide GUI on launch" +msgstr "Ukryj interfejs graficzny po uruchomieniu" + +#: wxUI/dialogs/configuration.py:43 +msgid "&Read long posts in GUI" +msgstr "" + +#: wxUI/dialogs/configuration.py:46 +#, fuzzy +msgid "&Keymap" +msgstr "Przypisanie klawiszy" + +#: wxUI/dialogs/configuration.py:51 +#, fuzzy, python-brace-format +msgid "Check for u&pdates when {0} launches" +msgstr "sprawdź aktualizację gdy {0} się uruchomi" + +#: wxUI/dialogs/configuration.py:61 +#, fuzzy +msgid "Proxy &type: " +msgstr "typ serwera proxy: " + +#: wxUI/dialogs/configuration.py:68 +#, fuzzy +msgid "Proxy s&erver: " +msgstr "Serwer proksy:" + +#: wxUI/dialogs/configuration.py:74 +#, fuzzy +msgid "&Port: " +msgstr "Port:" + +#: wxUI/dialogs/configuration.py:80 +#, fuzzy +msgid "&User: " +msgstr "Użytkownik:" + +#: wxUI/dialogs/configuration.py:86 +#, fuzzy +msgid "P&assword: " +msgstr "Hasło:" + +#: wxUI/dialogs/configuration.py:98 +#, fuzzy +msgid "Enable automatic s&peech feedback" +msgstr "włącz automatyczne czytanie" + +#: wxUI/dialogs/configuration.py:100 +#, fuzzy +msgid "Enable automatic &Braille feedback" +msgstr "włącz automatyczne wyświetlanie wiadomości w brajlu" + +#: wxUI/dialogs/configuration.py:108 +msgid "Buffer" +msgstr "Zakładka" + +#: wxUI/dialogs/configuration.py:108 +msgid "Status" +msgstr "Status" + +#: wxUI/dialogs/configuration.py:111 +#, fuzzy +msgid "S&how/hide" +msgstr "Pokaż/ukryj" + +#: wxUI/dialogs/configuration.py:112 +#, fuzzy +msgid "Move &up" +msgstr "Przejdź w górę" + +#: wxUI/dialogs/configuration.py:113 +#, fuzzy +msgid "Move &down" +msgstr "Przejdź w dół" + +#: wxUI/dialogs/configuration.py:123 wxUI/dialogs/configuration.py:188 +#: wxUI/dialogs/configuration.py:191 wxUI/dialogs/configuration.py:196 +msgid "Show" +msgstr "Pokaż" + +#: wxUI/dialogs/configuration.py:125 wxUI/dialogs/configuration.py:135 +#: wxUI/dialogs/configuration.py:159 wxUI/dialogs/configuration.py:189 +msgid "Hide" +msgstr "Ukryj" + +#: wxUI/dialogs/configuration.py:133 wxUI/dialogs/configuration.py:157 +msgid "Select a buffer first." +msgstr "Najpierw wybierz zakładkę." + +#: wxUI/dialogs/configuration.py:136 wxUI/dialogs/configuration.py:160 +msgid "The buffer is hidden, show it first." +msgstr "Zakładka jest ukryta,najpierw ją pokaż." + +#: wxUI/dialogs/configuration.py:139 +msgid "The buffer is already at the top of the list." +msgstr "Zakładka jest już na górze listy." + +#: wxUI/dialogs/configuration.py:163 +msgid "The buffer is already at the bottom of the list." +msgstr "Zakładka jest już na dole listy." + +#: wxUI/dialogs/configuration.py:205 +msgid "&LibreTranslate API URL: " +msgstr "" + +#: wxUI/dialogs/configuration.py:211 +msgid "LibreTranslate API &Key (optional): " +msgstr "" + +#: wxUI/dialogs/configuration.py:217 +msgid "&DeepL API Key: " +msgstr "" + +#: wxUI/dialogs/configuration.py:231 +#, python-brace-format +msgid "{0} preferences" +msgstr "Preferencje {0}" + +#: wxUI/dialogs/configuration.py:237 wxUI/dialogs/mastodon/configuration.py:144 +msgid "General" +msgstr "Ogólne" + +#: wxUI/dialogs/configuration.py:242 +msgid "Proxy" +msgstr "Proxy" + +#: wxUI/dialogs/configuration.py:246 +#, fuzzy +msgid "Translation services" +msgstr "&Przetłumacz" + +#: wxUI/dialogs/configuration.py:251 wxUI/dialogs/mastodon/configuration.py:170 +#, fuzzy +msgid "&Save" +msgstr "Zapisz" + +#: wxUI/dialogs/configuration.py:253 +#: wxUI/dialogs/mastodon/communityTimeline.py:27 +#: wxUI/dialogs/mastodon/configuration.py:172 +#: wxUI/dialogs/mastodon/search.py:26 +#: wxUI/dialogs/mastodon/showUserProfile.py:170 +#: wxUI/dialogs/mastodon/updateProfile.py:132 +#: wxUI/dialogs/mastodon/userActions.py:38 +#: wxUI/dialogs/mastodon/userTimeline.py:32 +msgid "&Close" +msgstr "&Zamknij" + +#: wxUI/dialogs/find.py:13 +msgid "Find in current buffer" +msgstr "Znajdź w obecnej zakładce" + +#: wxUI/dialogs/find.py:14 +msgid "String" +msgstr "Fraza" + +#: wxUI/dialogs/find.py:23 wxUI/dialogs/mastodon/showUserProfile.py:33 +msgid "Cancel" +msgstr "Anuluj" + +#: wxUI/dialogs/templateDialogs.py:8 +msgid "Edit Template" +msgstr "Edycja Szablonu" + +#: wxUI/dialogs/templateDialogs.py:13 +msgid "Edit template" +msgstr "Edytuj szablon" + +#: wxUI/dialogs/templateDialogs.py:17 +msgid "Available variables" +msgstr "Dostępne zmienne" + +#: wxUI/dialogs/templateDialogs.py:29 +msgid "Restore template" +msgstr "Przywróć szablon" + +#: wxUI/dialogs/templateDialogs.py:48 +#, python-brace-format +msgid "Restored template to {}." +msgstr "Przywrócono szablon do {}." + +#: wxUI/dialogs/templateDialogs.py:52 +msgid "" +"the template you have specified include variables that do not exists for " +"the object. Please fix the template and try again. For your reference, " +"you can see a list of all available variables in the variables list while" +" editing your template." +msgstr "" +"Określony szablon zawiera zmienne, które nie istnieją dla obiektu. Popraw" +" szablon i spróbuj ponownie. W celach informacyjnych możesz zobaczyć " +"listę wszystkich dostępnych zmiennych na liście zmiennych podczas edycji " +"szablonu." + +#: wxUI/dialogs/templateDialogs.py:52 +msgid "Invalid template" +msgstr "Nieprawidłowy szablon" + +#: wxUI/dialogs/urlList.py:6 +msgid "Select URL" +msgstr "Wybierz link" + +#: wxUI/dialogs/mastodon/userActions.py:13 +#: wxUI/dialogs/mastodon/userTimeline.py:13 wxUI/dialogs/userAliasDialogs.py:13 +msgid "&Autocomplete users" +msgstr "Automatycznie uzupełniaj użytkowników" + +#: wxUI/dialogs/userAliasDialogs.py:18 +msgid "Alias" +msgstr "Alias" + +#: wxUI/dialogs/userAliasDialogs.py:41 +msgid "Edit user aliases" +msgstr "Edytowanie aliasów użytkowników" + +#: wxUI/dialogs/mastodon/search.py:19 wxUI/dialogs/userAliasDialogs.py:43 +msgid "Users" +msgstr "Użytkownicy" + +#: wxUI/dialogs/userAliasDialogs.py:50 +msgid "Add alias" +msgstr "Dodawanie aliasu" + +#: wxUI/dialogs/userAliasDialogs.py:51 +msgid "Adds a new user alias" +msgstr "Dodaje nowy alias użytkownika" + +#: wxUI/dialogs/userAliasDialogs.py:54 +msgid "Edit the currently focused user Alias." +msgstr "Edytuj aktualnie aktywny alias użytkownika." + +#: wxUI/dialogs/mastodon/filters/create_filter.py:26 +#: wxUI/dialogs/mastodon/filters/manage_filters.py:24 +#: wxUI/dialogs/userAliasDialogs.py:57 +msgid "Remove" +msgstr "Usuń" + +#: wxUI/dialogs/userAliasDialogs.py:58 +msgid "Remove the currently focused user alias." +msgstr "Usuń aktualnie aktywny alias użytkownika." + +#: wxUI/dialogs/userAliasDialogs.py:82 +msgid "Are you sure you want to delete this user alias?" +msgstr "Czy na pewno chcesz usunąć ten alias użytkownika?" + +#: wxUI/dialogs/userAliasDialogs.py:82 +msgid "Remove user alias" +msgstr "Usuwanie aliasu użytkownika" + +#: wxUI/dialogs/userAliasDialogs.py:93 +msgid "User alias" +msgstr "Alias użytkownika" + +#: wxUI/dialogs/userList.py:27 +#, fuzzy +msgid "View profile" +msgstr "&Edytuj profil" + +#: wxUI/dialogs/mastodon/communityTimeline.py:10 +#, fuzzy +msgid "Community URL" +msgstr "ctrl" + +#: wxUI/dialogs/mastodon/communityTimeline.py:16 +#: wxUI/dialogs/mastodon/userTimeline.py:18 +msgid "Buffer type" +msgstr "Typ zakładki" + +#: wxUI/dialogs/mastodon/communityTimeline.py:17 +#, fuzzy +msgid "&Local timeline" +msgstr "Osi czasu" + +#: wxUI/dialogs/mastodon/communityTimeline.py:18 +#, fuzzy +msgid "&Federated Timeline" +msgstr "Oś czasu {username}a" + +#: wxUI/dialogs/mastodon/communityTimeline.py:25 +#: wxUI/dialogs/mastodon/search.py:24 +#: wxUI/dialogs/mastodon/updateProfile.py:130 +#: wxUI/dialogs/mastodon/userActions.py:36 +#: wxUI/dialogs/mastodon/userTimeline.py:30 +msgid "&OK" +msgstr "&OK" + +#: wxUI/dialogs/mastodon/configuration.py:14 +msgid "User autocompletion settings" +msgstr "Ustawienia autouzupełniania użytkowników" + +#: wxUI/dialogs/mastodon/configuration.py:15 +#, fuzzy +msgid "" +"Scan acc&ount and add followers and following users to the user " +"autocompletion database" +msgstr "" +"Skanuj konto i dodawaj obserwujących oraz obserwujących użytkowników do " +"bazy danych autouzupełniania użytkowników" + +#: wxUI/dialogs/mastodon/configuration.py:16 +#, fuzzy +msgid "&Manage autocompletion database" +msgstr "Zarządzanie bazą danych autouzupełniania" + +#: wxUI/dialogs/mastodon/configuration.py:21 +#, fuzzy +msgid "&Disable Streaming API endpoints" +msgstr "Wyłączanie punktów końcowych interfejsu API przesyłania strumieniowego" + +#: wxUI/dialogs/mastodon/configuration.py:23 +#, fuzzy +msgid "&Relative timestamps" +msgstr "Czasy relatywne" + +#: wxUI/dialogs/mastodon/configuration.py:25 +#, fuzzy +msgid "" +"R&ead preferences from instance (default visibility when publishing and " +"displaying sensitive content)" +msgstr "" +"Preferencje odczytu z instancji (domyślna widoczność podczas publikowania" +" i wyświetlania poufnych treści)" + +#: wxUI/dialogs/mastodon/configuration.py:28 +#, fuzzy +msgid "&Items on each API call" +msgstr "elementów przy każdym wywołaniu API" + +# | msgid "" +# | "Inverted buffers: The newest tweets will be shown at the beginning while +# " +# | "the oldest at the end" +#: wxUI/dialogs/mastodon/configuration.py:34 +#, fuzzy +msgid "" +"I&nverted buffers: The newest items will be shown at the beginning while " +"the oldest at the end" +msgstr "" +"Odwrócone: najnowsze elementy będą wyświetlane na początku, a najstarsze " +"na końcu" + +#: wxUI/dialogs/mastodon/configuration.py:36 +#, fuzzy +msgid "&Ask confirmation before boosting a post" +msgstr "Poproś o potwierdzenie przed przekazywaniem posta" + +#: wxUI/dialogs/mastodon/configuration.py:38 +#, fuzzy +msgid "S&how screen names instead of full names" +msgstr "Wyświetlaj nazwę konta twitter zamiast pełnego imienia" + +#: wxUI/dialogs/mastodon/configuration.py:40 +#, fuzzy +msgid "Hide e&mojis in usernames" +msgstr "Ukryj emotikony w nazwach użytkowników" + +#: wxUI/dialogs/mastodon/configuration.py:42 +#, fuzzy +msgid "" +"&Number of items per buffer to cache in database (0 to disable caching, " +"blank for unlimited)" +msgstr "" +"Liczba elementów przechowywanych w bazie danych (0 wyłącza " +"przechowywanie, puste dla nieograniczonej ilości)" + +#: wxUI/dialogs/mastodon/configuration.py:46 +#, fuzzy +msgid "" +"&Load cache for items in memory (much faster in big datasets but requires" +" more RAM)" +msgstr "" +"Załaduj pamięć podręczną dla elementów w pamięci (znacznie szybciej w " +"dużych zestawach danych, ale wymaga więcej pamięci RAM)" + +#: wxUI/dialogs/mastodon/configuration.py:53 +#, fuzzy, python-brace-format +msgid "Edit template for &posts. Current template: {}" +msgstr "Edytuj szablon postów. Obecny szablon: {}" + +#: wxUI/dialogs/mastodon/configuration.py:55 +#, fuzzy, python-brace-format +msgid "Edit template for c&onversations. Current template: {}" +msgstr "Edytuj szablon dla konwersacji. Obecny szablon: {}" + +#: wxUI/dialogs/mastodon/configuration.py:57 +#, fuzzy, python-brace-format +msgid "Edit template for p&ersons. Current template: {}" +msgstr "Edytuj szablon dla osób. Obecny szablon: {}" + +#: wxUI/dialogs/mastodon/configuration.py:65 +#, fuzzy +msgid "&Volume" +msgstr "Głośność" + +#: wxUI/dialogs/mastodon/configuration.py:76 +#, fuzzy +msgid "S&ession mute" +msgstr "Wyciszenie sesji" + +#: wxUI/dialogs/mastodon/configuration.py:78 +#, fuzzy +msgid "&Output device" +msgstr "Urządzenie wyjściowe" + +#: wxUI/dialogs/mastodon/configuration.py:85 +#, fuzzy +msgid "&Input device" +msgstr "Urządzenie wejściowe" + +#: wxUI/dialogs/mastodon/configuration.py:93 +#, fuzzy +msgid "Sound &pack" +msgstr "Temat dźwiękowy" + +# | msgid "Indicate audio tweets with sound" +#: wxUI/dialogs/mastodon/configuration.py:99 +#, fuzzy +msgid "Indicate &audio or video in posts with sound" +msgstr "Oznaczanie dźwięku lub wideo w postach z dźwiękiem" + +# | msgid "Indicate tweets containing images with sound" +#: wxUI/dialogs/mastodon/configuration.py:101 +#, fuzzy +msgid "Indicate posts containing i&mages with sound" +msgstr "Oznaczanie postów zawierających obrazy za pomocą dźwięku" + +#: wxUI/dialogs/mastodon/configuration.py:124 +#, fuzzy +msgid "&Language for OCR" +msgstr "język dla automatycznego rospoznawania tekstu" + +#: wxUI/dialogs/mastodon/configuration.py:149 +msgid "Feedback" +msgstr "Informacja zwrotna" + +#: wxUI/dialogs/mastodon/configuration.py:153 +msgid "Buffers" +msgstr "Zakładki" + +#: wxUI/dialogs/mastodon/configuration.py:157 +msgid "Templates" +msgstr "Szablony" + +#: wxUI/dialogs/mastodon/configuration.py:161 +msgid "Sound" +msgstr "Dźwięk" + +#: wxUI/dialogs/mastodon/configuration.py:165 +msgid "Extras" +msgstr "Dodatki" + +# | msgid "Would you like to add a comment to this tweet?" +#: wxUI/dialogs/mastodon/dialogs.py:7 +msgid "Would you like to share this post?" +msgstr "Czy chcesz udostępnić ten post?" + +# | msgid "" +# | "Do you really want to delete this tweet? It will be deleted from Twitter +# " +# | "as well." +#: wxUI/dialogs/mastodon/dialogs.py:15 +msgid "" +"Do you really want to delete this post? It will be deleted from the " +"instance as well." +msgstr "" +"Czy naprawdę chcesz usunąć ten post? Zostanie on również usunięty z " +"instancji." + +#: wxUI/dialogs/mastodon/dialogs.py:15 +msgid "Delete" +msgstr "Usuń" + +#: wxUI/dialogs/mastodon/dialogs.py:23 +msgid "" +"Are you sure you want to dismiss this notification? If you dismiss a " +"mention notification, it also disappears from your mentions buffer. The " +"post is not going to be deleted from the instance, though." +msgstr "" +"Czy na pewno chcesz odrzucić to powiadomienie? Jeśli odrzucisz " +"powiadomienie o wzmiance, zniknie ono również z bufora wzmianek. Post nie" +" zostanie jednak usunięty z instancji." + +# | msgid "" +# | "Do you really want to empty this buffer? It's items will be removed from +# " +# | "the list but not from Twitter" +#: wxUI/dialogs/mastodon/dialogs.py:31 +msgid "" +"Do you really want to empty this buffer? It's items will be removed from" +" the list but not from the instance" +msgstr "" +"Czy naprawdę chcesz opróżnić ten bufor? Jego elementy zostaną usunięte z " +"listy, ale nie z instancji" + +# | msgid "This user has no tweets. {0} can't create a timeline." +#: wxUI/dialogs/mastodon/dialogs.py:38 +#, python-brace-format +msgid "This user has no posts. {0} can't create a timeline." +msgstr "Ten użytkownik nie ma żadnych postów. {0} nie można utworzyć osi czasu." + +# | msgid "This user has no favorited tweets. {0} can't create a timeline." +#: wxUI/dialogs/mastodon/dialogs.py:43 +#, python-brace-format +msgid "This user has no favorited posts. {0} can't create a timeline." +msgstr "Ten użytkownik nie ma ulubionych postów. {0} nie można utworzyć osi czasu." + +# | msgid "This user has no followers. {0} can't create a timeline." +#: wxUI/dialogs/mastodon/dialogs.py:48 +#, python-brace-format +msgid "This user has no followers yet. {0} can't create a timeline." +msgstr "" +"Ten użytkownik nie ma jeszcze obserwujących. {0} nie można utworzyć osi " +"czasu." + +# | msgid "This user has no followers. {0} can't create a timeline." +#: wxUI/dialogs/mastodon/dialogs.py:53 +#, python-brace-format +msgid "This user is not following anyone. {0} can't create a timeline." +msgstr "Ten użytkownik nikogo nie obserwuje. {0} nie można utworzyć osi czasu." + +#: wxUI/dialogs/mastodon/dialogs.py:60 +#, python-brace-format +msgid "The focused item has no user in it. {} ca't open a user profile" +msgstr "" + +# | msgid "R&emove from list" +#: wxUI/dialogs/mastodon/menus.py:13 wxUI/dialogs/mastodon/menus.py:41 +msgid "R&emove from favorites" +msgstr "&Usuń z ulubionych" + +#: wxUI/dialogs/mastodon/menus.py:15 wxUI/dialogs/mastodon/menus.py:43 +msgid "&Open URL" +msgstr "Otwórz link" + +# | msgid "Search on twitter" +#: wxUI/dialogs/mastodon/menus.py:17 wxUI/dialogs/mastodon/menus.py:47 +#, fuzzy +msgid "&Open in instance" +msgstr "Szukaj na instancji" + +#: wxUI/dialogs/mastodon/menus.py:19 wxUI/dialogs/mastodon/menus.py:45 +msgid "&Play audio" +msgstr "&Odtwórz audio" + +#: wxUI/dialogs/mastodon/menus.py:23 wxUI/dialogs/mastodon/menus.py:51 +msgid "&Copy to clipboard" +msgstr "&Skopiuj do schowka" + +#: wxUI/dialogs/mastodon/menus.py:27 wxUI/dialogs/mastodon/menus.py:55 +msgid "&User actions..." +msgstr "Działania &użytkownika" + +#: wxUI/dialogs/mastodon/menus.py:53 +#, fuzzy +msgid "&Dismiss" +msgstr "Odrzuć" + +#: wxUI/dialogs/mastodon/postDialogs.py:20 +#: wxUI/dialogs/mastodon/postDialogs.py:38 +msgid "Attachments" +msgstr "załączniki" + +#: wxUI/dialogs/mastodon/postDialogs.py:24 +msgid "File" +msgstr "Plik" + +#: wxUI/dialogs/mastodon/postDialogs.py:25 +msgid "Type" +msgstr "typ" + +#: wxUI/dialogs/mastodon/postDialogs.py:26 +#: wxUI/dialogs/mastodon/postDialogs.py:141 +msgid "Description" +msgstr "Opis" + +# | msgid "Remove client" +#: wxUI/dialogs/mastodon/postDialogs.py:28 +msgid "Remove Attachment" +msgstr "Usuń załącznik" + +#: wxUI/dialogs/mastodon/postDialogs.py:33 +msgid "Post in the thread" +msgstr "Opublikuj w wątku" + +# | msgid "Remove from list" +#: wxUI/dialogs/mastodon/postDialogs.py:40 +msgid "Remove post" +msgstr "Usuń post" + +#: wxUI/dialogs/mastodon/postDialogs.py:47 +msgid "&Visibility" +msgstr "&Widoczność" + +#: wxUI/dialogs/mastodon/postDialogs.py:54 +#, fuzzy +msgid "Language" +msgstr "Język" + +#: wxUI/dialogs/mastodon/postDialogs.py:58 +msgid "A&dd" +msgstr "Do&daj" + +#: wxUI/dialogs/mastodon/postDialogs.py:59 +msgid "S&ensitive content" +msgstr "Treści &wraźliwe" + +#: wxUI/dialogs/mastodon/postDialogs.py:64 +msgid "Content warning" +msgstr "Ostrzeżenie dotyczące treści" + +# | msgid "Add to list" +#: wxUI/dialogs/mastodon/postDialogs.py:71 +msgid "Add p&ost" +msgstr "Dodaj p&ost" + +#: wxUI/dialogs/mastodon/postDialogs.py:75 +msgid "Auto&complete users" +msgstr "Automatycznie &uzupełniaj użytkowników" + +# | msgid "Check &spelling..." +#: wxUI/dialogs/mastodon/postDialogs.py:77 +msgid "Check &spelling" +msgstr "Sprawdzanie pisowni" + +#: wxUI/dialogs/mastodon/postDialogs.py:79 +msgid "&Translate" +msgstr "&Przetłumacz" + +# | msgid "Tweet - %i characters " +#: wxUI/dialogs/mastodon/postDialogs.py:106 +#, python-brace-format +msgid "Post - {} characters" +msgstr "Post - {} znaków" + +#: wxUI/dialogs/mastodon/postDialogs.py:130 +msgid "Image" +msgstr "Obraz" + +#: wxUI/dialogs/mastodon/postDialogs.py:132 +msgid "Video" +msgstr "Wideo" + +# | msgid "&Audio" +#: wxUI/dialogs/mastodon/postDialogs.py:134 +msgid "Audio" +msgstr "Audio" + +#: wxUI/dialogs/mastodon/postDialogs.py:136 +msgid "Poll" +msgstr "Ankieta" + +#: wxUI/dialogs/mastodon/postDialogs.py:141 +msgid "please provide a description" +msgstr "Proszę podać opis" + +#: wxUI/dialogs/mastodon/postDialogs.py:148 +msgid "Select the picture to be uploaded" +msgstr "Wybierz obraz, który chcesz wysłać" + +#: wxUI/dialogs/mastodon/postDialogs.py:148 +msgid "Image files (*.png, *.jpg, *.gif)|*.png; *.jpg; *.gif" +msgstr "Pliki obrazów (*.png, *.jpg, *.gif)|*.png; *.jpg; *.gif" + +#: wxUI/dialogs/mastodon/postDialogs.py:155 +msgid "Select the video to be uploaded" +msgstr "Wybierz wideo do przesłania" + +# | msgid "Audio Files (*.mp3, *.ogg, *.wav)|*.mp3; *.ogg; *.wav" +#: wxUI/dialogs/mastodon/postDialogs.py:155 +msgid "Video files (*.mp4, *.mov, *.m4v, *.webm)| *.mp4; *.m4v; *.mov; *.webm" +msgstr "Pliki wideo (*.mp4, *.mov, *.m4v, *.webm)| *..mp4; *..m4v; *..mov; *..webm" + +#: wxUI/dialogs/mastodon/postDialogs.py:162 +msgid "Select the audio file to be uploaded" +msgstr "Wybierz plik audio, który chcesz wysłać" + +#: wxUI/dialogs/mastodon/postDialogs.py:162 +msgid "" +"Audio files (*.mp3, *.ogg, *.wav, *.flac, *.opus, *.aac, *.m4a, " +"*.3gp)|*.mp3; *.ogg; *.wav; *.flac; *.opus; *.aac; *.m4a; *.3gp" +msgstr "" +"Pliki audio (*.mp3, *.ogg, *.wav, *.flac, *.opus, *.aac, *.m4a, " +"*.3gp)|*.mp3; *..ogg; *..wav; *.flac; *.opus; *.aac; *..m4a; *..3gp" + +#: wxUI/dialogs/mastodon/postDialogs.py:169 +msgid "" +"It is not possible to add more attachments. Please take into account that" +" You can add only a maximum of 4 images, or one audio, video or poll per" +" post. Please remove other attachments before continuing." +msgstr "" +"Nie można dodać więcej załączników. Proszę wziąć pod uwagę, że możesz " +"dodać maksymalnie 4 obrazy lub jeden dźwięk, wideo lub ankietę na post. " +"Przed kontynuowaniem usuń inne załączniki." + +#: wxUI/dialogs/mastodon/postDialogs.py:169 +msgid "Error adding attachment" +msgstr "Błąd dodawania załącznika" + +#: wxUI/dialogs/mastodon/postDialogs.py:172 +msgid "" +"You can add a poll or media files. In order to add your poll, please " +"remove other attachments first." +msgstr "" +"Możesz dodać ankietę lub pliki multimedialne. Aby dodać swoją ankietę, " +"najpierw usuń inne załączniki." + +#: wxUI/dialogs/mastodon/postDialogs.py:172 +msgid "Error adding poll" +msgstr "Błąd dodawania ankiety" + +# | msgid "Tweet - %i characters " +#: wxUI/dialogs/mastodon/postDialogs.py:177 +#, python-format +msgid "Post - %i characters " +msgstr "Post - %i znaków " + +#: wxUI/dialogs/mastodon/postDialogs.py:200 +msgid "Image description" +msgstr "opis zdjęcia" + +# | msgid "Private" +#: wxUI/dialogs/mastodon/postDialogs.py:210 +msgid "Privacy" +msgstr "Prywatność" + +#: wxUI/dialogs/mastodon/postDialogs.py:214 +#, fuzzy +msgid "Source" +msgstr "źródło: " + +#: wxUI/dialogs/mastodon/postDialogs.py:222 +#, fuzzy +msgid "Boosts" +msgstr "Przekazania: " + +#: wxUI/dialogs/mastodon/postDialogs.py:224 +msgid "View users who boosted this post" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:231 +msgid "View users who favorited this post" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:239 +msgid "Copy link to clipboard" +msgstr "Skopiuj link do schowka" + +#: wxUI/dialogs/mastodon/postDialogs.py:241 +#: wxUI/dialogs/mastodon/postDialogs.py:280 +msgid "Check &spelling..." +msgstr "Sprawd&ź pisownię..." + +#: wxUI/dialogs/mastodon/postDialogs.py:242 +#: wxUI/dialogs/mastodon/postDialogs.py:281 +msgid "&Translate..." +msgstr "&Przetłumacz..." + +#: wxUI/dialogs/mastodon/postDialogs.py:243 +#: wxUI/dialogs/mastodon/postDialogs.py:282 +msgid "C&lose" +msgstr "^Zamknij" + +#: wxUI/dialogs/mastodon/postDialogs.py:294 +msgid "Add a poll" +msgstr "Dodawanie ankiety" + +#: wxUI/dialogs/mastodon/postDialogs.py:298 +msgid "Participation time" +msgstr "Czas uczęstnictwa" + +# | msgid "%d minutes, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +msgid "5 minutes" +msgstr "5 minut" + +# | msgid "%d minutes, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +msgid "30 minutes" +msgstr "30 minut" + +# | msgid "%d hour, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +msgid "1 hour" +msgstr "1 godzina" + +# | msgid "%d hours, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +msgid "6 hours" +msgstr "6 godzin" + +# | msgid "%d day, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +msgid "1 day" +msgstr "1 dzień" + +# | msgid "%d days, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +msgid "2 days" +msgstr "2 dni" + +# | msgid "%d days, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +msgid "3 days" +msgstr "3 dni" + +# | msgid "%d days, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +msgid "4 days" +msgstr "4 dni" + +# | msgid "%d days, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +msgid "5 days" +msgstr "5 dni" + +# | msgid "%d days, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +msgid "6 days" +msgstr "6 dni" + +# | msgid "%d days, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +msgid "7 days" +msgstr "7 dni" + +#: wxUI/dialogs/mastodon/postDialogs.py:304 +msgid "Choices" +msgstr "Opcje do wyboru" + +#: wxUI/dialogs/mastodon/postDialogs.py:308 +msgid "Option 1" +msgstr "Opcja 1" + +#: wxUI/dialogs/mastodon/postDialogs.py:315 +msgid "Option 2" +msgstr "Opcja 2" + +#: wxUI/dialogs/mastodon/postDialogs.py:322 +msgid "Option 3" +msgstr "Opcja 3" + +#: wxUI/dialogs/mastodon/postDialogs.py:329 +msgid "Option 4" +msgstr "Opcja 4" + +#: wxUI/dialogs/mastodon/postDialogs.py:334 +msgid "Allow multiple choices per user" +msgstr "Zezwalaj na wiele opcji dla jednego użytkownika" + +#: wxUI/dialogs/mastodon/postDialogs.py:337 +msgid "Hide votes count until the poll expires" +msgstr "Ukryj głosy liczą się do momentu wygaśnięcia ankiety" + +#: wxUI/dialogs/mastodon/postDialogs.py:363 +msgid "Please make sure you have provided at least two options for the poll." +msgstr "Upewnij się, że podałeś co najmniej dwie opcje ankiety." + +#: wxUI/dialogs/mastodon/postDialogs.py:363 +msgid "Not enough information" +msgstr "Brak wystarczających informacji" + +#: wxUI/dialogs/mastodon/postDialogs.py:368 +msgid "Vote in this poll" +msgstr "Zagłosuj w tej ankiecie" + +#: wxUI/dialogs/mastodon/postDialogs.py:371 +msgid "Options" +msgstr "Opcje" + +# | msgid "&Search" +#: wxUI/dialogs/mastodon/search.py:9 +msgid "Search" +msgstr "Szukaj" + +#: wxUI/dialogs/mastodon/search.py:18 +msgid "Posts" +msgstr "Posty" + +#: wxUI/dialogs/mastodon/showUserProfile.py:22 +#, fuzzy +msgid "Select user" +msgstr "Wybierz link" + +#: wxUI/dialogs/mastodon/showUserProfile.py:73 +#, fuzzy, python-brace-format +msgid "{}'s Profile" +msgstr "&Edytuj profil" + +#: wxUI/dialogs/mastodon/showUserProfile.py:79 +#, fuzzy +msgid "&Name: " +msgstr "Nazwa wyświetlana" + +#: wxUI/dialogs/mastodon/showUserProfile.py:84 +#, fuzzy +msgid "&URL: " +msgstr "Użytkownik:" + +#: wxUI/dialogs/mastodon/showUserProfile.py:89 +msgid "&Bio: " +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:94 +msgid "&Joined at: " +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:99 +#, fuzzy +msgid "&Actions" +msgstr "Czynności" + +#: wxUI/dialogs/mastodon/showUserProfile.py:104 +#, fuzzy +msgid "Header: " +msgstr "Ukryj" + +#: wxUI/dialogs/mastodon/showUserProfile.py:112 +msgid "Avatar: " +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:122 +#, python-brace-format +msgid "Field &{} - Label: " +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:129 +#, fuzzy +msgid "Content: " +msgstr "Kontekst" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:43 +#: wxUI/dialogs/mastodon/filters/create_filter.py:65 +#: wxUI/dialogs/mastodon/showUserProfile.py:135 +msgid "Yes" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:43 +#: wxUI/dialogs/mastodon/filters/create_filter.py:65 +#: wxUI/dialogs/mastodon/filters/create_filter.py:69 +#: wxUI/dialogs/mastodon/showUserProfile.py:135 +msgid "No" +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:137 +#, fuzzy +msgid "&Private account: " +msgstr "Usuń konto" + +#: wxUI/dialogs/mastodon/showUserProfile.py:144 +#, fuzzy +msgid "&Bot account: " +msgstr "Konto" + +#: wxUI/dialogs/mastodon/showUserProfile.py:151 +#, fuzzy +msgid "&Discoverable account: " +msgstr "Usuń konto" + +#: wxUI/dialogs/mastodon/showUserProfile.py:157 +#, python-brace-format +msgid "{} p&osts. Click to open posts timeline" +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:162 +#, python-brace-format +msgid "{} &following. Click to open Following timeline" +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:166 +#, python-brace-format +msgid "{} fo&llowers. Click to open followers timeline" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:43 +msgid "&Display Name" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:50 +#, fuzzy +msgid "&Bio" +msgstr "&Przekaż dalej" + +#: wxUI/dialogs/mastodon/updateProfile.py:58 +#, fuzzy +msgid "Header" +msgstr "Ukryj" + +#: wxUI/dialogs/mastodon/updateProfile.py:71 +#, fuzzy +msgid "Change &header" +msgstr "Ukryj" + +#: wxUI/dialogs/mastodon/updateProfile.py:79 +msgid "Avatar" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:92 +msgid "Change &avatar" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:102 +#, python-brace-format +msgid "Field &{}: Label" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:110 +#, fuzzy +msgid "Content" +msgstr "Kontekst" + +#: wxUI/dialogs/mastodon/updateProfile.py:120 +#, fuzzy +msgid "&Private account" +msgstr "Usuń konto" + +#: wxUI/dialogs/mastodon/updateProfile.py:122 +#, fuzzy +msgid "&Bot account" +msgstr "Konto" + +#: wxUI/dialogs/mastodon/updateProfile.py:124 +#, fuzzy +msgid "&Discoverable account" +msgstr "Usuń konto" + +#: wxUI/dialogs/mastodon/updateProfile.py:167 +msgid "Select header image - max 2MB" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:172 +#: wxUI/dialogs/mastodon/updateProfile.py:194 +msgid "The selected file is larger than 2MB. Do you want to select another file?" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:173 +#: wxUI/dialogs/mastodon/updateProfile.py:195 +msgid "File more than 2MB" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:189 +msgid "Select avatar image - max 2MB" +msgstr "" + +#: wxUI/dialogs/mastodon/userActions.py:19 +msgid "&Follow" +msgstr "&Obserwuj" + +#: wxUI/dialogs/mastodon/userActions.py:20 +msgid "U&nfollow" +msgstr "&Przestań śledzić" + +#: wxUI/dialogs/mastodon/userActions.py:22 +msgid "Unmu&te" +msgstr "&Wyłącz wyciszenie" + +#: wxUI/dialogs/mastodon/userActions.py:23 +msgid "&Block" +msgstr "Za&blokuj" + +#: wxUI/dialogs/mastodon/userActions.py:24 +msgid "Unbl&ock" +msgstr "od&blokuj" + +#: wxUI/dialogs/mastodon/userTimeline.py:9 +#, python-format +msgid "Timeline for %s" +msgstr "Oś czasu %s" + +#: wxUI/dialogs/mastodon/userTimeline.py:19 +msgid "&Posts" +msgstr "&Posty" + +#: wxUI/dialogs/mastodon/userTimeline.py:20 +msgid "&Followers" +msgstr "&śledzący" + +#: wxUI/dialogs/mastodon/userTimeline.py:21 +msgid "Fo&llowing" +msgstr "&Śledzący" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:12 +#, fuzzy +msgid "Keyword" +msgstr "klawisz" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:13 +#: wxUI/dialogs/mastodon/filters/create_filter.py:24 +msgid "Whole word" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:19 +msgid "Keyword:" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:25 +#: wxUI/dialogs/mastodon/filters/manage_filters.py:22 +#, fuzzy +msgid "Add" +msgstr "Do&daj" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:34 +msgid "Palabras clave a filtrar:" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:74 +#, fuzzy +msgid "New filter" +msgstr "&Zarządzanie filtrami" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:78 +#, fuzzy +msgid "Home timeline" +msgstr "Osi czasu" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:79 +msgid "Public statuses" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:81 +#, fuzzy +msgid "Threads" +msgstr "Gotowy" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:82 +#, fuzzy +msgid "Profiles" +msgstr "&Edytuj profil" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:86 +#, fuzzy +msgid "Hide posts" +msgstr "Posty" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:87 +#, fuzzy +msgid "Set a content warning to posts" +msgstr "Ostrzeżenie dotyczące treści" + +# | msgid "%d hours, " +#: wxUI/dialogs/mastodon/filters/create_filter.py:91 +#, fuzzy +msgid "Hours" +msgstr "6 godzin" + +# | msgid "%d days, " +#: wxUI/dialogs/mastodon/filters/create_filter.py:92 +#, fuzzy +msgid "Days" +msgstr "7 dni" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:93 +msgid "Weeks" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:94 +msgid "months" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:97 +#, fuzzy +msgid "Title:" +msgstr "Plik" + +# | msgid "Reply to {arg0}" +#: wxUI/dialogs/mastodon/filters/create_filter.py:104 +#, fuzzy +msgid "Apply to:" +msgstr "Odpowiedź dla {}" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:114 +#, fuzzy +msgid "Action:" +msgstr "Czynność" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:122 +msgid "Expires in:" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/manage_filters.py:10 +#, fuzzy +msgid "Filters" +msgstr "Plik" + +#: wxUI/dialogs/mastodon/filters/manage_filters.py:15 +#, fuzzy +msgid "Title" +msgstr "Plik" + +#: wxUI/dialogs/mastodon/filters/manage_filters.py:16 +msgid "Keywords" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/manage_filters.py:17 +#, fuzzy +msgid "Contexts" +msgstr "Kontekst" + +#: wxUI/dialogs/mastodon/filters/manage_filters.py:19 +#, fuzzy +msgid "Expires" +msgstr "Dodatki" + +#~ msgid "There are no results for the coordinates in this tweet" +#~ msgstr "Brak wyników dla współrzędnych geograficznych w tym tweecie" + +#~ msgid "This list is already opened" +#~ msgstr "Ta lista jest już otwarta" + +# | msgid "Timeline for {}" +#~ msgid "Timelines for {}" +#~ msgstr "Oś czasu {}" + +#~ msgid "{account_name} (Mastodon)" +#~ msgstr "" + +#~ msgid "URL of mastodon instance:" +#~ msgstr "" + +# | msgid "View &address" +#~ msgid "Email address:" +#~ msgstr "Zobacz &adres" + +# | msgid "Password: " +#~ msgid "Password:" +#~ msgstr "Hasło:" + +# | msgid "Item" +#~ msgid "&Item" +#~ msgstr "Element" + +#~ msgid "Visibility" +#~ msgstr "" + +#~ msgid "Sensitive content" +#~ msgstr "" + +#~ msgid "Allow multiple votes per user" +#~ msgstr "" + +#~ msgid "{username} has mentionned you: {status}" +#~ msgstr "" + +#~ msgid "has mentionned you: {status}" +#~ msgstr "" + +#~ msgid "Likes for {}" +#~ msgstr "polubienia dla {}" + +#~ msgid "Trending topics for %s" +#~ msgstr "Popularne tematy w %s" + +#~ msgid "Select user" +#~ msgstr "Wybierz użytkownika" + +#~ msgid "Sent direct messages" +#~ msgstr "Wysłane wiadomości prywatne" + +#~ msgid "Sent tweets" +#~ msgstr "Wysłane tweety " + +#~ msgid "Likes" +#~ msgstr "Polubienia" + +#~ msgid "Friends" +#~ msgstr "Śledzeni" + +#~ msgid "{username}'s likes" +#~ msgstr "Ulubione tweety {username}a" + +#~ msgid "{username}'s friends" +#~ msgstr "przyjaciele {username}s" + +#~ msgid "Tweet" +#~ msgstr "Tweet" + +#~ msgid "Write the tweet here" +#~ msgstr "Napisz tweeta tutaj" + +#~ msgid "New tweet in {0}" +#~ msgstr "Nowy tweet w {0}" + +#~ msgid "{0} new tweets in {1}." +#~ msgstr "{0} nowych Tweetów w {1}." + +#~ msgid "Reply to {arg0}" +#~ msgstr "Odpowiedź do {arg0}" + +#~ msgid "Reply to %s" +#~ msgstr "Odpowiedz do %s" + +#~ msgid "Direct message to %s" +#~ msgstr "Wiadomość prywatna do %s" + +#~ msgid "New direct message" +#~ msgstr "Nowa wiadomość prywatna" + +#~ msgid "This action is not supported on protected accounts." +#~ msgstr "Ta akcja nie jest jeszcze wspierana w tym buforze." + +#~ msgid "Quote" +#~ msgstr "Cytuj" + +#~ msgid "Add your comment to the tweet" +#~ msgstr "Dodaj komentarz do tego tweeta" + +#~ msgid "User details" +#~ msgstr "Dane użytkownika" + +#~ msgid "MMM D, YYYY. H:m" +#~ msgstr "MMM D, YYYY. H:m" + +#~ msgid "There are no coordinates in this tweet" +#~ msgstr "Brak współrzędnych geograficznych w tym tweecie" + +#~ msgid "Error decoding coordinates. Try again later." +#~ msgstr "Błąd odszyfrowywania współrzędnych. Spróbuj ponownie później." + +#~ msgid "Invalid buffer" +#~ msgstr "Nieprawidłowy bufor" + +#~ msgid "{0} new direct messages." +#~ msgstr "{0} nowych wiadomości prywatnych." + +#~ msgid "This action is not supported in the buffer yet." +#~ msgstr "Ta akcja nie jest jeszcze wspierana w tym buforze." + +#~ msgid "" +#~ "Getting more items cannot be done " +#~ "in this buffer. Use the direct " +#~ "messages buffer instead." +#~ msgstr "" +#~ "Nie mogę zabrać więcej elementów do " +#~ "tego buforu. Użyj bufora wiadomości " +#~ "prywatnych." + +#~ msgid "Mention" +#~ msgstr "Wzmianka" + +#~ msgid "Mention to %s" +#~ msgstr "Wzmianka o %s" + +#~ msgid "{0} new followers." +#~ msgstr "{0} nowych śledzących." + +#~ msgid "This action is not supported in the buffer, yet." +#~ msgstr "Ta akcja jeszcze nie jest wspierana w tym buforze." + +#~ msgid "&Retweet" +#~ msgstr "&Podaj dalej" + +#~ msgid "&Like" +#~ msgstr "&Polub" + +#~ msgid "&Unlike" +#~ msgstr "&Nie lubię" + +#~ msgid "View &address" +#~ msgstr "Zobacz &adres" + +#~ msgid "&View lists" +#~ msgstr "&Zobacz listy" + +# | msgid "V&iew likes" +#~ msgid "View likes" +#~ msgstr "&zobacz polubienia" + +#~ msgid "Likes timelines" +#~ msgstr "osi czasu ulubionych" + +#~ msgid "Followers timelines" +#~ msgstr "osi czasu śledzonych" + +#~ msgid "Following timelines" +#~ msgstr "osi czasu śledzonych" + +#~ msgid "Lists" +#~ msgstr "Listy" + +#~ msgid "List for {}" +#~ msgstr "lista {}" + +#~ msgid "Filters cannot be applied on this buffer" +#~ msgstr "Filtry nie mogą być zastosowane na tym buforze" + +#~ msgid "View item" +#~ msgstr "przeglądaj element" + +#~ msgid "Ask" +#~ msgstr "Pytaj" + +#~ msgid "Retweet without comments" +#~ msgstr "Podaj dalej bez komentarza" + +#~ msgid "Retweet with comments" +#~ msgstr "Podaj dalej z komentarzem" + +#~ msgid "Edit template for tweets. Current template: {}" +#~ msgstr "" + +#~ msgid "Edit template for direct messages. Current template: {}" +#~ msgstr "" + +#~ msgid "Edit template for sent direct messages. Current template: {}" +#~ msgstr "" + +#~ msgid "User has been suspended" +#~ msgstr "Użytkownik jest wstrzymany" + +#~ msgid "Information for %s" +#~ msgstr "Informacje o %s" + +#~ msgid "Discarded" +#~ msgstr "Anulowane" + +#~ msgid "Username: @%s\n" +#~ msgstr "Nazwa użytkownika: @%s\n" + +#~ msgid "Name: %s\n" +#~ msgstr "Nazwa wyświetlana: %s\n" + +#~ msgid "Location: %s\n" +#~ msgstr "Skąd: %s\n" + +#~ msgid "URL: %s\n" +#~ msgstr "Adres: %s\n" + +#~ msgid "Bio: %s\n" +#~ msgstr "O mnie: %s\n" + +#~ msgid "Yes" +#~ msgstr "Tak" + +#~ msgid "No" +#~ msgstr "Nie" + +#~ msgid "Protected: %s\n" +#~ msgstr "Chronione: %s\n" + +#~ msgid "Relationship: " +#~ msgstr "" + +#~ msgid "You follow {0}. " +#~ msgstr "śledzisz {0}." + +#~ msgid "{0} is following you." +#~ msgstr "{0} cie śledzi" + +#~ msgid "" +#~ "Followers: %s\n" +#~ " Friends: %s\n" +#~ msgstr "" +#~ "Śledzących: %s\n" +#~ " Śledzonych: %s\n" + +#~ msgid "Verified: %s\n" +#~ msgstr "Zweryfikowane: %s\n" + +#~ msgid "Tweets: %s\n" +#~ msgstr "Tweetów: %s\n" + +#~ msgid "Likes: %s" +#~ msgstr "polubień: %s" + +#~ msgid "You can't ignore direct messages" +#~ msgstr "Nie możesz ignorować wiadomości prywatnych" + +#~ msgid "Attaching..." +#~ msgstr "Dołączanie..." + +#~ msgid "Pause" +#~ msgstr "Pauza" + +#~ msgid "&Resume" +#~ msgstr "&Wznów" + +#~ msgid "Resume" +#~ msgstr "Wznów" + +#~ msgid "&Pause" +#~ msgstr "&Pauza" + +#~ msgid "&Stop" +#~ msgstr "&Zatrzymaj" + +#~ msgid "Recording" +#~ msgstr "Nagrywanie" + +#~ msgid "Stopped" +#~ msgstr "Zatrzymane" + +#~ msgid "&Record" +#~ msgstr "&Nagraj" + +#~ msgid "&Play" +#~ msgstr "&Odtwórz" + +#~ msgid "Recoding audio..." +#~ msgstr "Przekodowywanie audio" + +#~ msgid "Error in file upload: {0}" +#~ msgstr "błąd podczas wysyłania pliku: {0}" + +#~ msgid "Transferred" +#~ msgstr "Przesłano" + +#~ msgid "Total file size" +#~ msgstr "Całkowity rozmiar pliku" + +#~ msgid "Transfer rate" +#~ msgstr "Prędkość przesyłania" + +#~ msgid "Time left" +#~ msgstr "Pozostało" + +#~ msgid "Attach audio" +#~ msgstr "Dołącz audio" + +#~ msgid "&Add an existing file" +#~ msgstr "&Dodaj istniejący plik" + +#~ msgid "&Discard" +#~ msgstr "&Anuluj" + +#~ msgid "Upload to" +#~ msgstr "Wyślij do" + +#~ msgid "Attach" +#~ msgstr "Dołącz" + +#~ msgid "&Cancel" +#~ msgstr "&Anuluj" + +#~ msgid "Audio Files (*.mp3, *.ogg, *.wav)|*.mp3; *.ogg; *.wav" +#~ msgstr "Pliki Audio (*.mp3, *.ogg, *.wav)|*.mp3; *.ogg; *.wav" + +#~ msgid "You have to start writing" +#~ msgstr "Musisz zacząć pisać" + +#~ msgid "There are no results in your users database" +#~ msgstr "Brak wyników w twojej bazie danych użytkowników" + +#~ msgid "Autocompletion only works for users." +#~ msgstr "Autouzupełnianie działa tylko dla użytkowników" + +#~ msgid "" +#~ "Updating database... You can close this" +#~ " window now. A message will tell " +#~ "you when the process finishes." +#~ msgstr "" +#~ "Aktualizowanie bazy danych... Możesz teraz " +#~ "zamknąć to okno. Gdy proces zostanie " +#~ "ukończony, poinformuje Cie o tym " +#~ "stosowny komunikat." + +#~ msgid "Manage Autocompletion database" +#~ msgstr "Zarządzaj bazą danych autouzupełniania" + +#~ msgid "Editing {0} users database" +#~ msgstr "Edycja bazy danych użytkowników {0}" + +#~ msgid "Username" +#~ msgstr "Nazwa użytkownika" + +#~ msgid "Add user" +#~ msgstr "Dodaj użytkownika" + +#~ msgid "Remove user" +#~ msgstr "Usuń użytkownika" + +#~ msgid "Twitter username" +#~ msgstr "Nazwa użytkownika Twittera" + +#~ msgid "Add user to database" +#~ msgstr "Dodaj użytkownika do bazy danych" + +#~ msgid "The user does not exist" +#~ msgstr "Użytkownik nie istnieje" + +#~ msgid "Error!" +#~ msgstr "Błąd!" + +#~ msgid "Autocomplete users' settings" +#~ msgstr "Ustawienia autouzupełniania użytkowników" + +#~ msgid "Add followers to database" +#~ msgstr "" + +#~ msgid "Add friends to database" +#~ msgstr "Dodaj użytkownika do bazy danych" + +#~ msgid "Updating autocompletion database" +#~ msgstr "Zarządzaj bazą danych autouzupełniania" + +#~ msgid "" +#~ "This process will retrieve the users " +#~ "you selected from Twitter, and add " +#~ "them to the user autocomplete database." +#~ " Please note that if there are " +#~ "many users or you have tried to" +#~ " perform this action less than 15 " +#~ "minutes ago, TWBlue may reach a " +#~ "limit in Twitter API calls when " +#~ "trying to load the users into the" +#~ " database. If this happens, we will" +#~ " show you an error, in which " +#~ "case you will have to try this " +#~ "process again in a few minutes. If" +#~ " this process ends with no error, " +#~ "you will be redirected back to the" +#~ " account settings dialog. Do you want" +#~ " to continue?" +#~ msgstr "" + +#~ msgid "TWBlue has imported {} users successfully." +#~ msgstr "" + +#~ msgid "Done" +#~ msgstr "Gotowe" + +#~ msgid "Error adding users from Twitter. Please try again in about 15 minutes." +#~ msgstr "" + +#~ msgid "New tweet" +#~ msgstr "Nowy tweet" + +#~ msgid "Retweet" +#~ msgstr "Podaj dalej" + +#~ msgid "Like a tweet" +#~ msgstr "Polub tweet" + +#~ msgid "Like/unlike a tweet" +#~ msgstr "Lubię/nie lubię tweet" + +#~ msgid "Unlike a tweet" +#~ msgstr "Zdejmij polubienie" + +#~ msgid "See user details" +#~ msgstr "Zobacz dane użytkownika" + +#~ msgid "Show tweet" +#~ msgstr "Pokaż tweet" + +#~ msgid "Interact with the currently focused tweet." +#~ msgstr "Wejdź w interakcję z podświetlonym tweetem." + +#~ msgid "View in Twitter" +#~ msgstr "Zobacz na Twitterze" + +#~ msgid "Edit profile" +#~ msgstr "Edytuj profil" + +#~ msgid "Delete a tweet or direct message" +#~ msgstr "Usuń tweet lub wiadomość prywatną" + +#~ msgid "Add to list" +#~ msgstr "Dodaj do listy" + +#~ msgid "Remove from list" +#~ msgstr "Usuń z listy" + +#~ msgid "Search on twitter" +#~ msgstr "Szukaj na Twitterze" + +#~ msgid "Show lists for a specified user" +#~ msgstr "Pokaż listy wybranegj osoby" + +#~ msgid "Get geolocation" +#~ msgstr "Pobierz położenie geograficzne" + +#~ msgid "Display the tweet's geolocation in a dialog" +#~ msgstr "Wyświetl położenie danego tweeta w osobnym oknie" + +#~ msgid "Create a trending topics buffer" +#~ msgstr "Stwórz zakładkę popularnych tematów" + +#~ msgid "" +#~ "Opens the list manager, which allows " +#~ "you to create, edit, delete and " +#~ "open lists in buffers." +#~ msgstr "" +#~ "Otwiera menedżera listy, który pozwala " +#~ "na tworzenie, edytowanie, usuwanie i " +#~ "otwarzanie list w buforach." + +#~ msgid "Opens the list manager" +#~ msgstr "Otwiera medżer list" + +#~ msgid "{account_name} (Twitter)" +#~ msgstr "" + +# | msgid "View in Twitter" +#~ msgid "Twitter" +#~ msgstr "Zobacz na Twitterze" + +#~ msgid "" +#~ "The request to authorize your Twitter" +#~ " account will be opened in your " +#~ "browser. You only need to do this" +#~ " once. Would you like to continue?" +#~ msgstr "" +#~ "Żądanie autoryzacji konta Twittera zostanie" +#~ " wyświetlone w twojej przeglądarce. " +#~ "Wystarczy,że zrobisz to tylko raz. Czy" +#~ " chcesz kontynuować?" + +#~ msgid "" +#~ "TWBlue is unable to authenticate the " +#~ "account for {} in Twitter. It " +#~ "might be due to an invalid or " +#~ "expired token, revoqued access to the" +#~ " application, or after an account " +#~ "reactivation. Please remove the account " +#~ "manually from your Twitter sessions in" +#~ " order to stop seeing this message." +#~ msgstr "" + +#~ msgid "Authentication error for session {}" +#~ msgstr "" + +#~ msgid "Dm to %s " +#~ msgstr "Wiadomość prywatna do %s" + +#~ msgid "{0}. Quoted tweet from @{1}: {2}" +#~ msgstr "{0}. tweet cytowany przez @{1}: {2}" + +#~ msgid "Unavailable" +#~ msgstr "Niedostępne" + +#~ msgid "" +#~ "%s (@%s). %s followers, %s friends, " +#~ "%s tweets. Last tweeted %s. Joined " +#~ "Twitter %s" +#~ msgstr "" +#~ "%s (@%s). %s obserwujących, %s " +#~ "obserwowanych, %s tweetów. Ostatni tweet " +#~ "%s. Dołączył do Twittera %s" + +#~ msgid "No description available" +#~ msgstr "Brak dostępnego opisu" + +#~ msgid "private" +#~ msgstr "Prywatna" + +#~ msgid "public" +#~ msgstr "Publiczna" + +#~ msgid "Enter your PIN code here" +#~ msgstr "Tutaj trzeba wprowadzić kod PIN..." + +#~ msgid "Authorising account..." +#~ msgstr "Autoryzuję konto..." + +#~ msgid "" +#~ "We could not authorice your Twitter " +#~ "account to be used in TWBlue. This" +#~ " might be caused due to an " +#~ "incorrect verification code. Please try " +#~ "to add the session again." +#~ msgstr "" + +#~ msgid "%s failed. Reason: %s" +#~ msgstr "%s nie powiódł się. Powód: %s" + +#~ msgid "Deleted account" +#~ msgstr "Nowe konto" + +#~ msgid "$sender_display_name, $text $date" +#~ msgstr "" + +#~ msgid "" +#~ "$display_name (@$screen_name). $followers followers," +#~ " $following following, $tweets tweets. " +#~ "Joined Twitter $created_at." +#~ msgstr "" + +#~ msgid "Image description: {}." +#~ msgstr "opis zdjęcia" + +#~ msgid "RT @{}: {} Quote from @{}: {}" +#~ msgstr "{0}. tweet cytowany przez @{1}: {2}" + +# | msgid "{0}. Quoted tweet from @{1}: {2}" +#~ msgid "RT @{}: {}" +#~ msgstr "{0}. tweet cytowany przez @{1}: {2}" + +# | msgid "{0}. Quoted tweet from @{1}: {2}" +#~ msgid "{} Quote from @{}: {}" +#~ msgstr "{0}. tweet cytowany przez @{1}: {2}" + +#~ msgid "Sorry, you are not authorised to see this status." +#~ msgstr "Przepraszamy, nie jesteś uprawniony do oglądania tego statusu." + +#~ msgid "Error {0}" +#~ msgstr "Błąd kod {0}" + +#~ msgid "{user_1}, {user_2} and {all_users} more: {text}" +#~ msgstr "" + +#~ msgid "" +#~ "This retweet is over 140 characters. " +#~ "Would you like to post it as " +#~ "a mention to the poster with your" +#~ " comments and a link to the " +#~ "original tweet?" +#~ msgstr "" +#~ "To podanie dalej jest dłuższe niż " +#~ "140 znaków. Czy chciałbyś opublikować je" +#~ " jako wzmiankę nadawcy z twoim " +#~ "komentarzem oraz linkiem do oryginalnego " +#~ "posta?" + +#~ msgid "Would you like to add a comment to this tweet?" +#~ msgstr "* Czy chciałbyś dodać komentarz do tego tweeta?" + +#~ msgid "" +#~ "Do you really want to delete this" +#~ " tweet? It will be deleted from " +#~ "Twitter as well." +#~ msgstr "" +#~ "Czy napewno chcesz usunąć ten tweet? " +#~ "Zostanie on także usunięty z Twittera." + +#~ msgid "Enter the name of the client : " +#~ msgstr "Wprowadź nazwę klienta : " + +#~ msgid "Add client" +#~ msgstr "Dodaj klienta" + +#~ msgid "This user has no tweets, so you can't open a timeline for them." +#~ msgstr "" +#~ "Ten użytkownik nie ma żadnych tweetów." +#~ " Nie możesz otworzyć jego osi czasu" + +#~ msgid "" +#~ "This is a protected Twitter user, " +#~ "which means you can't open a " +#~ "timeline using the Streaming API. The" +#~ " user's tweets will not update due" +#~ " to a twitter policy. Do you " +#~ "want to continue?" +#~ msgstr "" +#~ "To jest chroniony użytkownik Twittera. " +#~ "Oznacza to, że nie możesz otworzyć " +#~ "jego osi czasu przy użyciu API " +#~ "strumieniowania. Tweety tego użytkownika nie" +#~ " będą aktualizowane z uwagi na " +#~ "politykę Twittera. Czy chcesz kontynuować?" + +#~ msgid "" +#~ "This is a protected user account, " +#~ "you need to follow this user to" +#~ " view their tweets or likes." +#~ msgstr "" +#~ "To jest chronione konto użytkownika. " +#~ "Musisz go obserwować, by widzieć jego" +#~ " tweety i polubione." + +#~ msgid "This user has no tweets. {0} can't create a timeline." +#~ msgstr "" +#~ "Ten uzytkownik nie ma tweetów. {0} " +#~ "Nie może zrobić os czasu dla " +#~ "danego użytkownika." + +#~ msgid "This user has no favorited tweets. {0} can't create a timeline." +#~ msgstr "" +#~ "Ten użytkownik nie ma ulubionych tweetó." +#~ " {0} nie może utworzyć os czasu." + +#~ msgid "This user has no followers. {0} can't create a timeline." +#~ msgstr "Ten użytkownik nie ma żadnych śledzących. {0} nie może zrobić os czasu." + +#~ msgid "This user has no friends. {0} can't create a timeline." +#~ msgstr "Ten użytkownik niema przyjacieli. {0} nie może zrobić os czasu." + +#~ msgid "Geolocation data: {0}" +#~ msgstr "dane o położeniu geograficznym: {0}" + +#~ msgid "Geo data for this tweet" +#~ msgstr "Dane geograficzne dla tego tweetu" + +#~ msgid "You have been blocked from viewing this content" +#~ msgstr "Nie możesz obejrzeć tę treść, ponieważ jesteś blokowany" + +#~ msgid "" +#~ "You have been blocked from viewing " +#~ "someone's content. In order to avoid " +#~ "conflicts with the full session, TWBlue" +#~ " will remove the affected timeline." +#~ msgstr "" +#~ "Jesteś blokowany, i nie możesz zobaczyć" +#~ " czyjąś treść. Aby zapobiec konflikty, " +#~ "z pełną sesją, TWBlue usunie os " +#~ "czasu, która skutkowała taki konflikt." + +#~ msgid "" +#~ "TWBlue cannot load this timeline because" +#~ " the user has been suspended from " +#~ "Twitter." +#~ msgstr "" +#~ "TWBlue nie może wczytać tą os " +#~ "czasu ponieważ użytkownik jest usunięty " +#~ "z twittera." + +#~ msgid "Do you really want to delete this filter?" +#~ msgstr "Czy na pewno chcesz usunąć ten filter?" + +#~ msgid "This filter already exists. Please use a different title" +#~ msgstr "Ten filtr już istnieje. Proszę użyć inny tytuł" + +#~ msgid "&Show direct message" +#~ msgstr "&Pokaż wiadomość prywatną" + +#~ msgid "&Show event" +#~ msgstr "&Pokaż zdarzenie" + +#~ msgid "Direct &message" +#~ msgstr "&Wiadomości prywatne" + +#~ msgid "&Show user" +#~ msgstr "&Pokaż użytkownika" + +#~ msgid "Search topic" +#~ msgstr "Szukaj temat" + +#~ msgid "&Tweet about this trend" +#~ msgstr "&Wyślij tweeta na temat tego trendu" + +#~ msgid "&Show item" +#~ msgstr "&Pokaż element" + +#~ msgid "Update &profile" +#~ msgstr "Edytuj profil" + +#~ msgid "Event" +#~ msgstr "Zdarzenie" + +#~ msgid "Remove event" +#~ msgstr "Usuń zdarzenie" + +#~ msgid "Trending topic" +#~ msgstr "Popularny temat" + +#~ msgid "Tweet about this trend" +#~ msgstr "Tweet o tym trendzie" + +#~ msgid "" +#~ "Scan account and add friends and " +#~ "followers to the user autocompletion " +#~ "database" +#~ msgstr "" + +#~ msgid "" +#~ "Inverted buffers: The newest tweets will" +#~ " be shown at the beginning while " +#~ "the oldest at the end" +#~ msgstr "" +#~ "Odwrócona kolejność: Najnowsze tweety będą " +#~ "umieszczane na początku listy, podczas " +#~ "gdy najstarsze na jej końcu." + +#~ msgid "Retweet mode" +#~ msgstr "Tryb podawania dalej" + +#~ msgid "" +#~ "Load cache for tweets in memory " +#~ "(much faster in big datasets but " +#~ "requires more RAM)" +#~ msgstr "" + +#~ msgid "Ignored clients" +#~ msgstr "Klienty ignorowane" + +#~ msgid "Remove client" +#~ msgstr "Usuń klienta" + +#~ msgid "Indicate audio tweets with sound" +#~ msgstr "Oznajmiaj tweety zawierające dźwiękowy plik dzwiękiem" + +#~ msgid "Indicate geotweets with sound" +#~ msgstr "Oznajmiaj o tweetach, zawierających dane geograficzne" + +#~ msgid "Indicate tweets containing images with sound" +#~ msgstr "Oznajmiaj tweety zawierające obrazy dzwiękiem" + +#~ msgid "API Key for SndUp" +#~ msgstr "Klucz API dla SndUp" + +#~ msgid "Create a filter for this buffer" +#~ msgstr "Utwórz filtr dla tego buforu" + +#~ msgid "Filter title" +#~ msgstr "filtruj tytuł" + +#~ msgid "Filter by word" +#~ msgstr "Filtruj według słowa" + +#~ msgid "Ignore tweets wich contain the following word" +#~ msgstr "Ignoruj tweety zawierające następujące słowo" + +#~ msgid "Ignore tweets without the following word" +#~ msgstr "Ignoruj tweety nie zawierające następujące słowa" + +#~ msgid "word" +#~ msgstr "słowo" + +#~ msgid "Allow retweets" +#~ msgstr "Zezwalaj na podawanie dalej" + +#~ msgid "Allow quoted tweets" +#~ msgstr "zezwalaj na cytowane tweety" + +#~ msgid "Allow replies" +#~ msgstr "Zezwalaj na wzmianki" + +#~ msgid "Use this term as a regular expression" +#~ msgstr "Użyj ten termin jako wyrażenie regularne" + +#~ msgid "Filter by language" +#~ msgstr "Filtruj według języka" + +#~ msgid "Load tweets in the following languages" +#~ msgstr "Załadować tweety w następujących językach" + +#~ msgid "Ignore tweets in the following languages" +#~ msgstr "Ignorować tweety w następujących językach" + +#~ msgid "Don't filter by language" +#~ msgstr "Nie filtruj według języka" + +#~ msgid "Supported languages" +#~ msgstr "Języki wspierane" + +#~ msgid "Add selected language to filter" +#~ msgstr "Dodaj wybrany język do filtru" + +#~ msgid "Selected languages" +#~ msgstr "Wybrane języki" + +#~ msgid "You must define a name for the filter before creating it." +#~ msgstr "" + +#~ msgid "Missing filter name" +#~ msgstr "" + +#~ msgid "Manage filters" +#~ msgstr "Zarządzaj filtrami" + +#~ msgid "Filters" +#~ msgstr "Filtry" + +#~ msgid "Filter" +#~ msgstr "Filtr" + +#~ msgid "Lists manager" +#~ msgstr "Menedżer list" + +#~ msgid "List" +#~ msgstr "Lista" + +#~ msgid "Owner" +#~ msgstr "Właściciel" + +#~ msgid "Members" +#~ msgstr "Człokowie" + +#~ msgid "mode" +#~ msgstr "Tryb" + +#~ msgid "Create a new list" +#~ msgstr "Stwórz nową listę" + +#~ msgid "Open in buffer" +#~ msgstr "Otwórz w zakładce" + +#~ msgid "Viewing lists for %s" +#~ msgstr "Przeglądanie list %s" + +#~ msgid "Subscribe" +#~ msgstr "Subskrybuj" + +#~ msgid "Unsubscribe" +#~ msgstr "Zaprzestań subskrypcji" + +#~ msgid "Name (20 characters maximun)" +#~ msgstr "Nazwa (maksymalnie 20 znaków)" + +#~ msgid "Mode" +#~ msgstr "Tryb" + +#~ msgid "Private" +#~ msgstr "Prywatna" + +#~ msgid "Editing the list %s" +#~ msgstr "Edycja listy %s" + +#~ msgid "Select a list to add the user" +#~ msgstr "Wybierz listę, by dodać użytkownika" + +#~ msgid "Add" +#~ msgstr "Dodaj" + +#~ msgid "Select a list to remove the user" +#~ msgstr "Wybierz listę, by usunąć użytkownika" + +#~ msgid "Do you really want to delete this list?" +#~ msgstr "Czy napewno chcesz usunąć tę listę?" + +#~ msgid "Search on Twitter" +#~ msgstr "Szukaj na Twitterze" + +#~ msgid "Tweets" +#~ msgstr "Tweety" + +#~ msgid "&Language for results: " +#~ msgstr "&Jezyk wyników: " + +#~ msgid "any" +#~ msgstr "jakikolwiek" + +#~ msgid "Results &type: " +#~ msgstr "&typ wyników: " + +#~ msgid "Mixed" +#~ msgstr "mieszane" + +#~ msgid "Recent" +#~ msgstr "Ostatnie" + +#~ msgid "Popular" +#~ msgstr "Popularne" + +#~ msgid "Details" +#~ msgstr "Szczegóły" + +#~ msgid "&Go to URL" +#~ msgstr "&Przejdź do adresu" + +#~ msgid "View trending topics" +#~ msgstr "Zobacz popularne tematy" + +#~ msgid "Trending topics by" +#~ msgstr "Popularne tematy według" + +#~ msgid "Country" +#~ msgstr "Kraju" + +#~ msgid "City" +#~ msgstr "Miasta" + +#~ msgid "&Location" +#~ msgstr "&Skąd" + +#~ msgid "Update your profile" +#~ msgstr "Edytuj swój profil" + +#~ msgid "&Name (50 characters maximum)" +#~ msgstr "&Imię (maksymalnie 50 znaków)" + +#~ msgid "&Website" +#~ msgstr "&Strona internetowa" + +#~ msgid "&Bio (160 characters maximum)" +#~ msgstr "&Bio (160 znaków maksymalnie)" + +#~ msgid "Upload a &picture" +#~ msgstr "Wyślij &obraz" + +#~ msgid "Upload a picture" +#~ msgstr "Wyślij obraz" + +#~ msgid "Discard image" +#~ msgstr "Anuluj obraz" + +#~ msgid "&Report as spam" +#~ msgstr "&Zgłoś jako spam" + +#~ msgid "&Ignore tweets from this client" +#~ msgstr "&Ignoruj tweety z tego klienta" + +#~ msgid "&Tweets" +#~ msgstr "&Tweety" + +#~ msgid "&Likes" +#~ msgstr "&Polubienia" + +#~ msgid "F&riends" +#~ msgstr "&Przyjaciele" + +#~ msgid "Delete attachment" +#~ msgstr "Usuń załącznik" + +#~ msgid "Added Tweets" +#~ msgstr "Wysłane tweety " + +#~ msgid "Delete tweet" +#~ msgstr "Wysłane tweety " + +#~ msgid "A&dd..." +#~ msgstr "" + +#~ msgid "Add t&weet" +#~ msgstr "Polub tweet" + +#~ msgid "&Attach audio..." +#~ msgstr "&Załącz audio..." + +#~ msgid "Sen&d" +#~ msgstr "Wyś&lij" + +#~ msgid "Video files (*.mp4)|*.mp4" +#~ msgstr "" + +#~ msgid "" +#~ "It is not possible to add more " +#~ "attachments. Please make sure your tweet" +#~ " complies with Twitter'S attachment rules." +#~ " You can add only one video or" +#~ " GIF in every tweet, and a " +#~ "maximum of 4 photos." +#~ msgstr "" + +#~ msgid "&Mention to all" +#~ msgstr "Ws&pomnij &wszystkich" + +#~ msgid "&Recipient" +#~ msgstr "&Odbiorca" + +#~ msgid "Tweet - %i characters " +#~ msgstr "Tweet - %i znaków" + +#~ msgid "Retweets: " +#~ msgstr "podania dalej:" + +#~ msgid "Likes: " +#~ msgstr "Polubienia: " + +#~ msgid "View" +#~ msgstr "Zobacz" + +#~ msgid "Item" +#~ msgstr "Element" + +#~ msgid "&Expand URL" +#~ msgstr "&Rozwiń adres" + +#~ msgid "Participation time (in days)" +#~ msgstr "" + +#~ msgid "&Open in Twitter" +#~ msgstr "&otwórz na twitterze" + +#~ msgid "&Show tweet" +#~ msgstr "&Pokaż tweet" + +#~ msgid "Translated" +#~ msgstr "Przetłumaczone" + +#~ msgid "Afrikaans" +#~ msgstr "afrykanerski" + +#~ msgid "Albanian" +#~ msgstr "albański" + +#~ msgid "Amharic" +#~ msgstr "amharski" + +#~ msgid "Arabic" +#~ msgstr "arabski" + +#~ msgid "Armenian" +#~ msgstr "armeński" + +#~ msgid "Azerbaijani" +#~ msgstr "azerski" + +#~ msgid "Basque" +#~ msgstr "baskijski" + +#~ msgid "Belarusian" +#~ msgstr "białoruski" + +#~ msgid "Bengali" +#~ msgstr "bengalski" + +#~ msgid "Bihari" +#~ msgstr "biharski" + +#~ msgid "Bulgarian" +#~ msgstr "bułgarski" + +#~ msgid "Burmese" +#~ msgstr "birmański" + +#~ msgid "Catalan" +#~ msgstr "kataloński" + +#~ msgid "Cherokee" +#~ msgstr "czirokeski" + +#~ msgid "Chinese" +#~ msgstr "chiński" + +#~ msgid "Chinese_simplified" +#~ msgstr "chiński uproszczony" + +#~ msgid "Chinese_traditional" +#~ msgstr "chiński tradycyjny" + +#~ msgid "Croatian" +#~ msgstr "chorwacki" + +#~ msgid "Czech" +#~ msgstr "czeski" + +#~ msgid "Dhivehi" +#~ msgstr "divehi" + +#~ msgid "Esperanto" +#~ msgstr "esperancki" + +#~ msgid "Estonian" +#~ msgstr "estoński" + +#~ msgid "Filipino" +#~ msgstr "filipiński" + +#~ msgid "Galician" +#~ msgstr "galicyjski" + +#~ msgid "Georgian" +#~ msgstr "gruziński" + +#~ msgid "Greek" +#~ msgstr "grecki" + +#~ msgid "Guarani" +#~ msgstr "guarani" + +#~ msgid "Gujarati" +#~ msgstr "gudżarati" + +#~ msgid "Hebrew" +#~ msgstr "hebrajski" + +#~ msgid "Hindi" +#~ msgstr "hindi" + +#~ msgid "Icelandic" +#~ msgstr "islancki" + +#~ msgid "Indonesian" +#~ msgstr "indonezyjski" + +#~ msgid "Inuktitut" +#~ msgstr "Inuktitut" + +#~ msgid "Irish" +#~ msgstr "irlancki" + +#~ msgid "Kannada" +#~ msgstr "Kannada" + +#~ msgid "Kazakh" +#~ msgstr "kazachski" + +#~ msgid "Khmer" +#~ msgstr "khmerski" + +#~ msgid "Kurdish" +#~ msgstr "kurdyjski" + +#~ msgid "Kyrgyz" +#~ msgstr "kirgiski" + +#~ msgid "Laothian" +#~ msgstr "laotański" + +#~ msgid "Latvian" +#~ msgstr "łotewski" + +#~ msgid "Lithuanian" +#~ msgstr "litewski" + +#~ msgid "Macedonian" +#~ msgstr "macedoński" + +#~ msgid "Malay" +#~ msgstr "malajski" + +#~ msgid "Malayalam" +#~ msgstr "malajalam" + +#~ msgid "Maltese" +#~ msgstr "maltański" + +#~ msgid "Marathi" +#~ msgstr "marathi" + +#~ msgid "Mongolian" +#~ msgstr "mongolski" + +#~ msgid "Nepali" +#~ msgstr "nepalski" + +#~ msgid "Norwegian" +#~ msgstr "norweski" + +#~ msgid "Oriya" +#~ msgstr "Orija" + +#~ msgid "Pashto" +#~ msgstr "pasztoński" + +#~ msgid "Persian" +#~ msgstr "perski" + +#~ msgid "Punjabi" +#~ msgstr "pendżabski" + +#~ msgid "Romanian" +#~ msgstr "rumuński" + +#~ msgid "Sanskrit" +#~ msgstr "sanskryt" + +#~ msgid "Serbian" +#~ msgstr "serbski" + +#~ msgid "Sindhi" +#~ msgstr "Sindhi" + +#~ msgid "Sinhalese" +#~ msgstr "syngaleski" + +#~ msgid "Slovak" +#~ msgstr "słowacki" + +#~ msgid "Slovenian" +#~ msgstr "słoweński" + +#~ msgid "Swahili" +#~ msgstr "suahili" + +#~ msgid "Swedish" +#~ msgstr "szwecki" + +#~ msgid "Tajik" +#~ msgstr "tadżycki" + +#~ msgid "Tamil" +#~ msgstr "tamilski" + +#~ msgid "Tagalog" +#~ msgstr "tagalski" + +#~ msgid "Telugu" +#~ msgstr "telugu" + +#~ msgid "Thai" +#~ msgstr "tajski" + +#~ msgid "Tibetan" +#~ msgstr "tybetański" + +#~ msgid "Ukrainian" +#~ msgstr "ukraiński" + +#~ msgid "Urdu" +#~ msgstr "urdu" + +#~ msgid "Uzbek" +#~ msgstr "uzbecki" + +#~ msgid "Uighur" +#~ msgstr "uigur" + +#~ msgid "Vietnamese" +#~ msgstr "wietnamski" + +#~ msgid "Welsh" +#~ msgstr "walijski" + +#~ msgid "Yiddish" +#~ msgstr "jidysz" + +#~ msgid "" +#~ "TWBlue has detected that you're running" +#~ " windows 10 and has changed the " +#~ "default keymap to the Windows 10 " +#~ "keymap. It means that some keyboard " +#~ "shorcuts could be different. Please " +#~ "check the keystroke editor by pressing" +#~ " Alt+Win+K to see all available " +#~ "keystrokes for this keymap." +#~ msgstr "" +#~ "TWBlue wykrył, że uruchamiasz windows 10" +#~ " i zmienił domyślne skróty na te, " +#~ "przystosowane do Windows 10. To oznacza," +#~ " że niektóre skróty mogą być inne." +#~ " Proszę sprawdzić edytor skrótów " +#~ "klawiszowych naciskając Alt+Win+K abyś mógł" +#~ " zobaczyć wszystkie skróty dla tego " +#~ "zestawu skrótów." + +#~ msgid "Favorites: " +#~ msgstr "Ulubione: " + +#~ msgid "Date: " +#~ msgstr "data: " + +#~ msgid "Community for {}" +#~ msgstr "" + +#~ msgid "Run {0} at Windows startup" +#~ msgstr "Uruchom {0} przy starcie systemu windows" + +#~ msgid "Use Codeofdusk's longtweet handlers (may decrease client performance)" +#~ msgstr "" +#~ "Używaj obsługi długich tweetów autorstwa " +#~ "Codeofdusk's (może obniżyć wydajność klienta)" + +#~ msgid "Remember state for mention all and long tweet" +#~ msgstr "Zapomnij stan dla pól wyboru odpowiedz wszystkim i długi tweet" + +#~ msgid "Bio: " +#~ msgstr "" + +#~ msgid "Joined at: " +#~ msgstr "" + +#~ msgid "Field {} - Label: " +#~ msgstr "" + +#~ msgid "{} posts. Click to open posts timeline" +#~ msgstr "" + +#~ msgid "{} following. Click to open Following timeline" +#~ msgstr "" + +#~ msgid "{} followers. Click to open followers timeline" +#~ msgstr "" + +#~ msgid "Display Name" +#~ msgstr "" + +#~ msgid "Bio" +#~ msgstr "" + +#~ msgid "Change header" +#~ msgstr "" + +#~ msgid "Change avatar" +#~ msgstr "" + +#~ msgid "Field {}: Label" +#~ msgstr "" + +#~ msgid "Add following to database" +#~ msgstr "" + +#~ msgid "Read long posts in GUI" +#~ msgstr "" + +#~ msgid "LibreTranslate API URL: " +#~ msgstr "" + +#~ msgid "LibreTranslate API Key (optional): " +#~ msgstr "" + +#~ msgid "DeepL API Key: " +#~ msgstr "" diff --git a/srcantiguo/locales/pt/LC_MESSAGES/twblue.mo b/srcantiguo/locales/pt/LC_MESSAGES/twblue.mo new file mode 100644 index 00000000..664d01b2 Binary files /dev/null and b/srcantiguo/locales/pt/LC_MESSAGES/twblue.mo differ diff --git a/srcantiguo/locales/pt/LC_MESSAGES/twblue.po b/srcantiguo/locales/pt/LC_MESSAGES/twblue.po new file mode 100644 index 00000000..55e0f885 --- /dev/null +++ b/srcantiguo/locales/pt/LC_MESSAGES/twblue.po @@ -0,0 +1,4947 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2022 ORGANIZATION +# FIRST AUTHOR , 2022. +# Jonas S. Marques , 2022. +msgid "" +msgstr "" +"Project-Id-Version: TWBlue 0.80\n" +"Report-Msgid-Bugs-To: manuel@manuelcortez.net\n" +"POT-Creation-Date: 2025-04-13 01:18+0000\n" +"PO-Revision-Date: 2022-12-20 22:43+0000\n" +"Last-Translator: Anonymous \n" +"Language: pt\n" +"Language-Team: Portuguese " +"\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.17.0\n" + +#: languageHandler.py:61 +msgctxt "languageName" +msgid "Amharic" +msgstr "Dari" + +#: languageHandler.py:62 +msgctxt "languageName" +msgid "Aragonese" +msgstr "Japonês" + +#: languageHandler.py:63 +msgctxt "languageName" +msgid "Spanish" +msgstr "Espanhol" + +#: languageHandler.py:64 +msgctxt "languageName" +msgid "Portuguese" +msgstr "Português" + +#: languageHandler.py:65 +msgctxt "languageName" +msgid "Russian" +msgstr "Russo" + +#: languageHandler.py:66 +msgctxt "languageName" +msgid "italian" +msgstr "Italiano" + +#: languageHandler.py:67 +msgctxt "languageName" +msgid "Turkey" +msgstr "turco" + +#: languageHandler.py:68 +msgctxt "languageName" +msgid "Galician" +msgstr "Galego" + +#: languageHandler.py:69 +msgctxt "languageName" +msgid "Catala" +msgstr "Catalão" + +#: languageHandler.py:70 +msgctxt "languageName" +msgid "Vasque" +msgstr "Basco" + +#: languageHandler.py:71 +msgctxt "languageName" +msgid "polish" +msgstr "Polonês" + +#: languageHandler.py:72 +msgctxt "languageName" +msgid "Arabic" +msgstr "Árabe" + +#: languageHandler.py:73 +#, fuzzy +msgctxt "languageName" +msgid "Nepali" +msgstr "Nepalês" + +#: languageHandler.py:74 +msgctxt "languageName" +msgid "Serbian (Latin)" +msgstr "Sérvio (Latin)" + +#: languageHandler.py:75 +msgctxt "languageName" +msgid "Japanese" +msgstr "Japonês" + +#: languageHandler.py:99 +msgid "User default" +msgstr "Padrão do usuário" + +#: main.py:105 +#, fuzzy +msgid "https://twblue.mcvsoftware.com/donate" +msgstr "https://twblue.es/donate" + +#: main.py:118 +#, python-brace-format +msgid "" +"{0} is already running. Close the other instance before starting this " +"one. If you're sure that {0} isn't running, try deleting the file at {1}." +" If you're unsure of how to do this, contact the {0} developers." +msgstr "" +"{0} já está em execução. Feche a outra instância antes de iniciar esta. " +"Se você tem certeza de que {0} não está sendo executado, tente excluir o " +"arquivo em {1}. Se você não tem certeza de como fazer isso, entre em " +"contato com os desenvolvedores {0}." + +#: sound.py:148 +msgid "Playing..." +msgstr "Reproduzindo..." + +#: sound.py:161 +msgid "Stopped." +msgstr "Parado." + +#: controller/mainController.py:261 +msgid "Ready" +msgstr "Pronto" + +#: controller/mainController.py:369 controller/mainController.py:654 +#: controller/mainController.py:673 controller/mainController.py:692 +#: controller/mainController.py:711 +msgid "" +"No session is currently in focus. Focus a session with the next or " +"previous session shortcut." +msgstr "" +"Não há uma sessão em foco. Selecione uma sessão através dos atalhos " +"correspondentes." + +#: controller/mainController.py:373 +msgid "Empty buffer." +msgstr "Exibidor vazio." + +#: controller/mainController.py:380 +#, python-brace-format +msgid "{0} not found." +msgstr "{0} não foi encontrado." + +#: controller/mainController.py:702 controller/mainController.py:721 +#, python-format +msgid "%s, %s of %s" +msgstr "%s, %s de %s" + +#: controller/mainController.py:704 controller/mainController.py:723 +#: controller/mainController.py:751 controller/mainController.py:779 +#, python-format +msgid "%s. Empty" +msgstr "%s Vazío" + +#: controller/mainController.py:739 controller/mainController.py:743 +#: controller/mainController.py:767 +#, python-brace-format +msgid "{0}: This account is not logged into Twitter." +msgstr "{0}: Esta conta não está conectada ao Twitter." + +#: controller/mainController.py:749 controller/mainController.py:777 +#, python-format +msgid "%s. %s, %s of %s" +msgstr "%s. %s, %s de %s" + +#: controller/mainController.py:771 +#, python-brace-format +msgid "{0}: This account is not logged into twitter." +msgstr "{0}: Esta conta não está conectada ao Twitter." + +#: controller/mainController.py:910 controller/mainController.py:926 +msgid "An error happened while trying to connect to the server. Please try later." +msgstr "" +"Algo inesperado ocorreu ao tentar relatar o erro. Por favor, tente " +"novamente mais tarde" + +#: controller/mainController.py:957 +msgid "The auto-reading of new tweets is enabled for this buffer" +msgstr "A auto-leitura de novos tweets está ativada para este exibidor" + +#: controller/mainController.py:960 +msgid "The auto-reading of new tweets is disabled for this buffer" +msgstr "A auto-leitura de novos tweets está desativada para este exibidor" + +#: controller/mainController.py:967 +msgid "Session mute on" +msgstr "Silenciar sessão ativado" + +#: controller/mainController.py:970 +msgid "Session mute off" +msgstr "Silenciar sessão desativado" + +#: controller/mainController.py:979 +msgid "Buffer mute on" +msgstr "Exibidor mudo ativado." + +#: controller/mainController.py:982 +msgid "Buffer mute off" +msgstr "Exibidor mudo desativado." + +#: controller/mainController.py:999 +msgid "Copied" +msgstr "Copiado" + +#: controller/mainController.py:1019 +msgid "Unable to update this buffer." +msgstr "Não é possível atualizar este exibidor." + +#: controller/mainController.py:1021 +msgid "Updating buffer..." +msgstr "Atualizando o exibidor..." + +#: controller/mainController.py:1024 +#, python-brace-format +msgid "{0} items retrieved" +msgstr "{0} items recuperados" + +#: controller/buffers/mastodon/base.py:137 controller/mainController.py:1028 +#: controller/mastodon/handler.py:98 controller/mastodon/handler.py:241 +#, python-brace-format +msgid "Timeline for {}" +msgstr "Linha do tempo de {}" + +#: controller/buffers/mastodon/users.py:93 controller/mainController.py:1030 +#: controller/mastodon/handler.py:100 controller/mastodon/handler.py:255 +#, python-brace-format +msgid "Followers for {}" +msgstr "Seguidores de {}" + +#: controller/mainController.py:1032 +#, python-brace-format +msgid "Friends for {}" +msgstr "Pessoas que {} segue" + +# | msgid "Followers for {}" +#: controller/buffers/mastodon/users.py:95 controller/mainController.py:1034 +#: controller/mastodon/handler.py:102 controller/mastodon/handler.py:269 +#, fuzzy, python-brace-format +msgid "Following for {}" +msgstr "Seguidores de {}" + +#: controller/messages.py:18 +#, fuzzy +msgid "Translated" +msgstr "Traduzido" + +#: controller/settings.py:60 +msgid "System default" +msgstr "Padrão do sistema" + +#: controller/settings.py:60 +msgid "HTTP" +msgstr "http" + +#: controller/settings.py:60 +msgid "SOCKS v4" +msgstr "SOCKS v4" + +#: controller/settings.py:60 +msgid "SOCKS v4 with DNS support" +msgstr "SOCKS v4 Com suporte à dns)" + +#: controller/settings.py:60 +msgid "SOCKS v5" +msgstr "SOCKS v5" + +#: controller/settings.py:60 +msgid "SOCKS v5 with DNS support" +msgstr "SOCKS v5 (Com suporte à dns)" + +#: controller/userAlias.py:31 +#, python-brace-format +msgid "Edit alias for {}" +msgstr "Editar atalho de {}" + +#: controller/buffers/base/base.py:91 +#: controller/buffers/mastodon/conversations.py:237 +#: controller/buffers/mastodon/search.py:80 +msgid "This action is not supported for this buffer" +msgstr "Esta ação não é suportada neste exibidor" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:70 +#: controller/mastodon/settings.py:194 +msgid "Home" +msgstr "Início" + +#: controller/buffers/mastodon/base.py:52 +#: controller/buffers/mastodon/community.py:22 +#: controller/mastodon/handler.py:72 controller/mastodon/handler.py:114 +#: controller/mastodon/settings.py:195 +msgid "Local" +msgstr "" + +#: controller/buffers/mastodon/base.py:52 +#: controller/buffers/mastodon/community.py:22 +#: controller/mastodon/handler.py:74 controller/mastodon/settings.py:196 +msgid "Federated" +msgstr "" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:76 +#: controller/mastodon/settings.py:197 +msgid "Mentions" +msgstr "Menções" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:84 +#: controller/mastodon/settings.py:201 +msgid "Bookmarks" +msgstr "" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:78 +msgid "Direct messages" +msgstr "Mensagens recebidas" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:80 +#: controller/mastodon/settings.py:199 +msgid "Sent" +msgstr "" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:82 +#: controller/mastodon/settings.py:200 wxUI/dialogs/mastodon/postDialogs.py:229 +msgid "Favorites" +msgstr "" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:86 +#: controller/mastodon/settings.py:202 +msgid "Followers" +msgstr "Seguidores" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:88 +#: controller/mastodon/settings.py:203 +msgid "Following" +msgstr "Seguindo" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:92 +#: controller/mastodon/settings.py:204 +msgid "Blocked users" +msgstr "Usuários bloqueados" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:90 +#: controller/mastodon/settings.py:205 +msgid "Muted users" +msgstr "Usuários silenciados" + +# | msgid "&Location" +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:94 +#: controller/mastodon/settings.py:206 +#: wxUI/dialogs/mastodon/filters/create_filter.py:80 +#, fuzzy +msgid "Notifications" +msgstr "&Localização" + +#: controller/buffers/mastodon/base.py:58 +#, python-brace-format +msgid "{username}'s timeline" +msgstr "Linha do tempo de {username}'s" + +#: controller/buffers/mastodon/base.py:60 +#, python-brace-format +msgid "{username}'s followers" +msgstr "{username}'s seguidores" + +# | msgid "{username}'s followers" +#: controller/buffers/mastodon/base.py:62 +#, fuzzy, python-brace-format +msgid "{username}'s following" +msgstr "{username}'s seguidores" + +#: controller/buffers/mastodon/base.py:64 +msgid "Unknown buffer" +msgstr "Desconhecido" + +#: controller/buffers/mastodon/base.py:67 +#: controller/buffers/mastodon/base.py:645 wxUI/buffers/mastodon/base.py:24 +#: wxUI/buffers/mastodon/conversationList.py:24 +#: wxUI/buffers/mastodon/notifications.py:22 wxUI/buffers/mastodon/user.py:18 +#: wxUI/dialogs/mastodon/postDialogs.py:5 +#: wxUI/dialogs/mastodon/postDialogs.py:194 wxUI/sysTrayIcon.py:35 +msgid "Post" +msgstr "" + +# | msgid "Write the tweet here" +#: controller/buffers/mastodon/base.py:68 +#: controller/buffers/mastodon/base.py:646 +#, fuzzy +msgid "Write your post here" +msgstr "Digite aqui o tweet" + +# | msgid "New tweet in {0}" +#: controller/buffers/mastodon/base.py:153 +#, fuzzy, python-brace-format +msgid "New post in {0}" +msgstr "Novo tweet em {0}" + +# | msgid "{0} new tweets in {1}." +#: controller/buffers/mastodon/base.py:159 +#, fuzzy, python-brace-format +msgid "{0} new posts in {1}." +msgstr "@{0} novos tweets em : {1}" + +#: controller/buffers/mastodon/base.py:198 +#: controller/buffers/mastodon/community.py:90 +#: controller/buffers/mastodon/conversations.py:100 +#: controller/buffers/mastodon/mentions.py:82 +#: controller/buffers/mastodon/users.py:139 +#, python-format +msgid "%s items retrieved" +msgstr "%s items recuperados" + +#: controller/buffers/mastodon/base.py:216 +#: controller/buffers/mastodon/users.py:206 +msgid "This buffer is not a timeline; it can't be deleted." +msgstr "Este exibidor não é uma linha do tempo que pode ser excluído." + +# | msgid "Conversation with {0}" +#: controller/buffers/mastodon/base.py:346 +#: controller/buffers/mastodon/base.py:384 +#, fuzzy, python-brace-format +msgid "Conversation with {}" +msgstr "Conversa com {0}" + +# | msgid "Write the tweet here" +#: controller/buffers/mastodon/base.py:347 +#: controller/buffers/mastodon/base.py:385 +#: controller/buffers/mastodon/conversations.py:181 +#: controller/buffers/mastodon/notifications.py:122 +#: controller/buffers/mastodon/users.py:52 +#, fuzzy +msgid "Write your message here" +msgstr "Digite aqui o tweet" + +# | msgid "Reply to {arg0}" +#: controller/buffers/mastodon/base.py:349 +#, fuzzy, python-brace-format +msgid "Reply to {}" +msgstr "Responder a {arg0}" + +# | msgid "Write the tweet here" +#: controller/buffers/mastodon/base.py:350 +#, fuzzy +msgid "Write your reply here" +msgstr "Digite aqui o tweet" + +#: controller/buffers/mastodon/base.py:412 +#, fuzzy +msgid "This action is not supported on conversations." +msgstr "Esta ação não é suportada neste exibidor" + +#: controller/buffers/mastodon/base.py:477 +msgid "Opening URL..." +msgstr "Abrindo URL..." + +#: controller/buffers/mastodon/base.py:490 +msgid "You can delete only your own posts." +msgstr "" + +#: controller/buffers/mastodon/base.py:519 +msgid "Opening item in web browser..." +msgstr "Abrindo item no navegador da Web..." + +#: controller/buffers/mastodon/base.py:527 +#: controller/buffers/mastodon/base.py:547 +msgid "Adding to favorites..." +msgstr "" + +# | msgid "Remove from list" +#: controller/buffers/mastodon/base.py:534 +#: controller/buffers/mastodon/base.py:549 +#, fuzzy +msgid "Removing from favorites..." +msgstr "Remover da lista" + +#: controller/buffers/mastodon/base.py:544 +#: controller/buffers/mastodon/base.py:559 +#: controller/buffers/mastodon/base.py:573 +#: controller/buffers/mastodon/conversations.py:213 +msgid "No status found with that ID" +msgstr "Não encontrado estado com esse ID" + +#: controller/buffers/mastodon/base.py:562 +msgid "Adding to bookmarks..." +msgstr "" + +#: controller/buffers/mastodon/base.py:564 +msgid "Removing from bookmarks..." +msgstr "" + +#: controller/buffers/mastodon/base.py:586 +#, python-brace-format +msgid "Picture {0}" +msgstr "Imagens de {0}" + +#: controller/buffers/mastodon/base.py:587 +msgid "Select the picture" +msgstr "Selecione a imagem" + +#: controller/buffers/mastodon/base.py:610 +msgid "Unable to extract text" +msgstr "Não é possível extrair texto" + +#: controller/buffers/mastodon/base.py:612 +msgid "OCR Result" +msgstr "" + +#: controller/buffers/mastodon/base.py:627 +msgid "this poll no longer exists." +msgstr "" + +#: controller/buffers/mastodon/base.py:630 +msgid "This poll has already expired." +msgstr "" + +#: controller/buffers/mastodon/base.py:633 +msgid "You have already voted on this poll." +msgstr "" + +#: controller/buffers/mastodon/base.py:642 +#, fuzzy +msgid "Sending vote..." +msgstr "Gravando áudio..." + +# | msgid "Conversation with {0}" +#: controller/buffers/mastodon/conversations.py:180 +#, fuzzy, python-brace-format +msgid "Reply to conversation with {}" +msgstr "Conversa com {0}" + +# | msgid "Conversation with {0}" +#: controller/buffers/mastodon/notifications.py:121 +#: controller/buffers/mastodon/users.py:51 +#, fuzzy, python-brace-format +msgid "New conversation with {}" +msgstr "Conversa com {0}" + +#: controller/buffers/mastodon/notifications.py:151 +msgid "Notification dismissed." +msgstr "" + +# | msgid "There are no coordinates in this tweet" +#: controller/buffers/mastodon/users.py:110 +#, fuzzy +msgid "There are no more items in this buffer." +msgstr "Não há coordenadas neste tweet" + +#: controller/mastodon/handler.py:30 wxUI/dialogs/mastodon/updateProfile.py:35 +#, fuzzy +msgid "Update Profile" +msgstr "&Atualizar perfil" + +#: controller/mastodon/handler.py:31 wxUI/dialogs/mastodon/search.py:10 +#: wxUI/view.py:19 +msgid "&Search" +msgstr "&Buscar no Twitter" + +#: controller/mastodon/handler.py:33 wxUI/view.py:22 +msgid "Manage user aliases" +msgstr "" + +#: controller/mastodon/handler.py:35 controller/mastodon/handler.py:59 +#: wxUI/view.py:30 +msgid "&Post" +msgstr "" + +#: controller/mastodon/handler.py:36 wxUI/dialogs/mastodon/menus.py:9 +#: wxUI/dialogs/mastodon/menus.py:37 wxUI/view.py:31 +msgid "Re&ply" +msgstr "&Responder" + +#: controller/mastodon/handler.py:37 wxUI/dialogs/mastodon/menus.py:7 +#: wxUI/dialogs/mastodon/menus.py:35 wxUI/view.py:32 +msgid "&Boost" +msgstr "" + +# | msgid "&Add to list" +#: controller/mastodon/handler.py:38 wxUI/dialogs/mastodon/menus.py:11 +#: wxUI/dialogs/mastodon/menus.py:39 wxUI/view.py:33 +#, fuzzy +msgid "&Add to favorites" +msgstr "A&dicionar à lista" + +# | msgid "Remove from list" +#: controller/mastodon/handler.py:39 +#, fuzzy +msgid "Remove from favorites" +msgstr "Remover da lista" + +# | msgid "&Show user" +#: controller/mastodon/handler.py:40 wxUI/dialogs/mastodon/menus.py:21 +#: wxUI/dialogs/mastodon/menus.py:49 wxUI/view.py:35 +#, fuzzy +msgid "&Show post" +msgstr "Mostrar &usuário" + +#: controller/mastodon/handler.py:41 wxUI/view.py:36 +msgid "View conversa&tion" +msgstr "M&ostrar conversa" + +#: controller/mastodon/handler.py:42 wxUI/view.py:37 +msgid "Read text in picture" +msgstr "Ler texto da imagem" + +#: controller/mastodon/handler.py:43 wxUI/dialogs/mastodon/menus.py:25 +#: wxUI/view.py:39 +msgid "&Delete" +msgstr "E&xcluir" + +#: controller/mastodon/handler.py:45 wxUI/view.py:43 +msgid "&Actions..." +msgstr "&Ações..." + +#: controller/mastodon/handler.py:46 wxUI/view.py:44 +msgid "&View timeline..." +msgstr "Ver linha do &tempo." + +#: controller/mastodon/handler.py:47 wxUI/view.py:45 +msgid "Direct me&ssage" +msgstr "&Mensagem" + +#: controller/mastodon/handler.py:48 wxUI/view.py:46 +msgid "Add a&lias" +msgstr "" + +#: controller/mastodon/handler.py:51 +#, fuzzy +msgid "Show user profile" +msgstr "Mostrar &perfil" + +#: controller/mastodon/handler.py:54 +msgid "Create c&ommunity timeline" +msgstr "" + +#: controller/mastodon/handler.py:55 wxUI/view.py:57 +msgid "Create a &filter" +msgstr "Criar novo &filtro" + +#: controller/mastodon/handler.py:56 wxUI/view.py:58 +msgid "&Manage filters" +msgstr "&Gerenciar Filtros" + +#: controller/mastodon/handler.py:95 +msgid "Timelines" +msgstr "Linhas do tempo" + +#: controller/mastodon/handler.py:107 +msgid "Searches" +msgstr "Buscas" + +#: controller/mastodon/handler.py:110 controller/mastodon/handler.py:191 +#: controller/mastodon/handler.py:196 +#, python-brace-format +msgid "Search for {}" +msgstr "Busca por {}" + +#: controller/mastodon/handler.py:111 +msgid "Communities" +msgstr "" + +#: controller/mastodon/handler.py:114 +#, fuzzy +msgid "federated" +msgstr "Linha do tempo de {username}'s" + +#: controller/mastodon/handler.py:143 +#, python-brace-format +msgid "Conversation with {0}" +msgstr "Conversa com {0}" + +#: controller/mastodon/handler.py:299 +msgid "Add an user alias" +msgstr "Adicionar um atalho de usuário" + +#: controller/mastodon/handler.py:311 +#, python-brace-format +msgid "Alias has been set correctly for {}." +msgstr "Sucesso ao definir um atalho para {}" + +#: controller/mastodon/handler.py:342 +#, fuzzy +msgid "Update profile" +msgstr "&Atualizar perfil" + +#: controller/mastodon/messages.py:115 +#, python-format +msgid "%s - %s of %d characters" +msgstr "%s - %s de %d caracteres" + +#: controller/mastodon/messages.py:239 +#, python-brace-format +msgid "Poll with {} options" +msgstr "" + +# | msgid "List for {}" +#: controller/mastodon/messages.py:272 +#, fuzzy, python-brace-format +msgid "Post from {}" +msgstr "Lista de {}" + +#: controller/mastodon/messages.py:276 sessions/mastodon/templates.py:82 +#: wxUI/dialogs/mastodon/postDialogs.py:49 +msgid "Public" +msgstr "Público" + +# | msgid "Accounts list" +#: controller/mastodon/messages.py:276 sessions/mastodon/templates.py:82 +#: wxUI/dialogs/mastodon/postDialogs.py:49 +#, fuzzy +msgid "Not listed" +msgstr "lista de contas" + +# | msgid "Followers" +#: controller/mastodon/messages.py:276 +#, fuzzy +msgid "followers only" +msgstr "Seguidores" + +# | msgid "Direct message" +#: controller/mastodon/messages.py:276 sessions/mastodon/templates.py:82 +#: wxUI/dialogs/mastodon/postDialogs.py:49 +#, fuzzy +msgid "Direct" +msgstr "Mensagem direta" + +# | msgid "Remove client" +#: controller/mastodon/messages.py:283 +#, fuzzy +msgid "Remote instance" +msgstr "Remover cliente" + +#: controller/mastodon/messages.py:291 controller/mastodon/messages.py:319 +#, fuzzy +msgid "Unmute conversation" +msgstr "Ver a conversa" + +#: controller/mastodon/messages.py:315 wxUI/dialogs/mastodon/postDialogs.py:237 +#, fuzzy +msgid "Mute conversation" +msgstr "Ver a conversa" + +# | msgid "Conversation with {0}" +#: controller/mastodon/messages.py:316 +#, fuzzy +msgid "Conversation unmuted." +msgstr "Conversa com {0}" + +# | msgid "Conversation with {0}" +#: controller/mastodon/messages.py:320 +#, fuzzy +msgid "Conversation muted." +msgstr "Conversa com {0}" + +#: controller/mastodon/messages.py:331 +msgid "people who boosted this post" +msgstr "" + +#: controller/mastodon/messages.py:336 +msgid "people who favorited this post" +msgstr "" + +#: controller/mastodon/messages.py:342 +msgid "Link copied to clipboard." +msgstr "Copiar para área de transferência" + +#: controller/mastodon/settings.py:82 +#, python-format +msgid "Account settings for %s" +msgstr "Configurações de conta para %s" + +# | msgid "Edit template for persons. Current template: {}" +#: controller/mastodon/settings.py:92 +#, fuzzy, python-brace-format +msgid "Edit template for posts. Current template: {}" +msgstr "Editar modelos para pessoas. Modelo atual {}" + +# | msgid "Edit template for persons. Current template: {}" +#: controller/mastodon/settings.py:101 +#, fuzzy, python-brace-format +msgid "Edit template for conversations. Current template: {}" +msgstr "Editar modelos para pessoas. Modelo atual {}" + +#: controller/mastodon/settings.py:110 +#, python-brace-format +msgid "Edit template for persons. Current template: {}" +msgstr "Editar modelos para pessoas. Modelo atual {}" + +#: controller/mastodon/settings.py:198 +msgid "Direct Messages" +msgstr "Mensagens Recebidas" + +#: controller/mastodon/filters/create_filter.py:75 +#, fuzzy, python-brace-format +msgid "Update Filter: {}" +msgstr "&Atualizar perfil" + +#: controller/mastodon/filters/manage_filters.py:57 +#: wxUI/dialogs/mastodon/filters/create_filter.py:90 +msgid "Never" +msgstr "" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:4 +msgid "Audio tweet." +msgstr "Tweet com áudio." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:5 +msgid "User timeline buffer created." +msgstr "Criado exibidor para linha do tempo do usuário." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:6 +msgid "Buffer destroied." +msgstr "Exibidor destruído." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:7 +msgid "Direct message received." +msgstr "Mensagem direta recebida." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:8 +msgid "Direct message sent." +msgstr "Mensagem direta enviada." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:9 +msgid "Error." +msgstr "Erro." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:10 +msgid "Tweet liked." +msgstr "Tweet curtido." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:11 +msgid "Likes buffer updated." +msgstr "Exibidor de curtidas atualizado." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:12 +msgid "Geotweet." +msgstr "Tweet com geolocalização." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:13 +msgid "Tweet contains one or more images" +msgstr "Tweet contém uma ou mais imagens" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:14 +msgid "Boundary reached." +msgstr "Limite alcançado." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:15 +msgid "List updated." +msgstr "Lista atualizada." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:16 +msgid "Too many characters." +msgstr "Número de caracteres excedido." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:17 +msgid "Mention received." +msgstr "Menção recebida." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:18 +msgid "New event." +msgstr "Nova notificação." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:19 +#, python-brace-format +msgid "{0} is ready." +msgstr "O {0} está pronto." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:20 +msgid "Mention sent." +msgstr "Menção enviada." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:21 +msgid "Tweet retweeted." +msgstr "Tweet retweetado." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:22 +msgid "Search buffer updated." +msgstr "Exibidor de busca atualizado." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:23 +msgid "Tweet received." +msgstr "Tweet recebido." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:24 +msgid "Tweet sent." +msgstr "Tweet enviado." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:25 +msgid "Trending topics buffer updated." +msgstr "Exibidor de assuntos do momento atualizado." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:26 +msgid "New tweet in user timeline buffer." +msgstr "Exibidor da linha do tempo de usuário atualizado." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:27 +msgid "New follower." +msgstr "Novo seguidor." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:28 +msgid "Volume changed." +msgstr "Volume alterado." + +#: extra/SoundsTutorial/wx_ui.py:8 +msgid "Sounds tutorial" +msgstr "Conhecer os sons" + +#: extra/SoundsTutorial/wx_ui.py:11 +msgid "Press enter to listen to the sound for the selected event" +msgstr "Pressione Enter para ouvir o som do evento selecionado" + +#: extra/SpellChecker/spellchecker.py:56 +#, python-format +msgid "Misspelled word: %s" +msgstr "Palavra incorreta: %s" + +#: extra/SpellChecker/wx_ui.py:27 +msgid "Misspelled word" +msgstr "Palavra incorreta" + +#: extra/SpellChecker/wx_ui.py:32 +msgid "Context" +msgstr "Contexto" + +#: extra/SpellChecker/wx_ui.py:37 +msgid "Suggestions" +msgstr "Sugestões" + +#: extra/SpellChecker/wx_ui.py:42 +msgid "&Ignore" +msgstr "&Ignorar" + +#: extra/SpellChecker/wx_ui.py:43 +msgid "I&gnore all" +msgstr "Ignorar todas" + +#: extra/SpellChecker/wx_ui.py:44 +msgid "&Replace" +msgstr "Alterar" + +#: extra/SpellChecker/wx_ui.py:45 +msgid "R&eplace all" +msgstr "Alterar todas" + +#: extra/SpellChecker/wx_ui.py:46 +msgid "&Add to personal dictionary" +msgstr "&Adicionar ao dicionário pessoal" + +#: extra/SpellChecker/wx_ui.py:79 +#, python-brace-format +msgid "" +"An error has occurred. There are no dictionaries available for the " +"selected language in {0}" +msgstr "" +"Ocorreu um erro. Não há dicionários disponíveis para o idioma selecionado" +" em {0}" + +#: extra/SpellChecker/wx_ui.py:79 +#: extra/autocompletionUsers/mastodon/wx_scan.py:44 +#: wxUI/commonMessageDialogs.py:23 wxUI/commonMessageDialogs.py:36 +#: wxUI/commonMessageDialogs.py:45 wxUI/commonMessageDialogs.py:52 +#: wxUI/commonMessageDialogs.py:55 wxUI/commonMessageDialogs.py:61 +#: wxUI/dialogs/mastodon/dialogs.py:38 wxUI/dialogs/mastodon/dialogs.py:43 +#: wxUI/dialogs/mastodon/dialogs.py:48 wxUI/dialogs/mastodon/dialogs.py:53 +#: wxUI/dialogs/mastodon/dialogs.py:60 +msgid "Error" +msgstr "Erro" + +#: extra/SpellChecker/wx_ui.py:82 +msgid "Spell check complete." +msgstr "Verificação ortográfica completa." + +#: extra/autocompletionUsers/completion.py:39 +#: extra/autocompletionUsers/completion.py:57 +msgid "You have to start writing" +msgstr "" + +# | msgid "There are no coordinates in this tweet" +#: extra/autocompletionUsers/completion.py:49 +#: extra/autocompletionUsers/completion.py:66 +#, fuzzy +msgid "There are no results in your users database" +msgstr "Não há coordenadas neste tweet" + +#: extra/autocompletionUsers/completion.py:51 +#, fuzzy +msgid "Autocompletion only works for users." +msgstr "Auto &completar usuários" + +#: extra/autocompletionUsers/wx_manage.py:9 +#, fuzzy +msgid "Manage Autocompletion database" +msgstr "Gerenciar banco de dados do auto completar usuários" + +#: extra/autocompletionUsers/wx_manage.py:12 +#, fuzzy, python-brace-format +msgid "Editing {0} users database" +msgstr "Editando usuários do banco de dados do {0}" + +#: extra/autocompletionUsers/wx_manage.py:13 +#, fuzzy +msgid "Username" +msgstr "Usuário" + +#: extra/autocompletionUsers/wx_manage.py:13 wxUI/dialogs/configuration.py:108 +msgid "Name" +msgstr "Nome" + +#: extra/autocompletionUsers/wx_manage.py:16 +#, fuzzy +msgid "Add user" +msgstr "Usuário" + +#: extra/autocompletionUsers/wx_manage.py:17 +#, fuzzy +msgid "Remove user" +msgstr "Remover usuário" + +#: extra/autocompletionUsers/wx_manage.py:38 +msgid "Twitter username" +msgstr "" + +#: extra/autocompletionUsers/wx_manage.py:38 +#, fuzzy +msgid "Add user to database" +msgstr "Adicionar um atalho de usuário" + +#: extra/autocompletionUsers/wx_manage.py:44 +#, fuzzy +msgid "The user does not exist" +msgstr "Esse usuário não existe" + +#: extra/autocompletionUsers/wx_manage.py:44 +#, fuzzy +msgid "Error!" +msgstr "Erro" + +#: extra/autocompletionUsers/mastodon/scan.py:49 +msgid "" +"Updating database... You can close this window now. A message will tell " +"you when the process finishes." +msgstr "" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:8 +#, fuzzy +msgid "Autocomplete users' settings" +msgstr "Auto &completar usuários" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:11 +#, fuzzy +msgid "Add &followers to database" +msgstr "Adicionar um atalho de usuário" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:12 +#, fuzzy +msgid "Add f&ollowing to database" +msgstr "Adicionar um atalho de usuário" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:26 +#, fuzzy +msgid "Updating autocompletion database" +msgstr "Gerenciar banco de dados do auto completar usuários" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:34 +msgid "" +"This process will retrieve the users you selected from your Mastodon " +"account, and add them to the user autocomplete database. Please note that" +" if there are many users or you have tried to perform this action less " +"than 15 minutes ago, TWBlue may reach a limit in API calls when trying to" +" load the users into the database. If this happens, we will show you an " +"error, in which case you will have to try this process again in a few " +"minutes. If this process ends with no error, you will be redirected back " +"to the account settings dialog. Do you want to continue?" +msgstr "" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:34 +#: wxUI/commonMessageDialogs.py:20 +msgid "Attention" +msgstr "Atenção" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:40 +#, python-brace-format +msgid "TWBlue has imported {} users successfully." +msgstr "" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:40 +#, fuzzy +msgid "Done" +msgstr "Pronto!" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:44 +msgid "Error adding users from Mastodon. Please try again in about 15 minutes." +msgstr "" + +#: extra/ocr/OCRSpace.py:7 +msgid "Detect automatically" +msgstr "Detectar automaticamente" + +#: extra/ocr/OCRSpace.py:7 +msgid "Danish" +msgstr "Dinamarquês" + +#: extra/ocr/OCRSpace.py:7 +msgid "Dutch" +msgstr "Holandês" + +#: extra/ocr/OCRSpace.py:7 +msgid "English" +msgstr "Inglês" + +#: extra/ocr/OCRSpace.py:7 +msgid "Finnish" +msgstr "Finlandês" + +#: extra/ocr/OCRSpace.py:7 +msgid "French" +msgstr "Francês" + +#: extra/ocr/OCRSpace.py:7 +msgid "German" +msgstr "Alemão" + +#: extra/ocr/OCRSpace.py:7 +msgid "Hungarian" +msgstr "Húngaro" + +#: extra/ocr/OCRSpace.py:7 +msgid "Korean" +msgstr "Coreano" + +#: extra/ocr/OCRSpace.py:7 +msgid "Italian" +msgstr "Italiano" + +#: extra/ocr/OCRSpace.py:7 +msgid "Japanese" +msgstr "Japonês" + +#: extra/ocr/OCRSpace.py:7 +msgid "Polish" +msgstr "Polonês" + +#: extra/ocr/OCRSpace.py:7 +msgid "Portuguese" +msgstr "Português" + +#: extra/ocr/OCRSpace.py:7 +msgid "Russian" +msgstr "Russo" + +#: extra/ocr/OCRSpace.py:7 +msgid "Spanish" +msgstr "Espanhol" + +#: extra/ocr/OCRSpace.py:7 +msgid "Turkish" +msgstr "Turco" + +#: extra/translator/wx_ui.py:25 +msgid "Translate message" +msgstr "Traduzir mensagem" + +#: extra/translator/wx_ui.py:29 +#, fuzzy +msgid "Translation engine" +msgstr "Traduzido" + +#: extra/translator/wx_ui.py:32 +msgid "Target language" +msgstr "Idioma de destino" + +#: keystrokeEditor/wx_ui.py:8 +msgid "Keystroke editor" +msgstr "Editor de teclas de atalho" + +#: keystrokeEditor/wx_ui.py:11 +msgid "Select a keystroke to edit" +msgstr "Selecione uma ação para editar a tecla de atalho" + +#: keystrokeEditor/wx_ui.py:12 +#: wxUI/dialogs/mastodon/filters/manage_filters.py:18 +#: wxUI/dialogs/mastodon/userActions.py:9 +#: wxUI/dialogs/mastodon/userActions.py:18 +#: wxUI/dialogs/mastodon/userActions.py:19 +msgid "Action" +msgstr "Ação" + +#: keystrokeEditor/wx_ui.py:12 +msgid "Keystroke" +msgstr "Tecla de atalho" + +#: keystrokeEditor/wx_ui.py:17 +#: wxUI/dialogs/mastodon/filters/manage_filters.py:23 +#: wxUI/dialogs/userAliasDialogs.py:53 +msgid "Edit" +msgstr "Editar" + +#: keystrokeEditor/wx_ui.py:19 keystrokeEditor/wx_ui.py:49 +#, fuzzy +msgid "Undefine keystroke" +msgstr "Editando teclas de atalho" + +#: keystrokeEditor/wx_ui.py:20 +msgid "Execute action" +msgstr "Executar ação" + +#: keystrokeEditor/wx_ui.py:21 wxUI/dialogs/userAliasDialogs.py:25 +msgid "Close" +msgstr "Fechar" + +#: keystrokeEditor/wx_ui.py:41 +msgid "Undefined" +msgstr "" + +#: keystrokeEditor/wx_ui.py:49 +#, fuzzy +msgid "Are you sure you want to undefine this keystroke?" +msgstr "Você tem certeza que deseja excluir esta lista?" + +#: keystrokeEditor/wx_ui.py:53 +msgid "Editing keystroke" +msgstr "Editando teclas de atalho" + +#: keystrokeEditor/wx_ui.py:56 +msgid "Control" +msgstr "Control" + +#: keystrokeEditor/wx_ui.py:57 +msgid "Alt" +msgstr "Alt" + +#: keystrokeEditor/wx_ui.py:58 +msgid "Shift" +msgstr "Shift" + +#: keystrokeEditor/wx_ui.py:59 +msgid "Windows" +msgstr "Windows" + +#: keystrokeEditor/wx_ui.py:65 +msgid "Key" +msgstr "Tecla" + +#: keystrokeEditor/wx_ui.py:70 wxUI/dialogs/find.py:21 +#: wxUI/dialogs/mastodon/showUserProfile.py:31 +#: wxUI/dialogs/userAliasDialogs.py:23 +msgid "OK" +msgstr "OK" + +#: keystrokeEditor/wx_ui.py:83 +msgid "You need to use the Windows key" +msgstr "Você precisa usar a tecla Windows" + +#: keystrokeEditor/wx_ui.py:83 keystrokeEditor/wx_ui.py:86 +msgid "Invalid keystroke" +msgstr "Tecla de atalho inválida" + +#: keystrokeEditor/wx_ui.py:86 +msgid "You must provide a character for the keystroke" +msgstr "Você deve fornecer um caracter para o pressionamento de teclas" + +#: keystrokeEditor/actions/mastodon.py:3 +msgid "Go up in the current buffer" +msgstr "Navegar para cima no exibidor ativo" + +#: keystrokeEditor/actions/mastodon.py:4 +msgid "Go down in the current buffer" +msgstr "Navegar para baixo no exibidor ativo" + +#: keystrokeEditor/actions/mastodon.py:5 +msgid "Go to the previous buffer" +msgstr "Navegar para o exibidor anterior" + +#: keystrokeEditor/actions/mastodon.py:6 +msgid "Go to the next buffer" +msgstr "Navegar para o próximo exibidor" + +#: keystrokeEditor/actions/mastodon.py:7 +msgid "Focus the next session" +msgstr "Selecionar próxima sessão" + +#: keystrokeEditor/actions/mastodon.py:8 +msgid "Focus the previous session" +msgstr "Selecionar sessão anterior" + +#: keystrokeEditor/actions/mastodon.py:9 +msgid "Show or hide the GUI" +msgstr "Mostrar ou ocultar a janela" + +# | msgid "Create a new list" +#: keystrokeEditor/actions/mastodon.py:10 +#, fuzzy +msgid "Make a new post" +msgstr "Criar nova lista" + +#: keystrokeEditor/actions/mastodon.py:11 wxUI/buffers/mastodon/base.py:26 +#: wxUI/buffers/mastodon/conversationList.py:25 +msgid "Reply" +msgstr "Responder" + +#: keystrokeEditor/actions/mastodon.py:12 wxUI/buffers/mastodon/base.py:25 +#: wxUI/dialogs/mastodon/dialogs.py:7 +msgid "Boost" +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:13 +msgid "Send direct message" +msgstr "Enviar mensagem direta" + +#: keystrokeEditor/actions/mastodon.py:14 +msgid "Add post to favorites" +msgstr "" + +# | msgid "Remove from list" +#: keystrokeEditor/actions/mastodon.py:15 +#, fuzzy +msgid "Remove post from favorites" +msgstr "Remover da lista" + +#: keystrokeEditor/actions/mastodon.py:16 +msgid "Add/remove post from favorites" +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:17 +msgid "Open the user actions dialogue" +msgstr "Abrir o diálogo de ações do usuário" + +#: keystrokeEditor/actions/mastodon.py:18 +#, fuzzy +msgid "See user details" +msgstr "Remover usuário" + +# | msgid "Show tweet" +#: keystrokeEditor/actions/mastodon.py:19 +#, fuzzy +msgid "Show post" +msgstr "Mostrar tweet" + +#: keystrokeEditor/actions/mastodon.py:20 +msgid "Quit" +msgstr "Sair" + +#: keystrokeEditor/actions/mastodon.py:21 +msgid "Open user timeline" +msgstr "Abrir linha do tempo do usuário" + +#: keystrokeEditor/actions/mastodon.py:22 +msgid "Destroy buffer" +msgstr "Destruir exibidor" + +# | msgid "Interact with the currently focused tweet." +#: keystrokeEditor/actions/mastodon.py:23 +#, fuzzy +msgid "Interact with the currently focused post." +msgstr "Interagir com o tweet em foco." + +#: keystrokeEditor/actions/mastodon.py:24 +msgid "Open URL" +msgstr "Abrir URL" + +# | msgid "View in Twitter" +#: keystrokeEditor/actions/mastodon.py:25 +#, fuzzy +msgid "View in browser" +msgstr "Buscar no Twitter" + +#: keystrokeEditor/actions/mastodon.py:26 +msgid "Increase volume by 5%" +msgstr "Aumentar o volume em 5%" + +#: keystrokeEditor/actions/mastodon.py:27 +msgid "Decrease volume by 5%" +msgstr "Diminuir o volume em 5%" + +#: keystrokeEditor/actions/mastodon.py:28 +msgid "Jump to the first element of a buffer" +msgstr "Ir para o primeiro elemento de um exibidor" + +#: keystrokeEditor/actions/mastodon.py:29 +msgid "Jump to the last element of the current buffer" +msgstr "Ir para o último elemento de um exibidor" + +#: keystrokeEditor/actions/mastodon.py:30 +msgid "Jump 20 elements up in the current buffer" +msgstr "Saltar 20 elementos para cima no exibidor ativo" + +#: keystrokeEditor/actions/mastodon.py:31 +msgid "Jump 20 elements down in the current buffer" +msgstr "Saltar 20 elementos para baixo no exibidor ativo" + +# | msgid "Delete" +#: keystrokeEditor/actions/mastodon.py:33 +#, fuzzy +msgid "Delete post" +msgstr "Excluir" + +#: keystrokeEditor/actions/mastodon.py:34 +msgid "Empty the current buffer" +msgstr "Esvaziar o exibidor ativo" + +#: keystrokeEditor/actions/mastodon.py:35 +msgid "Repeat last item" +msgstr "Repetir o último item" + +#: keystrokeEditor/actions/mastodon.py:36 +msgid "Copy to clipboard" +msgstr "Copiar para área de transferência" + +#: keystrokeEditor/actions/mastodon.py:39 +msgid "Mute/unmute the active buffer" +msgstr "Silenciar / desativar silêncio no exibidor ativo" + +#: keystrokeEditor/actions/mastodon.py:40 +msgid "Mute/unmute the current session" +msgstr "Silenciar / desativar silêncio na sessão ativa" + +#: keystrokeEditor/actions/mastodon.py:41 +msgid "toggle the automatic reading of incoming tweets in the active buffer" +msgstr "Alternar a leitura automática de tweets recebidos no exibidor ativo" + +# | msgid "Search on twitter" +#: keystrokeEditor/actions/mastodon.py:42 +#, fuzzy +msgid "Search on instance" +msgstr "Buscar no Twitter" + +#: keystrokeEditor/actions/mastodon.py:43 +msgid "Find a string in the currently focused buffer" +msgstr "Encontrar uma seqüência de caracteres no exibidor ativo" + +#: keystrokeEditor/actions/mastodon.py:44 +msgid "Show the keystroke editor" +msgstr "Mostrar editor de teclas de atalho" + +#: keystrokeEditor/actions/mastodon.py:46 +msgid "load previous items" +msgstr "carregar itens anteriores" + +#: keystrokeEditor/actions/mastodon.py:48 +msgid "View conversation" +msgstr "Ver a conversa" + +#: keystrokeEditor/actions/mastodon.py:49 +msgid "Check and download updates" +msgstr "Verificar e baixar as atualizações" + +#: keystrokeEditor/actions/mastodon.py:50 +msgid "Opens the global settings dialogue" +msgstr "Abrir o diálogo de configurações globais" + +#: keystrokeEditor/actions/mastodon.py:52 +msgid "Opens the account settings dialogue" +msgstr "Abrir o diálogo de configurações da conta" + +# | msgid "Try to play an audio file" +#: keystrokeEditor/actions/mastodon.py:53 +#, fuzzy +msgid "Try to play a media file" +msgstr "Tentar reproduzir arquivo de áudio" + +#: keystrokeEditor/actions/mastodon.py:54 +msgid "Updates the buffer and retrieves possible lost items there." +msgstr "Atualizar o exibidor e recuperar possíveis itens perdidos." + +#: keystrokeEditor/actions/mastodon.py:55 +msgid "Extracts the text from a picture and displays the result in a dialog." +msgstr "" +"Extrair o texto de uma imagem e exibir o resultado em uma janela de " +"diálogo." + +#: keystrokeEditor/actions/mastodon.py:56 +#, fuzzy +msgid "Adds an alias to an user" +msgstr "Selecione uma lista para adicionar o usuário" + +#: sessionmanager/sessionManager.py:69 +#, python-brace-format +msgid "{account_name}@{instance} (Mastodon)" +msgstr "" + +#: sessionmanager/wxUI.py:11 +msgid "Session manager" +msgstr "Gerenciador de sessões" + +#: sessionmanager/wxUI.py:14 +msgid "Accounts list" +msgstr "lista de contas" + +#: sessionmanager/wxUI.py:16 +msgid "Account" +msgstr "Conta" + +#: sessionmanager/wxUI.py:20 +msgid "New account" +msgstr "Nova conta" + +#: sessionmanager/wxUI.py:22 sessionmanager/wxUI.py:79 +msgid "Remove account" +msgstr "Remover conta" + +#: sessionmanager/wxUI.py:24 +msgid "Global Settings" +msgstr "Configurações Globais" + +#: sessionmanager/wxUI.py:48 +msgid "You need to configure an account." +msgstr "Você precisa configurar uma conta." + +#: sessionmanager/wxUI.py:48 +msgid "Account Error" +msgstr "Erro na Conta" + +#: sessionmanager/wxUI.py:54 +msgid "Mastodon" +msgstr "" + +#: sessionmanager/wxUI.py:59 +msgid "" +"You will be prompted for your Mastodon data (instance URL, email address " +"and password) so we can authorise TWBlue in your instance. Would you like" +" to authorise your account now?" +msgstr "" + +#: sessionmanager/wxUI.py:59 +msgid "Authorization" +msgstr "Autorização" + +#: sessionmanager/wxUI.py:67 +#, python-format +msgid "Authorized account %d" +msgstr "Conta %d autorizada" + +#: sessionmanager/wxUI.py:73 +msgid "" +"Your access token is invalid or the authorization has failed. Please try " +"again." +msgstr "" +"Seu token de acesso é inválido ou a autorização falhou. Por favor, tente " +"novamente." + +#: sessionmanager/wxUI.py:73 +msgid "Invalid user token" +msgstr "Token de usuário inválido" + +#: sessionmanager/wxUI.py:79 +msgid "Do you really want to delete this account?" +msgstr "Você tem certeza que deseja remover esta conta?" + +#: sessions/base.py:125 +#, python-brace-format +msgid "" +"An exception occurred while saving the {app} database. It will be deleted" +" and rebuilt automatically. If this error persists, send the error log to" +" the {app} developers." +msgstr "" + +#: sessions/base.py:165 +#, python-brace-format +msgid "" +"An exception occurred while loading the {app} database. It will be " +"deleted and rebuilt automatically. If this error persists, send the error" +" log to the {app} developers." +msgstr "" + +# | msgid "dddd, MMMM D, YYYY H:m:s" +#: sessions/mastodon/compose.py:15 sessions/mastodon/compose.py:61 +#, fuzzy +msgid "dddd, MMMM D, YYYY H:m" +msgstr "dddd, D MMMM, YYYY. H:m:s" + +# | msgid "{0}. Quoted tweet from @{1}: {2}" +#: sessions/mastodon/compose.py:17 sessions/mastodon/templates.py:74 +#: sessions/mastodon/templates.py:75 +#, fuzzy, python-brace-format +msgid "Boosted from @{}: {}" +msgstr "{0}. Tweet mencionado por @{1}: {2}" + +#: sessions/mastodon/compose.py:22 sessions/mastodon/compose.py:81 +#: sessions/mastodon/templates.py:81 sessions/mastodon/templates.py:176 +#, python-brace-format +msgid "hidden by filter {}" +msgstr "" + +#: sessions/mastodon/compose.py:36 sessions/mastodon/templates.py:28 +msgid "dddd, MMMM D, YYYY H:m:s" +msgstr "dddd, D MMMM, YYYY. H:m:s" + +# | msgid "" +# | "%s (@%s). %s followers, %s friends, %s tweets. Last tweeted %s. Joined " +# | "Twitter %s" +#: sessions/mastodon/compose.py:38 +#, fuzzy, python-format +msgid "%s (@%s). %s followers, %s following, %s posts. Joined %s" +msgstr "" +"%s (@%s). %s seguidores, seguindo %s, %s tweets. Cadastrou-se no Twitter " +"em %s. Tweet mais recente %s" + +#: sessions/mastodon/compose.py:49 +#, python-brace-format +msgid "Last message from {}: {}" +msgstr "" + +# | msgid "{username}'s followers" +#: sessions/mastodon/compose.py:64 +#, fuzzy, python-brace-format +msgid "{username} has posted: {status}" +msgstr "{username}'s seguidores" + +# | msgid "{username}'s followers" +#: sessions/mastodon/compose.py:66 +#, fuzzy, python-brace-format +msgid "{username} has mentioned you: {status}" +msgstr "{username}'s seguidores" + +#: sessions/mastodon/compose.py:68 +#, python-brace-format +msgid "{username} has boosted: {status}" +msgstr "" + +#: sessions/mastodon/compose.py:70 +#, python-brace-format +msgid "{username} has added to favorites: {status}" +msgstr "" + +# | msgid "{username}'s followers" +#: sessions/mastodon/compose.py:72 +#, fuzzy, python-brace-format +msgid "{username} has followed you." +msgstr "{username}'s seguidores" + +# | msgid "{username}'s followers" +#: sessions/mastodon/compose.py:74 +#, fuzzy, python-brace-format +msgid "{username} has joined the instance." +msgstr "{username}'s seguidores" + +#: sessions/mastodon/compose.py:76 sessions/mastodon/templates.py:171 +#, python-brace-format +msgid "A poll in which you have voted has expired: {status}" +msgstr "" + +# | msgid "{username}'s followers" +#: sessions/mastodon/compose.py:78 +#, fuzzy, python-brace-format +msgid "{username} wants to follow you." +msgstr "{username}'s seguidores" + +#: sessions/mastodon/session.py:69 +msgid "Please enter your instance URL." +msgstr "" + +#: sessions/mastodon/session.py:69 +msgid "Mastodon instance" +msgstr "" + +#: sessions/mastodon/session.py:80 +msgid "" +"We could not connect to your mastodon instance. Please verify that the " +"domain exists and the instance is accessible via a web browser." +msgstr "" + +# | msgid "&Report an error" +#: sessions/mastodon/session.py:80 +#, fuzzy +msgid "Instance error" +msgstr "&Relatar um erro" + +#: sessions/mastodon/session.py:85 +msgid "Enter the verification code" +msgstr "" + +# | msgid "Authorization" +#: sessions/mastodon/session.py:85 +#, fuzzy +msgid "PIN code authorization" +msgstr "Autorização" + +#: sessions/mastodon/session.py:94 +msgid "" +"We could not authorice your mastodon account to be used in TWBlue. This " +"might be caused due to an incorrect verification code. Please try to add " +"the session again." +msgstr "" + +# | msgid "Authorization" +#: sessions/mastodon/session.py:94 +#, fuzzy +msgid "Authorization error" +msgstr "Autorização" + +#: sessions/mastodon/session.py:215 +#, python-format +msgid "%s succeeded." +msgstr "%s sucedido." + +#: sessions/mastodon/templates.py:18 +msgid "$display_name, $text $image_descriptions $date. $source" +msgstr "" + +#: sessions/mastodon/templates.py:19 +msgid "Dm to $recipient_display_name, $text $date" +msgstr "" + +#: sessions/mastodon/templates.py:20 +msgid "" +"$display_name (@$screen_name). $followers followers, $following " +"following, $posts posts. Joined $created_at." +msgstr "" + +#: sessions/mastodon/templates.py:21 +msgid "$display_name $text, $date" +msgstr "" + +#: sessions/mastodon/templates.py:34 +#, python-brace-format +msgid "Content warning: {}" +msgstr "" + +#: sessions/mastodon/templates.py:45 +#, fuzzy, python-brace-format +msgid "Media description: {}" +msgstr "Descrição da imagem" + +# | msgid "Followers" +#: sessions/mastodon/templates.py:82 wxUI/dialogs/mastodon/postDialogs.py:49 +#, fuzzy +msgid "Followers only" +msgstr "Seguidores" + +#: sessions/mastodon/templates.py:94 +#, fuzzy +msgid "Pinned." +msgstr "Copiado" + +#: sessions/mastodon/templates.py:157 +#, python-brace-format +msgid "has posted: {status}" +msgstr "" + +#: sessions/mastodon/templates.py:159 +#, python-brace-format +msgid "has mentioned you: {status}" +msgstr "" + +#: sessions/mastodon/templates.py:161 +#, python-brace-format +msgid "has boosted: {status}" +msgstr "" + +#: sessions/mastodon/templates.py:163 +#, python-brace-format +msgid "has added to favorites: {status}" +msgstr "" + +#: sessions/mastodon/templates.py:165 +#, python-brace-format +msgid "has updated a status: {status}" +msgstr "" + +# | msgid "{0} is following you." +#: sessions/mastodon/templates.py:167 +#, fuzzy +msgid "has followed you." +msgstr "{0} está seguindo você." + +# | msgid "Remove client" +#: sessions/mastodon/templates.py:169 +#, fuzzy +msgid "has joined the instance." +msgstr "Remover cliente" + +# | msgid "{0} is following you." +#: sessions/mastodon/templates.py:173 +#, fuzzy +msgid "wants to follow you." +msgstr "{0} está seguindo você." + +#: update/utils.py:29 +#, python-format +msgid "%d day, " +msgstr "%d dia, " + +#: update/utils.py:31 +#, python-format +msgid "%d days, " +msgstr "%d dias, " + +#: update/utils.py:33 +#, python-format +msgid "%d hour, " +msgstr "%d hora, " + +#: update/utils.py:35 +#, python-format +msgid "%d hours, " +msgstr "%d horas, " + +#: update/utils.py:37 +#, python-format +msgid "%d minute, " +msgstr "%d minuto, " + +#: update/utils.py:39 +#, python-format +msgid "%d minutes, " +msgstr "%d minutos, " + +#: update/utils.py:41 +#, python-format +msgid "%s second" +msgstr "%s segundo" + +#: update/utils.py:43 +#, python-format +msgid "%s seconds" +msgstr "%s segundos" + +#: update/wxUpdater.py:11 +#, python-format +msgid "" +"There's a new %s version available, released on %s. Would you like to " +"download it now?\n" +"\n" +" %s version: %s\n" +"\n" +"Changes:\n" +"%s" +msgstr "" +"Há uma nova versão do %s disponível, lançado em %s. Gostaria de baixá-lo " +"agora?\n" +"\n" +" %s versão: %s\n" +"\n" +"Mudanças:\n" +"%s" + +# | msgid "" +# | "There's a new %s version available, released on %s. Would you like to " +# | "download it now?\n" +# | "\n" +# | " %s version: %s\n" +# | "Changes:\n" +# | "%s" +#: update/wxUpdater.py:14 +#, fuzzy, python-format +msgid "" +"There's a new %s version available, released on %s. Updates are not " +"automatic in Windows 7, so you would need to visit TWBlue's download " +"website to get the latest version.\n" +"\n" +" %s version: %s\n" +"\n" +"Changes:\n" +"%s" +msgstr "" +"Há uma nova versão do %s disponível, lançado em %s. Gostaria de baixá-lo " +"agora?\n" +"\n" +" %s versão: %s\n" +"\n" +"Mudanças:\n" +"%s" + +#: update/wxUpdater.py:16 +#, python-format +msgid "New version for %s" +msgstr "Nova versão do %s" + +#: update/wxUpdater.py:23 +msgid "Download in Progress" +msgstr "Transferência em andamento" + +#: update/wxUpdater.py:23 +msgid "Downloading the new version..." +msgstr "Baixando a nova versão..." + +#: update/wxUpdater.py:33 +#, python-format +msgid "Updating... %s of %s" +msgstr "Atualizando... %s de %s" + +#: update/wxUpdater.py:36 +msgid "" +"The update has been downloaded and installed successfully. Press OK to " +"continue." +msgstr "" +"A atualização foi baixada e instalada com sucesso. Pressione OK para " +"continuar." + +#: update/wxUpdater.py:36 +msgid "Done!" +msgstr "Pronto!" + +#: wxUI/commonMessageDialogs.py:6 +#, python-brace-format +msgid "Do you really want to close {0}?" +msgstr "Você tem certeza que deseja fechar o {0}?" + +#: wxUI/commonMessageDialogs.py:6 +msgid "Exit" +msgstr "Sair" + +#: wxUI/commonMessageDialogs.py:10 +#, python-brace-format +msgid " {0} must be restarted for these changes to take effect." +msgstr "O {0} deve ser reiniciado para que as alterações sejam aplicadas." + +#: wxUI/commonMessageDialogs.py:10 +#, python-brace-format +msgid "Restart {0} " +msgstr "Reiniciar o {0} " + +#: wxUI/commonMessageDialogs.py:13 +msgid "" +"Are you sure you want to delete this user from the database? This user " +"will not appear in autocomplete results anymore." +msgstr "" +"Você tem certeza que deseja remover este usuário do banco de dados? Ele " +"não aparecerá mais nos resultados do auto completar." + +#: wxUI/commonMessageDialogs.py:13 +msgid "Confirm" +msgstr "Confirmar" + +#: wxUI/commonMessageDialogs.py:16 +msgid "" +"Do you really want to empty this buffer? It's items will be removed from" +" the list but not from Twitter" +msgstr "" +"Você tem certeza que deseja esvaziar este exibidor? Os tweets serão " +"removidos da lista, mas não do Twitter" + +#: wxUI/commonMessageDialogs.py:16 wxUI/dialogs/mastodon/dialogs.py:31 +msgid "Empty buffer" +msgstr "Exibidor vazio" + +#: wxUI/commonMessageDialogs.py:20 +msgid "Do you really want to destroy this buffer?" +msgstr "Você tem certeza que deseja excluir este exibidor?" + +#: wxUI/commonMessageDialogs.py:23 +msgid "That user does not exist" +msgstr "Esse usuário não existe" + +#: wxUI/commonMessageDialogs.py:26 +msgid "A timeline for this user already exists. You can't open another" +msgstr "Uma linha do tempo para este usuário já existe. Você não pode abrir outra" + +#: wxUI/commonMessageDialogs.py:26 +msgid "Existing timeline" +msgstr "Linha do tempo existente" + +#: wxUI/commonMessageDialogs.py:29 +#, python-brace-format +msgid "" +"If you like {0} we need your help to keep it going. Help us by donating " +"to the project. This will help us pay for the server, the domain and some" +" other things to ensure that {0} will be actively maintained. Your " +"donation will give us the means to continue the development of {0}, and " +"to keep {0} free. Would you like to donate now?" +msgstr "" +"Se você gosta do {0} nós precisamos de sua ajuda para mantê-lo em " +"desenvolvimento. Ajude-nos fazendo doações para o projeto, pois isso irá " +"auxiliar no pagamento do servidor, do domínio e algumas outras coisas. " +"Sua doação vai nos dar os meios para continuar o desenvolvimento de {0}, " +"e para manter {0} livre. Você deseja fazer uma doação agora?" + +#: wxUI/commonMessageDialogs.py:29 +msgid "We need your help" +msgstr "Nós precisamos de sua ajuda" + +#: wxUI/commonMessageDialogs.py:33 wxUI/dialogs/mastodon/postDialogs.py:207 +msgid "Information" +msgstr "Informação" + +#: wxUI/commonMessageDialogs.py:36 +msgid "The configuration file is invalid." +msgstr "" + +#: wxUI/commonMessageDialogs.py:39 +#, python-brace-format +msgid "" +"{0} quit unexpectedly the last time it was run. If the problem persists, " +"please report it to the {0} developers." +msgstr "" +"{0} Foi enserrado inesperadamente da última vez que foi executado. Se o " +"problema persistir, contate os desenvolvedores do {0}." + +#: wxUI/commonMessageDialogs.py:39 +msgid "Warning" +msgstr "Advertência" + +#: wxUI/commonMessageDialogs.py:45 +#, python-brace-format +msgid "Sorry, you can't update while running {} from source." +msgstr "" + +#: wxUI/commonMessageDialogs.py:49 +msgid "the provided instance is invalid. Please try again." +msgstr "" + +#: wxUI/commonMessageDialogs.py:49 +#, fuzzy +msgid "Invalid instance" +msgstr "Tecla de atalho inválida" + +#: wxUI/commonMessageDialogs.py:52 +msgid "" +"TWBlue was unable to add or update the filter with the specified " +"settings. Please try again." +msgstr "" + +#: wxUI/commonMessageDialogs.py:55 +msgid "" +"TWBlue was unable to load your filters from the instance. Please try " +"again." +msgstr "" + +#: wxUI/commonMessageDialogs.py:58 +#, fuzzy +msgid "Do you really want to delete this filter ?" +msgstr "Você tem certeza que deseja remover esta conta?" + +#: wxUI/commonMessageDialogs.py:58 +#, fuzzy +msgid "Delete filter" +msgstr "Criar novo &filtro" + +#: wxUI/commonMessageDialogs.py:61 +msgid "TWBlue was unable to remove the filter you specified. Please try again." +msgstr "" + +#: wxUI/sysTrayIcon.py:36 wxUI/view.py:25 +msgid "&Global settings" +msgstr "Co&nfigurações globais" + +#: wxUI/sysTrayIcon.py:37 wxUI/view.py:24 +msgid "Account se&ttings" +msgstr "&Configurações da conta" + +#: wxUI/sysTrayIcon.py:39 +msgid "&Show / hide" +msgstr "&Mostrar / ocultar" + +#: wxUI/sysTrayIcon.py:40 wxUI/view.py:74 +msgid "&Documentation" +msgstr "&Documentação" + +#: wxUI/sysTrayIcon.py:41 +msgid "Check for &updates" +msgstr "&Verificar se há atualizações" + +#: wxUI/sysTrayIcon.py:42 +msgid "&Exit" +msgstr "&Sair" + +#: wxUI/view.py:16 +msgid "&Manage accounts" +msgstr "&Gerenciar contas" + +#: wxUI/view.py:17 +msgid "&Update profile" +msgstr "&Atualizar perfil" + +#: wxUI/view.py:18 +msgid "&Hide window" +msgstr "&Ocultar janela" + +#: wxUI/view.py:20 +msgid "&Lists manager" +msgstr "Gerenciar &listas" + +#: wxUI/view.py:23 +msgid "&Edit keystrokes" +msgstr "&Editar teclas de atalho" + +#: wxUI/view.py:26 +msgid "E&xit" +msgstr "&Sair" + +# | msgid "Remove from list" +#: wxUI/view.py:34 +#, fuzzy +msgid "&Remove from favorites" +msgstr "Remover da lista" + +#: wxUI/view.py:47 +msgid "&Add to list" +msgstr "A&dicionar à lista" + +#: wxUI/view.py:48 +msgid "R&emove from list" +msgstr "&Remover da lista" + +#: wxUI/view.py:49 +msgid "Show user &profile" +msgstr "Mostrar &perfil" + +#: wxUI/view.py:50 +msgid "V&iew likes" +msgstr "Mostrar &curtidas" + +#: wxUI/view.py:54 +msgid "&Update buffer" +msgstr "A&tualizar exibidor" + +#: wxUI/dialogs/mastodon/communityTimeline.py:9 wxUI/view.py:55 +msgid "Create community timeline" +msgstr "" + +#: wxUI/view.py:56 +msgid "New &trending topics buffer..." +msgstr "Novo exibidor Assuntos do momento..." + +#: wxUI/view.py:59 +msgid "Find a string in the currently focused buffer..." +msgstr "Localizar no exibidor ativo..." + +#: wxUI/view.py:60 +msgid "&Load previous items" +msgstr "&Carregar itens anteriores" + +#: wxUI/dialogs/mastodon/userActions.py:21 wxUI/view.py:62 +msgid "&Mute" +msgstr "Si&lenciar" + +#: wxUI/view.py:63 +msgid "&Autoread" +msgstr "Leitura &automática" + +#: wxUI/view.py:64 +msgid "&Clear buffer" +msgstr "&Esvaziar exibidor" + +#: wxUI/view.py:65 +msgid "&Destroy" +msgstr "&Destruir exibidor" + +#: wxUI/view.py:69 +msgid "&Seek back 5 seconds" +msgstr "&Retroceder 5 segundos" + +#: wxUI/view.py:70 +msgid "&Seek forward 5 seconds" +msgstr "&Avançar 5 segundos" + +#: wxUI/view.py:75 +msgid "Sounds &tutorial" +msgstr "&Conhecer os sons" + +#: wxUI/view.py:76 +msgid "&What's new in this version?" +msgstr "&Novidades desta versão" + +#: wxUI/view.py:77 +msgid "&Check for updates" +msgstr "&Verificar atualizações" + +#: wxUI/view.py:78 +msgid "&Report an error" +msgstr "&Relatar um erro" + +#: wxUI/view.py:79 +#, python-brace-format +msgid "{0}'s &website" +msgstr "&Website do {0}" + +#: wxUI/view.py:80 +msgid "Get soundpacks for TWBlue" +msgstr "Obtenha pacotes de som para TWBlue" + +#: wxUI/view.py:81 +#, python-brace-format +msgid "About &{0}" +msgstr "&Sobre o {0}" + +#: wxUI/view.py:84 +msgid "&Application" +msgstr "&Aplicação" + +#: wxUI/view.py:85 +msgid "&Tweet" +msgstr "&Tweet" + +#: wxUI/dialogs/mastodon/userActions.py:10 wxUI/view.py:86 +msgid "&User" +msgstr "&Usuário" + +#: wxUI/view.py:87 +msgid "&Buffer" +msgstr "&Exibidor" + +#: wxUI/view.py:88 +msgid "&Audio" +msgstr "Áudi&o" + +#: wxUI/view.py:89 +msgid "&Help" +msgstr "A&juda" + +#: wxUI/view.py:175 +msgid "Address" +msgstr "Endereço" + +#: wxUI/view.py:206 +#, python-brace-format +msgid "Your {0} version is up to date" +msgstr "Esta versão do {0} está atualizada" + +#: wxUI/view.py:206 +msgid "Update" +msgstr "Atualização" + +#: wxUI/buffers/panels.py:12 wxUI/buffers/panels.py:20 +msgid "Login" +msgstr "Conectar" + +#: wxUI/buffers/panels.py:14 +msgid "Log in automatically" +msgstr "Conectar automaticamente." + +#: wxUI/buffers/panels.py:22 +msgid "Logout" +msgstr "Desconectar" + +#: wxUI/buffers/mastodon/base.py:11 +#: wxUI/buffers/mastodon/conversationList.py:11 wxUI/buffers/mastodon/user.py:8 +#: wxUI/dialogs/mastodon/userTimeline.py:10 wxUI/dialogs/userAliasDialogs.py:14 +msgid "User" +msgstr "Usuário" + +#: wxUI/buffers/mastodon/base.py:11 +#: wxUI/buffers/mastodon/conversationList.py:11 +#: wxUI/buffers/mastodon/notifications.py:11 +#: wxUI/dialogs/mastodon/postDialogs.py:37 +#: wxUI/dialogs/mastodon/postDialogs.py:272 +msgid "Text" +msgstr "Texto" + +#: wxUI/buffers/mastodon/base.py:11 +#: wxUI/buffers/mastodon/conversationList.py:11 +#: wxUI/buffers/mastodon/notifications.py:11 +#: wxUI/dialogs/mastodon/postDialogs.py:216 +msgid "Date" +msgstr "Data" + +#: wxUI/buffers/mastodon/base.py:11 +#: wxUI/buffers/mastodon/conversationList.py:11 +msgid "Client" +msgstr "Cliente" + +#: wxUI/buffers/mastodon/base.py:27 +msgid "Favorite" +msgstr "" + +#: wxUI/buffers/mastodon/base.py:28 +msgid "Bookmark" +msgstr "" + +#: wxUI/buffers/mastodon/base.py:29 +msgid "Direct message" +msgstr "Mensagem direta" + +#: wxUI/buffers/mastodon/notifications.py:23 +#: wxUI/dialogs/mastodon/dialogs.py:23 +msgid "Dismiss" +msgstr "" + +#: wxUI/buffers/mastodon/user.py:19 wxUI/dialogs/userAliasDialogs.py:48 +#, fuzzy +msgid "Actions" +msgstr "Ação" + +# | msgid "Direct Messages" +#: wxUI/buffers/mastodon/user.py:20 +#, fuzzy +msgid "Message" +msgstr "Mensagens Recebidas" + +#: wxUI/dialogs/configuration.py:15 +#, fuzzy +msgid "&Language" +msgstr "Idioma" + +#: wxUI/dialogs/configuration.py:22 +#, fuzzy, python-brace-format +msgid "&Ask before exiting {0}" +msgstr "Perguntar antes de sair do {0}" + +#: wxUI/dialogs/configuration.py:24 +#, fuzzy +msgid "&Disable Streaming functions" +msgstr "Desativar funções de streaming" + +#: wxUI/dialogs/configuration.py:27 +#, fuzzy +msgid "&Buffer update interval, in minutes" +msgstr "Intervalo de atualização de buffer, em minutos" + +#: wxUI/dialogs/configuration.py:33 +#, fuzzy, python-brace-format +msgid "Pla&y a sound when {0} launches" +msgstr "Tocar um som quando o {0} iniciar" + +#: wxUI/dialogs/configuration.py:35 +#, fuzzy, python-brace-format +msgid "Sp&eak a message when {0} launches" +msgstr "Falar uma mensagem quando o {0} iniciar" + +#: wxUI/dialogs/configuration.py:37 +#, fuzzy +msgid "&Use invisible interface's keyboard shortcuts while GUI is visible" +msgstr "Usar os atalhos de teclado da janela oculta na janela visível" + +#: wxUI/dialogs/configuration.py:39 +#, fuzzy +msgid "A&ctivate Sapi5 when any other screen reader is not being run" +msgstr "Ativar SAPI5 quando nenhum leitor de tela estiver sendo executado" + +#: wxUI/dialogs/configuration.py:41 +#, fuzzy +msgid "&Hide GUI on launch" +msgstr "Ocultar janela ao iniciar" + +#: wxUI/dialogs/configuration.py:43 +msgid "&Read long posts in GUI" +msgstr "" + +#: wxUI/dialogs/configuration.py:46 +#, fuzzy +msgid "&Keymap" +msgstr "Mapa de teclado" + +#: wxUI/dialogs/configuration.py:51 +#, fuzzy, python-brace-format +msgid "Check for u&pdates when {0} launches" +msgstr "Verificar se há atualizações quando o {0} iniciar" + +#: wxUI/dialogs/configuration.py:61 +#, fuzzy +msgid "Proxy &type: " +msgstr "Tipo de proxy: " + +#: wxUI/dialogs/configuration.py:68 +#, fuzzy +msgid "Proxy s&erver: " +msgstr "Servidor proxy: " + +#: wxUI/dialogs/configuration.py:74 +#, fuzzy +msgid "&Port: " +msgstr "Porta: " + +#: wxUI/dialogs/configuration.py:80 +#, fuzzy +msgid "&User: " +msgstr "Usuário: " + +#: wxUI/dialogs/configuration.py:86 +#, fuzzy +msgid "P&assword: " +msgstr "Senha: " + +#: wxUI/dialogs/configuration.py:98 +#, fuzzy +msgid "Enable automatic s&peech feedback" +msgstr "Habilite o feedback automático da fala" + +#: wxUI/dialogs/configuration.py:100 +#, fuzzy +msgid "Enable automatic &Braille feedback" +msgstr "Habilite o feedback automático em Braille" + +#: wxUI/dialogs/configuration.py:108 +msgid "Buffer" +msgstr "Exibidor" + +#: wxUI/dialogs/configuration.py:108 +msgid "Status" +msgstr "Status" + +#: wxUI/dialogs/configuration.py:111 +#, fuzzy +msgid "S&how/hide" +msgstr "Mostrar / ocultar" + +#: wxUI/dialogs/configuration.py:112 +#, fuzzy +msgid "Move &up" +msgstr "Mover para cima" + +#: wxUI/dialogs/configuration.py:113 +#, fuzzy +msgid "Move &down" +msgstr "Mover para baixo" + +#: wxUI/dialogs/configuration.py:123 wxUI/dialogs/configuration.py:188 +#: wxUI/dialogs/configuration.py:191 wxUI/dialogs/configuration.py:196 +msgid "Show" +msgstr "Exibir" + +#: wxUI/dialogs/configuration.py:125 wxUI/dialogs/configuration.py:135 +#: wxUI/dialogs/configuration.py:159 wxUI/dialogs/configuration.py:189 +msgid "Hide" +msgstr "Ocultar" + +#: wxUI/dialogs/configuration.py:133 wxUI/dialogs/configuration.py:157 +msgid "Select a buffer first." +msgstr "Selecione o primeiro exibidor." + +#: wxUI/dialogs/configuration.py:136 wxUI/dialogs/configuration.py:160 +msgid "The buffer is hidden, show it first." +msgstr "Mostre o exibidor oculto em primeiro lugar." + +#: wxUI/dialogs/configuration.py:139 +msgid "The buffer is already at the top of the list." +msgstr "O exibidor já está no topo da lista." + +#: wxUI/dialogs/configuration.py:163 +msgid "The buffer is already at the bottom of the list." +msgstr "O exibidor já está no fim da lista." + +#: wxUI/dialogs/configuration.py:205 +msgid "&LibreTranslate API URL: " +msgstr "" + +#: wxUI/dialogs/configuration.py:211 +msgid "LibreTranslate API &Key (optional): " +msgstr "" + +#: wxUI/dialogs/configuration.py:217 +msgid "&DeepL API Key: " +msgstr "" + +#: wxUI/dialogs/configuration.py:231 +#, python-brace-format +msgid "{0} preferences" +msgstr "Preferências para o {0}" + +#: wxUI/dialogs/configuration.py:237 wxUI/dialogs/mastodon/configuration.py:144 +msgid "General" +msgstr "Geral" + +#: wxUI/dialogs/configuration.py:242 +msgid "Proxy" +msgstr "Proxy" + +#: wxUI/dialogs/configuration.py:246 +#, fuzzy +msgid "Translation services" +msgstr "Traduzido" + +#: wxUI/dialogs/configuration.py:251 wxUI/dialogs/mastodon/configuration.py:170 +#, fuzzy +msgid "&Save" +msgstr "Salvar" + +#: wxUI/dialogs/configuration.py:253 +#: wxUI/dialogs/mastodon/communityTimeline.py:27 +#: wxUI/dialogs/mastodon/configuration.py:172 +#: wxUI/dialogs/mastodon/search.py:26 +#: wxUI/dialogs/mastodon/showUserProfile.py:170 +#: wxUI/dialogs/mastodon/updateProfile.py:132 +#: wxUI/dialogs/mastodon/userActions.py:38 +#: wxUI/dialogs/mastodon/userTimeline.py:32 +msgid "&Close" +msgstr "&Fechar" + +#: wxUI/dialogs/find.py:13 +msgid "Find in current buffer" +msgstr "Localizar no exibidor ativo" + +#: wxUI/dialogs/find.py:14 +msgid "String" +msgstr "Seqüência de caracteres" + +#: wxUI/dialogs/find.py:23 wxUI/dialogs/mastodon/showUserProfile.py:33 +msgid "Cancel" +msgstr "Cancelar" + +#: wxUI/dialogs/templateDialogs.py:8 +msgid "Edit Template" +msgstr "" + +#: wxUI/dialogs/templateDialogs.py:13 +msgid "Edit template" +msgstr "" + +#: wxUI/dialogs/templateDialogs.py:17 +#, fuzzy +msgid "Available variables" +msgstr "Indisponível" + +#: wxUI/dialogs/templateDialogs.py:29 +msgid "Restore template" +msgstr "" + +#: wxUI/dialogs/templateDialogs.py:48 +#, python-brace-format +msgid "Restored template to {}." +msgstr "" + +#: wxUI/dialogs/templateDialogs.py:52 +msgid "" +"the template you have specified include variables that do not exists for " +"the object. Please fix the template and try again. For your reference, " +"you can see a list of all available variables in the variables list while" +" editing your template." +msgstr "" + +#: wxUI/dialogs/templateDialogs.py:52 +#, fuzzy +msgid "Invalid template" +msgstr "Tecla de atalho inválida" + +#: wxUI/dialogs/urlList.py:6 +msgid "Select URL" +msgstr "Selecione a URL" + +#: wxUI/dialogs/mastodon/userActions.py:13 +#: wxUI/dialogs/mastodon/userTimeline.py:13 wxUI/dialogs/userAliasDialogs.py:13 +msgid "&Autocomplete users" +msgstr "Auto completar usuários" + +#: wxUI/dialogs/userAliasDialogs.py:18 +#, fuzzy +msgid "Alias" +msgstr "sempre" + +#: wxUI/dialogs/userAliasDialogs.py:41 +#, fuzzy +msgid "Edit user aliases" +msgstr "Editando usuários do banco de dados do {0}" + +#: wxUI/dialogs/mastodon/search.py:19 wxUI/dialogs/userAliasDialogs.py:43 +msgid "Users" +msgstr "Usuários" + +#: wxUI/dialogs/userAliasDialogs.py:50 +#, fuzzy +msgid "Add alias" +msgstr "Adicionar à lista" + +#: wxUI/dialogs/userAliasDialogs.py:51 +msgid "Adds a new user alias" +msgstr "" + +#: wxUI/dialogs/userAliasDialogs.py:54 +#, fuzzy +msgid "Edit the currently focused user Alias." +msgstr "Interagir com o tweet em foco." + +#: wxUI/dialogs/mastodon/filters/create_filter.py:26 +#: wxUI/dialogs/mastodon/filters/manage_filters.py:24 +#: wxUI/dialogs/userAliasDialogs.py:57 +msgid "Remove" +msgstr "Excluir" + +#: wxUI/dialogs/userAliasDialogs.py:58 +#, fuzzy +msgid "Remove the currently focused user alias." +msgstr "Localizar no exibidor ativo..." + +#: wxUI/dialogs/userAliasDialogs.py:82 +#, fuzzy +msgid "Are you sure you want to delete this user alias?" +msgstr "Você tem certeza que deseja excluir esta lista?" + +#: wxUI/dialogs/userAliasDialogs.py:82 +#, fuzzy +msgid "Remove user alias" +msgstr "Remover usuário" + +#: wxUI/dialogs/userAliasDialogs.py:93 +#, fuzzy +msgid "User alias" +msgstr "Detalhes do usuário" + +#: wxUI/dialogs/userList.py:27 +#, fuzzy +msgid "View profile" +msgstr "&Atualizar perfil" + +#: wxUI/dialogs/mastodon/communityTimeline.py:10 +#, fuzzy +msgid "Community URL" +msgstr "Control" + +#: wxUI/dialogs/mastodon/communityTimeline.py:16 +#: wxUI/dialogs/mastodon/userTimeline.py:18 +msgid "Buffer type" +msgstr "Tipo de exibidor" + +#: wxUI/dialogs/mastodon/communityTimeline.py:17 +#, fuzzy +msgid "&Local timeline" +msgstr "Linhas do tempo" + +#: wxUI/dialogs/mastodon/communityTimeline.py:18 +#, fuzzy +msgid "&Federated Timeline" +msgstr "Linha do tempo de {username}'s" + +#: wxUI/dialogs/mastodon/communityTimeline.py:25 +#: wxUI/dialogs/mastodon/search.py:24 +#: wxUI/dialogs/mastodon/updateProfile.py:130 +#: wxUI/dialogs/mastodon/userActions.py:36 +#: wxUI/dialogs/mastodon/userTimeline.py:30 +msgid "&OK" +msgstr "&OK" + +#: wxUI/dialogs/mastodon/configuration.py:14 +#, fuzzy +msgid "User autocompletion settings" +msgstr "Configurações do auto completar..." + +#: wxUI/dialogs/mastodon/configuration.py:15 +msgid "" +"Scan acc&ount and add followers and following users to the user " +"autocompletion database" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:16 +#, fuzzy +msgid "&Manage autocompletion database" +msgstr "Gerenciar banco de dados do auto completar usuários" + +#: wxUI/dialogs/mastodon/configuration.py:21 +#, fuzzy +msgid "&Disable Streaming API endpoints" +msgstr "Desativar funções de streaming" + +#: wxUI/dialogs/mastodon/configuration.py:23 +#, fuzzy +msgid "&Relative timestamps" +msgstr "Exibir data/hora em tempo relativo" + +#: wxUI/dialogs/mastodon/configuration.py:25 +msgid "" +"R&ead preferences from instance (default visibility when publishing and " +"displaying sensitive content)" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:28 +#, fuzzy +msgid "&Items on each API call" +msgstr "Número de itens em cada chamada API:" + +# | msgid "" +# | "Inverted buffers: The newest tweets will be shown at the beginning while +# " +# | "the oldest at the end" +#: wxUI/dialogs/mastodon/configuration.py:34 +#, fuzzy +msgid "" +"I&nverted buffers: The newest items will be shown at the beginning while " +"the oldest at the end" +msgstr "" +"Inverter exibidores: Os tweets mais novos serão mostrados no início das " +"listas, enquanto os mais velhos no final" + +#: wxUI/dialogs/mastodon/configuration.py:36 +msgid "&Ask confirmation before boosting a post" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:38 +#, fuzzy +msgid "S&how screen names instead of full names" +msgstr "Mostrar nomes de usuário em vez de nomes completos" + +#: wxUI/dialogs/mastodon/configuration.py:40 +msgid "Hide e&mojis in usernames" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:42 +#, fuzzy +msgid "" +"&Number of items per buffer to cache in database (0 to disable caching, " +"blank for unlimited)" +msgstr "" +"Número de itens por exibidor para armazenar em cache no banco de dados (0" +" para desativar e em branco para ilimitado)" + +#: wxUI/dialogs/mastodon/configuration.py:46 +msgid "" +"&Load cache for items in memory (much faster in big datasets but requires" +" more RAM)" +msgstr "" + +# | msgid "Edit template for persons. Current template: {}" +#: wxUI/dialogs/mastodon/configuration.py:53 +#, fuzzy, python-brace-format +msgid "Edit template for &posts. Current template: {}" +msgstr "Editar modelos para pessoas. Modelo atual {}" + +# | msgid "Edit template for persons. Current template: {}" +#: wxUI/dialogs/mastodon/configuration.py:55 +#, fuzzy, python-brace-format +msgid "Edit template for c&onversations. Current template: {}" +msgstr "Editar modelos para pessoas. Modelo atual {}" + +#: wxUI/dialogs/mastodon/configuration.py:57 +#, fuzzy, python-brace-format +msgid "Edit template for p&ersons. Current template: {}" +msgstr "Editar modelos para pessoas. Modelo atual {}" + +#: wxUI/dialogs/mastodon/configuration.py:65 +#, fuzzy +msgid "&Volume" +msgstr "Volume" + +#: wxUI/dialogs/mastodon/configuration.py:76 +#, fuzzy +msgid "S&ession mute" +msgstr "Silenciar a sessão" + +#: wxUI/dialogs/mastodon/configuration.py:78 +#, fuzzy +msgid "&Output device" +msgstr "Dispositivo de saída" + +#: wxUI/dialogs/mastodon/configuration.py:85 +#, fuzzy +msgid "&Input device" +msgstr "Dispositivo de entrada" + +#: wxUI/dialogs/mastodon/configuration.py:93 +#, fuzzy +msgid "Sound &pack" +msgstr "Pacote de som" + +# | msgid "Indicate audio tweets with sound" +#: wxUI/dialogs/mastodon/configuration.py:99 +#, fuzzy +msgid "Indicate &audio or video in posts with sound" +msgstr "Indicar com som tweets com áudio" + +# | msgid "Indicate tweets containing images with sound" +#: wxUI/dialogs/mastodon/configuration.py:101 +#, fuzzy +msgid "Indicate posts containing i&mages with sound" +msgstr "Indicar com som tweets com imagens" + +#: wxUI/dialogs/mastodon/configuration.py:124 +#, fuzzy +msgid "&Language for OCR" +msgstr "&Idioma do OCR" + +#: wxUI/dialogs/mastodon/configuration.py:149 +msgid "Feedback" +msgstr "Feedback" + +#: wxUI/dialogs/mastodon/configuration.py:153 +msgid "Buffers" +msgstr "Exibidores" + +#: wxUI/dialogs/mastodon/configuration.py:157 +msgid "Templates" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:161 +msgid "Sound" +msgstr "Som" + +#: wxUI/dialogs/mastodon/configuration.py:165 +msgid "Extras" +msgstr "Extras" + +# | msgid "Would you like to add a comment to this tweet?" +#: wxUI/dialogs/mastodon/dialogs.py:7 +#, fuzzy +msgid "Would you like to share this post?" +msgstr "Você deseja adicionar um comentário a este tweet?" + +# | msgid "" +# | "Do you really want to delete this tweet? It will be deleted from Twitter +# " +# | "as well." +#: wxUI/dialogs/mastodon/dialogs.py:15 +#, fuzzy +msgid "" +"Do you really want to delete this post? It will be deleted from the " +"instance as well." +msgstr "" +"Você tem certeza que deseja excluir este tweet? Ele será excluído do " +"Twitter também." + +#: wxUI/dialogs/mastodon/dialogs.py:15 +msgid "Delete" +msgstr "Excluir" + +#: wxUI/dialogs/mastodon/dialogs.py:23 +msgid "" +"Are you sure you want to dismiss this notification? If you dismiss a " +"mention notification, it also disappears from your mentions buffer. The " +"post is not going to be deleted from the instance, though." +msgstr "" + +# | msgid "" +# | "Do you really want to empty this buffer? It's items will be removed from +# " +# | "the list but not from Twitter" +#: wxUI/dialogs/mastodon/dialogs.py:31 +#, fuzzy +msgid "" +"Do you really want to empty this buffer? It's items will be removed from" +" the list but not from the instance" +msgstr "" +"Você tem certeza que deseja esvaziar este exibidor? Os tweets serão " +"removidos da lista, mas não do Twitter" + +# | msgid "This user has no tweets. {0} can't create a timeline." +#: wxUI/dialogs/mastodon/dialogs.py:38 +#, fuzzy, python-brace-format +msgid "This user has no posts. {0} can't create a timeline." +msgstr "Este usuário não tem tweets. {0} não pode criar uma linha do tempo." + +# | msgid "This user has no favorited tweets. {0} can't create a timeline." +#: wxUI/dialogs/mastodon/dialogs.py:43 +#, fuzzy, python-brace-format +msgid "This user has no favorited posts. {0} can't create a timeline." +msgstr "" +"Este usuário não tem tweets Curtidos. {0} não pode criar uma linha do " +"tempo." + +# | msgid "This user has no followers. {0} can't create a timeline." +#: wxUI/dialogs/mastodon/dialogs.py:48 +#, fuzzy, python-brace-format +msgid "This user has no followers yet. {0} can't create a timeline." +msgstr "Este usuário não tem seguidores. {0} não pode criar uma linha do tempo." + +# | msgid "This user has no followers. {0} can't create a timeline." +#: wxUI/dialogs/mastodon/dialogs.py:53 +#, fuzzy, python-brace-format +msgid "This user is not following anyone. {0} can't create a timeline." +msgstr "Este usuário não tem seguidores. {0} não pode criar uma linha do tempo." + +#: wxUI/dialogs/mastodon/dialogs.py:60 +#, python-brace-format +msgid "The focused item has no user in it. {} ca't open a user profile" +msgstr "" + +# | msgid "R&emove from list" +#: wxUI/dialogs/mastodon/menus.py:13 wxUI/dialogs/mastodon/menus.py:41 +#, fuzzy +msgid "R&emove from favorites" +msgstr "&Remover da lista" + +#: wxUI/dialogs/mastodon/menus.py:15 wxUI/dialogs/mastodon/menus.py:43 +msgid "&Open URL" +msgstr "Abrir &URL" + +# | msgid "Search on twitter" +#: wxUI/dialogs/mastodon/menus.py:17 wxUI/dialogs/mastodon/menus.py:47 +#, fuzzy +msgid "&Open in instance" +msgstr "Buscar no Twitter" + +#: wxUI/dialogs/mastodon/menus.py:19 wxUI/dialogs/mastodon/menus.py:45 +msgid "&Play audio" +msgstr "Reproduzir &áudio" + +#: wxUI/dialogs/mastodon/menus.py:23 wxUI/dialogs/mastodon/menus.py:51 +msgid "&Copy to clipboard" +msgstr "&Copiar para área de transferência" + +#: wxUI/dialogs/mastodon/menus.py:27 wxUI/dialogs/mastodon/menus.py:55 +msgid "&User actions..." +msgstr "&Ações de usuário..." + +#: wxUI/dialogs/mastodon/menus.py:53 +msgid "&Dismiss" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:20 +#: wxUI/dialogs/mastodon/postDialogs.py:38 +msgid "Attachments" +msgstr "Anexadas" + +#: wxUI/dialogs/mastodon/postDialogs.py:24 +msgid "File" +msgstr "Arquivo" + +#: wxUI/dialogs/mastodon/postDialogs.py:25 +msgid "Type" +msgstr "Tipo" + +#: wxUI/dialogs/mastodon/postDialogs.py:26 +#: wxUI/dialogs/mastodon/postDialogs.py:141 +msgid "Description" +msgstr "Descrição" + +# | msgid "Remove client" +#: wxUI/dialogs/mastodon/postDialogs.py:28 +#, fuzzy +msgid "Remove Attachment" +msgstr "Remover cliente" + +#: wxUI/dialogs/mastodon/postDialogs.py:33 +msgid "Post in the thread" +msgstr "" + +# | msgid "Remove from list" +#: wxUI/dialogs/mastodon/postDialogs.py:40 +#, fuzzy +msgid "Remove post" +msgstr "Remover da lista" + +#: wxUI/dialogs/mastodon/postDialogs.py:47 +msgid "&Visibility" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:54 +#, fuzzy +msgid "Language" +msgstr "Idioma" + +#: wxUI/dialogs/mastodon/postDialogs.py:58 +msgid "A&dd" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:59 +msgid "S&ensitive content" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:64 +msgid "Content warning" +msgstr "" + +# | msgid "Add to list" +#: wxUI/dialogs/mastodon/postDialogs.py:71 +#, fuzzy +msgid "Add p&ost" +msgstr "Adicionar à lista" + +#: wxUI/dialogs/mastodon/postDialogs.py:75 +msgid "Auto&complete users" +msgstr "Auto &completar usuários" + +# | msgid "Check &spelling..." +#: wxUI/dialogs/mastodon/postDialogs.py:77 +#, fuzzy +msgid "Check &spelling" +msgstr "&Verificar ortografia..." + +#: wxUI/dialogs/mastodon/postDialogs.py:79 +#, fuzzy +msgid "&Translate" +msgstr "Traduzido" + +# | msgid "Tweet - %i characters " +#: wxUI/dialogs/mastodon/postDialogs.py:106 +#, fuzzy, python-brace-format +msgid "Post - {} characters" +msgstr "Tweet - %i caracteres" + +#: wxUI/dialogs/mastodon/postDialogs.py:130 +msgid "Image" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:132 +#, fuzzy +msgid "Video" +msgstr "Ocultar" + +# | msgid "&Audio" +#: wxUI/dialogs/mastodon/postDialogs.py:134 +#, fuzzy +msgid "Audio" +msgstr "Áudi&o" + +#: wxUI/dialogs/mastodon/postDialogs.py:136 +msgid "Poll" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:141 +msgid "please provide a description" +msgstr "por favor, forneça uma descrição" + +#: wxUI/dialogs/mastodon/postDialogs.py:148 +msgid "Select the picture to be uploaded" +msgstr "Selecione a imagem a ser adicionada" + +#: wxUI/dialogs/mastodon/postDialogs.py:148 +msgid "Image files (*.png, *.jpg, *.gif)|*.png; *.jpg; *.gif" +msgstr "Arquivos de imagem (*.png, *.jpg, *.gif)|*png; *.jpg; *.gif" + +#: wxUI/dialogs/mastodon/postDialogs.py:155 +#, fuzzy +msgid "Select the video to be uploaded" +msgstr "Selecione a imagem a ser adicionada" + +# | msgid "Audio Files (*.mp3, *.ogg, *.wav)|*.mp3; *.ogg; *.wav" +#: wxUI/dialogs/mastodon/postDialogs.py:155 +#, fuzzy +msgid "Video files (*.mp4, *.mov, *.m4v, *.webm)| *.mp4; *.m4v; *.mov; *.webm" +msgstr "Arquivos de Áudio (*.mp3, *.ogg, *.wav)|*.mp3; *.ogg; *.wav" + +#: wxUI/dialogs/mastodon/postDialogs.py:162 +msgid "Select the audio file to be uploaded" +msgstr "Selecione o arquivo de áudio a ser enviado" + +#: wxUI/dialogs/mastodon/postDialogs.py:162 +msgid "" +"Audio files (*.mp3, *.ogg, *.wav, *.flac, *.opus, *.aac, *.m4a, " +"*.3gp)|*.mp3; *.ogg; *.wav; *.flac; *.opus; *.aac; *.m4a; *.3gp" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:169 +msgid "" +"It is not possible to add more attachments. Please take into account that" +" You can add only a maximum of 4 images, or one audio, video or poll per" +" post. Please remove other attachments before continuing." +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:169 +#, fuzzy +msgid "Error adding attachment" +msgstr "Adicionar uma imagem" + +#: wxUI/dialogs/mastodon/postDialogs.py:172 +msgid "" +"You can add a poll or media files. In order to add your poll, please " +"remove other attachments first." +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:172 +#, fuzzy +msgid "Error adding poll" +msgstr "Adicionar uma imagem" + +# | msgid "Tweet - %i characters " +#: wxUI/dialogs/mastodon/postDialogs.py:177 +#, fuzzy, python-format +msgid "Post - %i characters " +msgstr "Tweet - %i caracteres" + +#: wxUI/dialogs/mastodon/postDialogs.py:200 +msgid "Image description" +msgstr "Descrição da imagem" + +# | msgid "Private" +#: wxUI/dialogs/mastodon/postDialogs.py:210 +#, fuzzy +msgid "Privacy" +msgstr "Privado" + +#: wxUI/dialogs/mastodon/postDialogs.py:214 +#, fuzzy +msgid "Source" +msgstr "Origem: " + +#: wxUI/dialogs/mastodon/postDialogs.py:222 +msgid "Boosts" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:224 +msgid "View users who boosted this post" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:231 +msgid "View users who favorited this post" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:239 +#, fuzzy +msgid "Copy link to clipboard" +msgstr "Copiar para área de transferência" + +#: wxUI/dialogs/mastodon/postDialogs.py:241 +#: wxUI/dialogs/mastodon/postDialogs.py:280 +msgid "Check &spelling..." +msgstr "&Verificar ortografia..." + +#: wxUI/dialogs/mastodon/postDialogs.py:242 +#: wxUI/dialogs/mastodon/postDialogs.py:281 +msgid "&Translate..." +msgstr "&Traduzir..." + +#: wxUI/dialogs/mastodon/postDialogs.py:243 +#: wxUI/dialogs/mastodon/postDialogs.py:282 +msgid "C&lose" +msgstr "&Fechar" + +#: wxUI/dialogs/mastodon/postDialogs.py:294 +msgid "Add a poll" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:298 +msgid "Participation time" +msgstr "" + +# | msgid "%d minutes, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "5 minutes" +msgstr "%d minutos, " + +# | msgid "%d minutes, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "30 minutes" +msgstr "%d minutos, " + +# | msgid "%d hour, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "1 hour" +msgstr "%d hora, " + +# | msgid "%d hours, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "6 hours" +msgstr "%d horas, " + +# | msgid "%d day, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "1 day" +msgstr "%d dia, " + +# | msgid "%d days, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "2 days" +msgstr "%d dias, " + +# | msgid "%d days, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "3 days" +msgstr "%d dias, " + +# | msgid "%d days, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "4 days" +msgstr "%d dias, " + +# | msgid "%d days, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "5 days" +msgstr "%d dias, " + +# | msgid "%d days, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "6 days" +msgstr "%d dias, " + +# | msgid "%d days, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "7 days" +msgstr "%d dias, " + +#: wxUI/dialogs/mastodon/postDialogs.py:304 +msgid "Choices" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:308 +msgid "Option 1" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:315 +msgid "Option 2" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:322 +msgid "Option 3" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:329 +msgid "Option 4" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:334 +msgid "Allow multiple choices per user" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:337 +msgid "Hide votes count until the poll expires" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:363 +msgid "Please make sure you have provided at least two options for the poll." +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:363 +#, fuzzy +msgid "Not enough information" +msgstr "Informação" + +#: wxUI/dialogs/mastodon/postDialogs.py:368 +msgid "Vote in this poll" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:371 +#, fuzzy +msgid "Options" +msgstr "Ação" + +# | msgid "&Search" +#: wxUI/dialogs/mastodon/search.py:9 +#, fuzzy +msgid "Search" +msgstr "&Buscar no Twitter" + +#: wxUI/dialogs/mastodon/search.py:18 +msgid "Posts" +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:22 +#, fuzzy +msgid "Select user" +msgstr "Selecione a URL" + +#: wxUI/dialogs/mastodon/showUserProfile.py:73 +#, fuzzy, python-brace-format +msgid "{}'s Profile" +msgstr "&Atualizar perfil" + +#: wxUI/dialogs/mastodon/showUserProfile.py:79 +#, fuzzy +msgid "&Name: " +msgstr "Nome" + +#: wxUI/dialogs/mastodon/showUserProfile.py:84 +#, fuzzy +msgid "&URL: " +msgstr "Usuário: " + +#: wxUI/dialogs/mastodon/showUserProfile.py:89 +msgid "&Bio: " +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:94 +msgid "&Joined at: " +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:99 +#, fuzzy +msgid "&Actions" +msgstr "Ação" + +#: wxUI/dialogs/mastodon/showUserProfile.py:104 +#, fuzzy +msgid "Header: " +msgstr "Ocultar" + +#: wxUI/dialogs/mastodon/showUserProfile.py:112 +msgid "Avatar: " +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:122 +#, python-brace-format +msgid "Field &{} - Label: " +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:129 +#, fuzzy +msgid "Content: " +msgstr "Contexto" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:43 +#: wxUI/dialogs/mastodon/filters/create_filter.py:65 +#: wxUI/dialogs/mastodon/showUserProfile.py:135 +msgid "Yes" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:43 +#: wxUI/dialogs/mastodon/filters/create_filter.py:65 +#: wxUI/dialogs/mastodon/filters/create_filter.py:69 +#: wxUI/dialogs/mastodon/showUserProfile.py:135 +msgid "No" +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:137 +#, fuzzy +msgid "&Private account: " +msgstr "Remover conta" + +#: wxUI/dialogs/mastodon/showUserProfile.py:144 +#, fuzzy +msgid "&Bot account: " +msgstr "Conta" + +#: wxUI/dialogs/mastodon/showUserProfile.py:151 +#, fuzzy +msgid "&Discoverable account: " +msgstr "Remover conta" + +#: wxUI/dialogs/mastodon/showUserProfile.py:157 +#, python-brace-format +msgid "{} p&osts. Click to open posts timeline" +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:162 +#, python-brace-format +msgid "{} &following. Click to open Following timeline" +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:166 +#, python-brace-format +msgid "{} fo&llowers. Click to open followers timeline" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:43 +msgid "&Display Name" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:50 +#, fuzzy +msgid "&Bio" +msgstr "&Bloquear" + +#: wxUI/dialogs/mastodon/updateProfile.py:58 +#, fuzzy +msgid "Header" +msgstr "Ocultar" + +#: wxUI/dialogs/mastodon/updateProfile.py:71 +#, fuzzy +msgid "Change &header" +msgstr "Ocultar" + +#: wxUI/dialogs/mastodon/updateProfile.py:79 +msgid "Avatar" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:92 +msgid "Change &avatar" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:102 +#, python-brace-format +msgid "Field &{}: Label" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:110 +#, fuzzy +msgid "Content" +msgstr "Contexto" + +#: wxUI/dialogs/mastodon/updateProfile.py:120 +#, fuzzy +msgid "&Private account" +msgstr "Remover conta" + +#: wxUI/dialogs/mastodon/updateProfile.py:122 +#, fuzzy +msgid "&Bot account" +msgstr "Conta" + +#: wxUI/dialogs/mastodon/updateProfile.py:124 +#, fuzzy +msgid "&Discoverable account" +msgstr "Remover conta" + +#: wxUI/dialogs/mastodon/updateProfile.py:167 +msgid "Select header image - max 2MB" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:172 +#: wxUI/dialogs/mastodon/updateProfile.py:194 +msgid "The selected file is larger than 2MB. Do you want to select another file?" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:173 +#: wxUI/dialogs/mastodon/updateProfile.py:195 +msgid "File more than 2MB" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:189 +msgid "Select avatar image - max 2MB" +msgstr "" + +#: wxUI/dialogs/mastodon/userActions.py:19 +msgid "&Follow" +msgstr "&Seguir" + +#: wxUI/dialogs/mastodon/userActions.py:20 +msgid "U&nfollow" +msgstr "&Deixar de seguir" + +#: wxUI/dialogs/mastodon/userActions.py:22 +msgid "Unmu&te" +msgstr "Desa&tivar silêncio" + +#: wxUI/dialogs/mastodon/userActions.py:23 +msgid "&Block" +msgstr "&Bloquear" + +#: wxUI/dialogs/mastodon/userActions.py:24 +msgid "Unbl&ock" +msgstr "Desblo&quear" + +#: wxUI/dialogs/mastodon/userTimeline.py:9 +#, python-format +msgid "Timeline for %s" +msgstr "Linha do tempo de %s" + +#: wxUI/dialogs/mastodon/userTimeline.py:19 +msgid "&Posts" +msgstr "" + +#: wxUI/dialogs/mastodon/userTimeline.py:20 +msgid "&Followers" +msgstr "&Seguidores" + +# | msgid "Following" +#: wxUI/dialogs/mastodon/userTimeline.py:21 +#, fuzzy +msgid "Fo&llowing" +msgstr "Seguindo" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:12 +#, fuzzy +msgid "Keyword" +msgstr "Tecla" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:13 +#: wxUI/dialogs/mastodon/filters/create_filter.py:24 +msgid "Whole word" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:19 +msgid "Keyword:" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:25 +#: wxUI/dialogs/mastodon/filters/manage_filters.py:22 +#, fuzzy +msgid "Add" +msgstr "Endereço" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:34 +msgid "Palabras clave a filtrar:" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:74 +#, fuzzy +msgid "New filter" +msgstr "&Gerenciar Filtros" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:78 +#, fuzzy +msgid "Home timeline" +msgstr "Linhas do tempo" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:79 +msgid "Public statuses" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:81 +#, fuzzy +msgid "Threads" +msgstr "Pronto" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:82 +#, fuzzy +msgid "Profiles" +msgstr "&Atualizar perfil" + +# | msgid "Delete" +#: wxUI/dialogs/mastodon/filters/create_filter.py:86 +#, fuzzy +msgid "Hide posts" +msgstr "Excluir" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:87 +msgid "Set a content warning to posts" +msgstr "" + +# | msgid "%d hours, " +#: wxUI/dialogs/mastodon/filters/create_filter.py:91 +#, fuzzy +msgid "Hours" +msgstr "%d horas, " + +# | msgid "%d days, " +#: wxUI/dialogs/mastodon/filters/create_filter.py:92 +#, fuzzy +msgid "Days" +msgstr "%d dias, " + +#: wxUI/dialogs/mastodon/filters/create_filter.py:93 +msgid "Weeks" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:94 +msgid "months" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:97 +#, fuzzy +msgid "Title:" +msgstr "Arquivo" + +# | msgid "Reply to {arg0}" +#: wxUI/dialogs/mastodon/filters/create_filter.py:104 +#, fuzzy +msgid "Apply to:" +msgstr "Responder a {arg0}" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:114 +#, fuzzy +msgid "Action:" +msgstr "Ação" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:122 +msgid "Expires in:" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/manage_filters.py:10 +#, fuzzy +msgid "Filters" +msgstr "Arquivo" + +#: wxUI/dialogs/mastodon/filters/manage_filters.py:15 +#, fuzzy +msgid "Title" +msgstr "Arquivo" + +#: wxUI/dialogs/mastodon/filters/manage_filters.py:16 +msgid "Keywords" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/manage_filters.py:17 +#, fuzzy +msgid "Contexts" +msgstr "Contexto" + +#: wxUI/dialogs/mastodon/filters/manage_filters.py:19 +#, fuzzy +msgid "Expires" +msgstr "Extras" + +#~ msgid "Unable to find address in OpenStreetMap." +#~ msgstr "Não foi possível encontrar este endereço nos mapas do OpenStreet." + +#~ msgid "There are no results for the coordinates in this tweet" +#~ msgstr "Não há resultados para coordenadas neste tweet" + +#~ msgid "This list is already opened" +#~ msgstr "Esta lista já está aberta" + +# | msgid "Timeline for {}" +#~ msgid "Timelines for {}" +#~ msgstr "Linha do tempo de {}" + +#~ msgid "{account_name} (Mastodon)" +#~ msgstr "" + +#~ msgid "URL of mastodon instance:" +#~ msgstr "" + +# | msgid "View &address" +#~ msgid "Email address:" +#~ msgstr "Mostrar &geolocalização" + +# | msgid "Password: " +#~ msgid "Password:" +#~ msgstr "Senha: " + +# | msgid "Item" +#~ msgid "&Item" +#~ msgstr "Item" + +#~ msgid "Visibility" +#~ msgstr "" + +#~ msgid "Sensitive content" +#~ msgstr "" + +#~ msgid "Allow multiple votes per user" +#~ msgstr "" + +#~ msgid "{username} has mentionned you: {status}" +#~ msgstr "" + +#~ msgid "has mentionned you: {status}" +#~ msgstr "" + +#~ msgid "Likes for {}" +#~ msgstr "Curtidas de {}" + +#~ msgid "Trending topics for %s" +#~ msgstr "Assuntos do momento para %s" + +#~ msgid "Select user" +#~ msgstr "Selecione o usuário" + +#~ msgid "Sent direct messages" +#~ msgstr "Mensagens enviadas" + +#~ msgid "Sent tweets" +#~ msgstr "Tweets enviados" + +#~ msgid "Likes" +#~ msgstr "Curtidas" + +#~ msgid "Friends" +#~ msgstr "Seguindo" + +#~ msgid "{username}'s likes" +#~ msgstr "curtidas de {username}'s" + +#~ msgid "{username}'s friends" +#~ msgstr "Amigos de {username}'s" + +#~ msgid "Tweet" +#~ msgstr "Tweet" + +#~ msgid "Write the tweet here" +#~ msgstr "Digite aqui o tweet" + +#~ msgid "New tweet in {0}" +#~ msgstr "Novo tweet em {0}" + +#~ msgid "{0} new tweets in {1}." +#~ msgstr "@{0} novos tweets em : {1}" + +#~ msgid "Reply to {arg0}" +#~ msgstr "Responder a {arg0}" + +#~ msgid "Reply to %s" +#~ msgstr "Responder a %s" + +#~ msgid "Direct message to %s" +#~ msgstr "Mensagem para %s" + +#~ msgid "New direct message" +#~ msgstr "Nova mensagem" + +#~ msgid "This action is not supported on protected accounts." +#~ msgstr "Esta ação não é suportada neste exibidor" + +#~ msgid "Quote" +#~ msgstr "Menção" + +#~ msgid "Add your comment to the tweet" +#~ msgstr "Adicione seu comentário ao tweet" + +#~ msgid "User details" +#~ msgstr "Detalhes do usuário" + +#~ msgid "MMM D, YYYY. H:m" +#~ msgstr "MMM D, YYYY. H:m" + +#~ msgid "There are no coordinates in this tweet" +#~ msgstr "Não há coordenadas neste tweet" + +#~ msgid "Error decoding coordinates. Try again later." +#~ msgstr "Erro ao decodificar coordenadas. Tente novamente mais tarde." + +#~ msgid "Invalid buffer" +#~ msgstr "Exibidor inválido" + +#~ msgid "{0} new direct messages." +#~ msgstr "{0} Nova mensagem" + +#~ msgid "This action is not supported in the buffer yet." +#~ msgstr "Esta ação não é suportada neste exibidor" + +#~ msgid "" +#~ "Getting more items cannot be done " +#~ "in this buffer. Use the direct " +#~ "messages buffer instead." +#~ msgstr "" +#~ "Obter mais itens não pode ser " +#~ "feito neste buffer. Use o buffer " +#~ "de mensagens diretas em vez disso." + +#~ msgid "Mention" +#~ msgstr "Menção" + +#~ msgid "Mention to %s" +#~ msgstr "Menção para %s" + +#~ msgid "{0} new followers." +#~ msgstr "{0} Novos seguidores." + +#~ msgid "This action is not supported in the buffer, yet." +#~ msgstr "Esta ação não é suportada neste exibidor" + +#~ msgid "&Retweet" +#~ msgstr "Ret&weetar" + +#~ msgid "&Like" +#~ msgstr "&Curtir" + +#~ msgid "&Unlike" +#~ msgstr "&Descurtir" + +#~ msgid "View &address" +#~ msgstr "Mostrar &geolocalização" + +#~ msgid "&View lists" +#~ msgstr "Mostrar &listas" + +# | msgid "V&iew likes" +#~ msgid "View likes" +#~ msgstr "Mostrar &curtidas" + +#~ msgid "Likes timelines" +#~ msgstr "Linhas do tempo de Curtidas" + +#~ msgid "Followers timelines" +#~ msgstr "Linhas do tempo de Seguidores" + +#~ msgid "Following timelines" +#~ msgstr "Linhas do tempo de amigos" + +#~ msgid "Lists" +#~ msgstr "Listas" + +#~ msgid "List for {}" +#~ msgstr "Lista de {}" + +#~ msgid "Filters cannot be applied on this buffer" +#~ msgstr "Filtros não são suportados neste exibidor" + +#~ msgid "View item" +#~ msgstr "Visualizar item" + +#~ msgid "Ask" +#~ msgstr "Perguntar" + +#~ msgid "Retweet without comments" +#~ msgstr "Retweet sem comentários" + +#~ msgid "Retweet with comments" +#~ msgstr "Retweet com comentários" + +#~ msgid "Edit template for tweets. Current template: {}" +#~ msgstr "Editar modelo de tweets: Modelo atual {}" + +#~ msgid "Edit template for direct messages. Current template: {}" +#~ msgstr "Editar modelo de mensagens diretas. Modelo atual {}" + +#~ msgid "Edit template for sent direct messages. Current template: {}" +#~ msgstr "Editar modelo para mensagens diretas enviadas. Modelo atual {}" + +#~ msgid "User has been suspended" +#~ msgstr "O usuário foi suspenso do Twitter" + +#~ msgid "Information for %s" +#~ msgstr "Informações de %s" + +#~ msgid "Discarded" +#~ msgstr "Descartado" + +#~ msgid "Username: @%s\n" +#~ msgstr "Nome de usuário: @%s\n" + +#~ msgid "Name: %s\n" +#~ msgstr "Nome: %s\n" + +#~ msgid "Location: %s\n" +#~ msgstr "Localização: %s\n" + +#~ msgid "URL: %s\n" +#~ msgstr "Website: %s\n" + +#~ msgid "Bio: %s\n" +#~ msgstr "Bio: %s\n" + +#~ msgid "Yes" +#~ msgstr "Sim" + +#~ msgid "No" +#~ msgstr "Não" + +#~ msgid "Protected: %s\n" +#~ msgstr "Protegido: %s\n" + +#~ msgid "Relationship: " +#~ msgstr "Relação entre vocês:· " + +#~ msgid "You follow {0}. " +#~ msgstr "Você está seguindo {0}. " + +#~ msgid "{0} is following you." +#~ msgstr "{0} está seguindo você." + +#~ msgid "" +#~ "Followers: %s\n" +#~ " Friends: %s\n" +#~ msgstr "" +#~ "Seguidores: %s\n" +#~ " Seguindo: %s\n" + +#~ msgid "Verified: %s\n" +#~ msgstr "Verificado: %s\n" + +#~ msgid "Tweets: %s\n" +#~ msgstr "Tweets: %s\n" + +#~ msgid "Likes: %s" +#~ msgstr "Curtidas: %s" + +#~ msgid "You can't ignore direct messages" +#~ msgstr "Você não pode ignorar mensagens diretas" + +#~ msgid "Attaching..." +#~ msgstr "Adicionando..." + +#~ msgid "Pause" +#~ msgstr "Pausar" + +#~ msgid "&Resume" +#~ msgstr "&Continuar" + +#~ msgid "Resume" +#~ msgstr "Continuar" + +#~ msgid "&Pause" +#~ msgstr "&Pausar" + +#~ msgid "&Stop" +#~ msgstr "&Parar" + +#~ msgid "Recording" +#~ msgstr "Gravando" + +#~ msgid "Stopped" +#~ msgstr "Parado" + +#~ msgid "&Record" +#~ msgstr "&Gravar" + +#~ msgid "&Play" +#~ msgstr "&Reproduzir" + +#~ msgid "Recoding audio..." +#~ msgstr "Gravando áudio..." + +#~ msgid "Error in file upload: {0}" +#~ msgstr "Erro ao enviar o arquivo código {0}" + +#~ msgid "Transferred" +#~ msgstr "Transferido" + +#~ msgid "Total file size" +#~ msgstr "Tamanho total do arquivo" + +#~ msgid "Transfer rate" +#~ msgstr "Taxa de transferência" + +#~ msgid "Time left" +#~ msgstr "Tempo restante" + +#~ msgid "Attach audio" +#~ msgstr "Adicionar áudio" + +#~ msgid "&Add an existing file" +#~ msgstr "&Adicionar arquivo existente" + +#~ msgid "&Discard" +#~ msgstr "&Descartar" + +#~ msgid "Upload to" +#~ msgstr "Enviar para" + +#~ msgid "Attach" +#~ msgstr "Adicionar" + +#~ msgid "&Cancel" +#~ msgstr "&Cancelar" + +#~ msgid "Audio Files (*.mp3, *.ogg, *.wav)|*.mp3; *.ogg; *.wav" +#~ msgstr "Arquivos de Áudio (*.mp3, *.ogg, *.wav)|*.mp3; *.ogg; *.wav" + +#~ msgid "You have to start writing" +#~ msgstr "Você tem que começar a escrever" + +#~ msgid "There are no results in your users database" +#~ msgstr "Não há resultados em seu banco de dados de usuários" + +#~ msgid "Autocompletion only works for users." +#~ msgstr "Auto completar só funciona para usuários." + +#~ msgid "" +#~ "Updating database... You can close this" +#~ " window now. A message will tell " +#~ "you when the process finishes." +#~ msgstr "" +#~ "Atualizando o banco de dados... Você " +#~ "pode fechar esta janela, pois será " +#~ "notificado quando o processo estiver " +#~ "concluído." + +#~ msgid "Manage Autocompletion database" +#~ msgstr "Gerenciar banco de dados do auto completar usuários" + +#~ msgid "Editing {0} users database" +#~ msgstr "Editando usuários do banco de dados do {0}" + +#~ msgid "Username" +#~ msgstr "Nome de usuário" + +#~ msgid "Add user" +#~ msgstr "Adicionar usuário" + +#~ msgid "Remove user" +#~ msgstr "Remover usuário" + +#~ msgid "Twitter username" +#~ msgstr "Nome de usuário do Twitter" + +#~ msgid "Add user to database" +#~ msgstr "Adicionar usuário ao banco de dados" + +#~ msgid "The user does not exist" +#~ msgstr "O usuário não existe" + +#~ msgid "Error!" +#~ msgstr "Erro!" + +#~ msgid "Autocomplete users' settings" +#~ msgstr "Configurações dos usuários do auto completar" + +#~ msgid "Add followers to database" +#~ msgstr "" + +#~ msgid "Add friends to database" +#~ msgstr "Adicionar usuário ao banco de dados" + +#~ msgid "Updating autocompletion database" +#~ msgstr "Gerenciar banco de dados do auto completar usuários" + +#~ msgid "" +#~ "This process will retrieve the users " +#~ "you selected from Twitter, and add " +#~ "them to the user autocomplete database." +#~ " Please note that if there are " +#~ "many users or you have tried to" +#~ " perform this action less than 15 " +#~ "minutes ago, TWBlue may reach a " +#~ "limit in Twitter API calls when " +#~ "trying to load the users into the" +#~ " database. If this happens, we will" +#~ " show you an error, in which " +#~ "case you will have to try this " +#~ "process again in a few minutes. If" +#~ " this process ends with no error, " +#~ "you will be redirected back to the" +#~ " account settings dialog. Do you want" +#~ " to continue?" +#~ msgstr "" + +#~ msgid "TWBlue has imported {} users successfully." +#~ msgstr "" + +#~ msgid "Done" +#~ msgstr "Pronto" + +#~ msgid "Error adding users from Twitter. Please try again in about 15 minutes." +#~ msgstr "" + +#~ msgid "New tweet" +#~ msgstr "Novo tweet" + +#~ msgid "Retweet" +#~ msgstr "Retweetar" + +#~ msgid "Like a tweet" +#~ msgstr "Curtir um tweet" + +#~ msgid "Like/unlike a tweet" +#~ msgstr "Curtir ou Descurtir um tweet" + +#~ msgid "Unlike a tweet" +#~ msgstr "Descurtir um tweet" + +#~ msgid "See user details" +#~ msgstr "Ver detalhes do usuário" + +#~ msgid "Show tweet" +#~ msgstr "Mostrar tweet" + +#~ msgid "Interact with the currently focused tweet." +#~ msgstr "Interagir com o tweet em foco." + +#~ msgid "View in Twitter" +#~ msgstr "Buscar no Twitter" + +#~ msgid "Edit profile" +#~ msgstr "Editar o perfil" + +#~ msgid "Delete a tweet or direct message" +#~ msgstr "Excluir um tweet ou mensagem direta" + +#~ msgid "Add to list" +#~ msgstr "Adicionar à lista" + +#~ msgid "Remove from list" +#~ msgstr "Remover da lista" + +#~ msgid "Search on twitter" +#~ msgstr "Buscar no Twitter" + +#~ msgid "Show lists for a specified user" +#~ msgstr "Mostrar listas de um usuário específico" + +#~ msgid "Get geolocation" +#~ msgstr "Obter geolocalização" + +#~ msgid "Display the tweet's geolocation in a dialog" +#~ msgstr "Exibir a geolocalização de tweets em uma janela de diálogo" + +#~ msgid "Create a trending topics buffer" +#~ msgstr "Criar um exibidor para assuntos do momento" + +#~ msgid "" +#~ "Opens the list manager, which allows " +#~ "you to create, edit, delete and " +#~ "open lists in buffers." +#~ msgstr "" +#~ "Abrir o gerenciador de lista que " +#~ "permite criar, editar, excluir e abrir" +#~ " listas no exibidor." + +#~ msgid "Opens the list manager" +#~ msgstr "Abrir o Gerenciador de listas" + +#~ msgid "{account_name} (Twitter)" +#~ msgstr "" + +# | msgid "View in Twitter" +#~ msgid "Twitter" +#~ msgstr "Buscar no Twitter" + +#~ msgid "" +#~ "The request to authorize your Twitter" +#~ " account will be opened in your " +#~ "browser. You only need to do this" +#~ " once. Would you like to continue?" +#~ msgstr "" +#~ "A solicitação para autorizar sua conta" +#~ " no Twitter será aberta no navegador" +#~ " padrão. Isso só precisa ser feito" +#~ " uma vez. Você deseja continuar?" + +#~ msgid "" +#~ "TWBlue is unable to authenticate the " +#~ "account for {} in Twitter. It " +#~ "might be due to an invalid or " +#~ "expired token, revoqued access to the" +#~ " application, or after an account " +#~ "reactivation. Please remove the account " +#~ "manually from your Twitter sessions in" +#~ " order to stop seeing this message." +#~ msgstr "" + +#~ msgid "Authentication error for session {}" +#~ msgstr "" + +#~ msgid "Dm to %s " +#~ msgstr "DM para %s " + +#~ msgid "{0}. Quoted tweet from @{1}: {2}" +#~ msgstr "{0}. Tweet mencionado por @{1}: {2}" + +#~ msgid "Unavailable" +#~ msgstr "Indisponível" + +#~ msgid "" +#~ "%s (@%s). %s followers, %s friends, " +#~ "%s tweets. Last tweeted %s. Joined " +#~ "Twitter %s" +#~ msgstr "" +#~ "%s (@%s). %s seguidores, seguindo %s," +#~ " %s tweets. Cadastrou-se no Twitter" +#~ " em %s. Tweet mais recente %s" + +#~ msgid "No description available" +#~ msgstr "Não há descrição disponível" + +#~ msgid "private" +#~ msgstr "Privado" + +#~ msgid "public" +#~ msgstr "Público" + +#~ msgid "Enter your PIN code here" +#~ msgstr "Insira o código aqui." + +#~ msgid "Authorising account..." +#~ msgstr "Autorizando Conta %d " + +#~ msgid "" +#~ "We could not authorice your Twitter " +#~ "account to be used in TWBlue. This" +#~ " might be caused due to an " +#~ "incorrect verification code. Please try " +#~ "to add the session again." +#~ msgstr "" + +#~ msgid "%s failed. Reason: %s" +#~ msgstr "%s falhou. Motivo: %s" + +#~ msgid "Deleted account" +#~ msgstr "Nova conta" + +#~ msgid "$sender_display_name, $text $date" +#~ msgstr "" + +#~ msgid "" +#~ "$display_name (@$screen_name). $followers followers," +#~ " $following following, $tweets tweets. " +#~ "Joined Twitter $created_at." +#~ msgstr "" + +#~ msgid "Image description: {}." +#~ msgstr "Descrição da imagem" + +#~ msgid "RT @{}: {} Quote from @{}: {}" +#~ msgstr "{0}. Tweet mencionado por @{1}: {2}" + +# | msgid "{0}. Quoted tweet from @{1}: {2}" +#~ msgid "RT @{}: {}" +#~ msgstr "{0}. Tweet mencionado por @{1}: {2}" + +# | msgid "{0}. Quoted tweet from @{1}: {2}" +#~ msgid "{} Quote from @{}: {}" +#~ msgstr "{0}. Tweet mencionado por @{1}: {2}" + +#~ msgid "Sorry, you are not authorised to see this status." +#~ msgstr "Desculpe, você não está autorizado a ver este status." + +#~ msgid "Error {0}" +#~ msgstr "Erro código {0}" + +#~ msgid "{user_1}, {user_2} and {all_users} more: {text}" +#~ msgstr "" + +#~ msgid "" +#~ "This retweet is over 140 characters. " +#~ "Would you like to post it as " +#~ "a mention to the poster with your" +#~ " comments and a link to the " +#~ "original tweet?" +#~ msgstr "" +#~ "Este retweet tem mais de 140 " +#~ "caracteres. Deseja publicá-lo como uma " +#~ "menção ao pôster com seus comentários" +#~ " e um link para o tweet " +#~ "original?" + +#~ msgid "Would you like to add a comment to this tweet?" +#~ msgstr "Você deseja adicionar um comentário a este tweet?" + +#~ msgid "" +#~ "Do you really want to delete this" +#~ " tweet? It will be deleted from " +#~ "Twitter as well." +#~ msgstr "" +#~ "Você tem certeza que deseja excluir " +#~ "este tweet? Ele será excluído do " +#~ "Twitter também." + +#~ msgid "Enter the name of the client : " +#~ msgstr "Digite o nome do cliente: " + +#~ msgid "Add client" +#~ msgstr "Adicionar cliente" + +#~ msgid "This user has no tweets, so you can't open a timeline for them." +#~ msgstr "" +#~ "Este usuário não tem tweets. Você " +#~ "não pode abrir uma linha do tempo" +#~ " para ele" + +#~ msgid "" +#~ "This is a protected Twitter user, " +#~ "which means you can't open a " +#~ "timeline using the Streaming API. The" +#~ " user's tweets will not update due" +#~ " to a twitter policy. Do you " +#~ "want to continue?" +#~ msgstr "" +#~ "Este é um usuário do Twitter " +#~ "protegido. Isso significa que você não" +#~ " pode abrir uma linha do tempo " +#~ "usando a API Streaming. Os tweets " +#~ "do usuário não irão atualizar devido " +#~ "a uma política do twitter. Você " +#~ "deseja continuar?" + +#~ msgid "" +#~ "This is a protected user account, " +#~ "you need to follow this user to" +#~ " view their tweets or likes." +#~ msgstr "" +#~ "Esta é uma conta de usuário " +#~ "protegida. Você precisa seguir este " +#~ "usuário para poder ver seus tweets " +#~ "ou curtidas." + +#~ msgid "This user has no tweets. {0} can't create a timeline." +#~ msgstr "Este usuário não tem tweets. {0} não pode criar uma linha do tempo." + +#~ msgid "This user has no favorited tweets. {0} can't create a timeline." +#~ msgstr "" +#~ "Este usuário não tem tweets Curtidos." +#~ " {0} não pode criar uma linha " +#~ "do tempo." + +#~ msgid "This user has no followers. {0} can't create a timeline." +#~ msgstr "Este usuário não tem seguidores. {0} não pode criar uma linha do tempo." + +#~ msgid "This user has no friends. {0} can't create a timeline." +#~ msgstr "Este usuário não segue ninguém. {0} não pode criar uma linha do tempo." + +#~ msgid "Geolocation data: {0}" +#~ msgstr "Dados de geolocalização: {0}" + +#~ msgid "Geo data for this tweet" +#~ msgstr "Dados de geolocalização para este tweet" + +#~ msgid "You have been blocked from viewing this content" +#~ msgstr "Você foi impedido de visualizar este conteúdo" + +#~ msgid "" +#~ "You have been blocked from viewing " +#~ "someone's content. In order to avoid " +#~ "conflicts with the full session, TWBlue" +#~ " will remove the affected timeline." +#~ msgstr "" +#~ "Você foi impedido de ver o " +#~ "conteúdo de alguém. Para evitar " +#~ "conflitos com a sessão completa, a " +#~ "TWBlue removerá o cronograma afetado." + +#~ msgid "" +#~ "TWBlue cannot load this timeline because" +#~ " the user has been suspended from " +#~ "Twitter." +#~ msgstr "" +#~ "O TWBlue não pode carregar esta " +#~ "linha do tempo porque o usuário " +#~ "foi suspenso do Twitter." + +#~ msgid "Do you really want to delete this filter?" +#~ msgstr "Você tem certeza que deseja excluir esta lista?" + +#~ msgid "This filter already exists. Please use a different title" +#~ msgstr "Este filtro já existe. Por favor, use um título diferente" + +#~ msgid "&Show direct message" +#~ msgstr "&Mostrar mensagem direta" + +#~ msgid "&Show event" +#~ msgstr "Mostrar ¬ificações" + +#~ msgid "Direct &message" +#~ msgstr "&Mensagem" + +#~ msgid "&Show user" +#~ msgstr "Mostrar &usuário" + +#~ msgid "Search topic" +#~ msgstr "Buscar tópico" + +#~ msgid "&Tweet about this trend" +#~ msgstr "&Tweet sobre este assunto do momento" + +#~ msgid "&Show item" +#~ msgstr "&Mostrar item" + +#~ msgid "Update &profile" +#~ msgstr "&Atualizar meu perfil" + +#~ msgid "Event" +#~ msgstr "Notificação" + +#~ msgid "Remove event" +#~ msgstr "Excluir notificação" + +#~ msgid "Trending topic" +#~ msgstr "Assuntos do momento" + +#~ msgid "Tweet about this trend" +#~ msgstr "Tweet sobre este assunto" + +#~ msgid "" +#~ "Scan account and add friends and " +#~ "followers to the user autocompletion " +#~ "database" +#~ msgstr "" + +#~ msgid "" +#~ "Inverted buffers: The newest tweets will" +#~ " be shown at the beginning while " +#~ "the oldest at the end" +#~ msgstr "" +#~ "Inverter exibidores: Os tweets mais " +#~ "novos serão mostrados no início das " +#~ "listas, enquanto os mais velhos no " +#~ "final" + +#~ msgid "Retweet mode" +#~ msgstr "Modo de retweet" + +#~ msgid "" +#~ "Load cache for tweets in memory " +#~ "(much faster in big datasets but " +#~ "requires more RAM)" +#~ msgstr "" + +#~ msgid "Ignored clients" +#~ msgstr "Clientes ignorados" + +#~ msgid "Remove client" +#~ msgstr "Remover cliente" + +#~ msgid "Indicate audio tweets with sound" +#~ msgstr "Indicar com som tweets com áudio" + +#~ msgid "Indicate geotweets with sound" +#~ msgstr "Indicar com som tweets com geolocalização" + +#~ msgid "Indicate tweets containing images with sound" +#~ msgstr "Indicar com som tweets com imagens" + +#~ msgid "API Key for SndUp" +#~ msgstr "Chave API para SndUp" + +#~ msgid "Create a filter for this buffer" +#~ msgstr "Criar um filtro para esse exibidor" + +#~ msgid "Filter title" +#~ msgstr "Título do filtro" + +#~ msgid "Filter by word" +#~ msgstr "Filtrar por palavra" + +#~ msgid "Ignore tweets wich contain the following word" +#~ msgstr "Ignorar tweets com as seguintes palavras" + +#~ msgid "Ignore tweets without the following word" +#~ msgstr "Ignorar tweets sem as seguintes palavras:" + +#~ msgid "word" +#~ msgstr "palavra" + +#~ msgid "Allow retweets" +#~ msgstr "Permitir Retweets" + +#~ msgid "Allow quoted tweets" +#~ msgstr "Permitir tweets citados" + +#~ msgid "Allow replies" +#~ msgstr "Permitir respostas" + +#~ msgid "Use this term as a regular expression" +#~ msgstr "Usar este termo como uma expressão regular" + +#~ msgid "Filter by language" +#~ msgstr "Filtrar por Idioma" + +#~ msgid "Load tweets in the following languages" +#~ msgstr "Carregar tweets nos seguintes idiomas" + +#~ msgid "Ignore tweets in the following languages" +#~ msgstr "Ignorar tweets nos seguintes idiomas" + +#~ msgid "Don't filter by language" +#~ msgstr "Não filtrar por idioma" + +#~ msgid "Supported languages" +#~ msgstr "Idiomas suportados" + +#~ msgid "Add selected language to filter" +#~ msgstr "Adicionar idioma selecionado para filtrar" + +#~ msgid "Selected languages" +#~ msgstr "Idiomas selecionados" + +#~ msgid "You must define a name for the filter before creating it." +#~ msgstr "" + +#~ msgid "Missing filter name" +#~ msgstr "" + +#~ msgid "Manage filters" +#~ msgstr "Gerenciar filtros" + +#~ msgid "Filters" +#~ msgstr "Filtros" + +#~ msgid "Filter" +#~ msgstr "Filtro" + +#~ msgid "Lists manager" +#~ msgstr "Gerenciador de listas" + +#~ msgid "List" +#~ msgstr "Lista" + +#~ msgid "Owner" +#~ msgstr "Proprietário" + +#~ msgid "Members" +#~ msgstr "Membros" + +#~ msgid "mode" +#~ msgstr "Modo" + +#~ msgid "Create a new list" +#~ msgstr "Criar nova lista" + +#~ msgid "Open in buffer" +#~ msgstr "Abrir no exibidor" + +#~ msgid "Viewing lists for %s" +#~ msgstr "Visualizando listas de %s" + +#~ msgid "Subscribe" +#~ msgstr "Inscrever-se" + +#~ msgid "Unsubscribe" +#~ msgstr "Desinscrever-se" + +#~ msgid "Name (20 characters maximun)" +#~ msgstr "Nome (20 caracteres no máximo)" + +#~ msgid "Mode" +#~ msgstr "Modo" + +#~ msgid "Private" +#~ msgstr "Privado" + +#~ msgid "Editing the list %s" +#~ msgstr "Editando a lista %s" + +#~ msgid "Select a list to add the user" +#~ msgstr "Selecione uma lista para adicionar o usuário" + +#~ msgid "Add" +#~ msgstr "Adicionar" + +#~ msgid "Select a list to remove the user" +#~ msgstr "Selecione uma lista para excluir o usuário" + +#~ msgid "Do you really want to delete this list?" +#~ msgstr "Você tem certeza que deseja excluir esta lista?" + +#~ msgid "Search on Twitter" +#~ msgstr "Buscar no Twitter" + +#~ msgid "Tweets" +#~ msgstr "Tweets" + +#~ msgid "&Language for results: " +#~ msgstr "&Idioma dos resultados:" + +#~ msgid "any" +#~ msgstr "qualquer" + +#~ msgid "Results &type: " +#~ msgstr "&Tipo de resultados: " + +#~ msgid "Mixed" +#~ msgstr "Misturado" + +#~ msgid "Recent" +#~ msgstr "Recente" + +#~ msgid "Popular" +#~ msgstr "Popular" + +#~ msgid "Details" +#~ msgstr "Detalhes" + +#~ msgid "&Go to URL" +#~ msgstr "&Ir para URL" + +#~ msgid "View trending topics" +#~ msgstr "Ver assuntos do momento" + +#~ msgid "Trending topics by" +#~ msgstr "Assuntos do momento por" + +#~ msgid "Country" +#~ msgstr "País" + +#~ msgid "City" +#~ msgstr "Cidade" + +#~ msgid "&Location" +#~ msgstr "&Localização" + +#~ msgid "Update your profile" +#~ msgstr "Atualizar meu perfil" + +#~ msgid "&Name (50 characters maximum)" +#~ msgstr "&Nome (50 caracteres no máximo)" + +#~ msgid "&Website" +#~ msgstr "&Website" + +#~ msgid "&Bio (160 characters maximum)" +#~ msgstr "&Bio (160 caracteres no máximo)" + +#~ msgid "Upload a &picture" +#~ msgstr "Adicionar &imagem" + +#~ msgid "Upload a picture" +#~ msgstr "Adicionar imagem" + +#~ msgid "Discard image" +#~ msgstr "Descartar imagem" + +#~ msgid "&Report as spam" +#~ msgstr "De&nunciar como SPAM" + +#~ msgid "&Ignore tweets from this client" +#~ msgstr "&Ignorar tweets deste cliente" + +#~ msgid "&Tweets" +#~ msgstr "&Tweets" + +#~ msgid "&Likes" +#~ msgstr "&Curtidas" + +#~ msgid "F&riends" +#~ msgstr "S&eguindo" + +#~ msgid "Delete attachment" +#~ msgstr "Remover anexo" + +#~ msgid "Added Tweets" +#~ msgstr "Tweets enviados" + +#~ msgid "Delete tweet" +#~ msgstr "Tweets enviados" + +#~ msgid "A&dd..." +#~ msgstr "" + +#~ msgid "Add t&weet" +#~ msgstr "Curtir um tweet" + +#~ msgid "&Attach audio..." +#~ msgstr "&Adicionar áudio..." + +#~ msgid "Sen&d" +#~ msgstr "&Enviar" + +#~ msgid "Video files (*.mp4)|*.mp4" +#~ msgstr "" + +#~ msgid "" +#~ "It is not possible to add more " +#~ "attachments. Please make sure your tweet" +#~ " complies with Twitter'S attachment rules." +#~ " You can add only one video or" +#~ " GIF in every tweet, and a " +#~ "maximum of 4 photos." +#~ msgstr "" + +#~ msgid "&Mention to all" +#~ msgstr "&Mencionar todos" + +#~ msgid "&Recipient" +#~ msgstr "&Destinatário" + +#~ msgid "Tweet - %i characters " +#~ msgstr "Tweet - %i caracteres" + +#~ msgid "Retweets: " +#~ msgstr "Retweets: " + +#~ msgid "Likes: " +#~ msgstr "Curtidas: " + +#~ msgid "View" +#~ msgstr "Vista" + +#~ msgid "Item" +#~ msgstr "Item" + +#~ msgid "&Expand URL" +#~ msgstr "&Desencurtar URL" + +#~ msgid "Participation time (in days)" +#~ msgstr "" + +#~ msgid "&Open in Twitter" +#~ msgstr "Abrir no Twitter" + +#~ msgid "&Show tweet" +#~ msgstr "&Mostrar tweet" + +#~ msgid "Translated" +#~ msgstr "Traduzido" + +#~ msgid "Afrikaans" +#~ msgstr "Africâner" + +#~ msgid "Albanian" +#~ msgstr "Albanês" + +#~ msgid "Amharic" +#~ msgstr "Dari" + +#~ msgid "Arabic" +#~ msgstr "Árabe" + +#~ msgid "Armenian" +#~ msgstr "Armênio" + +#~ msgid "Azerbaijani" +#~ msgstr "Azerbaijano" + +#~ msgid "Basque" +#~ msgstr "Basco" + +#~ msgid "Belarusian" +#~ msgstr "Bielorrusso" + +#~ msgid "Bengali" +#~ msgstr "Bengali" + +#~ msgid "Bihari" +#~ msgstr "Bihari" + +#~ msgid "Bulgarian" +#~ msgstr "Búlgaro" + +#~ msgid "Burmese" +#~ msgstr "Birmanês" + +#~ msgid "Catalan" +#~ msgstr "Catalão" + +#~ msgid "Cherokee" +#~ msgstr "Cherokee" + +#~ msgid "Chinese" +#~ msgstr "Chinês" + +#~ msgid "Chinese_simplified" +#~ msgstr "Chinês (Simplificado)" + +#~ msgid "Chinese_traditional" +#~ msgstr "Chinês (Tradicional)" + +#~ msgid "Croatian" +#~ msgstr "Croata" + +#~ msgid "Czech" +#~ msgstr "Tcheco" + +#~ msgid "Dhivehi" +#~ msgstr "Dhivehi" + +#~ msgid "Esperanto" +#~ msgstr "Esperanto" + +#~ msgid "Estonian" +#~ msgstr "Estoniano" + +#~ msgid "Filipino" +#~ msgstr "Filipino" + +#~ msgid "Galician" +#~ msgstr "Galego" + +#~ msgid "Georgian" +#~ msgstr "Georgiano" + +#~ msgid "Greek" +#~ msgstr "Grego" + +#~ msgid "Guarani" +#~ msgstr "Guarani" + +#~ msgid "Gujarati" +#~ msgstr "Gujarati" + +#~ msgid "Hebrew" +#~ msgstr "Hebraico" + +#~ msgid "Hindi" +#~ msgstr "Hindi" + +#~ msgid "Icelandic" +#~ msgstr "Islandês" + +#~ msgid "Indonesian" +#~ msgstr "Indonésio" + +#~ msgid "Inuktitut" +#~ msgstr "Inuctitut" + +#~ msgid "Irish" +#~ msgstr "Irlandês" + +#~ msgid "Kannada" +#~ msgstr "Kannada" + +#~ msgid "Kazakh" +#~ msgstr "Cazaque" + +#~ msgid "Khmer" +#~ msgstr "Khmer" + +#~ msgid "Kurdish" +#~ msgstr "Curdo" + +#~ msgid "Kyrgyz" +#~ msgstr "Quirguistão" + +#~ msgid "Laothian" +#~ msgstr "Laotiano" + +#~ msgid "Latvian" +#~ msgstr "Letão" + +#~ msgid "Lithuanian" +#~ msgstr "Lituano" + +#~ msgid "Macedonian" +#~ msgstr "Macedónio" + +#~ msgid "Malay" +#~ msgstr "Malaio" + +#~ msgid "Malayalam" +#~ msgstr "Malayalam" + +#~ msgid "Maltese" +#~ msgstr "Maltês" + +#~ msgid "Marathi" +#~ msgstr "Marathi" + +#~ msgid "Mongolian" +#~ msgstr "Mongol" + +#~ msgid "Nepali" +#~ msgstr "Nepali" + +#~ msgid "Norwegian" +#~ msgstr "Norueguês" + +#~ msgid "Oriya" +#~ msgstr "Oriá" + +#~ msgid "Pashto" +#~ msgstr "Pashto" + +#~ msgid "Persian" +#~ msgstr "Persa" + +#~ msgid "Punjabi" +#~ msgstr "Punjabi" + +#~ msgid "Romanian" +#~ msgstr "Romeno" + +#~ msgid "Sanskrit" +#~ msgstr "Sânscrito" + +#~ msgid "Serbian" +#~ msgstr "Sérvio" + +#~ msgid "Sindhi" +#~ msgstr "Sindi" + +#~ msgid "Sinhalese" +#~ msgstr "Cingalês" + +#~ msgid "Slovak" +#~ msgstr "Eslovaco" + +#~ msgid "Slovenian" +#~ msgstr "Esloveno" + +#~ msgid "Swahili" +#~ msgstr "Meio" + +#~ msgid "Swedish" +#~ msgstr "Sueco" + +#~ msgid "Tajik" +#~ msgstr "Tajik" + +#~ msgid "Tamil" +#~ msgstr "Tâmil" + +#~ msgid "Tagalog" +#~ msgstr "Tagalog" + +#~ msgid "Telugu" +#~ msgstr "Telugu" + +#~ msgid "Thai" +#~ msgstr "Thai" + +#~ msgid "Tibetan" +#~ msgstr "Tibetano" + +#~ msgid "Ukrainian" +#~ msgstr "Ucraniano" + +#~ msgid "Urdu" +#~ msgstr "Urdu" + +#~ msgid "Uzbek" +#~ msgstr "Uzbeque" + +#~ msgid "Uighur" +#~ msgstr "Uigur" + +#~ msgid "Vietnamese" +#~ msgstr "Vietnamita" + +#~ msgid "Welsh" +#~ msgstr "Galês" + +#~ msgid "Yiddish" +#~ msgstr "Ídiche" + +#~ msgid "" +#~ "TWBlue has detected that you're running" +#~ " windows 10 and has changed the " +#~ "default keymap to the Windows 10 " +#~ "keymap. It means that some keyboard " +#~ "shorcuts could be different. Please " +#~ "check the keystroke editor by pressing" +#~ " Alt+Win+K to see all available " +#~ "keystrokes for this keymap." +#~ msgstr "" +#~ "TWBlue detectou que você está executando" +#~ " o Windows 10 e mudou o mapa" +#~ " de teclado padrão para o mapa " +#~ "de teclado do Windows 10. Isso " +#~ "significa que algumas teclas de atalho" +#~ " podem ser diferentes. Por favor, " +#~ "verifique o editor de teclas de " +#~ "atalho pressionando Alt+Windows+K para ver " +#~ "os atalhos disponíveis para este mapa" +#~ " de teclado." + +#~ msgid "Boosts: " +#~ msgstr "" + +#~ msgid "Favorites: " +#~ msgstr "" + +#~ msgid "Date: " +#~ msgstr "Data: " + +#~ msgid "Community for {}" +#~ msgstr "" + +#~ msgid "Run {0} at Windows startup" +#~ msgstr "Executar {0} na inicialização do Windows" + +#~ msgid "Use Codeofdusk's longtweet handlers (may decrease client performance)" +#~ msgstr "" +#~ "Usar os manipuladores Codeofdusk's para " +#~ "tweet longo (pode diminuir o desempenho" +#~ " do cliente )" + +#~ msgid "Remember state for mention all and long tweet" +#~ msgstr "Lembrar do estado para mencionar tudo e tweet longo" + +#~ msgid "Bio: " +#~ msgstr "" + +#~ msgid "Joined at: " +#~ msgstr "" + +#~ msgid "Field {} - Label: " +#~ msgstr "" + +#~ msgid "{} posts. Click to open posts timeline" +#~ msgstr "" + +#~ msgid "{} following. Click to open Following timeline" +#~ msgstr "" + +#~ msgid "{} followers. Click to open followers timeline" +#~ msgstr "" + +#~ msgid "Display Name" +#~ msgstr "" + +#~ msgid "Bio" +#~ msgstr "" + +#~ msgid "Change header" +#~ msgstr "" + +#~ msgid "Change avatar" +#~ msgstr "" + +#~ msgid "Field {}: Label" +#~ msgstr "" + +#~ msgid "Add following to database" +#~ msgstr "" + +#~ msgid "Read long posts in GUI" +#~ msgstr "" + +#~ msgid "LibreTranslate API URL: " +#~ msgstr "" + +#~ msgid "LibreTranslate API Key (optional): " +#~ msgstr "" + +#~ msgid "DeepL API Key: " +#~ msgstr "" + +#~ msgid "" +#~ "Scan account and add followers and " +#~ "following users to the user " +#~ "autocompletion database" +#~ msgstr "" + +#~ msgid "" +#~ "Read preferences from instance (default " +#~ "visibility when publishing and displaying " +#~ "sensitive content)" +#~ msgstr "" + +#~ msgid "Ask confirmation before boosting a post" +#~ msgstr "" + +#~ msgid "hide emojis in usernames" +#~ msgstr "" + +#~ msgid "" +#~ "Load cache for items in memory " +#~ "(much faster in big datasets but " +#~ "requires more RAM)" +#~ msgstr "" + diff --git a/srcantiguo/locales/ro/LC_MESSAGES/twblue.mo b/srcantiguo/locales/ro/LC_MESSAGES/twblue.mo new file mode 100644 index 00000000..3546d9f2 Binary files /dev/null and b/srcantiguo/locales/ro/LC_MESSAGES/twblue.mo differ diff --git a/srcantiguo/locales/ro/LC_MESSAGES/twblue.po b/srcantiguo/locales/ro/LC_MESSAGES/twblue.po new file mode 100644 index 00000000..23a3c34c --- /dev/null +++ b/srcantiguo/locales/ro/LC_MESSAGES/twblue.po @@ -0,0 +1,4955 @@ + +msgid "" +msgstr "" +"Project-Id-Version: TW Blue 0.80\n" +"Report-Msgid-Bugs-To: manuel@manuelcortez.net\n" +"POT-Creation-Date: 2025-04-13 01:18+0000\n" +"PO-Revision-Date: 2022-12-20 22:42+0000\n" +"Last-Translator: Anonymous \n" +"Language: ro\n" +"Language-Team: Romanian " +"\n" +"Plural-Forms: nplurals=3; plural=n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 " +"< 20)) ? 1 : 2;\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.17.0\n" + +#: languageHandler.py:61 +#, fuzzy +msgctxt "languageName" +msgid "Amharic" +msgstr "Amharică" + +#: languageHandler.py:62 +#, fuzzy +msgctxt "languageName" +msgid "Aragonese" +msgstr "Japoneză" + +#: languageHandler.py:63 +#, fuzzy +msgctxt "languageName" +msgid "Spanish" +msgstr "spaniolă" + +#: languageHandler.py:64 +#, fuzzy +msgctxt "languageName" +msgid "Portuguese" +msgstr "portugheză" + +#: languageHandler.py:65 +#, fuzzy +msgctxt "languageName" +msgid "Russian" +msgstr "rusă" + +#: languageHandler.py:66 +#, fuzzy +msgctxt "languageName" +msgid "italian" +msgstr "Italiană" + +#: languageHandler.py:67 +#, fuzzy +msgctxt "languageName" +msgid "Turkey" +msgstr "caracteristică" + +#: languageHandler.py:68 +#, fuzzy +msgctxt "languageName" +msgid "Galician" +msgstr "Galiciană" + +#: languageHandler.py:69 +#, fuzzy +msgctxt "languageName" +msgid "Catala" +msgstr "Katalană" + +#: languageHandler.py:70 +#, fuzzy +msgctxt "languageName" +msgid "Vasque" +msgstr "Bască" + +#: languageHandler.py:71 +#, fuzzy +msgctxt "languageName" +msgid "polish" +msgstr "poloneză" + +#: languageHandler.py:72 +#, fuzzy +msgctxt "languageName" +msgid "Arabic" +msgstr "Arabă" + +#: languageHandler.py:73 +#, fuzzy +msgctxt "languageName" +msgid "Nepali" +msgstr "nepaleză" + +#: languageHandler.py:74 +msgctxt "languageName" +msgid "Serbian (Latin)" +msgstr "" + +#: languageHandler.py:75 +#, fuzzy +msgctxt "languageName" +msgid "Japanese" +msgstr "Japoneză" + +#: languageHandler.py:99 +msgid "User default" +msgstr "Utilizator implicit" + +#: main.py:105 +#, fuzzy +msgid "https://twblue.mcvsoftware.com/donate" +msgstr "https://twblue.es/donate" + +#: main.py:118 +#, python-brace-format +msgid "" +"{0} is already running. Close the other instance before starting this " +"one. If you're sure that {0} isn't running, try deleting the file at {1}." +" If you're unsure of how to do this, contact the {0} developers." +msgstr "" +"{0} rulează deja. Închide cealaltă instanță înainte de a o porni pe " +"aceasta. Dacă ești sigur că {0} nu rulează, încearcă să ștergi fișierul " +"la {1}. Dacă nu prea știi cum s-o faci, contactează dezvoltatorii {0}." + +#: sound.py:148 +msgid "Playing..." +msgstr "Se redă..." + +#: sound.py:161 +msgid "Stopped." +msgstr "oprit" + +#: controller/mainController.py:261 +msgid "Ready" +msgstr "Pregătit" + +#: controller/mainController.py:369 controller/mainController.py:654 +#: controller/mainController.py:673 controller/mainController.py:692 +#: controller/mainController.py:711 +msgid "" +"No session is currently in focus. Focus a session with the next or " +"previous session shortcut." +msgstr "" +"Nicio sesiune nu este momentan selectată, nu ești în mod curent focalizat" +" pe nicio sesiune. Focusează o sesiune prin comanda rapidă a sesiunii " +"următoare sau anterioare." + +#: controller/mainController.py:373 +msgid "Empty buffer." +msgstr "Buffer gol." + +#: controller/mainController.py:380 +#, python-brace-format +msgid "{0} not found." +msgstr "{0} Negăsit" + +#: controller/mainController.py:702 controller/mainController.py:721 +#, python-format +msgid "%s, %s of %s" +msgstr "%s, %s din %s" + +#: controller/mainController.py:704 controller/mainController.py:723 +#: controller/mainController.py:751 controller/mainController.py:779 +#, python-format +msgid "%s. Empty" +msgstr "%s. Gol" + +#: controller/mainController.py:739 controller/mainController.py:743 +#: controller/mainController.py:767 +#, python-brace-format +msgid "{0}: This account is not logged into Twitter." +msgstr "{0}: Acest cont nu este conectat la Twitter." + +#: controller/mainController.py:749 controller/mainController.py:777 +#, python-format +msgid "%s. %s, %s of %s" +msgstr "%s. %s, %s din %s" + +#: controller/mainController.py:771 +#, python-brace-format +msgid "{0}: This account is not logged into twitter." +msgstr "{0}: Acest cont nu este conectat la Twitter." + +#: controller/mainController.py:910 controller/mainController.py:926 +msgid "An error happened while trying to connect to the server. Please try later." +msgstr "" +"Ceva neașteptat s-a întâmplat în timp ce se încerca conectarea la server." +" Vă rugăm încercați mai târziu." + +#: controller/mainController.py:957 +msgid "The auto-reading of new tweets is enabled for this buffer" +msgstr "Auto-citirea postărilor noi este activată pentru acest buffer" + +#: controller/mainController.py:960 +msgid "The auto-reading of new tweets is disabled for this buffer" +msgstr "Auto-citirea postărilor noi este dezactivată pentru acest buffer" + +#: controller/mainController.py:967 +msgid "Session mute on" +msgstr "Activează ignorarea sesiunii" + +#: controller/mainController.py:970 +msgid "Session mute off" +msgstr "Dezactivează ignorarea sesiunii" + +#: controller/mainController.py:979 +msgid "Buffer mute on" +msgstr "Activează ignorarea Buffer-ului" + +#: controller/mainController.py:982 +msgid "Buffer mute off" +msgstr "Dezactivează ignorarea Buffer-ului" + +#: controller/mainController.py:999 +msgid "Copied" +msgstr "Copiat" + +#: controller/mainController.py:1019 +msgid "Unable to update this buffer." +msgstr "Nu se poate actualiza acest buffer." + +#: controller/mainController.py:1021 +msgid "Updating buffer..." +msgstr "Se actualizează buffe-rul..." + +#: controller/mainController.py:1024 +#, python-brace-format +msgid "{0} items retrieved" +msgstr "%s Articole salvate" + +#: controller/buffers/mastodon/base.py:137 controller/mainController.py:1028 +#: controller/mastodon/handler.py:98 controller/mastodon/handler.py:241 +#, python-brace-format +msgid "Timeline for {}" +msgstr "Cronologie pentru {}" + +#: controller/buffers/mastodon/users.py:93 controller/mainController.py:1030 +#: controller/mastodon/handler.py:100 controller/mastodon/handler.py:255 +#, python-brace-format +msgid "Followers for {}" +msgstr "Urmăritori pentru" + +#: controller/mainController.py:1032 +#, python-brace-format +msgid "Friends for {}" +msgstr "Prieteni pentru {}" + +# | msgid "Followers for {}" +#: controller/buffers/mastodon/users.py:95 controller/mainController.py:1034 +#: controller/mastodon/handler.py:102 controller/mastodon/handler.py:269 +#, fuzzy, python-brace-format +msgid "Following for {}" +msgstr "Urmăritori pentru" + +#: controller/messages.py:18 +#, fuzzy +msgid "Translated" +msgstr "Tradus" + +#: controller/settings.py:60 +#, fuzzy +msgid "System default" +msgstr "Utilizator implicit" + +#: controller/settings.py:60 +msgid "HTTP" +msgstr "" + +#: controller/settings.py:60 +msgid "SOCKS v4" +msgstr "" + +#: controller/settings.py:60 +msgid "SOCKS v4 with DNS support" +msgstr "" + +#: controller/settings.py:60 +msgid "SOCKS v5" +msgstr "" + +#: controller/settings.py:60 +msgid "SOCKS v5 with DNS support" +msgstr "" + +#: controller/userAlias.py:31 +#, fuzzy, python-brace-format +msgid "Edit alias for {}" +msgstr "Listă pentru {}" + +#: controller/buffers/base/base.py:91 +#: controller/buffers/mastodon/conversations.py:237 +#: controller/buffers/mastodon/search.py:80 +msgid "This action is not supported for this buffer" +msgstr "Această acțiune nu este suportată pentru acest buffer" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:70 +#: controller/mastodon/settings.py:194 +msgid "Home" +msgstr "Buffer-ul principal" + +#: controller/buffers/mastodon/base.py:52 +#: controller/buffers/mastodon/community.py:22 +#: controller/mastodon/handler.py:72 controller/mastodon/handler.py:114 +#: controller/mastodon/settings.py:195 +msgid "Local" +msgstr "" + +#: controller/buffers/mastodon/base.py:52 +#: controller/buffers/mastodon/community.py:22 +#: controller/mastodon/handler.py:74 controller/mastodon/settings.py:196 +msgid "Federated" +msgstr "" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:76 +#: controller/mastodon/settings.py:197 +msgid "Mentions" +msgstr "Menţiuni" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:84 +#: controller/mastodon/settings.py:201 +msgid "Bookmarks" +msgstr "" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:78 +msgid "Direct messages" +msgstr "Mesaje private" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:80 +#: controller/mastodon/settings.py:199 +msgid "Sent" +msgstr "" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:82 +#: controller/mastodon/settings.py:200 wxUI/dialogs/mastodon/postDialogs.py:229 +msgid "Favorites" +msgstr "" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:86 +#: controller/mastodon/settings.py:202 +msgid "Followers" +msgstr "Urmăritori" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:88 +#: controller/mastodon/settings.py:203 +#, fuzzy +msgid "Following" +msgstr "&Numai urmări" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:92 +#: controller/mastodon/settings.py:204 +msgid "Blocked users" +msgstr "Utilizatorii blocați" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:90 +#: controller/mastodon/settings.py:205 +msgid "Muted users" +msgstr "Utilizatorii ignorați" + +# | msgid "&Location" +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:94 +#: controller/mastodon/settings.py:206 +#: wxUI/dialogs/mastodon/filters/create_filter.py:80 +#, fuzzy +msgid "Notifications" +msgstr "&Locație" + +#: controller/buffers/mastodon/base.py:58 +#, python-brace-format +msgid "{username}'s timeline" +msgstr "Cronologia lui {username}" + +#: controller/buffers/mastodon/base.py:60 +#, python-brace-format +msgid "{username}'s followers" +msgstr "Urmăritorii lui {username}" + +# | msgid "{username}'s followers" +#: controller/buffers/mastodon/base.py:62 +#, fuzzy, python-brace-format +msgid "{username}'s following" +msgstr "Urmăritorii lui {username}" + +#: controller/buffers/mastodon/base.py:64 +msgid "Unknown buffer" +msgstr "Buffer necunoscut" + +#: controller/buffers/mastodon/base.py:67 +#: controller/buffers/mastodon/base.py:645 wxUI/buffers/mastodon/base.py:24 +#: wxUI/buffers/mastodon/conversationList.py:24 +#: wxUI/buffers/mastodon/notifications.py:22 wxUI/buffers/mastodon/user.py:18 +#: wxUI/dialogs/mastodon/postDialogs.py:5 +#: wxUI/dialogs/mastodon/postDialogs.py:194 wxUI/sysTrayIcon.py:35 +msgid "Post" +msgstr "" + +# | msgid "Write the tweet here" +#: controller/buffers/mastodon/base.py:68 +#: controller/buffers/mastodon/base.py:646 +#, fuzzy +msgid "Write your post here" +msgstr "Scrie postarea aici" + +# | msgid "New tweet in {0}" +#: controller/buffers/mastodon/base.py:153 +#, fuzzy, python-brace-format +msgid "New post in {0}" +msgstr "Postare nouă în {0}" + +# | msgid "{0} new tweets in {1}." +#: controller/buffers/mastodon/base.py:159 +#, fuzzy, python-brace-format +msgid "{0} new posts in {1}." +msgstr "{0} postări noi în {1}." + +#: controller/buffers/mastodon/base.py:198 +#: controller/buffers/mastodon/community.py:90 +#: controller/buffers/mastodon/conversations.py:100 +#: controller/buffers/mastodon/mentions.py:82 +#: controller/buffers/mastodon/users.py:139 +#, python-format +msgid "%s items retrieved" +msgstr "%s Articole salvate" + +#: controller/buffers/mastodon/base.py:216 +#: controller/buffers/mastodon/users.py:206 +msgid "This buffer is not a timeline; it can't be deleted." +msgstr "Acest buffer nu este o cronologie și nu poate fi șters" + +# | msgid "Conversation with {0}" +#: controller/buffers/mastodon/base.py:346 +#: controller/buffers/mastodon/base.py:384 +#, fuzzy, python-brace-format +msgid "Conversation with {}" +msgstr "Conversație cu {0}" + +# | msgid "Write the tweet here" +#: controller/buffers/mastodon/base.py:347 +#: controller/buffers/mastodon/base.py:385 +#: controller/buffers/mastodon/conversations.py:181 +#: controller/buffers/mastodon/notifications.py:122 +#: controller/buffers/mastodon/users.py:52 +#, fuzzy +msgid "Write your message here" +msgstr "Scrie postarea aici" + +# | msgid "Reply to {arg0}" +#: controller/buffers/mastodon/base.py:349 +#, fuzzy, python-brace-format +msgid "Reply to {}" +msgstr "Răspuns către {arg0}" + +# | msgid "Write the tweet here" +#: controller/buffers/mastodon/base.py:350 +#, fuzzy +msgid "Write your reply here" +msgstr "Scrie postarea aici" + +#: controller/buffers/mastodon/base.py:412 +#, fuzzy +msgid "This action is not supported on conversations." +msgstr "Această acțiune nu este suportată în buffer încă." + +#: controller/buffers/mastodon/base.py:477 +msgid "Opening URL..." +msgstr "Se deschide URL..." + +#: controller/buffers/mastodon/base.py:490 +msgid "You can delete only your own posts." +msgstr "" + +#: controller/buffers/mastodon/base.py:519 +msgid "Opening item in web browser..." +msgstr "Se deschide elementul în navigatorul web..." + +#: controller/buffers/mastodon/base.py:527 +#: controller/buffers/mastodon/base.py:547 +msgid "Adding to favorites..." +msgstr "" + +# | msgid "Remove from list" +#: controller/buffers/mastodon/base.py:534 +#: controller/buffers/mastodon/base.py:549 +#, fuzzy +msgid "Removing from favorites..." +msgstr "Ștergeţi din listă" + +#: controller/buffers/mastodon/base.py:544 +#: controller/buffers/mastodon/base.py:559 +#: controller/buffers/mastodon/base.py:573 +#: controller/buffers/mastodon/conversations.py:213 +msgid "No status found with that ID" +msgstr "Nici un status găsit cu acel ID" + +#: controller/buffers/mastodon/base.py:562 +msgid "Adding to bookmarks..." +msgstr "" + +#: controller/buffers/mastodon/base.py:564 +msgid "Removing from bookmarks..." +msgstr "" + +#: controller/buffers/mastodon/base.py:586 +#, python-brace-format +msgid "Picture {0}" +msgstr "Pictograma {0}" + +#: controller/buffers/mastodon/base.py:587 +msgid "Select the picture" +msgstr "Selectează pictograma" + +#: controller/buffers/mastodon/base.py:610 +msgid "Unable to extract text" +msgstr "Nu se poate extrage textul" + +#: controller/buffers/mastodon/base.py:612 +msgid "OCR Result" +msgstr "" + +#: controller/buffers/mastodon/base.py:627 +msgid "this poll no longer exists." +msgstr "" + +#: controller/buffers/mastodon/base.py:630 +msgid "This poll has already expired." +msgstr "" + +#: controller/buffers/mastodon/base.py:633 +msgid "You have already voted on this poll." +msgstr "" + +#: controller/buffers/mastodon/base.py:642 +#, fuzzy +msgid "Sending vote..." +msgstr "Înregistrare audio" + +# | msgid "Conversation with {0}" +#: controller/buffers/mastodon/conversations.py:180 +#, fuzzy, python-brace-format +msgid "Reply to conversation with {}" +msgstr "Conversație cu {0}" + +# | msgid "Conversation with {0}" +#: controller/buffers/mastodon/notifications.py:121 +#: controller/buffers/mastodon/users.py:51 +#, fuzzy, python-brace-format +msgid "New conversation with {}" +msgstr "Conversație cu {0}" + +#: controller/buffers/mastodon/notifications.py:151 +msgid "Notification dismissed." +msgstr "" + +# | msgid "There are no coordinates in this tweet" +#: controller/buffers/mastodon/users.py:110 +#, fuzzy +msgid "There are no more items in this buffer." +msgstr "Nu există coordonate în această postare" + +#: controller/mastodon/handler.py:30 wxUI/dialogs/mastodon/updateProfile.py:35 +#, fuzzy +msgid "Update Profile" +msgstr "&Actualizare profil" + +#: controller/mastodon/handler.py:31 wxUI/dialogs/mastodon/search.py:10 +#: wxUI/view.py:19 +msgid "&Search" +msgstr "&Căutare" + +#: controller/mastodon/handler.py:33 wxUI/view.py:22 +msgid "Manage user aliases" +msgstr "" + +#: controller/mastodon/handler.py:35 controller/mastodon/handler.py:59 +#: wxUI/view.py:30 +msgid "&Post" +msgstr "" + +#: controller/mastodon/handler.py:36 wxUI/dialogs/mastodon/menus.py:9 +#: wxUI/dialogs/mastodon/menus.py:37 wxUI/view.py:31 +msgid "Re&ply" +msgstr "&Răspunde" + +#: controller/mastodon/handler.py:37 wxUI/dialogs/mastodon/menus.py:7 +#: wxUI/dialogs/mastodon/menus.py:35 wxUI/view.py:32 +msgid "&Boost" +msgstr "" + +# | msgid "&Add to list" +#: controller/mastodon/handler.py:38 wxUI/dialogs/mastodon/menus.py:11 +#: wxUI/dialogs/mastodon/menus.py:39 wxUI/view.py:33 +#, fuzzy +msgid "&Add to favorites" +msgstr "&Adaugă la listă" + +# | msgid "Remove from list" +#: controller/mastodon/handler.py:39 +#, fuzzy +msgid "Remove from favorites" +msgstr "Ștergeţi din listă" + +# | msgid "&Show user" +#: controller/mastodon/handler.py:40 wxUI/dialogs/mastodon/menus.py:21 +#: wxUI/dialogs/mastodon/menus.py:49 wxUI/view.py:35 +#, fuzzy +msgid "&Show post" +msgstr "&Arată utilizator" + +#: controller/mastodon/handler.py:41 wxUI/view.py:36 +msgid "View conversa&tion" +msgstr "&Vizualizare conversație" + +#: controller/mastodon/handler.py:42 wxUI/view.py:37 +msgid "Read text in picture" +msgstr "Citește textul dinn imagine" + +#: controller/mastodon/handler.py:43 wxUI/dialogs/mastodon/menus.py:25 +#: wxUI/view.py:39 +msgid "&Delete" +msgstr "&Șterge" + +#: controller/mastodon/handler.py:45 wxUI/view.py:43 +msgid "&Actions..." +msgstr "&Acțiuni..." + +#: controller/mastodon/handler.py:46 wxUI/view.py:44 +msgid "&View timeline..." +msgstr "&Vizualizare cronologie..." + +#: controller/mastodon/handler.py:47 wxUI/view.py:45 +msgid "Direct me&ssage" +msgstr "&Mesaj privat" + +#: controller/mastodon/handler.py:48 wxUI/view.py:46 +msgid "Add a&lias" +msgstr "" + +#: controller/mastodon/handler.py:51 +#, fuzzy +msgid "Show user profile" +msgstr "Arată &profilul utilizatorului" + +#: controller/mastodon/handler.py:54 +msgid "Create c&ommunity timeline" +msgstr "" + +#: controller/mastodon/handler.py:55 wxUI/view.py:57 +msgid "Create a &filter" +msgstr "Creeaz&ă un filtru" + +#: controller/mastodon/handler.py:56 wxUI/view.py:58 +msgid "&Manage filters" +msgstr "&Administrare filtre" + +#: controller/mastodon/handler.py:95 +msgid "Timelines" +msgstr "Cronologii" + +#: controller/mastodon/handler.py:107 +msgid "Searches" +msgstr "Căutări" + +#: controller/mastodon/handler.py:110 controller/mastodon/handler.py:191 +#: controller/mastodon/handler.py:196 +#, python-brace-format +msgid "Search for {}" +msgstr "Căutare pentru" + +#: controller/mastodon/handler.py:111 +msgid "Communities" +msgstr "" + +#: controller/mastodon/handler.py:114 +#, fuzzy +msgid "federated" +msgstr "Cronologia lui {username}" + +#: controller/mastodon/handler.py:143 +#, python-brace-format +msgid "Conversation with {0}" +msgstr "Conversație cu {0}" + +#: controller/mastodon/handler.py:299 +msgid "Add an user alias" +msgstr "" + +#: controller/mastodon/handler.py:311 +#, python-brace-format +msgid "Alias has been set correctly for {}." +msgstr "" + +#: controller/mastodon/handler.py:342 +#, fuzzy +msgid "Update profile" +msgstr "&Actualizare profil" + +#: controller/mastodon/messages.py:115 +#, python-format +msgid "%s - %s of %d characters" +msgstr "%s - %s din %d caractere" + +#: controller/mastodon/messages.py:239 +#, python-brace-format +msgid "Poll with {} options" +msgstr "" + +# | msgid "List for {}" +#: controller/mastodon/messages.py:272 +#, fuzzy, python-brace-format +msgid "Post from {}" +msgstr "Listă pentru {}" + +#: controller/mastodon/messages.py:276 sessions/mastodon/templates.py:82 +#: wxUI/dialogs/mastodon/postDialogs.py:49 +msgid "Public" +msgstr "Public" + +# | msgid "Accounts list" +#: controller/mastodon/messages.py:276 sessions/mastodon/templates.py:82 +#: wxUI/dialogs/mastodon/postDialogs.py:49 +#, fuzzy +msgid "Not listed" +msgstr "Lista de conturi" + +# | msgid "Followers" +#: controller/mastodon/messages.py:276 +#, fuzzy +msgid "followers only" +msgstr "Urmăritori" + +# | msgid "Direct message" +#: controller/mastodon/messages.py:276 sessions/mastodon/templates.py:82 +#: wxUI/dialogs/mastodon/postDialogs.py:49 +#, fuzzy +msgid "Direct" +msgstr "mesaj privat" + +# | msgid "Remove client" +#: controller/mastodon/messages.py:283 +#, fuzzy +msgid "Remote instance" +msgstr "scoate aplicația" + +#: controller/mastodon/messages.py:291 controller/mastodon/messages.py:319 +#, fuzzy +msgid "Unmute conversation" +msgstr "Vezi conversația" + +#: controller/mastodon/messages.py:315 wxUI/dialogs/mastodon/postDialogs.py:237 +#, fuzzy +msgid "Mute conversation" +msgstr "Vezi conversația" + +# | msgid "Conversation with {0}" +#: controller/mastodon/messages.py:316 +#, fuzzy +msgid "Conversation unmuted." +msgstr "Conversație cu {0}" + +# | msgid "Conversation with {0}" +#: controller/mastodon/messages.py:320 +#, fuzzy +msgid "Conversation muted." +msgstr "Conversație cu {0}" + +#: controller/mastodon/messages.py:331 +msgid "people who boosted this post" +msgstr "" + +#: controller/mastodon/messages.py:336 +msgid "people who favorited this post" +msgstr "" + +#: controller/mastodon/messages.py:342 +#, fuzzy +msgid "Link copied to clipboard." +msgstr "Copiați pe planșetă" + +#: controller/mastodon/settings.py:82 +#, python-format +msgid "Account settings for %s" +msgstr "Setări cont %s" + +#: controller/mastodon/settings.py:92 +#, python-brace-format +msgid "Edit template for posts. Current template: {}" +msgstr "" + +#: controller/mastodon/settings.py:101 +#, python-brace-format +msgid "Edit template for conversations. Current template: {}" +msgstr "" + +#: controller/mastodon/settings.py:110 +#, python-brace-format +msgid "Edit template for persons. Current template: {}" +msgstr "" + +#: controller/mastodon/settings.py:198 +msgid "Direct Messages" +msgstr "Mesaje private" + +#: controller/mastodon/filters/create_filter.py:75 +#, fuzzy, python-brace-format +msgid "Update Filter: {}" +msgstr "&Actualizare profil" + +#: controller/mastodon/filters/manage_filters.py:57 +#: wxUI/dialogs/mastodon/filters/create_filter.py:90 +msgid "Never" +msgstr "" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:4 +msgid "Audio tweet." +msgstr "Postare audio." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:5 +msgid "User timeline buffer created." +msgstr "Buffer creat în cronologia utilizatorului" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:6 +msgid "Buffer destroied." +msgstr "Buffer șters." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:7 +msgid "Direct message received." +msgstr "Mesaj privat primit." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:8 +msgid "Direct message sent." +msgstr "Mesaj privat trimis" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:9 +msgid "Error." +msgstr "Eroare" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:10 +msgid "Tweet liked." +msgstr "Postare apreciată" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:11 +msgid "Likes buffer updated." +msgstr "Buffer-ul de aprecieri s-a actualizat" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:12 +msgid "Geotweet." +msgstr "Geopostare." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:13 +msgid "Tweet contains one or more images" +msgstr "Postarea conține una sau mai multe imagini" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:14 +msgid "Boundary reached." +msgstr "Limită atinsă" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:15 +msgid "List updated." +msgstr "Listă actualizată" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:16 +msgid "Too many characters." +msgstr "Prea multe caractere." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:17 +msgid "Mention received." +msgstr "Mențiune primită." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:18 +msgid "New event." +msgstr "Eveniment nou" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:19 +#, python-brace-format +msgid "{0} is ready." +msgstr "{0} este gata" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:20 +msgid "Mention sent." +msgstr "Mențiune trimisă" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:21 +msgid "Tweet retweeted." +msgstr "Postare distribuită" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:22 +msgid "Search buffer updated." +msgstr "Caută buffer actualizat." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:23 +msgid "Tweet received." +msgstr "Postare primită" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:24 +msgid "Tweet sent." +msgstr "Postare trimisă" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:25 +msgid "Trending topics buffer updated." +msgstr "Buffer-ul de subiecte este actualizat." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:26 +msgid "New tweet in user timeline buffer." +msgstr "Postare nouă în buffer-ul cronologiei utilizatorului." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:27 +msgid "New follower." +msgstr "Urmăritor nou." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:28 +msgid "Volume changed." +msgstr "Volum ajustat." + +#: extra/SoundsTutorial/wx_ui.py:8 +msgid "Sounds tutorial" +msgstr "Tutorial sunete" + +#: extra/SoundsTutorial/wx_ui.py:11 +msgid "Press enter to listen to the sound for the selected event" +msgstr "Apasă Enter pentru a asculta sunetul pentru acțiunea selectată." + +#: extra/SpellChecker/spellchecker.py:56 +#, python-format +msgid "Misspelled word: %s" +msgstr "Cuvânt scris greşit: %s" + +#: extra/SpellChecker/wx_ui.py:27 +msgid "Misspelled word" +msgstr "Cuvânt scris greşit" + +#: extra/SpellChecker/wx_ui.py:32 +msgid "Context" +msgstr "Context" + +#: extra/SpellChecker/wx_ui.py:37 +msgid "Suggestions" +msgstr "Sugestii" + +#: extra/SpellChecker/wx_ui.py:42 +msgid "&Ignore" +msgstr "&Ignoră" + +#: extra/SpellChecker/wx_ui.py:43 +msgid "I&gnore all" +msgstr "Ignor&ă toate" + +#: extra/SpellChecker/wx_ui.py:44 +msgid "&Replace" +msgstr "&Înlocuieşte" + +#: extra/SpellChecker/wx_ui.py:45 +msgid "R&eplace all" +msgstr "Înlocuie&şte toate" + +#: extra/SpellChecker/wx_ui.py:46 +msgid "&Add to personal dictionary" +msgstr "Adaugă în dic&ționarul personal" + +#: extra/SpellChecker/wx_ui.py:79 +#, python-brace-format +msgid "" +"An error has occurred. There are no dictionaries available for the " +"selected language in {0}" +msgstr "" +"A apărut o eroare. Nu există dicționare disponibile pentru limba " +"selectată în {0}" + +#: extra/SpellChecker/wx_ui.py:79 +#: extra/autocompletionUsers/mastodon/wx_scan.py:44 +#: wxUI/commonMessageDialogs.py:23 wxUI/commonMessageDialogs.py:36 +#: wxUI/commonMessageDialogs.py:45 wxUI/commonMessageDialogs.py:52 +#: wxUI/commonMessageDialogs.py:55 wxUI/commonMessageDialogs.py:61 +#: wxUI/dialogs/mastodon/dialogs.py:38 wxUI/dialogs/mastodon/dialogs.py:43 +#: wxUI/dialogs/mastodon/dialogs.py:48 wxUI/dialogs/mastodon/dialogs.py:53 +#: wxUI/dialogs/mastodon/dialogs.py:60 +msgid "Error" +msgstr "Eroare" + +#: extra/SpellChecker/wx_ui.py:82 +msgid "Spell check complete." +msgstr "Verificare ortografică încheiată." + +#: extra/autocompletionUsers/completion.py:39 +#: extra/autocompletionUsers/completion.py:57 +msgid "You have to start writing" +msgstr "" + +# | msgid "There are no coordinates in this tweet" +#: extra/autocompletionUsers/completion.py:49 +#: extra/autocompletionUsers/completion.py:66 +#, fuzzy +msgid "There are no results in your users database" +msgstr "Nu există coordonate în această postare" + +#: extra/autocompletionUsers/completion.py:51 +#, fuzzy +msgid "Autocompletion only works for users." +msgstr "Auto&completare utilizatori" + +#: extra/autocompletionUsers/wx_manage.py:9 +#, fuzzy +msgid "Manage Autocompletion database" +msgstr "Administrează baza de date cu autocompletări" + +#: extra/autocompletionUsers/wx_manage.py:12 +#, fuzzy, python-brace-format +msgid "Editing {0} users database" +msgstr "Se editează {0} baza de date a utilizatorilor" + +#: extra/autocompletionUsers/wx_manage.py:13 +#, fuzzy +msgid "Username" +msgstr "Utilizator" + +#: extra/autocompletionUsers/wx_manage.py:13 wxUI/dialogs/configuration.py:108 +msgid "Name" +msgstr "Nume" + +#: extra/autocompletionUsers/wx_manage.py:16 +#, fuzzy +msgid "Add user" +msgstr "Utilizator" + +#: extra/autocompletionUsers/wx_manage.py:17 +#, fuzzy +msgid "Remove user" +msgstr "Elimină utilizator" + +#: extra/autocompletionUsers/wx_manage.py:38 +msgid "Twitter username" +msgstr "" + +#: extra/autocompletionUsers/wx_manage.py:38 +msgid "Add user to database" +msgstr "" + +#: extra/autocompletionUsers/wx_manage.py:44 +#, fuzzy +msgid "The user does not exist" +msgstr "Utilizator inexistent" + +#: extra/autocompletionUsers/wx_manage.py:44 +#, fuzzy +msgid "Error!" +msgstr "Eroare" + +#: extra/autocompletionUsers/mastodon/scan.py:49 +msgid "" +"Updating database... You can close this window now. A message will tell " +"you when the process finishes." +msgstr "" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:8 +#, fuzzy +msgid "Autocomplete users' settings" +msgstr "Auto&completare utilizatori" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:11 +msgid "Add &followers to database" +msgstr "" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:12 +msgid "Add f&ollowing to database" +msgstr "" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:26 +#, fuzzy +msgid "Updating autocompletion database" +msgstr "Administrează baza de date cu autocompletări" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:34 +msgid "" +"This process will retrieve the users you selected from your Mastodon " +"account, and add them to the user autocomplete database. Please note that" +" if there are many users or you have tried to perform this action less " +"than 15 minutes ago, TWBlue may reach a limit in API calls when trying to" +" load the users into the database. If this happens, we will show you an " +"error, in which case you will have to try this process again in a few " +"minutes. If this process ends with no error, you will be redirected back " +"to the account settings dialog. Do you want to continue?" +msgstr "" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:34 +#: wxUI/commonMessageDialogs.py:20 +msgid "Attention" +msgstr "Atenție" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:40 +#, python-brace-format +msgid "TWBlue has imported {} users successfully." +msgstr "" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:40 +#, fuzzy +msgid "Done" +msgstr "Închide!" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:44 +msgid "Error adding users from Mastodon. Please try again in about 15 minutes." +msgstr "" + +#: extra/ocr/OCRSpace.py:7 +msgid "Detect automatically" +msgstr "Detectare automată" + +#: extra/ocr/OCRSpace.py:7 +msgid "Danish" +msgstr "Daneză" + +#: extra/ocr/OCRSpace.py:7 +msgid "Dutch" +msgstr "olandeză" + +#: extra/ocr/OCRSpace.py:7 +msgid "English" +msgstr "Engleză" + +#: extra/ocr/OCRSpace.py:7 +msgid "Finnish" +msgstr "finlandeză" + +#: extra/ocr/OCRSpace.py:7 +msgid "French" +msgstr "franceză" + +#: extra/ocr/OCRSpace.py:7 +msgid "German" +msgstr "germană" + +#: extra/ocr/OCRSpace.py:7 +msgid "Hungarian" +msgstr "Maghiară" + +#: extra/ocr/OCRSpace.py:7 +msgid "Korean" +msgstr "Coreeană" + +#: extra/ocr/OCRSpace.py:7 +msgid "Italian" +msgstr "Italiană" + +#: extra/ocr/OCRSpace.py:7 +msgid "Japanese" +msgstr "Japoneză" + +#: extra/ocr/OCRSpace.py:7 +msgid "Polish" +msgstr "poloneză" + +#: extra/ocr/OCRSpace.py:7 +msgid "Portuguese" +msgstr "portugheză" + +#: extra/ocr/OCRSpace.py:7 +msgid "Russian" +msgstr "rusă" + +#: extra/ocr/OCRSpace.py:7 +msgid "Spanish" +msgstr "spaniolă" + +#: extra/ocr/OCRSpace.py:7 +msgid "Turkish" +msgstr "turcă" + +#: extra/translator/wx_ui.py:25 +msgid "Translate message" +msgstr "tradu mesajul" + +#: extra/translator/wx_ui.py:29 +#, fuzzy +msgid "Translation engine" +msgstr "Tradus" + +#: extra/translator/wx_ui.py:32 +msgid "Target language" +msgstr "Limba aleasă" + +#: keystrokeEditor/wx_ui.py:8 +msgid "Keystroke editor" +msgstr "Editorul pentru combinații de taste" + +#: keystrokeEditor/wx_ui.py:11 +msgid "Select a keystroke to edit" +msgstr "Selectați combinația de taste pe care doriţi s-o editaţi" + +#: keystrokeEditor/wx_ui.py:12 +#: wxUI/dialogs/mastodon/filters/manage_filters.py:18 +#: wxUI/dialogs/mastodon/userActions.py:9 +#: wxUI/dialogs/mastodon/userActions.py:18 +#: wxUI/dialogs/mastodon/userActions.py:19 +msgid "Action" +msgstr "Acțiune" + +#: keystrokeEditor/wx_ui.py:12 +msgid "Keystroke" +msgstr "Combinația de taste" + +#: keystrokeEditor/wx_ui.py:17 +#: wxUI/dialogs/mastodon/filters/manage_filters.py:23 +#: wxUI/dialogs/userAliasDialogs.py:53 +msgid "Edit" +msgstr "editează" + +#: keystrokeEditor/wx_ui.py:19 keystrokeEditor/wx_ui.py:49 +#, fuzzy +msgid "Undefine keystroke" +msgstr "Se modifică combinația de taste" + +#: keystrokeEditor/wx_ui.py:20 +msgid "Execute action" +msgstr "Execută acțiunea" + +#: keystrokeEditor/wx_ui.py:21 wxUI/dialogs/userAliasDialogs.py:25 +msgid "Close" +msgstr "închide" + +#: keystrokeEditor/wx_ui.py:41 +msgid "Undefined" +msgstr "" + +#: keystrokeEditor/wx_ui.py:49 +#, fuzzy +msgid "Are you sure you want to undefine this keystroke?" +msgstr "Chiar ești sigur că vrei să ştergi această listă?" + +#: keystrokeEditor/wx_ui.py:53 +msgid "Editing keystroke" +msgstr "Se modifică combinația de taste" + +#: keystrokeEditor/wx_ui.py:56 +msgid "Control" +msgstr "control" + +#: keystrokeEditor/wx_ui.py:57 +msgid "Alt" +msgstr "Alt" + +#: keystrokeEditor/wx_ui.py:58 +msgid "Shift" +msgstr "Shift" + +#: keystrokeEditor/wx_ui.py:59 +msgid "Windows" +msgstr "Windows" + +#: keystrokeEditor/wx_ui.py:65 +msgid "Key" +msgstr "tastă" + +#: keystrokeEditor/wx_ui.py:70 wxUI/dialogs/find.py:21 +#: wxUI/dialogs/mastodon/showUserProfile.py:31 +#: wxUI/dialogs/userAliasDialogs.py:23 +msgid "OK" +msgstr "OK" + +#: keystrokeEditor/wx_ui.py:83 +msgid "You need to use the Windows key" +msgstr "Trebuie să folosiți tasta windows" + +#: keystrokeEditor/wx_ui.py:83 keystrokeEditor/wx_ui.py:86 +msgid "Invalid keystroke" +msgstr "Combinație de taste invalidă" + +#: keystrokeEditor/wx_ui.py:86 +msgid "You must provide a character for the keystroke" +msgstr "Trebuie să introduci un caracter pentru apăsarea unei taste." + +#: keystrokeEditor/actions/mastodon.py:3 +msgid "Go up in the current buffer" +msgstr "Mergi mai sus în buffe-rul curent" + +#: keystrokeEditor/actions/mastodon.py:4 +msgid "Go down in the current buffer" +msgstr "Mergi mai jos în buffer-ul curent" + +#: keystrokeEditor/actions/mastodon.py:5 +msgid "Go to the previous buffer" +msgstr "Mergi la buffer-ul anterior" + +#: keystrokeEditor/actions/mastodon.py:6 +msgid "Go to the next buffer" +msgstr "Mergi la buffer-ul următor" + +#: keystrokeEditor/actions/mastodon.py:7 +msgid "Focus the next session" +msgstr "Focusați sesiunea următoare" + +#: keystrokeEditor/actions/mastodon.py:8 +msgid "Focus the previous session" +msgstr "Focusați sesiunea anterioară" + +#: keystrokeEditor/actions/mastodon.py:9 +msgid "Show or hide the GUI" +msgstr "Afișați sau ascundeți interfața grafică" + +# | msgid "Create a new list" +#: keystrokeEditor/actions/mastodon.py:10 +#, fuzzy +msgid "Make a new post" +msgstr "Crează o listă nouă" + +#: keystrokeEditor/actions/mastodon.py:11 wxUI/buffers/mastodon/base.py:26 +#: wxUI/buffers/mastodon/conversationList.py:25 +msgid "Reply" +msgstr "Răspunde" + +#: keystrokeEditor/actions/mastodon.py:12 wxUI/buffers/mastodon/base.py:25 +#: wxUI/dialogs/mastodon/dialogs.py:7 +msgid "Boost" +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:13 +msgid "Send direct message" +msgstr "Trimiteți un mesaj privat" + +#: keystrokeEditor/actions/mastodon.py:14 +msgid "Add post to favorites" +msgstr "" + +# | msgid "Remove from list" +#: keystrokeEditor/actions/mastodon.py:15 +#, fuzzy +msgid "Remove post from favorites" +msgstr "Ștergeţi din listă" + +#: keystrokeEditor/actions/mastodon.py:16 +msgid "Add/remove post from favorites" +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:17 +msgid "Open the user actions dialogue" +msgstr "Deschide dialogul cu acțiunile de utilizator" + +#: keystrokeEditor/actions/mastodon.py:18 +#, fuzzy +msgid "See user details" +msgstr "Elimină utilizator" + +# | msgid "Show tweet" +#: keystrokeEditor/actions/mastodon.py:19 +#, fuzzy +msgid "Show post" +msgstr "Afișați postarea" + +#: keystrokeEditor/actions/mastodon.py:20 +msgid "Quit" +msgstr "Închideți" + +#: keystrokeEditor/actions/mastodon.py:21 +msgid "Open user timeline" +msgstr "Deschideți cronologia utilizatorului" + +#: keystrokeEditor/actions/mastodon.py:22 +msgid "Destroy buffer" +msgstr "Ștergeți buffer-ul" + +# | msgid "Interact with the currently focused tweet." +#: keystrokeEditor/actions/mastodon.py:23 +#, fuzzy +msgid "Interact with the currently focused post." +msgstr "Interacţionați cu postarea focusată." + +#: keystrokeEditor/actions/mastodon.py:24 +msgid "Open URL" +msgstr "Deschideți URL" + +# | msgid "View in Twitter" +#: keystrokeEditor/actions/mastodon.py:25 +#, fuzzy +msgid "View in browser" +msgstr "Vezi pe Twitter" + +#: keystrokeEditor/actions/mastodon.py:26 +msgid "Increase volume by 5%" +msgstr "Măriți volumul cu 5%" + +#: keystrokeEditor/actions/mastodon.py:27 +msgid "Decrease volume by 5%" +msgstr "Micșorați volumul cu 5%" + +#: keystrokeEditor/actions/mastodon.py:28 +msgid "Jump to the first element of a buffer" +msgstr "Mergeți la primul element dintr-un buffer" + +#: keystrokeEditor/actions/mastodon.py:29 +msgid "Jump to the last element of the current buffer" +msgstr "Mergeți la ultimul element dintr-un buffer" + +#: keystrokeEditor/actions/mastodon.py:30 +msgid "Jump 20 elements up in the current buffer" +msgstr "Mergeți înainte cu 20 de elemente în buffer-ul curent" + +#: keystrokeEditor/actions/mastodon.py:31 +msgid "Jump 20 elements down in the current buffer" +msgstr "Mergeți înapoi cu 20 de elemente în buffer-ul curent" + +# | msgid "Delete" +#: keystrokeEditor/actions/mastodon.py:33 +#, fuzzy +msgid "Delete post" +msgstr "Șterge" + +#: keystrokeEditor/actions/mastodon.py:34 +msgid "Empty the current buffer" +msgstr "Goliți buffer-ul curent" + +#: keystrokeEditor/actions/mastodon.py:35 +msgid "Repeat last item" +msgstr "Repetați ultimul element" + +#: keystrokeEditor/actions/mastodon.py:36 +msgid "Copy to clipboard" +msgstr "Copiați pe planșetă" + +#: keystrokeEditor/actions/mastodon.py:39 +msgid "Mute/unmute the active buffer" +msgstr "Ignoră/activează buffer-ul curent." + +#: keystrokeEditor/actions/mastodon.py:40 +msgid "Mute/unmute the current session" +msgstr "Ignoră/activează sesiunea curentă." + +#: keystrokeEditor/actions/mastodon.py:41 +msgid "toggle the automatic reading of incoming tweets in the active buffer" +msgstr "Comutare citire automată a noilor postări din buffer-ul curent" + +# | msgid "Search on twitter" +#: keystrokeEditor/actions/mastodon.py:42 +#, fuzzy +msgid "Search on instance" +msgstr "Căutați pe twitter" + +#: keystrokeEditor/actions/mastodon.py:43 +msgid "Find a string in the currently focused buffer" +msgstr "Căutați un string în bufferul focusat" + +#: keystrokeEditor/actions/mastodon.py:44 +msgid "Show the keystroke editor" +msgstr "Afișați editorul de combinații de taste" + +#: keystrokeEditor/actions/mastodon.py:46 +msgid "load previous items" +msgstr "Încarcă elementele anterioare" + +#: keystrokeEditor/actions/mastodon.py:48 +msgid "View conversation" +msgstr "Vezi conversația" + +#: keystrokeEditor/actions/mastodon.py:49 +msgid "Check and download updates" +msgstr "Verifică și descarcă actualizări" + +#: keystrokeEditor/actions/mastodon.py:50 +msgid "Opens the global settings dialogue" +msgstr "Deschide dialogul de setări generale" + +#: keystrokeEditor/actions/mastodon.py:52 +msgid "Opens the account settings dialogue" +msgstr "Deschide dialogul de setări ale contului" + +# | msgid "Try to play an audio file" +#: keystrokeEditor/actions/mastodon.py:53 +#, fuzzy +msgid "Try to play a media file" +msgstr "Încercați redarea unui fișier audio" + +#: keystrokeEditor/actions/mastodon.py:54 +msgid "Updates the buffer and retrieves possible lost items there." +msgstr "" +"Este posibil ca actualizarea și întoarcerea buferului să-și fi pierdut " +"din elemente pe parcurs." + +#: keystrokeEditor/actions/mastodon.py:55 +msgid "Extracts the text from a picture and displays the result in a dialog." +msgstr "Extrage textul dintr-o pictogramă și afișează rezultatul într-un dialog." + +#: keystrokeEditor/actions/mastodon.py:56 +#, fuzzy +msgid "Adds an alias to an user" +msgstr "Selectează o listă pentru a adăuga utilizatorul" + +#: sessionmanager/sessionManager.py:69 +#, python-brace-format +msgid "{account_name}@{instance} (Mastodon)" +msgstr "" + +#: sessionmanager/wxUI.py:11 +msgid "Session manager" +msgstr "Administratorul de sesiuni" + +#: sessionmanager/wxUI.py:14 +msgid "Accounts list" +msgstr "Lista de conturi" + +#: sessionmanager/wxUI.py:16 +msgid "Account" +msgstr "cont" + +#: sessionmanager/wxUI.py:20 +msgid "New account" +msgstr "Cont nou" + +#: sessionmanager/wxUI.py:22 sessionmanager/wxUI.py:79 +msgid "Remove account" +msgstr "Cont șters" + +#: sessionmanager/wxUI.py:24 +msgid "Global Settings" +msgstr "Setări generale" + +#: sessionmanager/wxUI.py:48 +msgid "You need to configure an account." +msgstr "Trebuie să-ți configurezi contul." + +#: sessionmanager/wxUI.py:48 +msgid "Account Error" +msgstr "Eroare cont" + +#: sessionmanager/wxUI.py:54 +msgid "Mastodon" +msgstr "" + +#: sessionmanager/wxUI.py:59 +msgid "" +"You will be prompted for your Mastodon data (instance URL, email address " +"and password) so we can authorise TWBlue in your instance. Would you like" +" to authorise your account now?" +msgstr "" + +#: sessionmanager/wxUI.py:59 +msgid "Authorization" +msgstr "Autorizație" + +#: sessionmanager/wxUI.py:67 +#, python-format +msgid "Authorized account %d" +msgstr "contul autorizat %d" + +#: sessionmanager/wxUI.py:73 +msgid "" +"Your access token is invalid or the authorization has failed. Please try " +"again." +msgstr "" +"accesul ales este invalid sau autorizația nu a reușit. Te rugăm să " +"încerci mai târziu." + +#: sessionmanager/wxUI.py:73 +msgid "Invalid user token" +msgstr "Utilizator ales invalid" + +#: sessionmanager/wxUI.py:79 +msgid "Do you really want to delete this account?" +msgstr "Sunteți sigur că doriți ștergerea acestui cont?" + +#: sessions/base.py:125 +#, python-brace-format +msgid "" +"An exception occurred while saving the {app} database. It will be deleted" +" and rebuilt automatically. If this error persists, send the error log to" +" the {app} developers." +msgstr "" + +#: sessions/base.py:165 +#, python-brace-format +msgid "" +"An exception occurred while loading the {app} database. It will be " +"deleted and rebuilt automatically. If this error persists, send the error" +" log to the {app} developers." +msgstr "" + +# | msgid "dddd, MMMM D, YYYY H:m:s" +#: sessions/mastodon/compose.py:15 sessions/mastodon/compose.py:61 +#, fuzzy +msgid "dddd, MMMM D, YYYY H:m" +msgstr "dddd, MMMM D, YYYY H:m:s" + +# | msgid "{0}. Quoted tweet from @{1}: {2}" +#: sessions/mastodon/compose.py:17 sessions/mastodon/templates.py:74 +#: sessions/mastodon/templates.py:75 +#, fuzzy, python-brace-format +msgid "Boosted from @{}: {}" +msgstr "{0}.postare citată de la @{1}: {2}" + +#: sessions/mastodon/compose.py:22 sessions/mastodon/compose.py:81 +#: sessions/mastodon/templates.py:81 sessions/mastodon/templates.py:176 +#, python-brace-format +msgid "hidden by filter {}" +msgstr "" + +#: sessions/mastodon/compose.py:36 sessions/mastodon/templates.py:28 +msgid "dddd, MMMM D, YYYY H:m:s" +msgstr "dddd, MMMM D, YYYY H:m:s" + +# | msgid "" +# | "%s (@%s). %s followers, %s friends, %s tweets. Last tweeted %s. Joined " +# | "Twitter %s" +#: sessions/mastodon/compose.py:38 +#, fuzzy, python-format +msgid "%s (@%s). %s followers, %s following, %s posts. Joined %s" +msgstr "" +"%s (@%s). %s urmăritori, %s prieteni, %s postări. a postat ultima oară " +"%s. intrat pe Twitter %s" + +#: sessions/mastodon/compose.py:49 +#, python-brace-format +msgid "Last message from {}: {}" +msgstr "" + +# | msgid "{username}'s followers" +#: sessions/mastodon/compose.py:64 +#, fuzzy, python-brace-format +msgid "{username} has posted: {status}" +msgstr "Urmăritorii lui {username}" + +# | msgid "{username}'s followers" +#: sessions/mastodon/compose.py:66 +#, fuzzy, python-brace-format +msgid "{username} has mentioned you: {status}" +msgstr "Urmăritorii lui {username}" + +#: sessions/mastodon/compose.py:68 +#, python-brace-format +msgid "{username} has boosted: {status}" +msgstr "" + +#: sessions/mastodon/compose.py:70 +#, python-brace-format +msgid "{username} has added to favorites: {status}" +msgstr "" + +# | msgid "{username}'s followers" +#: sessions/mastodon/compose.py:72 +#, fuzzy, python-brace-format +msgid "{username} has followed you." +msgstr "Urmăritorii lui {username}" + +# | msgid "{username}'s followers" +#: sessions/mastodon/compose.py:74 +#, fuzzy, python-brace-format +msgid "{username} has joined the instance." +msgstr "Urmăritorii lui {username}" + +#: sessions/mastodon/compose.py:76 sessions/mastodon/templates.py:171 +#, python-brace-format +msgid "A poll in which you have voted has expired: {status}" +msgstr "" + +# | msgid "{username}'s followers" +#: sessions/mastodon/compose.py:78 +#, fuzzy, python-brace-format +msgid "{username} wants to follow you." +msgstr "Urmăritorii lui {username}" + +#: sessions/mastodon/session.py:69 +msgid "Please enter your instance URL." +msgstr "" + +#: sessions/mastodon/session.py:69 +msgid "Mastodon instance" +msgstr "" + +#: sessions/mastodon/session.py:80 +msgid "" +"We could not connect to your mastodon instance. Please verify that the " +"domain exists and the instance is accessible via a web browser." +msgstr "" + +# | msgid "&Report an error" +#: sessions/mastodon/session.py:80 +#, fuzzy +msgid "Instance error" +msgstr "&Raportează o eroare" + +#: sessions/mastodon/session.py:85 +msgid "Enter the verification code" +msgstr "" + +# | msgid "Authorization" +#: sessions/mastodon/session.py:85 +#, fuzzy +msgid "PIN code authorization" +msgstr "Autorizație" + +#: sessions/mastodon/session.py:94 +msgid "" +"We could not authorice your mastodon account to be used in TWBlue. This " +"might be caused due to an incorrect verification code. Please try to add " +"the session again." +msgstr "" + +# | msgid "Authorization" +#: sessions/mastodon/session.py:94 +#, fuzzy +msgid "Authorization error" +msgstr "Autorizație" + +#: sessions/mastodon/session.py:215 +#, python-format +msgid "%s succeeded." +msgstr "%s reușit." + +#: sessions/mastodon/templates.py:18 +msgid "$display_name, $text $image_descriptions $date. $source" +msgstr "" + +#: sessions/mastodon/templates.py:19 +msgid "Dm to $recipient_display_name, $text $date" +msgstr "" + +#: sessions/mastodon/templates.py:20 +msgid "" +"$display_name (@$screen_name). $followers followers, $following " +"following, $posts posts. Joined $created_at." +msgstr "" + +#: sessions/mastodon/templates.py:21 +msgid "$display_name $text, $date" +msgstr "" + +#: sessions/mastodon/templates.py:34 +#, python-brace-format +msgid "Content warning: {}" +msgstr "" + +#: sessions/mastodon/templates.py:45 +#, fuzzy, python-brace-format +msgid "Media description: {}" +msgstr "Descriere imagine" + +# | msgid "Followers" +#: sessions/mastodon/templates.py:82 wxUI/dialogs/mastodon/postDialogs.py:49 +#, fuzzy +msgid "Followers only" +msgstr "Urmăritori" + +#: sessions/mastodon/templates.py:94 +#, fuzzy +msgid "Pinned." +msgstr "Copiat" + +#: sessions/mastodon/templates.py:157 +#, python-brace-format +msgid "has posted: {status}" +msgstr "" + +#: sessions/mastodon/templates.py:159 +#, python-brace-format +msgid "has mentioned you: {status}" +msgstr "" + +#: sessions/mastodon/templates.py:161 +#, python-brace-format +msgid "has boosted: {status}" +msgstr "" + +#: sessions/mastodon/templates.py:163 +#, python-brace-format +msgid "has added to favorites: {status}" +msgstr "" + +#: sessions/mastodon/templates.py:165 +#, python-brace-format +msgid "has updated a status: {status}" +msgstr "" + +# | msgid "{0} is following you." +#: sessions/mastodon/templates.py:167 +#, fuzzy +msgid "has followed you." +msgstr "{0} te urmărește." + +# | msgid "Remove client" +#: sessions/mastodon/templates.py:169 +#, fuzzy +msgid "has joined the instance." +msgstr "scoate aplicația" + +# | msgid "{0} is following you." +#: sessions/mastodon/templates.py:173 +#, fuzzy +msgid "wants to follow you." +msgstr "{0} te urmărește." + +#: update/utils.py:29 +#, python-format +msgid "%d day, " +msgstr "%d zi," + +#: update/utils.py:31 +#, python-format +msgid "%d days, " +msgstr "%d zile" + +#: update/utils.py:33 +#, python-format +msgid "%d hour, " +msgstr "%d oră " + +#: update/utils.py:35 +#, python-format +msgid "%d hours, " +msgstr "%d ore" + +#: update/utils.py:37 +#, python-format +msgid "%d minute, " +msgstr " %d minut, " + +#: update/utils.py:39 +#, python-format +msgid "%d minutes, " +msgstr "%d minute " + +#: update/utils.py:41 +#, python-format +msgid "%s second" +msgstr " %s secundă " + +#: update/utils.py:43 +#, python-format +msgid "%s seconds" +msgstr "%s Secunde" + +#: update/wxUpdater.py:11 +#, python-format +msgid "" +"There's a new %s version available, released on %s. Would you like to " +"download it now?\n" +"\n" +" %s version: %s\n" +"\n" +"Changes:\n" +"%s" +msgstr "" +"Există o nouă versiune disponibilă %s, lansată pe %s. Doriți s-o " +"descărcați acum?\n" +"\n" +"%s versiune: %s\n" +"\n" +"Modificări:\n" +"%s" + +# | msgid "" +# | "There's a new %s version available, released on %s. Would you like to " +# | "download it now?\n" +# | "\n" +# | " %s version: %s\n" +# | "Changes:\n" +# | "%s" +#: update/wxUpdater.py:14 +#, fuzzy, python-format +msgid "" +"There's a new %s version available, released on %s. Updates are not " +"automatic in Windows 7, so you would need to visit TWBlue's download " +"website to get the latest version.\n" +"\n" +" %s version: %s\n" +"\n" +"Changes:\n" +"%s" +msgstr "" +"Există o nouă versiune disponibilă %s, lansată pe %s. Doriți s-o " +"descărcați acum?\n" +"\n" +"%s versiune: %s\n" +"\n" +"Modificări:\n" +"%s" + +#: update/wxUpdater.py:16 +#, python-format +msgid "New version for %s" +msgstr "Versiune nouă %s" + +#: update/wxUpdater.py:23 +msgid "Download in Progress" +msgstr "Descărcare în curs..." + +#: update/wxUpdater.py:23 +msgid "Downloading the new version..." +msgstr "Se descarcă noua versiune..." + +#: update/wxUpdater.py:33 +#, python-format +msgid "Updating... %s of %s" +msgstr "Se actualizează... %s din %s" + +#: update/wxUpdater.py:36 +msgid "" +"The update has been downloaded and installed successfully. Press OK to " +"continue." +msgstr "" +"Actualizarea S-a descărcat și s-a instalat cu succes. Apasă OK pentru a " +"continua." + +#: update/wxUpdater.py:36 +msgid "Done!" +msgstr "Închide!" + +#: wxUI/commonMessageDialogs.py:6 +#, python-brace-format +msgid "Do you really want to close {0}?" +msgstr "Ești sigur că vrei să închizi {0}?" + +#: wxUI/commonMessageDialogs.py:6 +msgid "Exit" +msgstr "Ieșire" + +#: wxUI/commonMessageDialogs.py:10 +#, python-brace-format +msgid " {0} must be restarted for these changes to take effect." +msgstr " {0} Va trebui o repornire pentru a se aplica modificările." + +#: wxUI/commonMessageDialogs.py:10 +#, python-brace-format +msgid "Restart {0} " +msgstr "Repornire {0} " + +#: wxUI/commonMessageDialogs.py:13 +msgid "" +"Are you sure you want to delete this user from the database? This user " +"will not appear in autocomplete results anymore." +msgstr "" +"Ești sigur că vrei să ștergi utilizatorul din baza de date? Acest " +"utilizator nu va mai apărea în rezultatele de auto-completare." + +#: wxUI/commonMessageDialogs.py:13 +msgid "Confirm" +msgstr "Confirmă" + +#: wxUI/commonMessageDialogs.py:16 +msgid "" +"Do you really want to empty this buffer? It's items will be removed from" +" the list but not from Twitter" +msgstr "" +"Ești sigur că vrei să golești acest buffer? Articolele Vor fi șterse de " +"la listă, dar nu și de pe Twitter" + +#: wxUI/commonMessageDialogs.py:16 wxUI/dialogs/mastodon/dialogs.py:31 +msgid "Empty buffer" +msgstr "Buffer gol" + +#: wxUI/commonMessageDialogs.py:20 +msgid "Do you really want to destroy this buffer?" +msgstr "Ești sigur că vrei să ștergi acest buffer? " + +#: wxUI/commonMessageDialogs.py:23 +msgid "That user does not exist" +msgstr "Utilizator inexistent" + +#: wxUI/commonMessageDialogs.py:26 +msgid "A timeline for this user already exists. You can't open another" +msgstr "O cronologie pentru acest utilizator există deja. Nu poți deschide alta." + +#: wxUI/commonMessageDialogs.py:26 +msgid "Existing timeline" +msgstr "Cronologie existentă" + +#: wxUI/commonMessageDialogs.py:29 +#, python-brace-format +msgid "" +"If you like {0} we need your help to keep it going. Help us by donating " +"to the project. This will help us pay for the server, the domain and some" +" other things to ensure that {0} will be actively maintained. Your " +"donation will give us the means to continue the development of {0}, and " +"to keep {0} free. Would you like to donate now?" +msgstr "" +"Îți place {0} ? Avem nevoie de ajutorul tău pentru a funcționa în " +"continuare. Susține proiectul printr-o donație. Aceasta ne va ajuta să " +"achităm găzduirea serverelor, domeniul și alte câteva lucruri care să " +"asigure mentenanța {0}. Donația ta ne va oferii posibilitatea de a " +"continua dezvoltarea {0} și utilizarea lui în mod gratuit. Dorești să " +"faci o donație?" + +#: wxUI/commonMessageDialogs.py:29 +msgid "We need your help" +msgstr "Avem nevoie de ajutorul tău" + +#: wxUI/commonMessageDialogs.py:33 wxUI/dialogs/mastodon/postDialogs.py:207 +msgid "Information" +msgstr "Informație" + +#: wxUI/commonMessageDialogs.py:36 +msgid "The configuration file is invalid." +msgstr "" + +#: wxUI/commonMessageDialogs.py:39 +#, python-brace-format +msgid "" +"{0} quit unexpectedly the last time it was run. If the problem persists, " +"please report it to the {0} developers." +msgstr "" +"{0} s-a închis pe neașteptate în timp ce rula. Dacă problema persistă, " +"raporteaz-o dezvoltatorilor {0}" + +#: wxUI/commonMessageDialogs.py:39 +msgid "Warning" +msgstr "Avertisment" + +#: wxUI/commonMessageDialogs.py:45 +#, python-brace-format +msgid "Sorry, you can't update while running {} from source." +msgstr "" + +#: wxUI/commonMessageDialogs.py:49 +msgid "the provided instance is invalid. Please try again." +msgstr "" + +#: wxUI/commonMessageDialogs.py:49 +#, fuzzy +msgid "Invalid instance" +msgstr "Combinație de taste invalidă" + +#: wxUI/commonMessageDialogs.py:52 +msgid "" +"TWBlue was unable to add or update the filter with the specified " +"settings. Please try again." +msgstr "" + +#: wxUI/commonMessageDialogs.py:55 +msgid "" +"TWBlue was unable to load your filters from the instance. Please try " +"again." +msgstr "" + +#: wxUI/commonMessageDialogs.py:58 +#, fuzzy +msgid "Do you really want to delete this filter ?" +msgstr "Sunteți sigur că doriți ștergerea acestui cont?" + +#: wxUI/commonMessageDialogs.py:58 +#, fuzzy +msgid "Delete filter" +msgstr "Creeaz&ă un filtru" + +#: wxUI/commonMessageDialogs.py:61 +msgid "TWBlue was unable to remove the filter you specified. Please try again." +msgstr "" + +#: wxUI/sysTrayIcon.py:36 wxUI/view.py:25 +msgid "&Global settings" +msgstr "&Setări generale" + +#: wxUI/sysTrayIcon.py:37 wxUI/view.py:24 +msgid "Account se&ttings" +msgstr "&Setări cont" + +#: wxUI/sysTrayIcon.py:39 +msgid "&Show / hide" +msgstr "&Arată Fereastra ascunsă" + +#: wxUI/sysTrayIcon.py:40 wxUI/view.py:74 +msgid "&Documentation" +msgstr "&Documentație" + +#: wxUI/sysTrayIcon.py:41 +msgid "Check for &updates" +msgstr "&Caută versiune nouă" + +#: wxUI/sysTrayIcon.py:42 +msgid "&Exit" +msgstr "&Ieșire" + +#: wxUI/view.py:16 +msgid "&Manage accounts" +msgstr "&Administrare conturi" + +#: wxUI/view.py:17 +msgid "&Update profile" +msgstr "&Actualizare profil" + +#: wxUI/view.py:18 +msgid "&Hide window" +msgstr "&Ascunde fereastra" + +#: wxUI/view.py:20 +msgid "&Lists manager" +msgstr "&Liste administrator" + +#: wxUI/view.py:23 +msgid "&Edit keystrokes" +msgstr "&Editează combinațiile de taste" + +#: wxUI/view.py:26 +msgid "E&xit" +msgstr "I&eșire" + +# | msgid "Remove from list" +#: wxUI/view.py:34 +#, fuzzy +msgid "&Remove from favorites" +msgstr "Ștergeţi din listă" + +#: wxUI/view.py:47 +msgid "&Add to list" +msgstr "&Adaugă la listă" + +#: wxUI/view.py:48 +msgid "R&emove from list" +msgstr "&Șterge din listă" + +#: wxUI/view.py:49 +msgid "Show user &profile" +msgstr "Arată &profilul utilizatorului" + +#: wxUI/view.py:50 +msgid "V&iew likes" +msgstr "&Vizualizare aprecieri" + +#: wxUI/view.py:54 +msgid "&Update buffer" +msgstr "&Actualizare buffer" + +#: wxUI/dialogs/mastodon/communityTimeline.py:9 wxUI/view.py:55 +msgid "Create community timeline" +msgstr "" + +#: wxUI/view.py:56 +msgid "New &trending topics buffer..." +msgstr "&Subiecte curente noi..." + +#: wxUI/view.py:59 +msgid "Find a string in the currently focused buffer..." +msgstr "Găseşte o frază în buffer-ul curent..." + +#: wxUI/view.py:60 +msgid "&Load previous items" +msgstr "&Afișare articole anterioare" + +#: wxUI/dialogs/mastodon/userActions.py:21 wxUI/view.py:62 +msgid "&Mute" +msgstr "&Ignoră" + +#: wxUI/view.py:63 +msgid "&Autoread" +msgstr "&Auto-citire" + +#: wxUI/view.py:64 +msgid "&Clear buffer" +msgstr "&Curățare buffer" + +#: wxUI/view.py:65 +msgid "&Destroy" +msgstr "&Șterge" + +#: wxUI/view.py:69 +msgid "&Seek back 5 seconds" +msgstr "&Derulare înapoi cu 5 secunde" + +#: wxUI/view.py:70 +msgid "&Seek forward 5 seconds" +msgstr "&Derulare înainte cu 5 secunde" + +#: wxUI/view.py:75 +msgid "Sounds &tutorial" +msgstr "&Tutorial sunete" + +#: wxUI/view.py:76 +msgid "&What's new in this version?" +msgstr "Ce este nou în această versiune?" + +#: wxUI/view.py:77 +msgid "&Check for updates" +msgstr "&Caută Versiune nouă" + +#: wxUI/view.py:78 +msgid "&Report an error" +msgstr "&Raportează o eroare" + +#: wxUI/view.py:79 +#, python-brace-format +msgid "{0}'s &website" +msgstr "Site-ul {0}" + +#: wxUI/view.py:80 +msgid "Get soundpacks for TWBlue" +msgstr "Obține pachete de sunete pentru TWBlue" + +#: wxUI/view.py:81 +#, python-brace-format +msgid "About &{0}" +msgstr "&Despre {0}" + +#: wxUI/view.py:84 +msgid "&Application" +msgstr "&Aplicație" + +#: wxUI/view.py:85 +msgid "&Tweet" +msgstr "&Postare" + +#: wxUI/dialogs/mastodon/userActions.py:10 wxUI/view.py:86 +msgid "&User" +msgstr "&Utilizator" + +#: wxUI/view.py:87 +msgid "&Buffer" +msgstr "&buffer" + +#: wxUI/view.py:88 +msgid "&Audio" +msgstr "&Audio" + +#: wxUI/view.py:89 +msgid "&Help" +msgstr "&Ajutor" + +#: wxUI/view.py:175 +msgid "Address" +msgstr "Adresă" + +#: wxUI/view.py:206 +#, python-brace-format +msgid "Your {0} version is up to date" +msgstr "Versiunea ta {0} este la zi" + +#: wxUI/view.py:206 +msgid "Update" +msgstr "Actualizare" + +#: wxUI/buffers/panels.py:12 wxUI/buffers/panels.py:20 +msgid "Login" +msgstr "Autentificare" + +#: wxUI/buffers/panels.py:14 +msgid "Log in automatically" +msgstr "Autentificare automată" + +#: wxUI/buffers/panels.py:22 +msgid "Logout" +msgstr "Deconectare" + +#: wxUI/buffers/mastodon/base.py:11 +#: wxUI/buffers/mastodon/conversationList.py:11 wxUI/buffers/mastodon/user.py:8 +#: wxUI/dialogs/mastodon/userTimeline.py:10 wxUI/dialogs/userAliasDialogs.py:14 +msgid "User" +msgstr "Utilizator" + +#: wxUI/buffers/mastodon/base.py:11 +#: wxUI/buffers/mastodon/conversationList.py:11 +#: wxUI/buffers/mastodon/notifications.py:11 +#: wxUI/dialogs/mastodon/postDialogs.py:37 +#: wxUI/dialogs/mastodon/postDialogs.py:272 +msgid "Text" +msgstr "Text" + +#: wxUI/buffers/mastodon/base.py:11 +#: wxUI/buffers/mastodon/conversationList.py:11 +#: wxUI/buffers/mastodon/notifications.py:11 +#: wxUI/dialogs/mastodon/postDialogs.py:216 +msgid "Date" +msgstr "Data" + +#: wxUI/buffers/mastodon/base.py:11 +#: wxUI/buffers/mastodon/conversationList.py:11 +msgid "Client" +msgstr "Aplicație" + +#: wxUI/buffers/mastodon/base.py:27 +msgid "Favorite" +msgstr "" + +#: wxUI/buffers/mastodon/base.py:28 +msgid "Bookmark" +msgstr "" + +#: wxUI/buffers/mastodon/base.py:29 +msgid "Direct message" +msgstr "mesaj privat" + +#: wxUI/buffers/mastodon/notifications.py:23 +#: wxUI/dialogs/mastodon/dialogs.py:23 +msgid "Dismiss" +msgstr "" + +#: wxUI/buffers/mastodon/user.py:19 wxUI/dialogs/userAliasDialogs.py:48 +#, fuzzy +msgid "Actions" +msgstr "Acțiune" + +# | msgid "Direct Messages" +#: wxUI/buffers/mastodon/user.py:20 +#, fuzzy +msgid "Message" +msgstr "Mesaje private" + +#: wxUI/dialogs/configuration.py:15 +#, fuzzy +msgid "&Language" +msgstr "Limbă" + +#: wxUI/dialogs/configuration.py:22 +#, fuzzy, python-brace-format +msgid "&Ask before exiting {0}" +msgstr "Întreabă-mă de acum înainte la ieșirea {0}" + +#: wxUI/dialogs/configuration.py:24 +#, fuzzy +msgid "&Disable Streaming functions" +msgstr "Dezactivează funcțiile Streaming" + +#: wxUI/dialogs/configuration.py:27 +#, fuzzy +msgid "&Buffer update interval, in minutes" +msgstr "Intervalul de actualizare al buffer-ului, în minute" + +#: wxUI/dialogs/configuration.py:33 +#, fuzzy, python-brace-format +msgid "Pla&y a sound when {0} launches" +msgstr "Redă un sunet la pornirea {0}" + +#: wxUI/dialogs/configuration.py:35 +#, fuzzy, python-brace-format +msgid "Sp&eak a message when {0} launches" +msgstr "Rostește un mesaj de întâmpinare la pornirea {0}" + +#: wxUI/dialogs/configuration.py:37 +#, fuzzy +msgid "&Use invisible interface's keyboard shortcuts while GUI is visible" +msgstr "" +"Utilizează scurtăturile interfeței invizibile atunci când interfața " +"grafică este activă." + +#: wxUI/dialogs/configuration.py:39 +#, fuzzy +msgid "A&ctivate Sapi5 when any other screen reader is not being run" +msgstr "Activează Sapi5 când un alt cititor de ecran nu este pornit" + +#: wxUI/dialogs/configuration.py:41 +#, fuzzy +msgid "&Hide GUI on launch" +msgstr "Ascunde interfața grafică" + +#: wxUI/dialogs/configuration.py:43 +msgid "&Read long posts in GUI" +msgstr "" + +#: wxUI/dialogs/configuration.py:46 +#, fuzzy +msgid "&Keymap" +msgstr "Hartă de taste" + +#: wxUI/dialogs/configuration.py:51 +#, fuzzy, python-brace-format +msgid "Check for u&pdates when {0} launches" +msgstr "Caută versiune nouă când {0} pornește" + +#: wxUI/dialogs/configuration.py:61 +#, fuzzy +msgid "Proxy &type: " +msgstr "Tipul de Proxy: " + +#: wxUI/dialogs/configuration.py:68 +#, fuzzy +msgid "Proxy s&erver: " +msgstr "Server Proxy: " + +#: wxUI/dialogs/configuration.py:74 +#, fuzzy +msgid "&Port: " +msgstr "Port: " + +#: wxUI/dialogs/configuration.py:80 +#, fuzzy +msgid "&User: " +msgstr "Utilizator: " + +#: wxUI/dialogs/configuration.py:86 +#, fuzzy +msgid "P&assword: " +msgstr "Parolă: " + +#: wxUI/dialogs/configuration.py:98 +#, fuzzy +msgid "Enable automatic s&peech feedback" +msgstr "Activează feedback-ul vorbirii automate" + +#: wxUI/dialogs/configuration.py:100 +#, fuzzy +msgid "Enable automatic &Braille feedback" +msgstr "Activează feedback-ul braille-ului automat" + +#: wxUI/dialogs/configuration.py:108 +msgid "Buffer" +msgstr "Buffer" + +#: wxUI/dialogs/configuration.py:108 +msgid "Status" +msgstr "Status" + +#: wxUI/dialogs/configuration.py:111 +#, fuzzy +msgid "S&how/hide" +msgstr "Arată/ascunde" + +#: wxUI/dialogs/configuration.py:112 +#, fuzzy +msgid "Move &up" +msgstr "Mutare în sus" + +#: wxUI/dialogs/configuration.py:113 +#, fuzzy +msgid "Move &down" +msgstr "Mutare în jos" + +#: wxUI/dialogs/configuration.py:123 wxUI/dialogs/configuration.py:188 +#: wxUI/dialogs/configuration.py:191 wxUI/dialogs/configuration.py:196 +msgid "Show" +msgstr "arată" + +#: wxUI/dialogs/configuration.py:125 wxUI/dialogs/configuration.py:135 +#: wxUI/dialogs/configuration.py:159 wxUI/dialogs/configuration.py:189 +msgid "Hide" +msgstr "Ascunde" + +#: wxUI/dialogs/configuration.py:133 wxUI/dialogs/configuration.py:157 +msgid "Select a buffer first." +msgstr "Selectați buffer-ul mai întâi." + +#: wxUI/dialogs/configuration.py:136 wxUI/dialogs/configuration.py:160 +msgid "The buffer is hidden, show it first." +msgstr "Buffer-ul este ascuns, te rugăm să îl activezi înainte de a continua." + +#: wxUI/dialogs/configuration.py:139 +msgid "The buffer is already at the top of the list." +msgstr "Buffer-ul se află deja la începutul listei." + +#: wxUI/dialogs/configuration.py:163 +msgid "The buffer is already at the bottom of the list." +msgstr "Buffer-ul se află deja la sfârșitul listei." + +#: wxUI/dialogs/configuration.py:205 +msgid "&LibreTranslate API URL: " +msgstr "" + +#: wxUI/dialogs/configuration.py:211 +msgid "LibreTranslate API &Key (optional): " +msgstr "" + +#: wxUI/dialogs/configuration.py:217 +msgid "&DeepL API Key: " +msgstr "" + +#: wxUI/dialogs/configuration.py:231 +#, python-brace-format +msgid "{0} preferences" +msgstr "{0} preferinţe" + +#: wxUI/dialogs/configuration.py:237 wxUI/dialogs/mastodon/configuration.py:144 +msgid "General" +msgstr "general" + +#: wxUI/dialogs/configuration.py:242 +msgid "Proxy" +msgstr "Proxy" + +#: wxUI/dialogs/configuration.py:246 +#, fuzzy +msgid "Translation services" +msgstr "Tradus" + +#: wxUI/dialogs/configuration.py:251 wxUI/dialogs/mastodon/configuration.py:170 +#, fuzzy +msgid "&Save" +msgstr "Salvează" + +#: wxUI/dialogs/configuration.py:253 +#: wxUI/dialogs/mastodon/communityTimeline.py:27 +#: wxUI/dialogs/mastodon/configuration.py:172 +#: wxUI/dialogs/mastodon/search.py:26 +#: wxUI/dialogs/mastodon/showUserProfile.py:170 +#: wxUI/dialogs/mastodon/updateProfile.py:132 +#: wxUI/dialogs/mastodon/userActions.py:38 +#: wxUI/dialogs/mastodon/userTimeline.py:32 +msgid "&Close" +msgstr "Î&nchide" + +#: wxUI/dialogs/find.py:13 +msgid "Find in current buffer" +msgstr "Găsește în buffer-ul curent" + +#: wxUI/dialogs/find.py:14 +msgid "String" +msgstr "Frază" + +#: wxUI/dialogs/find.py:23 wxUI/dialogs/mastodon/showUserProfile.py:33 +msgid "Cancel" +msgstr "Anulează" + +#: wxUI/dialogs/templateDialogs.py:8 +msgid "Edit Template" +msgstr "" + +#: wxUI/dialogs/templateDialogs.py:13 +msgid "Edit template" +msgstr "" + +#: wxUI/dialogs/templateDialogs.py:17 +#, fuzzy +msgid "Available variables" +msgstr "indisponibil" + +#: wxUI/dialogs/templateDialogs.py:29 +msgid "Restore template" +msgstr "" + +#: wxUI/dialogs/templateDialogs.py:48 +#, python-brace-format +msgid "Restored template to {}." +msgstr "" + +#: wxUI/dialogs/templateDialogs.py:52 +msgid "" +"the template you have specified include variables that do not exists for " +"the object. Please fix the template and try again. For your reference, " +"you can see a list of all available variables in the variables list while" +" editing your template." +msgstr "" + +#: wxUI/dialogs/templateDialogs.py:52 +#, fuzzy +msgid "Invalid template" +msgstr "Combinație de taste invalidă" + +#: wxUI/dialogs/urlList.py:6 +msgid "Select URL" +msgstr "Selectează URL" + +#: wxUI/dialogs/mastodon/userActions.py:13 +#: wxUI/dialogs/mastodon/userTimeline.py:13 wxUI/dialogs/userAliasDialogs.py:13 +msgid "&Autocomplete users" +msgstr "&Autocompletare utilizatori" + +#: wxUI/dialogs/userAliasDialogs.py:18 +#, fuzzy +msgid "Alias" +msgstr "totdeauna" + +#: wxUI/dialogs/userAliasDialogs.py:41 +#, fuzzy +msgid "Edit user aliases" +msgstr "Se editează {0} baza de date a utilizatorilor" + +#: wxUI/dialogs/mastodon/search.py:19 wxUI/dialogs/userAliasDialogs.py:43 +msgid "Users" +msgstr "Utilizatori" + +#: wxUI/dialogs/userAliasDialogs.py:50 +#, fuzzy +msgid "Add alias" +msgstr "Adăugați la listă" + +#: wxUI/dialogs/userAliasDialogs.py:51 +msgid "Adds a new user alias" +msgstr "" + +#: wxUI/dialogs/userAliasDialogs.py:54 +#, fuzzy +msgid "Edit the currently focused user Alias." +msgstr "Interacţionați cu postarea focusată." + +#: wxUI/dialogs/mastodon/filters/create_filter.py:26 +#: wxUI/dialogs/mastodon/filters/manage_filters.py:24 +#: wxUI/dialogs/userAliasDialogs.py:57 +msgid "Remove" +msgstr "Șterge" + +#: wxUI/dialogs/userAliasDialogs.py:58 +#, fuzzy +msgid "Remove the currently focused user alias." +msgstr "Găseşte o frază în buffer-ul curent..." + +#: wxUI/dialogs/userAliasDialogs.py:82 +#, fuzzy +msgid "Are you sure you want to delete this user alias?" +msgstr "Chiar ești sigur că vrei să ştergi această listă?" + +#: wxUI/dialogs/userAliasDialogs.py:82 +#, fuzzy +msgid "Remove user alias" +msgstr "Elimină utilizator" + +#: wxUI/dialogs/userAliasDialogs.py:93 +#, fuzzy +msgid "User alias" +msgstr "Detalii utilizator" + +#: wxUI/dialogs/userList.py:27 +#, fuzzy +msgid "View profile" +msgstr "&Actualizare profil" + +#: wxUI/dialogs/mastodon/communityTimeline.py:10 +#, fuzzy +msgid "Community URL" +msgstr "control" + +#: wxUI/dialogs/mastodon/communityTimeline.py:16 +#: wxUI/dialogs/mastodon/userTimeline.py:18 +msgid "Buffer type" +msgstr "Tip de buffer" + +#: wxUI/dialogs/mastodon/communityTimeline.py:17 +#, fuzzy +msgid "&Local timeline" +msgstr "Cronologii" + +#: wxUI/dialogs/mastodon/communityTimeline.py:18 +#, fuzzy +msgid "&Federated Timeline" +msgstr "Cronologia lui {username}" + +#: wxUI/dialogs/mastodon/communityTimeline.py:25 +#: wxUI/dialogs/mastodon/search.py:24 +#: wxUI/dialogs/mastodon/updateProfile.py:130 +#: wxUI/dialogs/mastodon/userActions.py:36 +#: wxUI/dialogs/mastodon/userTimeline.py:30 +msgid "&OK" +msgstr "&OK" + +#: wxUI/dialogs/mastodon/configuration.py:14 +#, fuzzy +msgid "User autocompletion settings" +msgstr "Setări de autocompletare" + +#: wxUI/dialogs/mastodon/configuration.py:15 +msgid "" +"Scan acc&ount and add followers and following users to the user " +"autocompletion database" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:16 +#, fuzzy +msgid "&Manage autocompletion database" +msgstr "Administrează baza de date cu autocompletări" + +#: wxUI/dialogs/mastodon/configuration.py:21 +#, fuzzy +msgid "&Disable Streaming API endpoints" +msgstr "Dezactivează funcțiile Streaming" + +#: wxUI/dialogs/mastodon/configuration.py:23 +#, fuzzy +msgid "&Relative timestamps" +msgstr "Marcaje de timp similare" + +#: wxUI/dialogs/mastodon/configuration.py:25 +msgid "" +"R&ead preferences from instance (default visibility when publishing and " +"displaying sensitive content)" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:28 +#, fuzzy +msgid "&Items on each API call" +msgstr "Elemente de pe fiecare apel API" + +# | msgid "" +# | "Inverted buffers: The newest tweets will be shown at the beginning while +# " +# | "the oldest at the end" +#: wxUI/dialogs/mastodon/configuration.py:34 +#, fuzzy +msgid "" +"I&nverted buffers: The newest items will be shown at the beginning while " +"the oldest at the end" +msgstr "" +"Buffer inversat: Postările noi vor fi afișate la începutul listei iar " +"cele vechi la finalul acesteia." + +#: wxUI/dialogs/mastodon/configuration.py:36 +msgid "&Ask confirmation before boosting a post" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:38 +#, fuzzy +msgid "S&how screen names instead of full names" +msgstr "Arată numele de ecran în loc de numele întregi" + +#: wxUI/dialogs/mastodon/configuration.py:40 +msgid "Hide e&mojis in usernames" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:42 +#, fuzzy +msgid "" +"&Number of items per buffer to cache in database (0 to disable caching, " +"blank for unlimited)" +msgstr "" +"Numărul elementelor din listă care vor fi adăugate în cache-ul bazei de " +"date (pentru a dezactiva funcția setați 0 iar pentru elemente nelimitate " +"lăsați necompletată căsuța)" + +#: wxUI/dialogs/mastodon/configuration.py:46 +msgid "" +"&Load cache for items in memory (much faster in big datasets but requires" +" more RAM)" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:53 +#, python-brace-format +msgid "Edit template for &posts. Current template: {}" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:55 +#, python-brace-format +msgid "Edit template for c&onversations. Current template: {}" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:57 +#, python-brace-format +msgid "Edit template for p&ersons. Current template: {}" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:65 +#, fuzzy +msgid "&Volume" +msgstr "Volum" + +#: wxUI/dialogs/mastodon/configuration.py:76 +#, fuzzy +msgid "S&ession mute" +msgstr "Sesiune ignorată" + +#: wxUI/dialogs/mastodon/configuration.py:78 +#, fuzzy +msgid "&Output device" +msgstr "Dispozitiv de ieșire" + +#: wxUI/dialogs/mastodon/configuration.py:85 +#, fuzzy +msgid "&Input device" +msgstr "Dispozitiv de intrare" + +#: wxUI/dialogs/mastodon/configuration.py:93 +#, fuzzy +msgid "Sound &pack" +msgstr "Pachet de sunete" + +# | msgid "Indicate audio tweets with sound" +#: wxUI/dialogs/mastodon/configuration.py:99 +#, fuzzy +msgid "Indicate &audio or video in posts with sound" +msgstr "Indică postarea audio cu sunet" + +# | msgid "Indicate tweets containing images with sound" +#: wxUI/dialogs/mastodon/configuration.py:101 +#, fuzzy +msgid "Indicate posts containing i&mages with sound" +msgstr "Indică postările care conțin imagini cu sunet" + +#: wxUI/dialogs/mastodon/configuration.py:124 +#, fuzzy +msgid "&Language for OCR" +msgstr "Limba pentru OCR" + +#: wxUI/dialogs/mastodon/configuration.py:149 +msgid "Feedback" +msgstr "Feedback" + +#: wxUI/dialogs/mastodon/configuration.py:153 +msgid "Buffers" +msgstr "Buffere" + +#: wxUI/dialogs/mastodon/configuration.py:157 +msgid "Templates" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:161 +msgid "Sound" +msgstr "Sunet" + +#: wxUI/dialogs/mastodon/configuration.py:165 +msgid "Extras" +msgstr "Extras" + +# | msgid "Would you like to add a comment to this tweet?" +#: wxUI/dialogs/mastodon/dialogs.py:7 +#, fuzzy +msgid "Would you like to share this post?" +msgstr "Dorești să adaugi un comentariu la această postare?" + +# | msgid "" +# | "Do you really want to delete this tweet? It will be deleted from Twitter +# " +# | "as well." +#: wxUI/dialogs/mastodon/dialogs.py:15 +#, fuzzy +msgid "" +"Do you really want to delete this post? It will be deleted from the " +"instance as well." +msgstr "Ești sigur că vrei să ștergi postarea? Ea va fi ștearsă de pe Twitter." + +#: wxUI/dialogs/mastodon/dialogs.py:15 +msgid "Delete" +msgstr "Șterge" + +#: wxUI/dialogs/mastodon/dialogs.py:23 +msgid "" +"Are you sure you want to dismiss this notification? If you dismiss a " +"mention notification, it also disappears from your mentions buffer. The " +"post is not going to be deleted from the instance, though." +msgstr "" + +# | msgid "" +# | "Do you really want to empty this buffer? It's items will be removed from +# " +# | "the list but not from Twitter" +#: wxUI/dialogs/mastodon/dialogs.py:31 +#, fuzzy +msgid "" +"Do you really want to empty this buffer? It's items will be removed from" +" the list but not from the instance" +msgstr "" +"Ești sigur că vrei să golești acest buffer? Articolele Vor fi șterse de " +"la listă, dar nu și de pe Twitter" + +# | msgid "This user has no tweets. {0} can't create a timeline." +#: wxUI/dialogs/mastodon/dialogs.py:38 +#, fuzzy, python-brace-format +msgid "This user has no posts. {0} can't create a timeline." +msgstr "Acest utilizator nu are postări. {0} Nu poți crea o cronologie." + +# | msgid "This user has no favorited tweets. {0} can't create a timeline." +#: wxUI/dialogs/mastodon/dialogs.py:43 +#, fuzzy, python-brace-format +msgid "This user has no favorited posts. {0} can't create a timeline." +msgstr "Acest utilizator nu are postări favorite. {0} Nu poți crea o cronologie." + +# | msgid "This user has no followers. {0} can't create a timeline." +#: wxUI/dialogs/mastodon/dialogs.py:48 +#, fuzzy, python-brace-format +msgid "This user has no followers yet. {0} can't create a timeline." +msgstr "Acest utilizator nu are urmăritori. {0} Nu poți crea o cronologie." + +# | msgid "This user has no followers. {0} can't create a timeline." +#: wxUI/dialogs/mastodon/dialogs.py:53 +#, fuzzy, python-brace-format +msgid "This user is not following anyone. {0} can't create a timeline." +msgstr "Acest utilizator nu are urmăritori. {0} Nu poți crea o cronologie." + +#: wxUI/dialogs/mastodon/dialogs.py:60 +#, python-brace-format +msgid "The focused item has no user in it. {} ca't open a user profile" +msgstr "" + +# | msgid "R&emove from list" +#: wxUI/dialogs/mastodon/menus.py:13 wxUI/dialogs/mastodon/menus.py:41 +#, fuzzy +msgid "R&emove from favorites" +msgstr "&Șterge din listă" + +#: wxUI/dialogs/mastodon/menus.py:15 wxUI/dialogs/mastodon/menus.py:43 +msgid "&Open URL" +msgstr "&Deschide URL" + +# | msgid "Search on twitter" +#: wxUI/dialogs/mastodon/menus.py:17 wxUI/dialogs/mastodon/menus.py:47 +#, fuzzy +msgid "&Open in instance" +msgstr "Căutați pe twitter" + +#: wxUI/dialogs/mastodon/menus.py:19 wxUI/dialogs/mastodon/menus.py:45 +msgid "&Play audio" +msgstr "&Redare audio" + +#: wxUI/dialogs/mastodon/menus.py:23 wxUI/dialogs/mastodon/menus.py:51 +msgid "&Copy to clipboard" +msgstr "Copiază pe planșetă" + +#: wxUI/dialogs/mastodon/menus.py:27 wxUI/dialogs/mastodon/menus.py:55 +msgid "&User actions..." +msgstr "&Acțiuni utilizator..." + +#: wxUI/dialogs/mastodon/menus.py:53 +msgid "&Dismiss" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:20 +#: wxUI/dialogs/mastodon/postDialogs.py:38 +msgid "Attachments" +msgstr "Atașări" + +#: wxUI/dialogs/mastodon/postDialogs.py:24 +msgid "File" +msgstr "Fișier" + +#: wxUI/dialogs/mastodon/postDialogs.py:25 +msgid "Type" +msgstr "Tip" + +#: wxUI/dialogs/mastodon/postDialogs.py:26 +#: wxUI/dialogs/mastodon/postDialogs.py:141 +msgid "Description" +msgstr "Descriere" + +# | msgid "Remove client" +#: wxUI/dialogs/mastodon/postDialogs.py:28 +#, fuzzy +msgid "Remove Attachment" +msgstr "scoate aplicația" + +#: wxUI/dialogs/mastodon/postDialogs.py:33 +msgid "Post in the thread" +msgstr "" + +# | msgid "Remove from list" +#: wxUI/dialogs/mastodon/postDialogs.py:40 +#, fuzzy +msgid "Remove post" +msgstr "Ștergeţi din listă" + +#: wxUI/dialogs/mastodon/postDialogs.py:47 +msgid "&Visibility" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:54 +#, fuzzy +msgid "Language" +msgstr "Limbă" + +#: wxUI/dialogs/mastodon/postDialogs.py:58 +msgid "A&dd" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:59 +msgid "S&ensitive content" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:64 +msgid "Content warning" +msgstr "" + +# | msgid "Add to list" +#: wxUI/dialogs/mastodon/postDialogs.py:71 +#, fuzzy +msgid "Add p&ost" +msgstr "Adăugați la listă" + +#: wxUI/dialogs/mastodon/postDialogs.py:75 +msgid "Auto&complete users" +msgstr "Auto&completare utilizatori" + +# | msgid "Check &spelling..." +#: wxUI/dialogs/mastodon/postDialogs.py:77 +#, fuzzy +msgid "Check &spelling" +msgstr "Verificare &ortografică..." + +#: wxUI/dialogs/mastodon/postDialogs.py:79 +#, fuzzy +msgid "&Translate" +msgstr "Tradus" + +# | msgid "Tweet - %i characters " +#: wxUI/dialogs/mastodon/postDialogs.py:106 +#, fuzzy, python-brace-format +msgid "Post - {} characters" +msgstr "Postare - %i caractere " + +#: wxUI/dialogs/mastodon/postDialogs.py:130 +msgid "Image" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:132 +#, fuzzy +msgid "Video" +msgstr "Ascunde" + +# | msgid "&Audio" +#: wxUI/dialogs/mastodon/postDialogs.py:134 +#, fuzzy +msgid "Audio" +msgstr "&Audio" + +#: wxUI/dialogs/mastodon/postDialogs.py:136 +msgid "Poll" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:141 +msgid "please provide a description" +msgstr "Vă rugăm să furnizați o descriere" + +#: wxUI/dialogs/mastodon/postDialogs.py:148 +msgid "Select the picture to be uploaded" +msgstr "Selectează o imagine pentru a fi încărcată" + +#: wxUI/dialogs/mastodon/postDialogs.py:148 +msgid "Image files (*.png, *.jpg, *.gif)|*.png; *.jpg; *.gif" +msgstr "Fișiere de tipul (*.png, *.jpg, *.gif)|*.png; *.jpg; *.gif" + +#: wxUI/dialogs/mastodon/postDialogs.py:155 +#, fuzzy +msgid "Select the video to be uploaded" +msgstr "Selectează o imagine pentru a fi încărcată" + +# | msgid "Audio Files (*.mp3, *.ogg, *.wav)|*.mp3; *.ogg; *.wav" +#: wxUI/dialogs/mastodon/postDialogs.py:155 +#, fuzzy +msgid "Video files (*.mp4, *.mov, *.m4v, *.webm)| *.mp4; *.m4v; *.mov; *.webm" +msgstr "Fișiere audio (*.mp3, *.ogg, *.wav)|*.mp3; *.ogg; *.wav" + +#: wxUI/dialogs/mastodon/postDialogs.py:162 +msgid "Select the audio file to be uploaded" +msgstr "Selectează un fișier audio pentru a fi încărcat" + +#: wxUI/dialogs/mastodon/postDialogs.py:162 +msgid "" +"Audio files (*.mp3, *.ogg, *.wav, *.flac, *.opus, *.aac, *.m4a, " +"*.3gp)|*.mp3; *.ogg; *.wav; *.flac; *.opus; *.aac; *.m4a; *.3gp" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:169 +msgid "" +"It is not possible to add more attachments. Please take into account that" +" You can add only a maximum of 4 images, or one audio, video or poll per" +" post. Please remove other attachments before continuing." +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:169 +#, fuzzy +msgid "Error adding attachment" +msgstr "Adaugă un atașament" + +#: wxUI/dialogs/mastodon/postDialogs.py:172 +msgid "" +"You can add a poll or media files. In order to add your poll, please " +"remove other attachments first." +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:172 +#, fuzzy +msgid "Error adding poll" +msgstr "Adaugă un atașament" + +# | msgid "Tweet - %i characters " +#: wxUI/dialogs/mastodon/postDialogs.py:177 +#, fuzzy, python-format +msgid "Post - %i characters " +msgstr "Postare - %i caractere " + +#: wxUI/dialogs/mastodon/postDialogs.py:200 +msgid "Image description" +msgstr "Descriere imagine" + +# | msgid "Private" +#: wxUI/dialogs/mastodon/postDialogs.py:210 +#, fuzzy +msgid "Privacy" +msgstr "Privat" + +#: wxUI/dialogs/mastodon/postDialogs.py:214 +#, fuzzy +msgid "Source" +msgstr "Sursă: " + +#: wxUI/dialogs/mastodon/postDialogs.py:222 +msgid "Boosts" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:224 +msgid "View users who boosted this post" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:231 +msgid "View users who favorited this post" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:239 +#, fuzzy +msgid "Copy link to clipboard" +msgstr "Copiați pe planșetă" + +#: wxUI/dialogs/mastodon/postDialogs.py:241 +#: wxUI/dialogs/mastodon/postDialogs.py:280 +msgid "Check &spelling..." +msgstr "Verificare &ortografică..." + +#: wxUI/dialogs/mastodon/postDialogs.py:242 +#: wxUI/dialogs/mastodon/postDialogs.py:281 +msgid "&Translate..." +msgstr "&Tradu..." + +#: wxUI/dialogs/mastodon/postDialogs.py:243 +#: wxUI/dialogs/mastodon/postDialogs.py:282 +msgid "C&lose" +msgstr "în&chide" + +#: wxUI/dialogs/mastodon/postDialogs.py:294 +msgid "Add a poll" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:298 +msgid "Participation time" +msgstr "" + +# | msgid "%d minutes, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "5 minutes" +msgstr "%d minute " + +# | msgid "%d minutes, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "30 minutes" +msgstr "%d minute " + +# | msgid "%d hour, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "1 hour" +msgstr "%d oră " + +# | msgid "%d hours, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "6 hours" +msgstr "%d ore" + +# | msgid "%d day, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "1 day" +msgstr "%d zi," + +# | msgid "%d days, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "2 days" +msgstr "%d zile" + +# | msgid "%d days, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "3 days" +msgstr "%d zile" + +# | msgid "%d days, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "4 days" +msgstr "%d zile" + +# | msgid "%d days, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "5 days" +msgstr "%d zile" + +# | msgid "%d days, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "6 days" +msgstr "%d zile" + +# | msgid "%d days, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "7 days" +msgstr "%d zile" + +#: wxUI/dialogs/mastodon/postDialogs.py:304 +msgid "Choices" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:308 +msgid "Option 1" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:315 +msgid "Option 2" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:322 +msgid "Option 3" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:329 +msgid "Option 4" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:334 +msgid "Allow multiple choices per user" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:337 +msgid "Hide votes count until the poll expires" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:363 +msgid "Please make sure you have provided at least two options for the poll." +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:363 +#, fuzzy +msgid "Not enough information" +msgstr "Informație" + +#: wxUI/dialogs/mastodon/postDialogs.py:368 +msgid "Vote in this poll" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:371 +#, fuzzy +msgid "Options" +msgstr "Acțiune" + +# | msgid "&Search" +#: wxUI/dialogs/mastodon/search.py:9 +#, fuzzy +msgid "Search" +msgstr "&Căutare" + +#: wxUI/dialogs/mastodon/search.py:18 +msgid "Posts" +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:22 +#, fuzzy +msgid "Select user" +msgstr "Selectează URL" + +#: wxUI/dialogs/mastodon/showUserProfile.py:73 +#, fuzzy, python-brace-format +msgid "{}'s Profile" +msgstr "&Actualizare profil" + +#: wxUI/dialogs/mastodon/showUserProfile.py:79 +#, fuzzy +msgid "&Name: " +msgstr "Nume" + +#: wxUI/dialogs/mastodon/showUserProfile.py:84 +#, fuzzy +msgid "&URL: " +msgstr "Utilizator: " + +#: wxUI/dialogs/mastodon/showUserProfile.py:89 +msgid "&Bio: " +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:94 +msgid "&Joined at: " +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:99 +#, fuzzy +msgid "&Actions" +msgstr "Acțiune" + +#: wxUI/dialogs/mastodon/showUserProfile.py:104 +#, fuzzy +msgid "Header: " +msgstr "Ascunde" + +#: wxUI/dialogs/mastodon/showUserProfile.py:112 +msgid "Avatar: " +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:122 +#, python-brace-format +msgid "Field &{} - Label: " +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:129 +#, fuzzy +msgid "Content: " +msgstr "Context" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:43 +#: wxUI/dialogs/mastodon/filters/create_filter.py:65 +#: wxUI/dialogs/mastodon/showUserProfile.py:135 +msgid "Yes" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:43 +#: wxUI/dialogs/mastodon/filters/create_filter.py:65 +#: wxUI/dialogs/mastodon/filters/create_filter.py:69 +#: wxUI/dialogs/mastodon/showUserProfile.py:135 +msgid "No" +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:137 +#, fuzzy +msgid "&Private account: " +msgstr "Cont șters" + +#: wxUI/dialogs/mastodon/showUserProfile.py:144 +#, fuzzy +msgid "&Bot account: " +msgstr "cont" + +#: wxUI/dialogs/mastodon/showUserProfile.py:151 +#, fuzzy +msgid "&Discoverable account: " +msgstr "Cont șters" + +#: wxUI/dialogs/mastodon/showUserProfile.py:157 +#, python-brace-format +msgid "{} p&osts. Click to open posts timeline" +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:162 +#, python-brace-format +msgid "{} &following. Click to open Following timeline" +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:166 +#, python-brace-format +msgid "{} fo&llowers. Click to open followers timeline" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:43 +msgid "&Display Name" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:50 +#, fuzzy +msgid "&Bio" +msgstr "&Blochează" + +#: wxUI/dialogs/mastodon/updateProfile.py:58 +#, fuzzy +msgid "Header" +msgstr "Ascunde" + +#: wxUI/dialogs/mastodon/updateProfile.py:71 +#, fuzzy +msgid "Change &header" +msgstr "Ascunde" + +#: wxUI/dialogs/mastodon/updateProfile.py:79 +msgid "Avatar" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:92 +msgid "Change &avatar" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:102 +#, python-brace-format +msgid "Field &{}: Label" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:110 +#, fuzzy +msgid "Content" +msgstr "Context" + +#: wxUI/dialogs/mastodon/updateProfile.py:120 +#, fuzzy +msgid "&Private account" +msgstr "Cont șters" + +#: wxUI/dialogs/mastodon/updateProfile.py:122 +#, fuzzy +msgid "&Bot account" +msgstr "cont" + +#: wxUI/dialogs/mastodon/updateProfile.py:124 +#, fuzzy +msgid "&Discoverable account" +msgstr "Cont șters" + +#: wxUI/dialogs/mastodon/updateProfile.py:167 +msgid "Select header image - max 2MB" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:172 +#: wxUI/dialogs/mastodon/updateProfile.py:194 +msgid "The selected file is larger than 2MB. Do you want to select another file?" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:173 +#: wxUI/dialogs/mastodon/updateProfile.py:195 +msgid "File more than 2MB" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:189 +msgid "Select avatar image - max 2MB" +msgstr "" + +#: wxUI/dialogs/mastodon/userActions.py:19 +msgid "&Follow" +msgstr "&Urmărește" + +#: wxUI/dialogs/mastodon/userActions.py:20 +msgid "U&nfollow" +msgstr "&Numai urmări" + +#: wxUI/dialogs/mastodon/userActions.py:22 +msgid "Unmu&te" +msgstr "&Dezactivează ignorarea" + +#: wxUI/dialogs/mastodon/userActions.py:23 +msgid "&Block" +msgstr "&Blochează" + +#: wxUI/dialogs/mastodon/userActions.py:24 +msgid "Unbl&ock" +msgstr "&Deblochează" + +#: wxUI/dialogs/mastodon/userTimeline.py:9 +#, python-format +msgid "Timeline for %s" +msgstr "Cronologie pentru %s" + +#: wxUI/dialogs/mastodon/userTimeline.py:19 +msgid "&Posts" +msgstr "" + +#: wxUI/dialogs/mastodon/userTimeline.py:20 +msgid "&Followers" +msgstr "&Urmăritori" + +#: wxUI/dialogs/mastodon/userTimeline.py:21 +#, fuzzy +msgid "Fo&llowing" +msgstr "&Numai urmări" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:12 +#, fuzzy +msgid "Keyword" +msgstr "tastă" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:13 +#: wxUI/dialogs/mastodon/filters/create_filter.py:24 +msgid "Whole word" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:19 +msgid "Keyword:" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:25 +#: wxUI/dialogs/mastodon/filters/manage_filters.py:22 +#, fuzzy +msgid "Add" +msgstr "Adresă" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:34 +msgid "Palabras clave a filtrar:" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:74 +#, fuzzy +msgid "New filter" +msgstr "&Administrare filtre" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:78 +#, fuzzy +msgid "Home timeline" +msgstr "Cronologii" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:79 +msgid "Public statuses" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:81 +#, fuzzy +msgid "Threads" +msgstr "Pregătit" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:82 +#, fuzzy +msgid "Profiles" +msgstr "&Actualizare profil" + +# | msgid "Delete" +#: wxUI/dialogs/mastodon/filters/create_filter.py:86 +#, fuzzy +msgid "Hide posts" +msgstr "Șterge" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:87 +msgid "Set a content warning to posts" +msgstr "" + +# | msgid "%d hours, " +#: wxUI/dialogs/mastodon/filters/create_filter.py:91 +#, fuzzy +msgid "Hours" +msgstr "%d ore" + +# | msgid "%d days, " +#: wxUI/dialogs/mastodon/filters/create_filter.py:92 +#, fuzzy +msgid "Days" +msgstr "%d zile" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:93 +msgid "Weeks" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:94 +msgid "months" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:97 +#, fuzzy +msgid "Title:" +msgstr "Fișier" + +# | msgid "Reply to {arg0}" +#: wxUI/dialogs/mastodon/filters/create_filter.py:104 +#, fuzzy +msgid "Apply to:" +msgstr "Răspuns către {arg0}" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:114 +#, fuzzy +msgid "Action:" +msgstr "Acțiune" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:122 +msgid "Expires in:" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/manage_filters.py:10 +#, fuzzy +msgid "Filters" +msgstr "Fișier" + +#: wxUI/dialogs/mastodon/filters/manage_filters.py:15 +#, fuzzy +msgid "Title" +msgstr "Fișier" + +#: wxUI/dialogs/mastodon/filters/manage_filters.py:16 +msgid "Keywords" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/manage_filters.py:17 +#, fuzzy +msgid "Contexts" +msgstr "Context" + +#: wxUI/dialogs/mastodon/filters/manage_filters.py:19 +#, fuzzy +msgid "Expires" +msgstr "Extras" + +#~ msgid "There are no results for the coordinates in this tweet" +#~ msgstr "Nu există rezultate pentru coordonatele din această postare" + +#~ msgid "This list is already opened" +#~ msgstr "Această listă este deja deschisă" + +# | msgid "Timeline for {}" +#~ msgid "Timelines for {}" +#~ msgstr "Cronologie pentru {}" + +#~ msgid "{account_name} (Mastodon)" +#~ msgstr "" + +#~ msgid "URL of mastodon instance:" +#~ msgstr "" + +# | msgid "View &address" +#~ msgid "Email address:" +#~ msgstr "&Vizualizare adresă" + +# | msgid "Password: " +#~ msgid "Password:" +#~ msgstr "Parolă: " + +# | msgid "Item" +#~ msgid "&Item" +#~ msgstr "Articol" + +#~ msgid "Visibility" +#~ msgstr "" + +#~ msgid "Sensitive content" +#~ msgstr "" + +#~ msgid "Allow multiple votes per user" +#~ msgstr "" + +#~ msgid "{username} has mentionned you: {status}" +#~ msgstr "" + +#~ msgid "has mentionned you: {status}" +#~ msgstr "" + +#~ msgid "Likes for {}" +#~ msgstr "aprecieri pentru" + +#~ msgid "Trending topics for %s" +#~ msgstr "Subiecte În legătură cu %s" + +#~ msgid "Select user" +#~ msgstr "Selectează utilizatorul" + +#~ msgid "Sent direct messages" +#~ msgstr "Mesaje private trimise" + +#~ msgid "Sent tweets" +#~ msgstr "Postări trimise" + +#~ msgid "Likes" +#~ msgstr "Aprecieri" + +#~ msgid "Friends" +#~ msgstr "Prieteni" + +#~ msgid "{username}'s likes" +#~ msgstr "Aprecierile lui {username}" + +#~ msgid "{username}'s friends" +#~ msgstr "Prietenii lui {username}" + +#~ msgid "Tweet" +#~ msgstr "Postează" + +#~ msgid "Write the tweet here" +#~ msgstr "Scrie postarea aici" + +#~ msgid "New tweet in {0}" +#~ msgstr "Postare nouă în {0}" + +#~ msgid "{0} new tweets in {1}." +#~ msgstr "{0} postări noi în {1}." + +#~ msgid "Reply to {arg0}" +#~ msgstr "Răspuns către {arg0}" + +#~ msgid "Reply to %s" +#~ msgstr "Răspuns către %s" + +#~ msgid "Direct message to %s" +#~ msgstr "Mesaj privat către %s" + +#~ msgid "New direct message" +#~ msgstr "Mesaj privat nou" + +#~ msgid "This action is not supported on protected accounts." +#~ msgstr "Această acțiune nu este suportată în buffer încă." + +#~ msgid "Quote" +#~ msgstr "Citat" + +#~ msgid "Add your comment to the tweet" +#~ msgstr "Adaugă comentariul tău la postare" + +#~ msgid "User details" +#~ msgstr "Detalii utilizator" + +#~ msgid "MMM D, YYYY. H:m" +#~ msgstr "MMM D, YYYY. H:m" + +#~ msgid "There are no coordinates in this tweet" +#~ msgstr "Nu există coordonate în această postare" + +#~ msgid "Error decoding coordinates. Try again later." +#~ msgstr " Eroare la decodarea coordonatelor. Te rugăm să încerci mai târziu. " + +#~ msgid "Invalid buffer" +#~ msgstr "Buffer invalid" + +#~ msgid "{0} new direct messages." +#~ msgstr "{0} mesaje private noi." + +#~ msgid "This action is not supported in the buffer yet." +#~ msgstr "Această acțiune nu este suportată în buffer încă." + +#~ msgid "" +#~ "Getting more items cannot be done " +#~ "in this buffer. Use the direct " +#~ "messages buffer instead." +#~ msgstr "" +#~ "Obținerea mai multor elemente nu poate" +#~ " fi făcută în acest buffer. Folosește" +#~ " în schimb buffer-ul de mesaje " +#~ "private." + +#~ msgid "Mention" +#~ msgstr "Mențiune" + +#~ msgid "Mention to %s" +#~ msgstr "Menţiune către %s" + +#~ msgid "{0} new followers." +#~ msgstr "{0} urmăritori noi." + +#~ msgid "This action is not supported in the buffer, yet." +#~ msgstr "Această acțiune nu este suportată în buffer încă." + +#~ msgid "&Retweet" +#~ msgstr "&Distribuie" + +#~ msgid "&Like" +#~ msgstr "&îmi place" + +#~ msgid "&Unlike" +#~ msgstr "&nu-mi mai place" + +#~ msgid "View &address" +#~ msgstr "&Vizualizare adresă" + +#~ msgid "&View lists" +#~ msgstr "&Vizualizare liste" + +# | msgid "V&iew likes" +#~ msgid "View likes" +#~ msgstr "&Vizualizare aprecieri" + +#~ msgid "Likes timelines" +#~ msgstr "cronologie de aprecieri" + +#~ msgid "Followers timelines" +#~ msgstr "Cronologie de urmăritori" + +#~ msgid "Following timelines" +#~ msgstr "Cronologie de urmăritori" + +#~ msgid "Lists" +#~ msgstr "Liste" + +#~ msgid "List for {}" +#~ msgstr "Listă pentru {}" + +#~ msgid "Filters cannot be applied on this buffer" +#~ msgstr "Nu se pot aplica filtrele în acest buffer" + +#~ msgid "View item" +#~ msgstr "Vizualizare element" + +#~ msgid "Ask" +#~ msgstr "Întreabă" + +#~ msgid "Retweet without comments" +#~ msgstr "Distribuie fără comentarii" + +#~ msgid "Retweet with comments" +#~ msgstr "Distribuie cu comentarii" + +#~ msgid "Edit template for tweets. Current template: {}" +#~ msgstr "" + +#~ msgid "Edit template for direct messages. Current template: {}" +#~ msgstr "" + +#~ msgid "Edit template for sent direct messages. Current template: {}" +#~ msgstr "" + +#~ msgid "User has been suspended" +#~ msgstr "Utilizatorul a fost suspendat" + +#~ msgid "Information for %s" +#~ msgstr "Informație pentru %s" + +#~ msgid "Discarded" +#~ msgstr "Revocată" + +#~ msgid "Username: @%s\n" +#~ msgstr "Nume de utilizator: @%s\n" + +#~ msgid "Name: %s\n" +#~ msgstr "Nume: %s\n" + +#~ msgid "Location: %s\n" +#~ msgstr "Locație: %s\n" + +#~ msgid "URL: %s\n" +#~ msgstr "URL: %s\n" + +#~ msgid "Bio: %s\n" +#~ msgstr "Biografie: %s\n" + +#~ msgid "Yes" +#~ msgstr "Da" + +#~ msgid "No" +#~ msgstr "Nu" + +#~ msgid "Protected: %s\n" +#~ msgstr "Protejat: %s\n" + +#~ msgid "Relationship: " +#~ msgstr "" + +#~ msgid "You follow {0}. " +#~ msgstr "Urmărești pe {0}. " + +#~ msgid "{0} is following you." +#~ msgstr "{0} te urmărește." + +#~ msgid "" +#~ "Followers: %s\n" +#~ " Friends: %s\n" +#~ msgstr "" +#~ "Urmăritori: %s\n" +#~ "Prieteni: %s\n" + +#~ msgid "Verified: %s\n" +#~ msgstr "Verificat: %s\n" + +#~ msgid "Tweets: %s\n" +#~ msgstr "Postări: %s\n" + +#~ msgid "Likes: %s" +#~ msgstr "aprecieri %s" + +#~ msgid "You can't ignore direct messages" +#~ msgstr "Nu poți ignora mesajele private" + +#~ msgid "Attaching..." +#~ msgstr "Se atașează..." + +#~ msgid "Pause" +#~ msgstr "Pauză" + +#~ msgid "&Resume" +#~ msgstr "Continuă" + +#~ msgid "Resume" +#~ msgstr "Continuă" + +#~ msgid "&Pause" +#~ msgstr "Pauză" + +#~ msgid "&Stop" +#~ msgstr "&Oprește" + +#~ msgid "Recording" +#~ msgstr "Înregistrare" + +#~ msgid "Stopped" +#~ msgstr "Oprit" + +#~ msgid "&Record" +#~ msgstr "&Înregistrează" + +#~ msgid "&Play" +#~ msgstr "&Redă" + +#~ msgid "Recoding audio..." +#~ msgstr "Înregistrare audio" + +#~ msgid "Error in file upload: {0}" +#~ msgstr "Eroare în încărcarea fișierului: {0}" + +#~ msgid "Transferred" +#~ msgstr "Transferat" + +#~ msgid "Total file size" +#~ msgstr "Mărimea totală a fișierului" + +#~ msgid "Transfer rate" +#~ msgstr "Frecvență de transfer" + +#~ msgid "Time left" +#~ msgstr "Timp rămas" + +#~ msgid "Attach audio" +#~ msgstr "Atașează fișier audio" + +#~ msgid "&Add an existing file" +#~ msgstr "&Adaugă o filă existentă" + +#~ msgid "&Discard" +#~ msgstr "&Revocă" + +#~ msgid "Upload to" +#~ msgstr "&Încarcă către" + +#~ msgid "Attach" +#~ msgstr "Atașează" + +#~ msgid "&Cancel" +#~ msgstr "&Revocare" + +#~ msgid "Audio Files (*.mp3, *.ogg, *.wav)|*.mp3; *.ogg; *.wav" +#~ msgstr "Fișiere audio (*.mp3, *.ogg, *.wav)|*.mp3; *.ogg; *.wav" + +#~ msgid "You have to start writing" +#~ msgstr "Trebuie să începi să scrii." + +#~ msgid "There are no results in your users database" +#~ msgstr "Nu există rezultate în baza dumneavoastră de utilizatori" + +#~ msgid "Autocompletion only works for users." +#~ msgstr "Autocompletarea funcționează numai pentru utilizatori." + +#~ msgid "" +#~ "Updating database... You can close this" +#~ " window now. A message will tell " +#~ "you when the process finishes." +#~ msgstr "" +#~ "Se actualizează baza de date... Puteți" +#~ " închide această fereastră acum. Veți " +#~ "primi un mesaj, atunci când procesul " +#~ "se va încheia." + +#~ msgid "Manage Autocompletion database" +#~ msgstr "Administrează baza de date cu autocompletări" + +#~ msgid "Editing {0} users database" +#~ msgstr "Se editează {0} baza de date a utilizatorilor" + +#~ msgid "Username" +#~ msgstr "Nume utilizator" + +#~ msgid "Add user" +#~ msgstr "Adaugă utilizator" + +#~ msgid "Remove user" +#~ msgstr "Elimină utilizator" + +#~ msgid "Twitter username" +#~ msgstr "Nume de utilizator Twitter" + +#~ msgid "Add user to database" +#~ msgstr "Adaugă utilizator în baza de date" + +#~ msgid "The user does not exist" +#~ msgstr "Utilizatorul nu există." + +#~ msgid "Error!" +#~ msgstr "Eroare!" + +#~ msgid "Autocomplete users' settings" +#~ msgstr "Setări de auto completare a utilizatorilor" + +#~ msgid "Add followers to database" +#~ msgstr "" + +#~ msgid "Add friends to database" +#~ msgstr "Adaugă utilizator în baza de date" + +#~ msgid "Updating autocompletion database" +#~ msgstr "Administrează baza de date cu autocompletări" + +#~ msgid "" +#~ "This process will retrieve the users " +#~ "you selected from Twitter, and add " +#~ "them to the user autocomplete database." +#~ " Please note that if there are " +#~ "many users or you have tried to" +#~ " perform this action less than 15 " +#~ "minutes ago, TWBlue may reach a " +#~ "limit in Twitter API calls when " +#~ "trying to load the users into the" +#~ " database. If this happens, we will" +#~ " show you an error, in which " +#~ "case you will have to try this " +#~ "process again in a few minutes. If" +#~ " this process ends with no error, " +#~ "you will be redirected back to the" +#~ " account settings dialog. Do you want" +#~ " to continue?" +#~ msgstr "" + +#~ msgid "TWBlue has imported {} users successfully." +#~ msgstr "" + +#~ msgid "Done" +#~ msgstr "terminat" + +#~ msgid "Error adding users from Twitter. Please try again in about 15 minutes." +#~ msgstr "" + +#~ msgid "New tweet" +#~ msgstr "Postare nouă" + +#~ msgid "Retweet" +#~ msgstr "Distribuie" + +#~ msgid "Like a tweet" +#~ msgstr "Apreciază postarea" + +#~ msgid "Like/unlike a tweet" +#~ msgstr "Apreciază sau nu mai aprecia o postare" + +#~ msgid "Unlike a tweet" +#~ msgstr "Numai aprecia postarea" + +#~ msgid "See user details" +#~ msgstr "Vedeți detaliile utilizatorului" + +#~ msgid "Show tweet" +#~ msgstr "Afișați postarea" + +#~ msgid "Interact with the currently focused tweet." +#~ msgstr "Interacţionați cu postarea focusată." + +#~ msgid "View in Twitter" +#~ msgstr "Vezi pe Twitter" + +#~ msgid "Edit profile" +#~ msgstr "Editare profil" + +#~ msgid "Delete a tweet or direct message" +#~ msgstr "Ștergeţi o postare sau un mesaj privat" + +#~ msgid "Add to list" +#~ msgstr "Adăugați la listă" + +#~ msgid "Remove from list" +#~ msgstr "Ștergeţi din listă" + +#~ msgid "Search on twitter" +#~ msgstr "Căutați pe twitter" + +#~ msgid "Show lists for a specified user" +#~ msgstr "Arată listele pentru un utilizator specificat" + +#~ msgid "Get geolocation" +#~ msgstr "Obțineţi geolocația" + +#~ msgid "Display the tweet's geolocation in a dialog" +#~ msgstr "Afișează locația postării într-un dialog" + +#~ msgid "Create a trending topics buffer" +#~ msgstr "Crează un bufer cu subiecte curente" + +#~ msgid "" +#~ "Opens the list manager, which allows " +#~ "you to create, edit, delete and " +#~ "open lists in buffers." +#~ msgstr "" +#~ "Deschide editorul de liste care-ți " +#~ "permite să le ștergi, să le " +#~ "editezi, să le creezi sau să le" +#~ " deschizi într-un buffer." + +#~ msgid "Opens the list manager" +#~ msgstr "Deschide administratorul listelor" + +#~ msgid "{account_name} (Twitter)" +#~ msgstr "" + +# | msgid "View in Twitter" +#~ msgid "Twitter" +#~ msgstr "Vezi pe Twitter" + +#~ msgid "" +#~ "The request to authorize your Twitter" +#~ " account will be opened in your " +#~ "browser. You only need to do this" +#~ " once. Would you like to continue?" +#~ msgstr "" +#~ "Solicitarea dumneavoastră a fost procesată " +#~ "cu succes. În câteva momente Se va" +#~ " deschide în navigatorul dumneavoastră o" +#~ " pagină web. Scopul acestei acțiuni " +#~ "este autorizarea contului dumneavoastră " +#~ "Twitter. Trebuie să faceți asta doar " +#~ "o singură dată. Pentru mai multe " +#~ "detalii despre produsele și serviciile " +#~ "noastre sau pentru a contacta asistența," +#~ " accesați www.twblue.es. Vă dorim utilizare" +#~ " plăcută. Doriți să continuaţi?" + +#~ msgid "" +#~ "TWBlue is unable to authenticate the " +#~ "account for {} in Twitter. It " +#~ "might be due to an invalid or " +#~ "expired token, revoqued access to the" +#~ " application, or after an account " +#~ "reactivation. Please remove the account " +#~ "manually from your Twitter sessions in" +#~ " order to stop seeing this message." +#~ msgstr "" + +#~ msgid "Authentication error for session {}" +#~ msgstr "" + +#~ msgid "Dm to %s " +#~ msgstr "mesaj direct către %s" + +#~ msgid "{0}. Quoted tweet from @{1}: {2}" +#~ msgstr "{0}.postare citată de la @{1}: {2}" + +#~ msgid "Unavailable" +#~ msgstr "indisponibil" + +#~ msgid "" +#~ "%s (@%s). %s followers, %s friends, " +#~ "%s tweets. Last tweeted %s. Joined " +#~ "Twitter %s" +#~ msgstr "" +#~ "%s (@%s). %s urmăritori, %s prieteni," +#~ " %s postări. a postat ultima oară " +#~ "%s. intrat pe Twitter %s" + +#~ msgid "No description available" +#~ msgstr "Nicio descriere disponibilă" + +#~ msgid "private" +#~ msgstr "Privat" + +#~ msgid "public" +#~ msgstr "Public" + +#~ msgid "Enter your PIN code here" +#~ msgstr "Introdu-ți codul pin aici" + +#~ msgid "Authorising account..." +#~ msgstr "Se autorizează contul..." + +#~ msgid "" +#~ "We could not authorice your Twitter " +#~ "account to be used in TWBlue. This" +#~ " might be caused due to an " +#~ "incorrect verification code. Please try " +#~ "to add the session again." +#~ msgstr "" + +#~ msgid "%s failed. Reason: %s" +#~ msgstr "%s eșuat. Motiv: %s" + +#~ msgid "Deleted account" +#~ msgstr "Cont nou" + +#~ msgid "$sender_display_name, $text $date" +#~ msgstr "" + +#~ msgid "" +#~ "$display_name (@$screen_name). $followers followers," +#~ " $following following, $tweets tweets. " +#~ "Joined Twitter $created_at." +#~ msgstr "" + +#~ msgid "Image description: {}." +#~ msgstr "Descriere imagine" + +#~ msgid "RT @{}: {} Quote from @{}: {}" +#~ msgstr "{0}.postare citată de la @{1}: {2}" + +# | msgid "{0}. Quoted tweet from @{1}: {2}" +#~ msgid "RT @{}: {}" +#~ msgstr "{0}.postare citată de la @{1}: {2}" + +# | msgid "{0}. Quoted tweet from @{1}: {2}" +#~ msgid "{} Quote from @{}: {}" +#~ msgstr "{0}.postare citată de la @{1}: {2}" + +#~ msgid "Sorry, you are not authorised to see this status." +#~ msgstr "Ne pare rău, Nu ești autorizat Pentru a vedea acest status." + +#~ msgid "Error {0}" +#~ msgstr " Eroare cod {0}" + +#~ msgid "{user_1}, {user_2} and {all_users} more: {text}" +#~ msgstr "" + +#~ msgid "" +#~ "This retweet is over 140 characters. " +#~ "Would you like to post it as " +#~ "a mention to the poster with your" +#~ " comments and a link to the " +#~ "original tweet?" +#~ msgstr "" +#~ "Această distribuire are peste 140 de " +#~ "caractere. Ai dorii să o postezi " +#~ "ca o mențiune către autor alături " +#~ "de comentariile tale şi un link " +#~ "către postarea originală?" + +#~ msgid "Would you like to add a comment to this tweet?" +#~ msgstr "Dorești să adaugi un comentariu la această postare?" + +#~ msgid "" +#~ "Do you really want to delete this" +#~ " tweet? It will be deleted from " +#~ "Twitter as well." +#~ msgstr "Ești sigur că vrei să ștergi postarea? Ea va fi ștearsă de pe Twitter." + +#~ msgid "Enter the name of the client : " +#~ msgstr "Introdu numele aplicației: " + +#~ msgid "Add client" +#~ msgstr "Adaugă aplicație" + +#~ msgid "This user has no tweets, so you can't open a timeline for them." +#~ msgstr "" +#~ "Acest utilizator nu are postări, deci" +#~ " nu poți deschide o cronologie pentru" +#~ " el." + +#~ msgid "" +#~ "This is a protected Twitter user, " +#~ "which means you can't open a " +#~ "timeline using the Streaming API. The" +#~ " user's tweets will not update due" +#~ " to a twitter policy. Do you " +#~ "want to continue?" +#~ msgstr "" +#~ "Acesta este un utilizator protejat, " +#~ "acest lucru înseamnă că nu vei " +#~ "putea deschide o cronologie utilizând " +#~ "Streaming API. Postările acestui utilizator" +#~ " nu vor fi actualizate datorită " +#~ "termenilor Twitter. Doreşti să continui? \n" +#~ "" +#~ "\n" + +#~ msgid "" +#~ "This is a protected user account, " +#~ "you need to follow this user to" +#~ " view their tweets or likes." +#~ msgstr "" +#~ "acesta este un cont protejat, pentru " +#~ "a-i vedea postările trebuie să-l " +#~ "urmărești" + +#~ msgid "This user has no tweets. {0} can't create a timeline." +#~ msgstr "Acest utilizator nu are postări. {0} Nu poți crea o cronologie." + +#~ msgid "This user has no favorited tweets. {0} can't create a timeline." +#~ msgstr "" +#~ "Acest utilizator nu are postări " +#~ "favorite. {0} Nu poți crea o " +#~ "cronologie." + +#~ msgid "This user has no followers. {0} can't create a timeline." +#~ msgstr "Acest utilizator nu are urmăritori. {0} Nu poți crea o cronologie." + +#~ msgid "This user has no friends. {0} can't create a timeline." +#~ msgstr "Acest utilizator nu are prieteni. {0} Nu poți crea o cronologie." + +#~ msgid "Geolocation data: {0}" +#~ msgstr "Geolocație data: {0}" + +#~ msgid "Geo data for this tweet" +#~ msgstr "Geo data pentru această postare" + +#~ msgid "You have been blocked from viewing this content" +#~ msgstr "Ați fost blocat de la vizualizarea acestui conținut" + +#~ msgid "" +#~ "You have been blocked from viewing " +#~ "someone's content. In order to avoid " +#~ "conflicts with the full session, TWBlue" +#~ " will remove the affected timeline." +#~ msgstr "" +#~ "Ați fost blocat de la vizualizarea " +#~ "conținutului cuiva. Pentru a evita " +#~ "conflictele cu sesiunea completă, TWBlue " +#~ "va șterge cronologia afectată." + +#~ msgid "" +#~ "TWBlue cannot load this timeline because" +#~ " the user has been suspended from " +#~ "Twitter." +#~ msgstr "" +#~ "TWBlue nu poate încărca această " +#~ "cronologie, deoarece utilizatorul a fost " +#~ "suspendat de pe Twitter." + +#~ msgid "Do you really want to delete this filter?" +#~ msgstr "Chiar vrei să ștergi filtrul?" + +#~ msgid "This filter already exists. Please use a different title" +#~ msgstr "Acest filtru există deja. Vă rugăm să utilizați un titlu diferit" + +#~ msgid "&Show direct message" +#~ msgstr "&Arată mesaj privat" + +#~ msgid "&Show event" +#~ msgstr "&Arată eveniment" + +#~ msgid "Direct &message" +#~ msgstr "Mesaj &privat" + +#~ msgid "&Show user" +#~ msgstr "&Arată utilizator" + +#~ msgid "Search topic" +#~ msgstr "Căutare subiect" + +#~ msgid "&Tweet about this trend" +#~ msgstr "&Postare despre acest trend" + +#~ msgid "&Show item" +#~ msgstr "&Arată articol" + +#~ msgid "Update &profile" +#~ msgstr "Actualizare &profil" + +#~ msgid "Event" +#~ msgstr "Eveniment" + +#~ msgid "Remove event" +#~ msgstr "Șterge eveniment" + +#~ msgid "Trending topic" +#~ msgstr "Subiect curent" + +#~ msgid "Tweet about this trend" +#~ msgstr "Postare despre acest subiect curent." + +#~ msgid "" +#~ "Scan account and add friends and " +#~ "followers to the user autocompletion " +#~ "database" +#~ msgstr "" + +#~ msgid "" +#~ "Inverted buffers: The newest tweets will" +#~ " be shown at the beginning while " +#~ "the oldest at the end" +#~ msgstr "" +#~ "Buffer inversat: Postările noi vor fi" +#~ " afișate la începutul listei iar cele" +#~ " vechi la finalul acesteia." + +#~ msgid "Retweet mode" +#~ msgstr "Mod de distribuire" + +#~ msgid "" +#~ "Load cache for tweets in memory " +#~ "(much faster in big datasets but " +#~ "requires more RAM)" +#~ msgstr "" + +#~ msgid "Ignored clients" +#~ msgstr "Aplicații ignorate" + +#~ msgid "Remove client" +#~ msgstr "scoate aplicația" + +#~ msgid "Indicate audio tweets with sound" +#~ msgstr "Indică postarea audio cu sunet" + +#~ msgid "Indicate geotweets with sound" +#~ msgstr "Indică geopostările cu sunet" + +#~ msgid "Indicate tweets containing images with sound" +#~ msgstr "Indică postările care conțin imagini cu sunet" + +#~ msgid "API Key for SndUp" +#~ msgstr "Cheie API pentru SndUp" + +#~ msgid "Create a filter for this buffer" +#~ msgstr "Crează un filtru pentru acest buffer" + +#~ msgid "Filter title" +#~ msgstr "Titlul filtrului" + +#~ msgid "Filter by word" +#~ msgstr "Filtrează după cuvânt" + +#~ msgid "Ignore tweets wich contain the following word" +#~ msgstr "Ignoră postările care conțin următorul cuvânt" + +#~ msgid "Ignore tweets without the following word" +#~ msgstr "Ignoră postările fără următorul cuvânt" + +#~ msgid "word" +#~ msgstr "cuvânt" + +#~ msgid "Allow retweets" +#~ msgstr "Permite distribuiri" + +#~ msgid "Allow quoted tweets" +#~ msgstr "Permite postări citate" + +#~ msgid "Allow replies" +#~ msgstr "Permite răspunsuri" + +#~ msgid "Use this term as a regular expression" +#~ msgstr "Utilizează acest termen ca o expresie regulată" + +#~ msgid "Filter by language" +#~ msgstr "Filtrează după limbă" + +#~ msgid "Load tweets in the following languages" +#~ msgstr "Încarcă postările în următoarele limbi" + +#~ msgid "Ignore tweets in the following languages" +#~ msgstr "Ignorează postările în următoarele limbi" + +#~ msgid "Don't filter by language" +#~ msgstr "Nu filtra după limbă" + +#~ msgid "Supported languages" +#~ msgstr "Limbi suportate" + +#~ msgid "Add selected language to filter" +#~ msgstr "Adaugă limba selectată la filtru" + +#~ msgid "Selected languages" +#~ msgstr "Limbi selectate" + +#~ msgid "You must define a name for the filter before creating it." +#~ msgstr "" + +#~ msgid "Missing filter name" +#~ msgstr "" + +#~ msgid "Manage filters" +#~ msgstr "Administrează filtre" + +#~ msgid "Filters" +#~ msgstr "Filtre" + +#~ msgid "Filter" +#~ msgstr "Filtru" + +#~ msgid "Lists manager" +#~ msgstr "Administrator liste" + +#~ msgid "List" +#~ msgstr "Listă" + +#~ msgid "Owner" +#~ msgstr "Proprietar" + +#~ msgid "Members" +#~ msgstr "Membri" + +#~ msgid "mode" +#~ msgstr "Mod" + +#~ msgid "Create a new list" +#~ msgstr "Crează o listă nouă" + +#~ msgid "Open in buffer" +#~ msgstr "Se deschide buffer-ul" + +#~ msgid "Viewing lists for %s" +#~ msgstr "Se vizualizează listele pentru %s" + +#~ msgid "Subscribe" +#~ msgstr "Abonare" + +#~ msgid "Unsubscribe" +#~ msgstr "Dezabonare" + +#~ msgid "Name (20 characters maximun)" +#~ msgstr "Nume (Maxim 20 de caractere)" + +#~ msgid "Mode" +#~ msgstr "Mod" + +#~ msgid "Private" +#~ msgstr "Privat" + +#~ msgid "Editing the list %s" +#~ msgstr "Se modifică lista %s" + +#~ msgid "Select a list to add the user" +#~ msgstr "Selectează o listă pentru a adăuga utilizatorul" + +#~ msgid "Add" +#~ msgstr "Adaugă" + +#~ msgid "Select a list to remove the user" +#~ msgstr "Selectează o listă pentru a șterge utilizatorul" + +#~ msgid "Do you really want to delete this list?" +#~ msgstr "Chiar ești sigur că vrei să ştergi această listă?" + +#~ msgid "Search on Twitter" +#~ msgstr "Căutare pe Twitter" + +#~ msgid "Tweets" +#~ msgstr "Postări" + +#~ msgid "&Language for results: " +#~ msgstr "&Limba pentru rezultate: " + +#~ msgid "any" +#~ msgstr "Detectare automată" + +#~ msgid "Results &type: " +#~ msgstr "&Tipul rezultatelor: " + +#~ msgid "Mixed" +#~ msgstr "Mixat" + +#~ msgid "Recent" +#~ msgstr "Recent" + +#~ msgid "Popular" +#~ msgstr "Popular" + +#~ msgid "Details" +#~ msgstr "Detalii" + +#~ msgid "&Go to URL" +#~ msgstr "&Mergi la URL" + +#~ msgid "View trending topics" +#~ msgstr "Vizualizare subiecte curente" + +#~ msgid "Trending topics by" +#~ msgstr "Subiecte curente de" + +#~ msgid "Country" +#~ msgstr "Țară" + +#~ msgid "City" +#~ msgstr "Oraș" + +#~ msgid "&Location" +#~ msgstr "&Locație" + +#~ msgid "Update your profile" +#~ msgstr "Actualizează-ți profilul" + +#~ msgid "&Name (50 characters maximum)" +#~ msgstr "&Nume (maxim 50 de caractere)" + +#~ msgid "&Website" +#~ msgstr "&Site web" + +#~ msgid "&Bio (160 characters maximum)" +#~ msgstr "&Biografie (160 caractere) maxim" + +#~ msgid "Upload a &picture" +#~ msgstr "&Încarcă o fotografie" + +#~ msgid "Upload a picture" +#~ msgstr "Încarcă o fotografie" + +#~ msgid "Discard image" +#~ msgstr "Revocă imaginea!" + +#~ msgid "&Report as spam" +#~ msgstr "&Raportează ca spam" + +#~ msgid "&Ignore tweets from this client" +#~ msgstr "&Ignoră postări de la această aplicație" + +#~ msgid "&Tweets" +#~ msgstr "&Postări" + +#~ msgid "&Likes" +#~ msgstr "&Aprecieri" + +#~ msgid "F&riends" +#~ msgstr "&Prieteni" + +#~ msgid "Delete attachment" +#~ msgstr "scoate atașare" + +#~ msgid "Added Tweets" +#~ msgstr "Postări trimise" + +#~ msgid "Delete tweet" +#~ msgstr "Postări trimise" + +#~ msgid "A&dd..." +#~ msgstr "" + +#~ msgid "Add t&weet" +#~ msgstr "Apreciază postarea" + +#~ msgid "&Attach audio..." +#~ msgstr "Atașare audio" + +#~ msgid "Sen&d" +#~ msgstr "tri&mite" + +#~ msgid "Video files (*.mp4)|*.mp4" +#~ msgstr "" + +#~ msgid "" +#~ "It is not possible to add more " +#~ "attachments. Please make sure your tweet" +#~ " complies with Twitter'S attachment rules." +#~ " You can add only one video or" +#~ " GIF in every tweet, and a " +#~ "maximum of 4 photos." +#~ msgstr "" + +#~ msgid "&Mention to all" +#~ msgstr "&Men&țiune la toți" + +#~ msgid "&Recipient" +#~ msgstr "&Destinatar" + +#~ msgid "Tweet - %i characters " +#~ msgstr "Postare - %i caractere " + +#~ msgid "Retweets: " +#~ msgstr "Distribuiri: " + +#~ msgid "Likes: " +#~ msgstr "aprecieri: " + +#~ msgid "View" +#~ msgstr "Vizualizează" + +#~ msgid "Item" +#~ msgstr "Articol" + +#~ msgid "&Expand URL" +#~ msgstr "&Extinde URL" + +#~ msgid "Participation time (in days)" +#~ msgstr "" + +#~ msgid "&Open in Twitter" +#~ msgstr "Deschide în Twitter" + +#~ msgid "&Show tweet" +#~ msgstr "&Arată postare" + +#~ msgid "Translated" +#~ msgstr "Tradus" + +#~ msgid "Afrikaans" +#~ msgstr "Afrikaans" + +#~ msgid "Albanian" +#~ msgstr "Albaneză" + +#~ msgid "Amharic" +#~ msgstr "Amharică" + +#~ msgid "Arabic" +#~ msgstr "Arabă" + +#~ msgid "Armenian" +#~ msgstr "Armenă" + +#~ msgid "Azerbaijani" +#~ msgstr "Azeră" + +#~ msgid "Basque" +#~ msgstr "Bască" + +#~ msgid "Belarusian" +#~ msgstr "Belarusă" + +#~ msgid "Bengali" +#~ msgstr "Bengaleză" + +#~ msgid "Bihari" +#~ msgstr "Bihari" + +#~ msgid "Bulgarian" +#~ msgstr "Bulgară" + +#~ msgid "Burmese" +#~ msgstr "Birmană" + +#~ msgid "Catalan" +#~ msgstr "Katalană" + +#~ msgid "Cherokee" +#~ msgstr "Cherokee" + +#~ msgid "Chinese" +#~ msgstr "Chineză" + +#~ msgid "Chinese_simplified" +#~ msgstr "Chineză simplificată" + +#~ msgid "Chinese_traditional" +#~ msgstr "Chineză tradiţională" + +#~ msgid "Croatian" +#~ msgstr "Croată" + +#~ msgid "Czech" +#~ msgstr "Cehă" + +#~ msgid "Dhivehi" +#~ msgstr "Divehi" + +#~ msgid "Esperanto" +#~ msgstr "Esperanto" + +#~ msgid "Estonian" +#~ msgstr "Estonă" + +#~ msgid "Filipino" +#~ msgstr "Filipineză" + +#~ msgid "Galician" +#~ msgstr "Galiciană" + +#~ msgid "Georgian" +#~ msgstr "georgiană" + +#~ msgid "Greek" +#~ msgstr "greacă" + +#~ msgid "Guarani" +#~ msgstr "Guarani" + +#~ msgid "Gujarati" +#~ msgstr "Gujarati" + +#~ msgid "Hebrew" +#~ msgstr "Ebraică" + +#~ msgid "Hindi" +#~ msgstr "Indiană" + +#~ msgid "Icelandic" +#~ msgstr "Izlandeză" + +#~ msgid "Indonesian" +#~ msgstr "indoneziană" + +#~ msgid "Inuktitut" +#~ msgstr "Inuit" + +#~ msgid "Irish" +#~ msgstr "Irlandeză" + +#~ msgid "Kannada" +#~ msgstr "Kanareză" + +#~ msgid "Kazakh" +#~ msgstr "Kazahă" + +#~ msgid "Khmer" +#~ msgstr "Khmeră" + +#~ msgid "Kurdish" +#~ msgstr "Curdă" + +#~ msgid "Kyrgyz" +#~ msgstr "Kirghiză" + +#~ msgid "Laothian" +#~ msgstr "Laoțiană" + +#~ msgid "Latvian" +#~ msgstr "Letonă" + +#~ msgid "Lithuanian" +#~ msgstr "lituaniană" + +#~ msgid "Macedonian" +#~ msgstr "macedoneană" + +#~ msgid "Malay" +#~ msgstr "Malaeză" + +#~ msgid "Malayalam" +#~ msgstr "Malayalam" + +#~ msgid "Maltese" +#~ msgstr "malteză" + +#~ msgid "Marathi" +#~ msgstr "Marathi" + +#~ msgid "Mongolian" +#~ msgstr "Mongolă" + +#~ msgid "Nepali" +#~ msgstr "nepaleză" + +#~ msgid "Norwegian" +#~ msgstr "norvegiană" + +#~ msgid "Oriya" +#~ msgstr "Oriya" + +#~ msgid "Pashto" +#~ msgstr "paștună" + +#~ msgid "Persian" +#~ msgstr "persană" + +#~ msgid "Punjabi" +#~ msgstr "punjabi" + +#~ msgid "Romanian" +#~ msgstr "română" + +#~ msgid "Sanskrit" +#~ msgstr "sanscrită" + +#~ msgid "Serbian" +#~ msgstr "sârbă" + +#~ msgid "Sindhi" +#~ msgstr "sindhi" + +#~ msgid "Sinhalese" +#~ msgstr "sinhaleză" + +#~ msgid "Slovak" +#~ msgstr "slovacă" + +#~ msgid "Slovenian" +#~ msgstr "slovenă" + +#~ msgid "Swahili" +#~ msgstr "swahili" + +#~ msgid "Swedish" +#~ msgstr "suedeză" + +#~ msgid "Tajik" +#~ msgstr "tadjică" + +#~ msgid "Tamil" +#~ msgstr "tamil" + +#~ msgid "Tagalog" +#~ msgstr "tagalog" + +#~ msgid "Telugu" +#~ msgstr "telugu" + +#~ msgid "Thai" +#~ msgstr "tailandeză" + +#~ msgid "Tibetan" +#~ msgstr "tibetană" + +#~ msgid "Ukrainian" +#~ msgstr "ucraineană" + +#~ msgid "Urdu" +#~ msgstr "urdu" + +#~ msgid "Uzbek" +#~ msgstr "uzbecă" + +#~ msgid "Uighur" +#~ msgstr "uigur" + +#~ msgid "Vietnamese" +#~ msgstr "vietnameză" + +#~ msgid "Welsh" +#~ msgstr "galeză" + +#~ msgid "Yiddish" +#~ msgstr "idiș" + +#~ msgid "" +#~ "TWBlue has detected that you're running" +#~ " windows 10 and has changed the " +#~ "default keymap to the Windows 10 " +#~ "keymap. It means that some keyboard " +#~ "shorcuts could be different. Please " +#~ "check the keystroke editor by pressing" +#~ " Alt+Win+K to see all available " +#~ "keystrokes for this keymap." +#~ msgstr "" +#~ "TW Blue a detectat că rulați " +#~ "Windows 10 și a modificat harta de" +#~ " taste implicită la harta de taste" +#~ " Windows 10. Asta înseamnă că unele" +#~ " scurtături de taste ar putea să " +#~ "fie diferite. Vă rugăm să verificați " +#~ "editorul pentru combinații de taste " +#~ "apăsând Alt+Win+K pentru a vedea toate" +#~ " comenzile disponibile pentru această hartă" +#~ " de taste." + +#~ msgid "Boosts: " +#~ msgstr "" + +#~ msgid "Favorites: " +#~ msgstr "" + +#~ msgid "Date: " +#~ msgstr "Dată" + +#~ msgid "Community for {}" +#~ msgstr "" + +#~ msgid "Run {0} at Windows startup" +#~ msgstr "Rulează {0} la pornirea Windows" + +#~ msgid "Use Codeofdusk's longtweet handlers (may decrease client performance)" +#~ msgstr "Utilizează Codeofdusk's " + +#~ msgid "Remember state for mention all and long tweet" +#~ msgstr "" +#~ "Amintește starea pentru postările lungi " +#~ "și pentru cele în care sunt " +#~ "menționați toți" + +#~ msgid "Bio: " +#~ msgstr "" + +#~ msgid "Joined at: " +#~ msgstr "" + +#~ msgid "Field {} - Label: " +#~ msgstr "" + +#~ msgid "{} posts. Click to open posts timeline" +#~ msgstr "" + +#~ msgid "{} following. Click to open Following timeline" +#~ msgstr "" + +#~ msgid "{} followers. Click to open followers timeline" +#~ msgstr "" + +#~ msgid "Display Name" +#~ msgstr "" + +#~ msgid "Bio" +#~ msgstr "" + +#~ msgid "Change header" +#~ msgstr "" + +#~ msgid "Change avatar" +#~ msgstr "" + +#~ msgid "Field {}: Label" +#~ msgstr "" + +#~ msgid "Add following to database" +#~ msgstr "" + +#~ msgid "Read long posts in GUI" +#~ msgstr "" + +#~ msgid "LibreTranslate API URL: " +#~ msgstr "" + +#~ msgid "LibreTranslate API Key (optional): " +#~ msgstr "" + +#~ msgid "DeepL API Key: " +#~ msgstr "" + +#~ msgid "" +#~ "Scan account and add followers and " +#~ "following users to the user " +#~ "autocompletion database" +#~ msgstr "" + +#~ msgid "" +#~ "Read preferences from instance (default " +#~ "visibility when publishing and displaying " +#~ "sensitive content)" +#~ msgstr "" + +#~ msgid "Ask confirmation before boosting a post" +#~ msgstr "" + +#~ msgid "hide emojis in usernames" +#~ msgstr "" + +#~ msgid "" +#~ "Load cache for items in memory " +#~ "(much faster in big datasets but " +#~ "requires more RAM)" +#~ msgstr "" + diff --git a/srcantiguo/locales/ru/LC_MESSAGES/twblue.mo b/srcantiguo/locales/ru/LC_MESSAGES/twblue.mo new file mode 100644 index 00000000..252c17c7 Binary files /dev/null and b/srcantiguo/locales/ru/LC_MESSAGES/twblue.mo differ diff --git a/srcantiguo/locales/ru/LC_MESSAGES/twblue.po b/srcantiguo/locales/ru/LC_MESSAGES/twblue.po new file mode 100644 index 00000000..e3c8339a --- /dev/null +++ b/srcantiguo/locales/ru/LC_MESSAGES/twblue.po @@ -0,0 +1,4934 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2021 ORGANIZATION +# FIRST AUTHOR , 2021. +# +msgid "" +msgstr "" +"Project-Id-Version: TW Blue 0.85\n" +"Report-Msgid-Bugs-To: manuel@manuelcortez.net\n" +"POT-Creation-Date: 2025-04-13 01:18+0000\n" +"PO-Revision-Date: 2022-12-20 22:43+0000\n" +"Last-Translator: Anonymous \n" +"Language: ru\n" +"Language-Team: Russian " +"\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" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.17.0\n" + +#: languageHandler.py:61 +#, fuzzy +msgctxt "languageName" +msgid "Amharic" +msgstr "Амхарский" + +#: languageHandler.py:62 +#, fuzzy +msgctxt "languageName" +msgid "Aragonese" +msgstr "Японский" + +#: languageHandler.py:63 +#, fuzzy +msgctxt "languageName" +msgid "Spanish" +msgstr "Испанский" + +#: languageHandler.py:64 +#, fuzzy +msgctxt "languageName" +msgid "Portuguese" +msgstr "Португальский" + +#: languageHandler.py:65 +#, fuzzy +msgctxt "languageName" +msgid "Russian" +msgstr "Русский" + +#: languageHandler.py:66 +#, fuzzy +msgctxt "languageName" +msgid "italian" +msgstr "Итальянский" + +#: languageHandler.py:67 +#, fuzzy +msgctxt "languageName" +msgid "Turkey" +msgstr "Опция была недоступна" + +#: languageHandler.py:68 +#, fuzzy +msgctxt "languageName" +msgid "Galician" +msgstr "Галисийский" + +#: languageHandler.py:69 +#, fuzzy +msgctxt "languageName" +msgid "Catala" +msgstr "Каталонский" + +#: languageHandler.py:70 +#, fuzzy +msgctxt "languageName" +msgid "Vasque" +msgstr "Баскский" + +#: languageHandler.py:71 +#, fuzzy +msgctxt "languageName" +msgid "polish" +msgstr "Польский" + +#: languageHandler.py:72 +#, fuzzy +msgctxt "languageName" +msgid "Arabic" +msgstr "Арабский" + +#: languageHandler.py:73 +#, fuzzy +msgctxt "languageName" +msgid "Nepali" +msgstr "Непальский" + +#: languageHandler.py:74 +msgctxt "languageName" +msgid "Serbian (Latin)" +msgstr "" + +#: languageHandler.py:75 +#, fuzzy +msgctxt "languageName" +msgid "Japanese" +msgstr "Японский" + +#: languageHandler.py:99 +msgid "User default" +msgstr "По умолчанию" + +#: main.py:105 +#, fuzzy +msgid "https://twblue.mcvsoftware.com/donate" +msgstr "https://twblue.es/donate" + +#: main.py:118 +#, python-brace-format +msgid "" +"{0} is already running. Close the other instance before starting this " +"one. If you're sure that {0} isn't running, try deleting the file at {1}." +" If you're unsure of how to do this, contact the {0} developers." +msgstr "" +"{0} уже запущен. Закройте другой экземпляр, прежде чем запускать этот. " +"Если вы уверены, что {0} не активен, попробуйте удалить файл по адресу " +"{1}. Если вы не знаете, как это сделать, обратитесь к разработчикам {0}." + +#: sound.py:148 +msgid "Playing..." +msgstr "Воспроизводится" + +#: sound.py:161 +msgid "Stopped." +msgstr "Остановлено" + +#: controller/mainController.py:261 +msgid "Ready" +msgstr "Готово" + +#: controller/mainController.py:369 controller/mainController.py:654 +#: controller/mainController.py:673 controller/mainController.py:692 +#: controller/mainController.py:711 +msgid "" +"No session is currently in focus. Focus a session with the next or " +"previous session shortcut." +msgstr "Сессия не в фокусе. Перейдите, пожалуйста, к интересующей сессии." + +#: controller/mainController.py:373 +msgid "Empty buffer." +msgstr "Пустой буфер " + +#: controller/mainController.py:380 +#, python-brace-format +msgid "{0} not found." +msgstr "{0} не найден." + +#: controller/mainController.py:702 controller/mainController.py:721 +#, python-format +msgid "%s, %s of %s" +msgstr "%s, %s из %s" + +#: controller/mainController.py:704 controller/mainController.py:723 +#: controller/mainController.py:751 controller/mainController.py:779 +#, python-format +msgid "%s. Empty" +msgstr "%s. Пусто" + +#: controller/mainController.py:739 controller/mainController.py:743 +#: controller/mainController.py:767 +#, python-brace-format +msgid "{0}: This account is not logged into Twitter." +msgstr "{0}: Этот аккаунт не вошел в твиттер." + +#: controller/mainController.py:749 controller/mainController.py:777 +#, python-format +msgid "%s. %s, %s of %s" +msgstr "%s. %s, %s из %s" + +#: controller/mainController.py:771 +#, python-brace-format +msgid "{0}: This account is not logged into twitter." +msgstr "{0}: Этот аккаунт не вошел в твиттер" + +#: controller/mainController.py:910 controller/mainController.py:926 +msgid "An error happened while trying to connect to the server. Please try later." +msgstr "" +"При попытке подключиться к серверу произошла ошибка. Пожалуйста, " +"попробуйте позже." + +#: controller/mainController.py:957 +msgid "The auto-reading of new tweets is enabled for this buffer" +msgstr "Авточтение новых твитов в этом буфере включено" + +#: controller/mainController.py:960 +msgid "The auto-reading of new tweets is disabled for this buffer" +msgstr "Авточтение новых твитов в этом буфере выключено" + +#: controller/mainController.py:967 +msgid "Session mute on" +msgstr "Звуки для сессии отключены" + +#: controller/mainController.py:970 +msgid "Session mute off" +msgstr "Звуки для сессии включены" + +#: controller/mainController.py:979 +msgid "Buffer mute on" +msgstr "Звуки в буфере отключены" + +#: controller/mainController.py:982 +msgid "Buffer mute off" +msgstr "Звуки в буфере включены" + +#: controller/mainController.py:999 +msgid "Copied" +msgstr "Скопировано" + +#: controller/mainController.py:1019 +msgid "Unable to update this buffer." +msgstr "Невозможно обновить этот буфер" + +#: controller/mainController.py:1021 +msgid "Updating buffer..." +msgstr "Обновление буфера..." + +#: controller/mainController.py:1024 +#, python-brace-format +msgid "{0} items retrieved" +msgstr "Показано {0} элементов " + +#: controller/buffers/mastodon/base.py:137 controller/mainController.py:1028 +#: controller/mastodon/handler.py:98 controller/mastodon/handler.py:241 +#, python-brace-format +msgid "Timeline for {}" +msgstr "Лента твитов {}" + +#: controller/buffers/mastodon/users.py:93 controller/mainController.py:1030 +#: controller/mastodon/handler.py:100 controller/mastodon/handler.py:255 +#, python-brace-format +msgid "Followers for {}" +msgstr "Читающие {}" + +#: controller/mainController.py:1032 +#, python-brace-format +msgid "Friends for {}" +msgstr "Читаемые {}" + +# | msgid "Followers for {}" +#: controller/buffers/mastodon/users.py:95 controller/mainController.py:1034 +#: controller/mastodon/handler.py:102 controller/mastodon/handler.py:269 +#, fuzzy, python-brace-format +msgid "Following for {}" +msgstr "Читающие {}" + +#: controller/messages.py:18 +#, fuzzy +msgid "Translated" +msgstr "Переведено" + +#: controller/settings.py:60 +#, fuzzy +msgid "System default" +msgstr "По умолчанию" + +#: controller/settings.py:60 +msgid "HTTP" +msgstr "" + +#: controller/settings.py:60 +msgid "SOCKS v4" +msgstr "" + +#: controller/settings.py:60 +msgid "SOCKS v4 with DNS support" +msgstr "" + +#: controller/settings.py:60 +msgid "SOCKS v5" +msgstr "" + +#: controller/settings.py:60 +msgid "SOCKS v5 with DNS support" +msgstr "" + +#: controller/userAlias.py:31 +#, fuzzy, python-brace-format +msgid "Edit alias for {}" +msgstr "Список {}" + +#: controller/buffers/base/base.py:91 +#: controller/buffers/mastodon/conversations.py:237 +#: controller/buffers/mastodon/search.py:80 +msgid "This action is not supported for this buffer" +msgstr "Это действие не поддерживается в данном буфере" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:70 +#: controller/mastodon/settings.py:194 +msgid "Home" +msgstr "Ваша лента" + +#: controller/buffers/mastodon/base.py:52 +#: controller/buffers/mastodon/community.py:22 +#: controller/mastodon/handler.py:72 controller/mastodon/handler.py:114 +#: controller/mastodon/settings.py:195 +msgid "Local" +msgstr "" + +#: controller/buffers/mastodon/base.py:52 +#: controller/buffers/mastodon/community.py:22 +#: controller/mastodon/handler.py:74 controller/mastodon/settings.py:196 +msgid "Federated" +msgstr "" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:76 +#: controller/mastodon/settings.py:197 +msgid "Mentions" +msgstr "Упоминания" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:84 +#: controller/mastodon/settings.py:201 +msgid "Bookmarks" +msgstr "" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:78 +msgid "Direct messages" +msgstr "Личные сообщения" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:80 +#: controller/mastodon/settings.py:199 +msgid "Sent" +msgstr "" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:82 +#: controller/mastodon/settings.py:200 wxUI/dialogs/mastodon/postDialogs.py:229 +msgid "Favorites" +msgstr "" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:86 +#: controller/mastodon/settings.py:202 +msgid "Followers" +msgstr "Читающие" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:88 +#: controller/mastodon/settings.py:203 +#, fuzzy +msgid "Following" +msgstr "П&ерестать читать" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:92 +#: controller/mastodon/settings.py:204 +msgid "Blocked users" +msgstr "Заблокированные пользователи" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:90 +#: controller/mastodon/settings.py:205 +msgid "Muted users" +msgstr "Отключенные пользователи" + +# | msgid "&Location" +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:94 +#: controller/mastodon/settings.py:206 +#: wxUI/dialogs/mastodon/filters/create_filter.py:80 +#, fuzzy +msgid "Notifications" +msgstr "Местоположение" + +#: controller/buffers/mastodon/base.py:58 +#, python-brace-format +msgid "{username}'s timeline" +msgstr "Лента твитов {username}" + +#: controller/buffers/mastodon/base.py:60 +#, python-brace-format +msgid "{username}'s followers" +msgstr "Читающие {username}" + +# | msgid "{username}'s followers" +#: controller/buffers/mastodon/base.py:62 +#, fuzzy, python-brace-format +msgid "{username}'s following" +msgstr "Читающие {username}" + +#: controller/buffers/mastodon/base.py:64 +msgid "Unknown buffer" +msgstr "Неизвестно" + +#: controller/buffers/mastodon/base.py:67 +#: controller/buffers/mastodon/base.py:645 wxUI/buffers/mastodon/base.py:24 +#: wxUI/buffers/mastodon/conversationList.py:24 +#: wxUI/buffers/mastodon/notifications.py:22 wxUI/buffers/mastodon/user.py:18 +#: wxUI/dialogs/mastodon/postDialogs.py:5 +#: wxUI/dialogs/mastodon/postDialogs.py:194 wxUI/sysTrayIcon.py:35 +msgid "Post" +msgstr "" + +# | msgid "Write the tweet here" +#: controller/buffers/mastodon/base.py:68 +#: controller/buffers/mastodon/base.py:646 +#, fuzzy +msgid "Write your post here" +msgstr "Напишите текст твита здесь" + +# | msgid "New tweet in {0}" +#: controller/buffers/mastodon/base.py:153 +#, fuzzy, python-brace-format +msgid "New post in {0}" +msgstr "Новый твит в {0}" + +# | msgid "{0} new tweets in {1}." +#: controller/buffers/mastodon/base.py:159 +#, fuzzy, python-brace-format +msgid "{0} new posts in {1}." +msgstr "@{0} процитировал ваш твит: {1}" + +#: controller/buffers/mastodon/base.py:198 +#: controller/buffers/mastodon/community.py:90 +#: controller/buffers/mastodon/conversations.py:100 +#: controller/buffers/mastodon/mentions.py:82 +#: controller/buffers/mastodon/users.py:139 +#, python-format +msgid "%s items retrieved" +msgstr "Показано %s элементов " + +#: controller/buffers/mastodon/base.py:216 +#: controller/buffers/mastodon/users.py:206 +msgid "This buffer is not a timeline; it can't be deleted." +msgstr "Этот буфер не является лентой и его невозможно удалить." + +# | msgid "Conversation with {0}" +#: controller/buffers/mastodon/base.py:346 +#: controller/buffers/mastodon/base.py:384 +#, fuzzy, python-brace-format +msgid "Conversation with {}" +msgstr "Беседа с {0}" + +# | msgid "Write the tweet here" +#: controller/buffers/mastodon/base.py:347 +#: controller/buffers/mastodon/base.py:385 +#: controller/buffers/mastodon/conversations.py:181 +#: controller/buffers/mastodon/notifications.py:122 +#: controller/buffers/mastodon/users.py:52 +#, fuzzy +msgid "Write your message here" +msgstr "Напишите текст твита здесь" + +# | msgid "Reply to {arg0}" +#: controller/buffers/mastodon/base.py:349 +#, fuzzy, python-brace-format +msgid "Reply to {}" +msgstr "Ответ {arg0}" + +# | msgid "Write the tweet here" +#: controller/buffers/mastodon/base.py:350 +#, fuzzy +msgid "Write your reply here" +msgstr "Напишите текст твита здесь" + +#: controller/buffers/mastodon/base.py:412 +#, fuzzy +msgid "This action is not supported on conversations." +msgstr "Это действие не поддерживается в данном буфере" + +#: controller/buffers/mastodon/base.py:477 +msgid "Opening URL..." +msgstr "Открытие ссылки" + +#: controller/buffers/mastodon/base.py:490 +msgid "You can delete only your own posts." +msgstr "" + +#: controller/buffers/mastodon/base.py:519 +msgid "Opening item in web browser..." +msgstr "Открыть в браузере" + +#: controller/buffers/mastodon/base.py:527 +#: controller/buffers/mastodon/base.py:547 +msgid "Adding to favorites..." +msgstr "" + +# | msgid "Remove from list" +#: controller/buffers/mastodon/base.py:534 +#: controller/buffers/mastodon/base.py:549 +#, fuzzy +msgid "Removing from favorites..." +msgstr "Удалить из списка" + +#: controller/buffers/mastodon/base.py:544 +#: controller/buffers/mastodon/base.py:559 +#: controller/buffers/mastodon/base.py:573 +#: controller/buffers/mastodon/conversations.py:213 +msgid "No status found with that ID" +msgstr "Сообщение не найдено." + +#: controller/buffers/mastodon/base.py:562 +msgid "Adding to bookmarks..." +msgstr "" + +#: controller/buffers/mastodon/base.py:564 +msgid "Removing from bookmarks..." +msgstr "" + +#: controller/buffers/mastodon/base.py:586 +#, python-brace-format +msgid "Picture {0}" +msgstr "Изображение {0}" + +#: controller/buffers/mastodon/base.py:587 +msgid "Select the picture" +msgstr "Выберите изображение" + +#: controller/buffers/mastodon/base.py:610 +msgid "Unable to extract text" +msgstr "Не удаётся распознать текст." + +#: controller/buffers/mastodon/base.py:612 +msgid "OCR Result" +msgstr "" + +#: controller/buffers/mastodon/base.py:627 +msgid "this poll no longer exists." +msgstr "" + +#: controller/buffers/mastodon/base.py:630 +msgid "This poll has already expired." +msgstr "" + +#: controller/buffers/mastodon/base.py:633 +msgid "You have already voted on this poll." +msgstr "" + +#: controller/buffers/mastodon/base.py:642 +#, fuzzy +msgid "Sending vote..." +msgstr "Перекодирование аудио ..." + +# | msgid "Conversation with {0}" +#: controller/buffers/mastodon/conversations.py:180 +#, fuzzy, python-brace-format +msgid "Reply to conversation with {}" +msgstr "Беседа с {0}" + +# | msgid "Conversation with {0}" +#: controller/buffers/mastodon/notifications.py:121 +#: controller/buffers/mastodon/users.py:51 +#, fuzzy, python-brace-format +msgid "New conversation with {}" +msgstr "Беседа с {0}" + +#: controller/buffers/mastodon/notifications.py:151 +msgid "Notification dismissed." +msgstr "" + +# | msgid "There are no coordinates in this tweet" +#: controller/buffers/mastodon/users.py:110 +#, fuzzy +msgid "There are no more items in this buffer." +msgstr "Координаты отсутствуют" + +#: controller/mastodon/handler.py:30 wxUI/dialogs/mastodon/updateProfile.py:35 +#, fuzzy +msgid "Update Profile" +msgstr "&Обновить профиль" + +#: controller/mastodon/handler.py:31 wxUI/dialogs/mastodon/search.py:10 +#: wxUI/view.py:19 +msgid "&Search" +msgstr "&Поиск" + +#: controller/mastodon/handler.py:33 wxUI/view.py:22 +msgid "Manage user aliases" +msgstr "" + +#: controller/mastodon/handler.py:35 controller/mastodon/handler.py:59 +#: wxUI/view.py:30 +msgid "&Post" +msgstr "" + +#: controller/mastodon/handler.py:36 wxUI/dialogs/mastodon/menus.py:9 +#: wxUI/dialogs/mastodon/menus.py:37 wxUI/view.py:31 +msgid "Re&ply" +msgstr "Отве&тить" + +#: controller/mastodon/handler.py:37 wxUI/dialogs/mastodon/menus.py:7 +#: wxUI/dialogs/mastodon/menus.py:35 wxUI/view.py:32 +msgid "&Boost" +msgstr "" + +# | msgid "&Add to list" +#: controller/mastodon/handler.py:38 wxUI/dialogs/mastodon/menus.py:11 +#: wxUI/dialogs/mastodon/menus.py:39 wxUI/view.py:33 +#, fuzzy +msgid "&Add to favorites" +msgstr "&Добавить в список" + +# | msgid "Remove from list" +#: controller/mastodon/handler.py:39 +#, fuzzy +msgid "Remove from favorites" +msgstr "Удалить из списка" + +# | msgid "&Show user" +#: controller/mastodon/handler.py:40 wxUI/dialogs/mastodon/menus.py:21 +#: wxUI/dialogs/mastodon/menus.py:49 wxUI/view.py:35 +#, fuzzy +msgid "&Show post" +msgstr "Показать пользователя" + +#: controller/mastodon/handler.py:41 wxUI/view.py:36 +msgid "View conversa&tion" +msgstr "Просмотр беседы" + +#: controller/mastodon/handler.py:42 wxUI/view.py:37 +msgid "Read text in picture" +msgstr "Читать текст, представленный на изображении" + +#: controller/mastodon/handler.py:43 wxUI/dialogs/mastodon/menus.py:25 +#: wxUI/view.py:39 +msgid "&Delete" +msgstr "&Удалить" + +#: controller/mastodon/handler.py:45 wxUI/view.py:43 +msgid "&Actions..." +msgstr "Действия" + +#: controller/mastodon/handler.py:46 wxUI/view.py:44 +msgid "&View timeline..." +msgstr "Показать ленту" + +#: controller/mastodon/handler.py:47 wxUI/view.py:45 +msgid "Direct me&ssage" +msgstr "&Личное сообщение" + +#: controller/mastodon/handler.py:48 wxUI/view.py:46 +msgid "Add a&lias" +msgstr "" + +#: controller/mastodon/handler.py:51 +#, fuzzy +msgid "Show user profile" +msgstr "&Показать профиль пользователя" + +#: controller/mastodon/handler.py:54 +msgid "Create c&ommunity timeline" +msgstr "" + +#: controller/mastodon/handler.py:55 wxUI/view.py:57 +msgid "Create a &filter" +msgstr "Создать новый фильтр" + +#: controller/mastodon/handler.py:56 wxUI/view.py:58 +msgid "&Manage filters" +msgstr "&Управление фильтрами" + +#: controller/mastodon/handler.py:95 +msgid "Timelines" +msgstr "Ленты" + +#: controller/mastodon/handler.py:107 +msgid "Searches" +msgstr "Результаты поиска" + +#: controller/mastodon/handler.py:110 controller/mastodon/handler.py:191 +#: controller/mastodon/handler.py:196 +#, python-brace-format +msgid "Search for {}" +msgstr "Поиск {}" + +#: controller/mastodon/handler.py:111 +msgid "Communities" +msgstr "" + +#: controller/mastodon/handler.py:114 +#, fuzzy +msgid "federated" +msgstr "Лента твитов {username}" + +#: controller/mastodon/handler.py:143 +#, python-brace-format +msgid "Conversation with {0}" +msgstr "Беседа с {0}" + +#: controller/mastodon/handler.py:299 +msgid "Add an user alias" +msgstr "" + +#: controller/mastodon/handler.py:311 +#, python-brace-format +msgid "Alias has been set correctly for {}." +msgstr "" + +#: controller/mastodon/handler.py:342 +#, fuzzy +msgid "Update profile" +msgstr "&Обновить профиль" + +#: controller/mastodon/messages.py:115 +#, python-format +msgid "%s - %s of %d characters" +msgstr "%s - %s из %d символов" + +#: controller/mastodon/messages.py:239 +#, python-brace-format +msgid "Poll with {} options" +msgstr "" + +# | msgid "List for {}" +#: controller/mastodon/messages.py:272 +#, fuzzy, python-brace-format +msgid "Post from {}" +msgstr "Список {}" + +#: controller/mastodon/messages.py:276 sessions/mastodon/templates.py:82 +#: wxUI/dialogs/mastodon/postDialogs.py:49 +msgid "Public" +msgstr "Публичный" + +# | msgid "Accounts list" +#: controller/mastodon/messages.py:276 sessions/mastodon/templates.py:82 +#: wxUI/dialogs/mastodon/postDialogs.py:49 +#, fuzzy +msgid "Not listed" +msgstr "Список аккаунтов" + +# | msgid "Followers" +#: controller/mastodon/messages.py:276 +#, fuzzy +msgid "followers only" +msgstr "Читающие" + +# | msgid "Direct message" +#: controller/mastodon/messages.py:276 sessions/mastodon/templates.py:82 +#: wxUI/dialogs/mastodon/postDialogs.py:49 +#, fuzzy +msgid "Direct" +msgstr "Личное сообщение" + +# | msgid "Remove client" +#: controller/mastodon/messages.py:283 +#, fuzzy +msgid "Remote instance" +msgstr "Удалить клиент" + +#: controller/mastodon/messages.py:291 controller/mastodon/messages.py:319 +#, fuzzy +msgid "Unmute conversation" +msgstr "Просмотр беседы" + +#: controller/mastodon/messages.py:315 wxUI/dialogs/mastodon/postDialogs.py:237 +#, fuzzy +msgid "Mute conversation" +msgstr "Просмотр беседы" + +# | msgid "Conversation with {0}" +#: controller/mastodon/messages.py:316 +#, fuzzy +msgid "Conversation unmuted." +msgstr "Беседа с {0}" + +# | msgid "Conversation with {0}" +#: controller/mastodon/messages.py:320 +#, fuzzy +msgid "Conversation muted." +msgstr "Беседа с {0}" + +#: controller/mastodon/messages.py:331 +msgid "people who boosted this post" +msgstr "" + +#: controller/mastodon/messages.py:336 +msgid "people who favorited this post" +msgstr "" + +#: controller/mastodon/messages.py:342 +#, fuzzy +msgid "Link copied to clipboard." +msgstr "Скопировать в буфер обмена" + +#: controller/mastodon/settings.py:82 +#, python-format +msgid "Account settings for %s" +msgstr "Параметры аккаунта %s" + +#: controller/mastodon/settings.py:92 +#, python-brace-format +msgid "Edit template for posts. Current template: {}" +msgstr "" + +#: controller/mastodon/settings.py:101 +#, python-brace-format +msgid "Edit template for conversations. Current template: {}" +msgstr "" + +#: controller/mastodon/settings.py:110 +#, python-brace-format +msgid "Edit template for persons. Current template: {}" +msgstr "" + +#: controller/mastodon/settings.py:198 +msgid "Direct Messages" +msgstr "Личные сообщения" + +#: controller/mastodon/filters/create_filter.py:75 +#, fuzzy, python-brace-format +msgid "Update Filter: {}" +msgstr "&Обновить профиль" + +#: controller/mastodon/filters/manage_filters.py:57 +#: wxUI/dialogs/mastodon/filters/create_filter.py:90 +msgid "Never" +msgstr "" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:4 +msgid "Audio tweet." +msgstr "Аудиотвит." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:5 +msgid "User timeline buffer created." +msgstr "Создан буфер для ленты пользователя." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:6 +msgid "Buffer destroied." +msgstr "Буфер удалён." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:7 +msgid "Direct message received." +msgstr "Личное сообщение получено." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:8 +msgid "Direct message sent." +msgstr "Личное сообщение отправлено." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:9 +msgid "Error." +msgstr "Ошибка." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:10 +msgid "Tweet liked." +msgstr "Твит отмечен как понравившийся." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:11 +msgid "Likes buffer updated." +msgstr "Буфер Понравившиеся обновлён." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:12 +msgid "Geotweet." +msgstr "Твит с геолокацией." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:13 +msgid "Tweet contains one or more images" +msgstr "Твит содержит один или более изображений" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:14 +msgid "Boundary reached." +msgstr "Достигнута граница." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:15 +msgid "List updated." +msgstr "Список обновлён." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:16 +msgid "Too many characters." +msgstr "Слишком много символов." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:17 +msgid "Mention received." +msgstr "Упоминание получено." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:18 +msgid "New event." +msgstr "Новое событие." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:19 +#, python-brace-format +msgid "{0} is ready." +msgstr "Добро пожаловать в {0} !" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:20 +msgid "Mention sent." +msgstr "Упоминание отправлено." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:21 +msgid "Tweet retweeted." +msgstr "Твит ретвитнут." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:22 +msgid "Search buffer updated." +msgstr "Поиск обновлён." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:23 +msgid "Tweet received." +msgstr "Твит получен." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:24 +msgid "Tweet sent." +msgstr "Твит отправлен." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:25 +msgid "Trending topics buffer updated." +msgstr "Тренды обновлены." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:26 +msgid "New tweet in user timeline buffer." +msgstr "Новый твит в ленте пользователя." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:27 +msgid "New follower." +msgstr "Новый читатель." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:28 +msgid "Volume changed." +msgstr "Громкость изменена." + +#: extra/SoundsTutorial/wx_ui.py:8 +msgid "Sounds tutorial" +msgstr "Гид по звукам" + +#: extra/SoundsTutorial/wx_ui.py:11 +msgid "Press enter to listen to the sound for the selected event" +msgstr "Нажмите клавишу Enter, чтобы прослушать звук для выбранного события" + +#: extra/SpellChecker/spellchecker.py:56 +#, python-format +msgid "Misspelled word: %s" +msgstr "Слово с ошибкой: %s" + +#: extra/SpellChecker/wx_ui.py:27 +msgid "Misspelled word" +msgstr "Слово с ошибкой" + +#: extra/SpellChecker/wx_ui.py:32 +msgid "Context" +msgstr "Контекст" + +#: extra/SpellChecker/wx_ui.py:37 +msgid "Suggestions" +msgstr "Предложения" + +#: extra/SpellChecker/wx_ui.py:42 +msgid "&Ignore" +msgstr "Игнорировать" + +#: extra/SpellChecker/wx_ui.py:43 +msgid "I&gnore all" +msgstr "&Игнорировать все" + +#: extra/SpellChecker/wx_ui.py:44 +msgid "&Replace" +msgstr "&Заменить" + +#: extra/SpellChecker/wx_ui.py:45 +msgid "R&eplace all" +msgstr "З&аменить все" + +#: extra/SpellChecker/wx_ui.py:46 +msgid "&Add to personal dictionary" +msgstr "&Добавить в личный словарь" + +#: extra/SpellChecker/wx_ui.py:79 +#, python-brace-format +msgid "" +"An error has occurred. There are no dictionaries available for the " +"selected language in {0}" +msgstr "Ошибка. В программе {0} отсутствуют словари для выбранного языка." + +#: extra/SpellChecker/wx_ui.py:79 +#: extra/autocompletionUsers/mastodon/wx_scan.py:44 +#: wxUI/commonMessageDialogs.py:23 wxUI/commonMessageDialogs.py:36 +#: wxUI/commonMessageDialogs.py:45 wxUI/commonMessageDialogs.py:52 +#: wxUI/commonMessageDialogs.py:55 wxUI/commonMessageDialogs.py:61 +#: wxUI/dialogs/mastodon/dialogs.py:38 wxUI/dialogs/mastodon/dialogs.py:43 +#: wxUI/dialogs/mastodon/dialogs.py:48 wxUI/dialogs/mastodon/dialogs.py:53 +#: wxUI/dialogs/mastodon/dialogs.py:60 +msgid "Error" +msgstr "Ошибка" + +#: extra/SpellChecker/wx_ui.py:82 +msgid "Spell check complete." +msgstr "Проверка орфографии завершена" + +#: extra/autocompletionUsers/completion.py:39 +#: extra/autocompletionUsers/completion.py:57 +msgid "You have to start writing" +msgstr "" + +# | msgid "There are no coordinates in this tweet" +#: extra/autocompletionUsers/completion.py:49 +#: extra/autocompletionUsers/completion.py:66 +#, fuzzy +msgid "There are no results in your users database" +msgstr "Координаты отсутствуют" + +#: extra/autocompletionUsers/completion.py:51 +#, fuzzy +msgid "Autocompletion only works for users." +msgstr "&Автозаполнение пользователей" + +#: extra/autocompletionUsers/wx_manage.py:9 +#, fuzzy +msgid "Manage Autocompletion database" +msgstr "Управление базой автозаполнения" + +#: extra/autocompletionUsers/wx_manage.py:12 +#, fuzzy, python-brace-format +msgid "Editing {0} users database" +msgstr "Редактирование базы данных {0} " + +#: extra/autocompletionUsers/wx_manage.py:13 +#, fuzzy +msgid "Username" +msgstr "Пользователь" + +#: extra/autocompletionUsers/wx_manage.py:13 wxUI/dialogs/configuration.py:108 +msgid "Name" +msgstr "Имя" + +#: extra/autocompletionUsers/wx_manage.py:16 +#, fuzzy +msgid "Add user" +msgstr "Пользователь" + +#: extra/autocompletionUsers/wx_manage.py:17 +#, fuzzy +msgid "Remove user" +msgstr "Удалить пользователя" + +#: extra/autocompletionUsers/wx_manage.py:38 +msgid "Twitter username" +msgstr "" + +#: extra/autocompletionUsers/wx_manage.py:38 +msgid "Add user to database" +msgstr "" + +#: extra/autocompletionUsers/wx_manage.py:44 +#, fuzzy +msgid "The user does not exist" +msgstr "Пользователь не существует" + +#: extra/autocompletionUsers/wx_manage.py:44 +#, fuzzy +msgid "Error!" +msgstr "Ошибка" + +#: extra/autocompletionUsers/mastodon/scan.py:49 +msgid "" +"Updating database... You can close this window now. A message will tell " +"you when the process finishes." +msgstr "" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:8 +#, fuzzy +msgid "Autocomplete users' settings" +msgstr "&Автозаполнение пользователей" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:11 +msgid "Add &followers to database" +msgstr "" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:12 +msgid "Add f&ollowing to database" +msgstr "" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:26 +#, fuzzy +msgid "Updating autocompletion database" +msgstr "Управление базой автозаполнения" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:34 +msgid "" +"This process will retrieve the users you selected from your Mastodon " +"account, and add them to the user autocomplete database. Please note that" +" if there are many users or you have tried to perform this action less " +"than 15 minutes ago, TWBlue may reach a limit in API calls when trying to" +" load the users into the database. If this happens, we will show you an " +"error, in which case you will have to try this process again in a few " +"minutes. If this process ends with no error, you will be redirected back " +"to the account settings dialog. Do you want to continue?" +msgstr "" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:34 +#: wxUI/commonMessageDialogs.py:20 +msgid "Attention" +msgstr "Внимание!" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:40 +#, python-brace-format +msgid "TWBlue has imported {} users successfully." +msgstr "" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:40 +#, fuzzy +msgid "Done" +msgstr "Готово" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:44 +msgid "Error adding users from Mastodon. Please try again in about 15 minutes." +msgstr "" + +#: extra/ocr/OCRSpace.py:7 +msgid "Detect automatically" +msgstr "Автоматическое определение" + +#: extra/ocr/OCRSpace.py:7 +msgid "Danish" +msgstr "Датский" + +#: extra/ocr/OCRSpace.py:7 +msgid "Dutch" +msgstr "Голландский" + +#: extra/ocr/OCRSpace.py:7 +msgid "English" +msgstr "Английский" + +#: extra/ocr/OCRSpace.py:7 +msgid "Finnish" +msgstr "Финский" + +#: extra/ocr/OCRSpace.py:7 +msgid "French" +msgstr "Французский" + +#: extra/ocr/OCRSpace.py:7 +msgid "German" +msgstr "Немецкий" + +#: extra/ocr/OCRSpace.py:7 +msgid "Hungarian" +msgstr "Венгерский" + +#: extra/ocr/OCRSpace.py:7 +msgid "Korean" +msgstr "Корейский" + +#: extra/ocr/OCRSpace.py:7 +msgid "Italian" +msgstr "Итальянский" + +#: extra/ocr/OCRSpace.py:7 +msgid "Japanese" +msgstr "Японский" + +#: extra/ocr/OCRSpace.py:7 +msgid "Polish" +msgstr "Польский" + +#: extra/ocr/OCRSpace.py:7 +msgid "Portuguese" +msgstr "Португальский" + +#: extra/ocr/OCRSpace.py:7 +msgid "Russian" +msgstr "Русский" + +#: extra/ocr/OCRSpace.py:7 +msgid "Spanish" +msgstr "Испанский" + +#: extra/ocr/OCRSpace.py:7 +msgid "Turkish" +msgstr "Турецкий" + +#: extra/translator/wx_ui.py:25 +msgid "Translate message" +msgstr "Перевести сообщение" + +#: extra/translator/wx_ui.py:29 +#, fuzzy +msgid "Translation engine" +msgstr "Переведено" + +#: extra/translator/wx_ui.py:32 +msgid "Target language" +msgstr "Язык перевода" + +#: keystrokeEditor/wx_ui.py:8 +msgid "Keystroke editor" +msgstr "Редактор горячих клавиш" + +#: keystrokeEditor/wx_ui.py:11 +msgid "Select a keystroke to edit" +msgstr "Выберите горячую клавишу для редактирования" + +#: keystrokeEditor/wx_ui.py:12 +#: wxUI/dialogs/mastodon/filters/manage_filters.py:18 +#: wxUI/dialogs/mastodon/userActions.py:9 +#: wxUI/dialogs/mastodon/userActions.py:18 +#: wxUI/dialogs/mastodon/userActions.py:19 +msgid "Action" +msgstr "Действие" + +#: keystrokeEditor/wx_ui.py:12 +msgid "Keystroke" +msgstr "Горячая клавиша" + +#: keystrokeEditor/wx_ui.py:17 +#: wxUI/dialogs/mastodon/filters/manage_filters.py:23 +#: wxUI/dialogs/userAliasDialogs.py:53 +msgid "Edit" +msgstr "Редактировать" + +#: keystrokeEditor/wx_ui.py:19 keystrokeEditor/wx_ui.py:49 +#, fuzzy +msgid "Undefine keystroke" +msgstr "Редактирование" + +#: keystrokeEditor/wx_ui.py:20 +msgid "Execute action" +msgstr "Действие" + +#: keystrokeEditor/wx_ui.py:21 wxUI/dialogs/userAliasDialogs.py:25 +msgid "Close" +msgstr "Закрыть" + +#: keystrokeEditor/wx_ui.py:41 +msgid "Undefined" +msgstr "" + +#: keystrokeEditor/wx_ui.py:49 +#, fuzzy +msgid "Are you sure you want to undefine this keystroke?" +msgstr "Вы желаете удалить этот список?" + +#: keystrokeEditor/wx_ui.py:53 +msgid "Editing keystroke" +msgstr "Редактирование" + +#: keystrokeEditor/wx_ui.py:56 +msgid "Control" +msgstr "Контрол" + +#: keystrokeEditor/wx_ui.py:57 +msgid "Alt" +msgstr "Альт" + +#: keystrokeEditor/wx_ui.py:58 +msgid "Shift" +msgstr "Шифт" + +#: keystrokeEditor/wx_ui.py:59 +msgid "Windows" +msgstr "Виндовс" + +#: keystrokeEditor/wx_ui.py:65 +msgid "Key" +msgstr "Клавиша" + +#: keystrokeEditor/wx_ui.py:70 wxUI/dialogs/find.py:21 +#: wxUI/dialogs/mastodon/showUserProfile.py:31 +#: wxUI/dialogs/userAliasDialogs.py:23 +msgid "OK" +msgstr "OK" + +#: keystrokeEditor/wx_ui.py:83 +msgid "You need to use the Windows key" +msgstr "Вы должны использовать клавишу \"виндовс\"" + +#: keystrokeEditor/wx_ui.py:83 keystrokeEditor/wx_ui.py:86 +msgid "Invalid keystroke" +msgstr "Неправильная комбинация клавиш" + +#: keystrokeEditor/wx_ui.py:86 +msgid "You must provide a character for the keystroke" +msgstr "Вы должны указать букву при создании горячей клавиши" + +#: keystrokeEditor/actions/mastodon.py:3 +msgid "Go up in the current buffer" +msgstr "Наверх в текущем буфере" + +#: keystrokeEditor/actions/mastodon.py:4 +msgid "Go down in the current buffer" +msgstr "Вниз в текущем буфере" + +#: keystrokeEditor/actions/mastodon.py:5 +msgid "Go to the previous buffer" +msgstr "Предыдущий буфер" + +#: keystrokeEditor/actions/mastodon.py:6 +msgid "Go to the next buffer" +msgstr "Следующий буфер" + +#: keystrokeEditor/actions/mastodon.py:7 +msgid "Focus the next session" +msgstr "Показать следующую сессию" + +#: keystrokeEditor/actions/mastodon.py:8 +msgid "Focus the previous session" +msgstr "Показать предыдущую сессию" + +#: keystrokeEditor/actions/mastodon.py:9 +msgid "Show or hide the GUI" +msgstr "Показать / скрыть интерфейс" + +# | msgid "Create a new list" +#: keystrokeEditor/actions/mastodon.py:10 +#, fuzzy +msgid "Make a new post" +msgstr "Создать новый список" + +#: keystrokeEditor/actions/mastodon.py:11 wxUI/buffers/mastodon/base.py:26 +#: wxUI/buffers/mastodon/conversationList.py:25 +msgid "Reply" +msgstr "Ответ" + +#: keystrokeEditor/actions/mastodon.py:12 wxUI/buffers/mastodon/base.py:25 +#: wxUI/dialogs/mastodon/dialogs.py:7 +msgid "Boost" +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:13 +msgid "Send direct message" +msgstr "Отправить личное сообщение" + +#: keystrokeEditor/actions/mastodon.py:14 +msgid "Add post to favorites" +msgstr "" + +# | msgid "Remove from list" +#: keystrokeEditor/actions/mastodon.py:15 +#, fuzzy +msgid "Remove post from favorites" +msgstr "Удалить из списка" + +#: keystrokeEditor/actions/mastodon.py:16 +msgid "Add/remove post from favorites" +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:17 +msgid "Open the user actions dialogue" +msgstr "Открыть меню действий" + +#: keystrokeEditor/actions/mastodon.py:18 +#, fuzzy +msgid "See user details" +msgstr "Удалить пользователя" + +# | msgid "Show tweet" +#: keystrokeEditor/actions/mastodon.py:19 +#, fuzzy +msgid "Show post" +msgstr "Показать твит" + +#: keystrokeEditor/actions/mastodon.py:20 +msgid "Quit" +msgstr "Выход" + +#: keystrokeEditor/actions/mastodon.py:21 +msgid "Open user timeline" +msgstr "Открыть ленту пользователя" + +#: keystrokeEditor/actions/mastodon.py:22 +msgid "Destroy buffer" +msgstr "Удалить буфер" + +# | msgid "Interact with the currently focused tweet." +#: keystrokeEditor/actions/mastodon.py:23 +#, fuzzy +msgid "Interact with the currently focused post." +msgstr "Работать с твитом в фокусе" + +#: keystrokeEditor/actions/mastodon.py:24 +msgid "Open URL" +msgstr "Открыть ссылку" + +# | msgid "View in Twitter" +#: keystrokeEditor/actions/mastodon.py:25 +#, fuzzy +msgid "View in browser" +msgstr "Посмотреть в Твиттере" + +#: keystrokeEditor/actions/mastodon.py:26 +msgid "Increase volume by 5%" +msgstr "Увеличить громкость на 5%" + +#: keystrokeEditor/actions/mastodon.py:27 +msgid "Decrease volume by 5%" +msgstr "Уменьшить громкость на 5%" + +#: keystrokeEditor/actions/mastodon.py:28 +msgid "Jump to the first element of a buffer" +msgstr "Перейти к первому элементу" + +#: keystrokeEditor/actions/mastodon.py:29 +msgid "Jump to the last element of the current buffer" +msgstr "Перейти к последнему элементу" + +#: keystrokeEditor/actions/mastodon.py:30 +msgid "Jump 20 elements up in the current buffer" +msgstr "Перейти на 20 элементов вверх" + +#: keystrokeEditor/actions/mastodon.py:31 +msgid "Jump 20 elements down in the current buffer" +msgstr "Перейти на 20 элементов вниз" + +# | msgid "Delete" +#: keystrokeEditor/actions/mastodon.py:33 +#, fuzzy +msgid "Delete post" +msgstr "Удалить" + +#: keystrokeEditor/actions/mastodon.py:34 +msgid "Empty the current buffer" +msgstr "Очистить этот буфер" + +#: keystrokeEditor/actions/mastodon.py:35 +msgid "Repeat last item" +msgstr "Повторить последний элемент" + +#: keystrokeEditor/actions/mastodon.py:36 +msgid "Copy to clipboard" +msgstr "Скопировать в буфер обмена" + +#: keystrokeEditor/actions/mastodon.py:39 +msgid "Mute/unmute the active buffer" +msgstr "Отключение / включение звука в текущем буфере" + +#: keystrokeEditor/actions/mastodon.py:40 +msgid "Mute/unmute the current session" +msgstr "Выключить/включить звуки сессии" + +#: keystrokeEditor/actions/mastodon.py:41 +msgid "toggle the automatic reading of incoming tweets in the active buffer" +msgstr "Включить / отключить авточтение твитов в текущем буфере" + +# | msgid "Search on twitter" +#: keystrokeEditor/actions/mastodon.py:42 +#, fuzzy +msgid "Search on instance" +msgstr "Искать в твиттере" + +#: keystrokeEditor/actions/mastodon.py:43 +msgid "Find a string in the currently focused buffer" +msgstr "Найти строку в буфере" + +#: keystrokeEditor/actions/mastodon.py:44 +msgid "Show the keystroke editor" +msgstr "Показать редактор горячих клавиш" + +#: keystrokeEditor/actions/mastodon.py:46 +msgid "load previous items" +msgstr "Загрузить предыдущие элементы" + +#: keystrokeEditor/actions/mastodon.py:48 +msgid "View conversation" +msgstr "Просмотр беседы" + +#: keystrokeEditor/actions/mastodon.py:49 +msgid "Check and download updates" +msgstr "Проверить наличие обновлений" + +#: keystrokeEditor/actions/mastodon.py:50 +msgid "Opens the global settings dialogue" +msgstr "Открыть основные настройки" + +#: keystrokeEditor/actions/mastodon.py:52 +msgid "Opens the account settings dialogue" +msgstr "Открыть настройки аккаунта" + +# | msgid "Try to play an audio file" +#: keystrokeEditor/actions/mastodon.py:53 +#, fuzzy +msgid "Try to play a media file" +msgstr "Попытка воспроизведения аудио" + +#: keystrokeEditor/actions/mastodon.py:54 +msgid "Updates the buffer and retrieves possible lost items there." +msgstr "Обновить буфер и загрузить возможно утерянные элементы." + +#: keystrokeEditor/actions/mastodon.py:55 +msgid "Extracts the text from a picture and displays the result in a dialog." +msgstr "" +"Распознать текст, представленный на изображении, и отобразить результат в" +" окне." + +#: keystrokeEditor/actions/mastodon.py:56 +#, fuzzy +msgid "Adds an alias to an user" +msgstr "В какой список вы хотите добавить пользователя?" + +#: sessionmanager/sessionManager.py:69 +#, python-brace-format +msgid "{account_name}@{instance} (Mastodon)" +msgstr "" + +#: sessionmanager/wxUI.py:11 +msgid "Session manager" +msgstr "Управление сессиями" + +#: sessionmanager/wxUI.py:14 +msgid "Accounts list" +msgstr "Список аккаунтов" + +#: sessionmanager/wxUI.py:16 +msgid "Account" +msgstr "Аккаунт" + +#: sessionmanager/wxUI.py:20 +msgid "New account" +msgstr "Добавить аккаунт" + +#: sessionmanager/wxUI.py:22 sessionmanager/wxUI.py:79 +msgid "Remove account" +msgstr "Удалить аккаунт" + +#: sessionmanager/wxUI.py:24 +msgid "Global Settings" +msgstr "Основные настройки" + +#: sessionmanager/wxUI.py:48 +msgid "You need to configure an account." +msgstr "Вам нужно настроить учетную запись." + +#: sessionmanager/wxUI.py:48 +msgid "Account Error" +msgstr "Ошибка при создании аккаунта" + +#: sessionmanager/wxUI.py:54 +msgid "Mastodon" +msgstr "" + +#: sessionmanager/wxUI.py:59 +msgid "" +"You will be prompted for your Mastodon data (instance URL, email address " +"and password) so we can authorise TWBlue in your instance. Would you like" +" to authorise your account now?" +msgstr "" + +#: sessionmanager/wxUI.py:59 +msgid "Authorization" +msgstr "Авторизация" + +#: sessionmanager/wxUI.py:67 +#, python-format +msgid "Authorized account %d" +msgstr "Авторизованный аккаунт %d" + +#: sessionmanager/wxUI.py:73 +msgid "" +"Your access token is invalid or the authorization has failed. Please try " +"again." +msgstr "Не удалось получить разрешение на доступ. Попробуйте, пожалуйста, ещё раз." + +#: sessionmanager/wxUI.py:73 +msgid "Invalid user token" +msgstr "Неверный маркер" + +#: sessionmanager/wxUI.py:79 +msgid "Do you really want to delete this account?" +msgstr "Вы желаете удалить этот аккаунт?" + +#: sessions/base.py:125 +#, python-brace-format +msgid "" +"An exception occurred while saving the {app} database. It will be deleted" +" and rebuilt automatically. If this error persists, send the error log to" +" the {app} developers." +msgstr "" + +#: sessions/base.py:165 +#, python-brace-format +msgid "" +"An exception occurred while loading the {app} database. It will be " +"deleted and rebuilt automatically. If this error persists, send the error" +" log to the {app} developers." +msgstr "" + +# | msgid "dddd, MMMM D, YYYY H:m:s" +#: sessions/mastodon/compose.py:15 sessions/mastodon/compose.py:61 +#, fuzzy +msgid "dddd, MMMM D, YYYY H:m" +msgstr "dddd, MMMM D, YYYY H:m:s" + +# | msgid "{0}. Quoted tweet from @{1}: {2}" +#: sessions/mastodon/compose.py:17 sessions/mastodon/templates.py:74 +#: sessions/mastodon/templates.py:75 +#, fuzzy, python-brace-format +msgid "Boosted from @{}: {}" +msgstr "{0}. Процитированный твит от @{1}: {2}" + +#: sessions/mastodon/compose.py:22 sessions/mastodon/compose.py:81 +#: sessions/mastodon/templates.py:81 sessions/mastodon/templates.py:176 +#, python-brace-format +msgid "hidden by filter {}" +msgstr "" + +#: sessions/mastodon/compose.py:36 sessions/mastodon/templates.py:28 +msgid "dddd, MMMM D, YYYY H:m:s" +msgstr "dddd, MMMM D, YYYY H:m:s" + +# | msgid "" +# | "%s (@%s). %s followers, %s friends, %s tweets. Last tweeted %s. Joined " +# | "Twitter %s" +#: sessions/mastodon/compose.py:38 +#, fuzzy, python-format +msgid "%s (@%s). %s followers, %s following, %s posts. Joined %s" +msgstr "" +"%s (@%s). %s читателей, %s читаемых, %s твитов. Последний твит был %s. " +"Регистрация в Twitterе %s" + +#: sessions/mastodon/compose.py:49 +#, python-brace-format +msgid "Last message from {}: {}" +msgstr "" + +# | msgid "{username}'s followers" +#: sessions/mastodon/compose.py:64 +#, fuzzy, python-brace-format +msgid "{username} has posted: {status}" +msgstr "Читающие {username}" + +# | msgid "{username}'s followers" +#: sessions/mastodon/compose.py:66 +#, fuzzy, python-brace-format +msgid "{username} has mentioned you: {status}" +msgstr "Читающие {username}" + +#: sessions/mastodon/compose.py:68 +#, python-brace-format +msgid "{username} has boosted: {status}" +msgstr "" + +#: sessions/mastodon/compose.py:70 +#, python-brace-format +msgid "{username} has added to favorites: {status}" +msgstr "" + +# | msgid "{username}'s followers" +#: sessions/mastodon/compose.py:72 +#, fuzzy, python-brace-format +msgid "{username} has followed you." +msgstr "Читающие {username}" + +# | msgid "{username}'s followers" +#: sessions/mastodon/compose.py:74 +#, fuzzy, python-brace-format +msgid "{username} has joined the instance." +msgstr "Читающие {username}" + +#: sessions/mastodon/compose.py:76 sessions/mastodon/templates.py:171 +#, python-brace-format +msgid "A poll in which you have voted has expired: {status}" +msgstr "" + +# | msgid "{username}'s followers" +#: sessions/mastodon/compose.py:78 +#, fuzzy, python-brace-format +msgid "{username} wants to follow you." +msgstr "Читающие {username}" + +#: sessions/mastodon/session.py:69 +msgid "Please enter your instance URL." +msgstr "" + +#: sessions/mastodon/session.py:69 +msgid "Mastodon instance" +msgstr "" + +#: sessions/mastodon/session.py:80 +msgid "" +"We could not connect to your mastodon instance. Please verify that the " +"domain exists and the instance is accessible via a web browser." +msgstr "" + +# | msgid "&Report an error" +#: sessions/mastodon/session.py:80 +#, fuzzy +msgid "Instance error" +msgstr "&Сообщить об ошибке" + +#: sessions/mastodon/session.py:85 +msgid "Enter the verification code" +msgstr "" + +# | msgid "Authorization" +#: sessions/mastodon/session.py:85 +#, fuzzy +msgid "PIN code authorization" +msgstr "Авторизация" + +#: sessions/mastodon/session.py:94 +msgid "" +"We could not authorice your mastodon account to be used in TWBlue. This " +"might be caused due to an incorrect verification code. Please try to add " +"the session again." +msgstr "" + +# | msgid "Authorization" +#: sessions/mastodon/session.py:94 +#, fuzzy +msgid "Authorization error" +msgstr "Авторизация" + +#: sessions/mastodon/session.py:215 +#, python-format +msgid "%s succeeded." +msgstr "%s успешно." + +#: sessions/mastodon/templates.py:18 +msgid "$display_name, $text $image_descriptions $date. $source" +msgstr "" + +#: sessions/mastodon/templates.py:19 +msgid "Dm to $recipient_display_name, $text $date" +msgstr "" + +#: sessions/mastodon/templates.py:20 +msgid "" +"$display_name (@$screen_name). $followers followers, $following " +"following, $posts posts. Joined $created_at." +msgstr "" + +#: sessions/mastodon/templates.py:21 +msgid "$display_name $text, $date" +msgstr "" + +#: sessions/mastodon/templates.py:34 +#, python-brace-format +msgid "Content warning: {}" +msgstr "" + +#: sessions/mastodon/templates.py:45 +#, fuzzy, python-brace-format +msgid "Media description: {}" +msgstr "Описание" + +# | msgid "Followers" +#: sessions/mastodon/templates.py:82 wxUI/dialogs/mastodon/postDialogs.py:49 +#, fuzzy +msgid "Followers only" +msgstr "Читающие" + +#: sessions/mastodon/templates.py:94 +#, fuzzy +msgid "Pinned." +msgstr "Скопировано" + +#: sessions/mastodon/templates.py:157 +#, python-brace-format +msgid "has posted: {status}" +msgstr "" + +#: sessions/mastodon/templates.py:159 +#, python-brace-format +msgid "has mentioned you: {status}" +msgstr "" + +#: sessions/mastodon/templates.py:161 +#, python-brace-format +msgid "has boosted: {status}" +msgstr "" + +#: sessions/mastodon/templates.py:163 +#, python-brace-format +msgid "has added to favorites: {status}" +msgstr "" + +#: sessions/mastodon/templates.py:165 +#, python-brace-format +msgid "has updated a status: {status}" +msgstr "" + +# | msgid "{0} is following you." +#: sessions/mastodon/templates.py:167 +#, fuzzy +msgid "has followed you." +msgstr "{0} читает вас." + +# | msgid "Remove client" +#: sessions/mastodon/templates.py:169 +#, fuzzy +msgid "has joined the instance." +msgstr "Удалить клиент" + +# | msgid "{0} is following you." +#: sessions/mastodon/templates.py:173 +#, fuzzy +msgid "wants to follow you." +msgstr "{0} читает вас." + +#: update/utils.py:29 +#, python-format +msgid "%d day, " +msgstr "%d день" + +#: update/utils.py:31 +#, python-format +msgid "%d days, " +msgstr "%d дней" + +#: update/utils.py:33 +#, python-format +msgid "%d hour, " +msgstr "%d час" + +#: update/utils.py:35 +#, python-format +msgid "%d hours, " +msgstr "%d часов" + +#: update/utils.py:37 +#, python-format +msgid "%d minute, " +msgstr "%d минута" + +#: update/utils.py:39 +#, python-format +msgid "%d minutes, " +msgstr "%d минут" + +#: update/utils.py:41 +#, python-format +msgid "%s second" +msgstr "%s секунда" + +#: update/utils.py:43 +#, python-format +msgid "%s seconds" +msgstr "%s секунд" + +#: update/wxUpdater.py:11 +#, python-format +msgid "" +"There's a new %s version available, released on %s. Would you like to " +"download it now?\n" +"\n" +" %s version: %s\n" +"\n" +"Changes:\n" +"%s" +msgstr "" +"Доступна новая версия клиента %s, дата выхода - %s. Хотите загрузить её?" +"\n" +"\n" +"\n" +" Версия %s: %s\n" +"\n" +"Изменения:\n" +"%s" + +# | msgid "" +# | "There's a new %s version available, released on %s. Would you like to " +# | "download it now?\n" +# | "\n" +# | " %s version: %s\n" +# | "Changes:\n" +# | "%s" +#: update/wxUpdater.py:14 +#, fuzzy, python-format +msgid "" +"There's a new %s version available, released on %s. Updates are not " +"automatic in Windows 7, so you would need to visit TWBlue's download " +"website to get the latest version.\n" +"\n" +" %s version: %s\n" +"\n" +"Changes:\n" +"%s" +msgstr "" +"Доступна новая версия клиента %s, дата выхода - %s. Хотите загрузить её?" +"\n" +"\n" +"\n" +" Версия %s: %s\n" +"\n" +"Изменения:\n" +"%s" + +#: update/wxUpdater.py:16 +#, python-format +msgid "New version for %s" +msgstr "Новая версия %s" + +#: update/wxUpdater.py:23 +msgid "Download in Progress" +msgstr "Загрузка" + +#: update/wxUpdater.py:23 +msgid "Downloading the new version..." +msgstr "Обновление загружается" + +#: update/wxUpdater.py:33 +#, python-format +msgid "Updating... %s of %s" +msgstr "Обновлено... %s из %s" + +#: update/wxUpdater.py:36 +msgid "" +"The update has been downloaded and installed successfully. Press OK to " +"continue." +msgstr "Обновление загружено и установлено. Нажмите ok, чтобы продолжить." + +#: update/wxUpdater.py:36 +msgid "Done!" +msgstr "Готово" + +#: wxUI/commonMessageDialogs.py:6 +#, python-brace-format +msgid "Do you really want to close {0}?" +msgstr "Вы действительно хотите закрыть {0}?" + +#: wxUI/commonMessageDialogs.py:6 +msgid "Exit" +msgstr "Выйти" + +#: wxUI/commonMessageDialogs.py:10 +#, python-brace-format +msgid " {0} must be restarted for these changes to take effect." +msgstr " {0} должен быть перезапущен, чтобы изменения вступили в силу." + +#: wxUI/commonMessageDialogs.py:10 +#, python-brace-format +msgid "Restart {0} " +msgstr "Перезагрузка {0} " + +#: wxUI/commonMessageDialogs.py:13 +msgid "" +"Are you sure you want to delete this user from the database? This user " +"will not appear in autocomplete results anymore." +msgstr "" +"Вы уверены, что хотите удалить этого пользователя из базы данных? Он " +"больше не появится в списке автозаполнения." + +#: wxUI/commonMessageDialogs.py:13 +msgid "Confirm" +msgstr "Подтвердить" + +#: wxUI/commonMessageDialogs.py:16 +msgid "" +"Do you really want to empty this buffer? It's items will be removed from" +" the list but not from Twitter" +msgstr "" +"Вы действительно хотите очистить этот буфер? Твиты останутся на сервере, " +"но будут удалены из списка." + +#: wxUI/commonMessageDialogs.py:16 wxUI/dialogs/mastodon/dialogs.py:31 +msgid "Empty buffer" +msgstr "Пустой буфер" + +#: wxUI/commonMessageDialogs.py:20 +msgid "Do you really want to destroy this buffer?" +msgstr "Вы действительно хотите удалить этот буфер?" + +#: wxUI/commonMessageDialogs.py:23 +msgid "That user does not exist" +msgstr "Пользователь не существует" + +#: wxUI/commonMessageDialogs.py:26 +msgid "A timeline for this user already exists. You can't open another" +msgstr "Лента пользователя уже существует. Невозможно открыть еще одну." + +#: wxUI/commonMessageDialogs.py:26 +msgid "Existing timeline" +msgstr "Существующая лента" + +#: wxUI/commonMessageDialogs.py:29 +#, python-brace-format +msgid "" +"If you like {0} we need your help to keep it going. Help us by donating " +"to the project. This will help us pay for the server, the domain and some" +" other things to ensure that {0} will be actively maintained. Your " +"donation will give us the means to continue the development of {0}, and " +"to keep {0} free. Would you like to donate now?" +msgstr "" +"Если вам нравится {0}, помогите нам в его развитии. Внесите пожертвование" +" для проекта. Это поможет нам оплачивать сервер, домен и другие расходы " +"по поддержанию {0}. Благодаря вашему пожертвованию, у нас будут средства " +"на развитие {0}, и {0} сможет оставаться бесплатным. Хотите внести " +"пожертвование сейчас?" + +#: wxUI/commonMessageDialogs.py:29 +msgid "We need your help" +msgstr "Нам нужна ваша помощь" + +#: wxUI/commonMessageDialogs.py:33 wxUI/dialogs/mastodon/postDialogs.py:207 +msgid "Information" +msgstr "Информация " + +#: wxUI/commonMessageDialogs.py:36 +msgid "The configuration file is invalid." +msgstr "" + +#: wxUI/commonMessageDialogs.py:39 +#, python-brace-format +msgid "" +"{0} quit unexpectedly the last time it was run. If the problem persists, " +"please report it to the {0} developers." +msgstr "" +"{0} неожиданно закончил свою работу при последнем запуске. Если проблема " +"не устранена, пожалуйста, сообщите об этом разработчикам {0}." + +#: wxUI/commonMessageDialogs.py:39 +msgid "Warning" +msgstr "Внимание!" + +#: wxUI/commonMessageDialogs.py:45 +#, python-brace-format +msgid "Sorry, you can't update while running {} from source." +msgstr "" + +#: wxUI/commonMessageDialogs.py:49 +msgid "the provided instance is invalid. Please try again." +msgstr "" + +#: wxUI/commonMessageDialogs.py:49 +#, fuzzy +msgid "Invalid instance" +msgstr "Неправильная комбинация клавиш" + +#: wxUI/commonMessageDialogs.py:52 +msgid "" +"TWBlue was unable to add or update the filter with the specified " +"settings. Please try again." +msgstr "" + +#: wxUI/commonMessageDialogs.py:55 +msgid "" +"TWBlue was unable to load your filters from the instance. Please try " +"again." +msgstr "" + +#: wxUI/commonMessageDialogs.py:58 +#, fuzzy +msgid "Do you really want to delete this filter ?" +msgstr "Вы желаете удалить этот аккаунт?" + +#: wxUI/commonMessageDialogs.py:58 +#, fuzzy +msgid "Delete filter" +msgstr "Создать новый фильтр" + +#: wxUI/commonMessageDialogs.py:61 +msgid "TWBlue was unable to remove the filter you specified. Please try again." +msgstr "" + +#: wxUI/sysTrayIcon.py:36 wxUI/view.py:25 +msgid "&Global settings" +msgstr "Основные настройки" + +#: wxUI/sysTrayIcon.py:37 wxUI/view.py:24 +msgid "Account se&ttings" +msgstr "Настройки учётной записи" + +#: wxUI/sysTrayIcon.py:39 +msgid "&Show / hide" +msgstr "Показать / скрыть" + +#: wxUI/sysTrayIcon.py:40 wxUI/view.py:74 +msgid "&Documentation" +msgstr "&Документация" + +#: wxUI/sysTrayIcon.py:41 +msgid "Check for &updates" +msgstr "Проверить обновления" + +#: wxUI/sysTrayIcon.py:42 +msgid "&Exit" +msgstr "Выход" + +#: wxUI/view.py:16 +msgid "&Manage accounts" +msgstr "Управление аккаунтами" + +#: wxUI/view.py:17 +msgid "&Update profile" +msgstr "&Обновить профиль" + +#: wxUI/view.py:18 +msgid "&Hide window" +msgstr "& Скрыть окно " + +#: wxUI/view.py:20 +msgid "&Lists manager" +msgstr "&Менеджер списков" + +#: wxUI/view.py:23 +msgid "&Edit keystrokes" +msgstr "&Редактировать горячие клавиши" + +#: wxUI/view.py:26 +msgid "E&xit" +msgstr "Вы&ход" + +# | msgid "Remove from list" +#: wxUI/view.py:34 +#, fuzzy +msgid "&Remove from favorites" +msgstr "Удалить из списка" + +#: wxUI/view.py:47 +msgid "&Add to list" +msgstr "&Добавить в список" + +#: wxUI/view.py:48 +msgid "R&emove from list" +msgstr "&Удалить из списка" + +#: wxUI/view.py:49 +msgid "Show user &profile" +msgstr "&Показать профиль пользователя" + +#: wxUI/view.py:50 +msgid "V&iew likes" +msgstr "Просмотреть Понравившиеся" + +#: wxUI/view.py:54 +msgid "&Update buffer" +msgstr "Обновить буфер" + +#: wxUI/dialogs/mastodon/communityTimeline.py:9 wxUI/view.py:55 +msgid "Create community timeline" +msgstr "" + +#: wxUI/view.py:56 +msgid "New &trending topics buffer..." +msgstr "Новый буфер для трендов" + +#: wxUI/view.py:59 +msgid "Find a string in the currently focused buffer..." +msgstr "Найти строку в этом буфере" + +#: wxUI/view.py:60 +msgid "&Load previous items" +msgstr "&Загрузить предыдущие элементы" + +#: wxUI/dialogs/mastodon/userActions.py:21 wxUI/view.py:62 +msgid "&Mute" +msgstr "&Отключить" + +#: wxUI/view.py:63 +msgid "&Autoread" +msgstr "Авточтение" + +#: wxUI/view.py:64 +msgid "&Clear buffer" +msgstr "&Очистить буфер" + +#: wxUI/view.py:65 +msgid "&Destroy" +msgstr "Закрыть и удалить" + +#: wxUI/view.py:69 +msgid "&Seek back 5 seconds" +msgstr "&Перемотать назад на 5 секунд" + +#: wxUI/view.py:70 +msgid "&Seek forward 5 seconds" +msgstr "Пер&емотать вперёд на 5 секунд" + +#: wxUI/view.py:75 +msgid "Sounds &tutorial" +msgstr "&Гид по звукам" + +#: wxUI/view.py:76 +msgid "&What's new in this version?" +msgstr "&Что нового в этой версии?" + +#: wxUI/view.py:77 +msgid "&Check for updates" +msgstr "&Проверить обновления" + +#: wxUI/view.py:78 +msgid "&Report an error" +msgstr "&Сообщить об ошибке" + +#: wxUI/view.py:79 +#, python-brace-format +msgid "{0}'s &website" +msgstr "Сайт {0}" + +#: wxUI/view.py:80 +msgid "Get soundpacks for TWBlue" +msgstr "Получить звуковые схемы для TWBlue" + +#: wxUI/view.py:81 +#, python-brace-format +msgid "About &{0}" +msgstr "О &{0}" + +#: wxUI/view.py:84 +msgid "&Application" +msgstr "&Приложение" + +#: wxUI/view.py:85 +msgid "&Tweet" +msgstr "&Твит" + +#: wxUI/dialogs/mastodon/userActions.py:10 wxUI/view.py:86 +msgid "&User" +msgstr "&Пользователь" + +#: wxUI/view.py:87 +msgid "&Buffer" +msgstr "&Буфер" + +#: wxUI/view.py:88 +msgid "&Audio" +msgstr "&Аудио" + +#: wxUI/view.py:89 +msgid "&Help" +msgstr "&Помощь" + +#: wxUI/view.py:175 +msgid "Address" +msgstr "Адрес" + +#: wxUI/view.py:206 +#, python-brace-format +msgid "Your {0} version is up to date" +msgstr "У вас установлена самая последняя версия {0} " + +#: wxUI/view.py:206 +msgid "Update" +msgstr "Обновление" + +#: wxUI/buffers/panels.py:12 wxUI/buffers/panels.py:20 +msgid "Login" +msgstr "Войти в выбранную учётную запись" + +#: wxUI/buffers/panels.py:14 +msgid "Log in automatically" +msgstr "Входить автоматически" + +#: wxUI/buffers/panels.py:22 +msgid "Logout" +msgstr "Выйти из учётной записи" + +#: wxUI/buffers/mastodon/base.py:11 +#: wxUI/buffers/mastodon/conversationList.py:11 wxUI/buffers/mastodon/user.py:8 +#: wxUI/dialogs/mastodon/userTimeline.py:10 wxUI/dialogs/userAliasDialogs.py:14 +msgid "User" +msgstr "Пользователь" + +#: wxUI/buffers/mastodon/base.py:11 +#: wxUI/buffers/mastodon/conversationList.py:11 +#: wxUI/buffers/mastodon/notifications.py:11 +#: wxUI/dialogs/mastodon/postDialogs.py:37 +#: wxUI/dialogs/mastodon/postDialogs.py:272 +msgid "Text" +msgstr "Текст" + +#: wxUI/buffers/mastodon/base.py:11 +#: wxUI/buffers/mastodon/conversationList.py:11 +#: wxUI/buffers/mastodon/notifications.py:11 +#: wxUI/dialogs/mastodon/postDialogs.py:216 +msgid "Date" +msgstr "Дата" + +#: wxUI/buffers/mastodon/base.py:11 +#: wxUI/buffers/mastodon/conversationList.py:11 +msgid "Client" +msgstr "Клиент" + +#: wxUI/buffers/mastodon/base.py:27 +msgid "Favorite" +msgstr "" + +#: wxUI/buffers/mastodon/base.py:28 +msgid "Bookmark" +msgstr "" + +#: wxUI/buffers/mastodon/base.py:29 +msgid "Direct message" +msgstr "Личное сообщение" + +#: wxUI/buffers/mastodon/notifications.py:23 +#: wxUI/dialogs/mastodon/dialogs.py:23 +msgid "Dismiss" +msgstr "" + +#: wxUI/buffers/mastodon/user.py:19 wxUI/dialogs/userAliasDialogs.py:48 +#, fuzzy +msgid "Actions" +msgstr "Действие" + +# | msgid "Direct Messages" +#: wxUI/buffers/mastodon/user.py:20 +#, fuzzy +msgid "Message" +msgstr "Личные сообщения" + +#: wxUI/dialogs/configuration.py:15 +#, fuzzy +msgid "&Language" +msgstr "Язык" + +#: wxUI/dialogs/configuration.py:22 +#, fuzzy, python-brace-format +msgid "&Ask before exiting {0}" +msgstr "Показывать диалог перед выходом {0}" + +#: wxUI/dialogs/configuration.py:24 +#, fuzzy +msgid "&Disable Streaming functions" +msgstr "Отключение Стриминга" + +#: wxUI/dialogs/configuration.py:27 +#, fuzzy +msgid "&Buffer update interval, in minutes" +msgstr "Интервал обновления буфера, в минутах" + +#: wxUI/dialogs/configuration.py:33 +#, fuzzy, python-brace-format +msgid "Pla&y a sound when {0} launches" +msgstr "Воспроизводить звук при запуске {0}" + +#: wxUI/dialogs/configuration.py:35 +#, fuzzy, python-brace-format +msgid "Sp&eak a message when {0} launches" +msgstr "Произносить приветствие при запуске {0}" + +#: wxUI/dialogs/configuration.py:37 +#, fuzzy +msgid "&Use invisible interface's keyboard shortcuts while GUI is visible" +msgstr "Использовать горячие клавиши невидимого интерфейса в окне программы" + +#: wxUI/dialogs/configuration.py:39 +#, fuzzy +msgid "A&ctivate Sapi5 when any other screen reader is not being run" +msgstr "Активировать sapi5, когда не один скринридер не запущен" + +#: wxUI/dialogs/configuration.py:41 +#, fuzzy +msgid "&Hide GUI on launch" +msgstr "Скрывать интерфейс при старте" + +#: wxUI/dialogs/configuration.py:43 +msgid "&Read long posts in GUI" +msgstr "" + +#: wxUI/dialogs/configuration.py:46 +#, fuzzy +msgid "&Keymap" +msgstr "Клавиатурные команды" + +#: wxUI/dialogs/configuration.py:51 +#, fuzzy, python-brace-format +msgid "Check for u&pdates when {0} launches" +msgstr "Проверять на наличие обновлений при запуске {0}" + +#: wxUI/dialogs/configuration.py:61 +#, fuzzy +msgid "Proxy &type: " +msgstr "Тип Прокси: " + +#: wxUI/dialogs/configuration.py:68 +#, fuzzy +msgid "Proxy s&erver: " +msgstr "Прокси-сервер: " + +#: wxUI/dialogs/configuration.py:74 +#, fuzzy +msgid "&Port: " +msgstr "Порт: " + +#: wxUI/dialogs/configuration.py:80 +#, fuzzy +msgid "&User: " +msgstr "Пользователь: " + +#: wxUI/dialogs/configuration.py:86 +#, fuzzy +msgid "P&assword: " +msgstr "Пароль: " + +#: wxUI/dialogs/configuration.py:98 +#, fuzzy +msgid "Enable automatic s&peech feedback" +msgstr "Включить автоматический речевой вывод" + +#: wxUI/dialogs/configuration.py:100 +#, fuzzy +msgid "Enable automatic &Braille feedback" +msgstr "Включить автоматический брайлевский вывод" + +#: wxUI/dialogs/configuration.py:108 +msgid "Buffer" +msgstr "Буфер" + +#: wxUI/dialogs/configuration.py:108 +msgid "Status" +msgstr "Статус" + +#: wxUI/dialogs/configuration.py:111 +#, fuzzy +msgid "S&how/hide" +msgstr "Показать/скрыть" + +#: wxUI/dialogs/configuration.py:112 +#, fuzzy +msgid "Move &up" +msgstr "Вверх" + +#: wxUI/dialogs/configuration.py:113 +#, fuzzy +msgid "Move &down" +msgstr "Вниз" + +#: wxUI/dialogs/configuration.py:123 wxUI/dialogs/configuration.py:188 +#: wxUI/dialogs/configuration.py:191 wxUI/dialogs/configuration.py:196 +msgid "Show" +msgstr "Показывается" + +#: wxUI/dialogs/configuration.py:125 wxUI/dialogs/configuration.py:135 +#: wxUI/dialogs/configuration.py:159 wxUI/dialogs/configuration.py:189 +msgid "Hide" +msgstr "Скрыт" + +#: wxUI/dialogs/configuration.py:133 wxUI/dialogs/configuration.py:157 +msgid "Select a buffer first." +msgstr "Сначала выберите буфер" + +#: wxUI/dialogs/configuration.py:136 wxUI/dialogs/configuration.py:160 +msgid "The buffer is hidden, show it first." +msgstr "Буфер скрыт, но его можно показать." + +#: wxUI/dialogs/configuration.py:139 +msgid "The buffer is already at the top of the list." +msgstr "Буфер находится наверху списка." + +#: wxUI/dialogs/configuration.py:163 +msgid "The buffer is already at the bottom of the list." +msgstr "Буфер находится на последней позиции в списке" + +#: wxUI/dialogs/configuration.py:205 +msgid "&LibreTranslate API URL: " +msgstr "" + +#: wxUI/dialogs/configuration.py:211 +msgid "LibreTranslate API &Key (optional): " +msgstr "" + +#: wxUI/dialogs/configuration.py:217 +msgid "&DeepL API Key: " +msgstr "" + +#: wxUI/dialogs/configuration.py:231 +#, python-brace-format +msgid "{0} preferences" +msgstr "Параметры {0}" + +#: wxUI/dialogs/configuration.py:237 wxUI/dialogs/mastodon/configuration.py:144 +msgid "General" +msgstr "Общие" + +#: wxUI/dialogs/configuration.py:242 +msgid "Proxy" +msgstr "Прокси" + +#: wxUI/dialogs/configuration.py:246 +#, fuzzy +msgid "Translation services" +msgstr "Переведено" + +#: wxUI/dialogs/configuration.py:251 wxUI/dialogs/mastodon/configuration.py:170 +#, fuzzy +msgid "&Save" +msgstr "Сохранить" + +#: wxUI/dialogs/configuration.py:253 +#: wxUI/dialogs/mastodon/communityTimeline.py:27 +#: wxUI/dialogs/mastodon/configuration.py:172 +#: wxUI/dialogs/mastodon/search.py:26 +#: wxUI/dialogs/mastodon/showUserProfile.py:170 +#: wxUI/dialogs/mastodon/updateProfile.py:132 +#: wxUI/dialogs/mastodon/userActions.py:38 +#: wxUI/dialogs/mastodon/userTimeline.py:32 +msgid "&Close" +msgstr "Закрыть" + +#: wxUI/dialogs/find.py:13 +msgid "Find in current buffer" +msgstr "Поиск в буфере" + +#: wxUI/dialogs/find.py:14 +msgid "String" +msgstr "Строка" + +#: wxUI/dialogs/find.py:23 wxUI/dialogs/mastodon/showUserProfile.py:33 +msgid "Cancel" +msgstr "Отменить" + +#: wxUI/dialogs/templateDialogs.py:8 +msgid "Edit Template" +msgstr "" + +#: wxUI/dialogs/templateDialogs.py:13 +msgid "Edit template" +msgstr "" + +#: wxUI/dialogs/templateDialogs.py:17 +#, fuzzy +msgid "Available variables" +msgstr "Недоступно" + +#: wxUI/dialogs/templateDialogs.py:29 +msgid "Restore template" +msgstr "" + +#: wxUI/dialogs/templateDialogs.py:48 +#, python-brace-format +msgid "Restored template to {}." +msgstr "" + +#: wxUI/dialogs/templateDialogs.py:52 +msgid "" +"the template you have specified include variables that do not exists for " +"the object. Please fix the template and try again. For your reference, " +"you can see a list of all available variables in the variables list while" +" editing your template." +msgstr "" + +#: wxUI/dialogs/templateDialogs.py:52 +#, fuzzy +msgid "Invalid template" +msgstr "Неправильная комбинация клавиш" + +#: wxUI/dialogs/urlList.py:6 +msgid "Select URL" +msgstr "Выбрать ссылку" + +#: wxUI/dialogs/mastodon/userActions.py:13 +#: wxUI/dialogs/mastodon/userTimeline.py:13 wxUI/dialogs/userAliasDialogs.py:13 +msgid "&Autocomplete users" +msgstr "&Автозаполнение" + +#: wxUI/dialogs/userAliasDialogs.py:18 +#, fuzzy +msgid "Alias" +msgstr "Ошибка возникает всегда" + +#: wxUI/dialogs/userAliasDialogs.py:41 +#, fuzzy +msgid "Edit user aliases" +msgstr "Редактирование базы данных {0} " + +#: wxUI/dialogs/mastodon/search.py:19 wxUI/dialogs/userAliasDialogs.py:43 +msgid "Users" +msgstr "Пользователи" + +#: wxUI/dialogs/userAliasDialogs.py:50 +#, fuzzy +msgid "Add alias" +msgstr "Добавить в список" + +#: wxUI/dialogs/userAliasDialogs.py:51 +msgid "Adds a new user alias" +msgstr "" + +#: wxUI/dialogs/userAliasDialogs.py:54 +#, fuzzy +msgid "Edit the currently focused user Alias." +msgstr "Работать с твитом в фокусе" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:26 +#: wxUI/dialogs/mastodon/filters/manage_filters.py:24 +#: wxUI/dialogs/userAliasDialogs.py:57 +msgid "Remove" +msgstr "Удалить" + +#: wxUI/dialogs/userAliasDialogs.py:58 +#, fuzzy +msgid "Remove the currently focused user alias." +msgstr "Найти строку в этом буфере" + +#: wxUI/dialogs/userAliasDialogs.py:82 +#, fuzzy +msgid "Are you sure you want to delete this user alias?" +msgstr "Вы желаете удалить этот список?" + +#: wxUI/dialogs/userAliasDialogs.py:82 +#, fuzzy +msgid "Remove user alias" +msgstr "Удалить пользователя" + +#: wxUI/dialogs/userAliasDialogs.py:93 +#, fuzzy +msgid "User alias" +msgstr "Профиль" + +#: wxUI/dialogs/userList.py:27 +#, fuzzy +msgid "View profile" +msgstr "&Обновить профиль" + +#: wxUI/dialogs/mastodon/communityTimeline.py:10 +#, fuzzy +msgid "Community URL" +msgstr "Контрол" + +#: wxUI/dialogs/mastodon/communityTimeline.py:16 +#: wxUI/dialogs/mastodon/userTimeline.py:18 +msgid "Buffer type" +msgstr "Тип буфера:" + +#: wxUI/dialogs/mastodon/communityTimeline.py:17 +#, fuzzy +msgid "&Local timeline" +msgstr "Ленты" + +#: wxUI/dialogs/mastodon/communityTimeline.py:18 +#, fuzzy +msgid "&Federated Timeline" +msgstr "Лента твитов {username}" + +#: wxUI/dialogs/mastodon/communityTimeline.py:25 +#: wxUI/dialogs/mastodon/search.py:24 +#: wxUI/dialogs/mastodon/updateProfile.py:130 +#: wxUI/dialogs/mastodon/userActions.py:36 +#: wxUI/dialogs/mastodon/userTimeline.py:30 +msgid "&OK" +msgstr "ОК" + +#: wxUI/dialogs/mastodon/configuration.py:14 +#, fuzzy +msgid "User autocompletion settings" +msgstr "Настройки автозаполнения" + +#: wxUI/dialogs/mastodon/configuration.py:15 +msgid "" +"Scan acc&ount and add followers and following users to the user " +"autocompletion database" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:16 +#, fuzzy +msgid "&Manage autocompletion database" +msgstr "Управление базой автозаполнения" + +#: wxUI/dialogs/mastodon/configuration.py:21 +#, fuzzy +msgid "&Disable Streaming API endpoints" +msgstr "Отключение Стриминга" + +#: wxUI/dialogs/mastodon/configuration.py:23 +#, fuzzy +msgid "&Relative timestamps" +msgstr "Относительное время" + +#: wxUI/dialogs/mastodon/configuration.py:25 +msgid "" +"R&ead preferences from instance (default visibility when publishing and " +"displaying sensitive content)" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:28 +#, fuzzy +msgid "&Items on each API call" +msgstr "Элементов при каждом вызове API" + +# | msgid "" +# | "Inverted buffers: The newest tweets will be shown at the beginning while +# " +# | "the oldest at the end" +#: wxUI/dialogs/mastodon/configuration.py:34 +#, fuzzy +msgid "" +"I&nverted buffers: The newest items will be shown at the beginning while " +"the oldest at the end" +msgstr "" +"Отображение твитов: Самые новые твиты будут показаны в начале списка, а" +" самые старые в конце" + +#: wxUI/dialogs/mastodon/configuration.py:36 +msgid "&Ask confirmation before boosting a post" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:38 +#, fuzzy +msgid "S&how screen names instead of full names" +msgstr "Показывать имя пользователя twitter вместо полного имени." + +#: wxUI/dialogs/mastodon/configuration.py:40 +msgid "Hide e&mojis in usernames" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:42 +#, fuzzy +msgid "" +"&Number of items per buffer to cache in database (0 to disable caching, " +"blank for unlimited)" +msgstr "" +"Количество элементов для каждого буфера в кэше. 0 - отключить " +"кэширование, пустая строка - лемит не имеет значения." + +#: wxUI/dialogs/mastodon/configuration.py:46 +msgid "" +"&Load cache for items in memory (much faster in big datasets but requires" +" more RAM)" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:53 +#, python-brace-format +msgid "Edit template for &posts. Current template: {}" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:55 +#, python-brace-format +msgid "Edit template for c&onversations. Current template: {}" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:57 +#, python-brace-format +msgid "Edit template for p&ersons. Current template: {}" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:65 +#, fuzzy +msgid "&Volume" +msgstr "Громкость" + +#: wxUI/dialogs/mastodon/configuration.py:76 +#, fuzzy +msgid "S&ession mute" +msgstr "Выключение звуков сессии" + +#: wxUI/dialogs/mastodon/configuration.py:78 +#, fuzzy +msgid "&Output device" +msgstr "Устройства воспроизведения" + +#: wxUI/dialogs/mastodon/configuration.py:85 +#, fuzzy +msgid "&Input device" +msgstr "Устройство записи" + +#: wxUI/dialogs/mastodon/configuration.py:93 +#, fuzzy +msgid "Sound &pack" +msgstr "Звуковая схема" + +# | msgid "Indicate audio tweets with sound" +#: wxUI/dialogs/mastodon/configuration.py:99 +#, fuzzy +msgid "Indicate &audio or video in posts with sound" +msgstr "Воспроизводить звук на твитах, содержащих аудио" + +# | msgid "Indicate tweets containing images with sound" +#: wxUI/dialogs/mastodon/configuration.py:101 +#, fuzzy +msgid "Indicate posts containing i&mages with sound" +msgstr "Воспроизводить звук на твитах, содержащих изображения" + +#: wxUI/dialogs/mastodon/configuration.py:124 +#, fuzzy +msgid "&Language for OCR" +msgstr "Язык результатов OCR" + +#: wxUI/dialogs/mastodon/configuration.py:149 +msgid "Feedback" +msgstr "Вывод" + +#: wxUI/dialogs/mastodon/configuration.py:153 +msgid "Buffers" +msgstr "Буферы" + +#: wxUI/dialogs/mastodon/configuration.py:157 +msgid "Templates" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:161 +msgid "Sound" +msgstr "Звук" + +#: wxUI/dialogs/mastodon/configuration.py:165 +msgid "Extras" +msgstr "Дополнительно" + +# | msgid "Would you like to add a comment to this tweet?" +#: wxUI/dialogs/mastodon/dialogs.py:7 +#, fuzzy +msgid "Would you like to share this post?" +msgstr "Желаете добавить комментарий к этому твиту?" + +# | msgid "" +# | "Do you really want to delete this tweet? It will be deleted from Twitter +# " +# | "as well." +#: wxUI/dialogs/mastodon/dialogs.py:15 +#, fuzzy +msgid "" +"Do you really want to delete this post? It will be deleted from the " +"instance as well." +msgstr "" +"Вы действительно хотите удалить этот твит? Он также будет удален из " +"Твиттера." + +#: wxUI/dialogs/mastodon/dialogs.py:15 +msgid "Delete" +msgstr "Удалить" + +#: wxUI/dialogs/mastodon/dialogs.py:23 +msgid "" +"Are you sure you want to dismiss this notification? If you dismiss a " +"mention notification, it also disappears from your mentions buffer. The " +"post is not going to be deleted from the instance, though." +msgstr "" + +# | msgid "" +# | "Do you really want to empty this buffer? It's items will be removed from +# " +# | "the list but not from Twitter" +#: wxUI/dialogs/mastodon/dialogs.py:31 +#, fuzzy +msgid "" +"Do you really want to empty this buffer? It's items will be removed from" +" the list but not from the instance" +msgstr "" +"Вы действительно хотите очистить этот буфер? Твиты останутся на сервере, " +"но будут удалены из списка." + +# | msgid "This user has no tweets. {0} can't create a timeline." +#: wxUI/dialogs/mastodon/dialogs.py:38 +#, fuzzy, python-brace-format +msgid "This user has no posts. {0} can't create a timeline." +msgstr "У пользователя ещё нет твитов. Невозможно создать ленту." + +# | msgid "This user has no favorited tweets. {0} can't create a timeline." +#: wxUI/dialogs/mastodon/dialogs.py:43 +#, fuzzy, python-brace-format +msgid "This user has no favorited posts. {0} can't create a timeline." +msgstr "" +"Пользователь ещё ничего не оценил как понравившееся. Невозможно создать " +"ленту." + +# | msgid "This user has no followers. {0} can't create a timeline." +#: wxUI/dialogs/mastodon/dialogs.py:48 +#, fuzzy, python-brace-format +msgid "This user has no followers yet. {0} can't create a timeline." +msgstr "Этого пользователя ещё никто не читает. Невозможно создать ленту." + +# | msgid "This user has no followers. {0} can't create a timeline." +#: wxUI/dialogs/mastodon/dialogs.py:53 +#, fuzzy, python-brace-format +msgid "This user is not following anyone. {0} can't create a timeline." +msgstr "Этого пользователя ещё никто не читает. Невозможно создать ленту." + +#: wxUI/dialogs/mastodon/dialogs.py:60 +#, python-brace-format +msgid "The focused item has no user in it. {} ca't open a user profile" +msgstr "" + +# | msgid "R&emove from list" +#: wxUI/dialogs/mastodon/menus.py:13 wxUI/dialogs/mastodon/menus.py:41 +#, fuzzy +msgid "R&emove from favorites" +msgstr "&Удалить из списка" + +#: wxUI/dialogs/mastodon/menus.py:15 wxUI/dialogs/mastodon/menus.py:43 +msgid "&Open URL" +msgstr "&Открыть ссылку" + +# | msgid "Search on twitter" +#: wxUI/dialogs/mastodon/menus.py:17 wxUI/dialogs/mastodon/menus.py:47 +#, fuzzy +msgid "&Open in instance" +msgstr "Искать в твиттере" + +#: wxUI/dialogs/mastodon/menus.py:19 wxUI/dialogs/mastodon/menus.py:45 +msgid "&Play audio" +msgstr "Воспроизвести аудио" + +#: wxUI/dialogs/mastodon/menus.py:23 wxUI/dialogs/mastodon/menus.py:51 +msgid "&Copy to clipboard" +msgstr "Скопировать в буфер обмена " + +#: wxUI/dialogs/mastodon/menus.py:27 wxUI/dialogs/mastodon/menus.py:55 +msgid "&User actions..." +msgstr "&Действия" + +#: wxUI/dialogs/mastodon/menus.py:53 +msgid "&Dismiss" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:20 +#: wxUI/dialogs/mastodon/postDialogs.py:38 +msgid "Attachments" +msgstr "Вложения" + +#: wxUI/dialogs/mastodon/postDialogs.py:24 +msgid "File" +msgstr "Файл" + +#: wxUI/dialogs/mastodon/postDialogs.py:25 +msgid "Type" +msgstr "Тип" + +#: wxUI/dialogs/mastodon/postDialogs.py:26 +#: wxUI/dialogs/mastodon/postDialogs.py:141 +msgid "Description" +msgstr "Описание" + +# | msgid "Remove client" +#: wxUI/dialogs/mastodon/postDialogs.py:28 +#, fuzzy +msgid "Remove Attachment" +msgstr "Удалить клиент" + +#: wxUI/dialogs/mastodon/postDialogs.py:33 +msgid "Post in the thread" +msgstr "" + +# | msgid "Remove from list" +#: wxUI/dialogs/mastodon/postDialogs.py:40 +#, fuzzy +msgid "Remove post" +msgstr "Удалить из списка" + +#: wxUI/dialogs/mastodon/postDialogs.py:47 +msgid "&Visibility" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:54 +#, fuzzy +msgid "Language" +msgstr "Язык" + +#: wxUI/dialogs/mastodon/postDialogs.py:58 +msgid "A&dd" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:59 +msgid "S&ensitive content" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:64 +msgid "Content warning" +msgstr "" + +# | msgid "Add to list" +#: wxUI/dialogs/mastodon/postDialogs.py:71 +#, fuzzy +msgid "Add p&ost" +msgstr "Добавить в список" + +#: wxUI/dialogs/mastodon/postDialogs.py:75 +msgid "Auto&complete users" +msgstr "&Автозаполнение пользователей" + +# | msgid "Check &spelling..." +#: wxUI/dialogs/mastodon/postDialogs.py:77 +#, fuzzy +msgid "Check &spelling" +msgstr "Проверка орфографии" + +#: wxUI/dialogs/mastodon/postDialogs.py:79 +#, fuzzy +msgid "&Translate" +msgstr "Переведено" + +# | msgid "Tweet - %i characters " +#: wxUI/dialogs/mastodon/postDialogs.py:106 +#, fuzzy, python-brace-format +msgid "Post - {} characters" +msgstr "Твит - Написано %i символов" + +#: wxUI/dialogs/mastodon/postDialogs.py:130 +msgid "Image" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:132 +#, fuzzy +msgid "Video" +msgstr "Скрыт" + +# | msgid "&Audio" +#: wxUI/dialogs/mastodon/postDialogs.py:134 +#, fuzzy +msgid "Audio" +msgstr "&Аудио" + +#: wxUI/dialogs/mastodon/postDialogs.py:136 +msgid "Poll" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:141 +msgid "please provide a description" +msgstr "Опишите это изображение" + +#: wxUI/dialogs/mastodon/postDialogs.py:148 +msgid "Select the picture to be uploaded" +msgstr "Выберите картинку, которую желаете загрузить" + +#: wxUI/dialogs/mastodon/postDialogs.py:148 +msgid "Image files (*.png, *.jpg, *.gif)|*.png; *.jpg; *.gif" +msgstr "Файлы изображений (*.png, *.jpg, *.gif)|*.png; *.jpg; *.gif" + +#: wxUI/dialogs/mastodon/postDialogs.py:155 +#, fuzzy +msgid "Select the video to be uploaded" +msgstr "Выберите картинку, которую желаете загрузить" + +# | msgid "Audio Files (*.mp3, *.ogg, *.wav)|*.mp3; *.ogg; *.wav" +#: wxUI/dialogs/mastodon/postDialogs.py:155 +#, fuzzy +msgid "Video files (*.mp4, *.mov, *.m4v, *.webm)| *.mp4; *.m4v; *.mov; *.webm" +msgstr "Файлы (*.mp3, *.ogg, *.wav)|*.mp3; *.ogg; *.wav" + +#: wxUI/dialogs/mastodon/postDialogs.py:162 +msgid "Select the audio file to be uploaded" +msgstr "Выберите аудио файл, который хотите загрузить" + +#: wxUI/dialogs/mastodon/postDialogs.py:162 +msgid "" +"Audio files (*.mp3, *.ogg, *.wav, *.flac, *.opus, *.aac, *.m4a, " +"*.3gp)|*.mp3; *.ogg; *.wav; *.flac; *.opus; *.aac; *.m4a; *.3gp" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:169 +msgid "" +"It is not possible to add more attachments. Please take into account that" +" You can add only a maximum of 4 images, or one audio, video or poll per" +" post. Please remove other attachments before continuing." +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:169 +#, fuzzy +msgid "Error adding attachment" +msgstr "Прикрепить вложение" + +#: wxUI/dialogs/mastodon/postDialogs.py:172 +msgid "" +"You can add a poll or media files. In order to add your poll, please " +"remove other attachments first." +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:172 +#, fuzzy +msgid "Error adding poll" +msgstr "Прикрепить вложение" + +# | msgid "Tweet - %i characters " +#: wxUI/dialogs/mastodon/postDialogs.py:177 +#, fuzzy, python-format +msgid "Post - %i characters " +msgstr "Твит - Написано %i символов" + +#: wxUI/dialogs/mastodon/postDialogs.py:200 +msgid "Image description" +msgstr "Описание" + +# | msgid "Private" +#: wxUI/dialogs/mastodon/postDialogs.py:210 +#, fuzzy +msgid "Privacy" +msgstr "Личный" + +#: wxUI/dialogs/mastodon/postDialogs.py:214 +#, fuzzy +msgid "Source" +msgstr "Клиент" + +#: wxUI/dialogs/mastodon/postDialogs.py:222 +msgid "Boosts" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:224 +msgid "View users who boosted this post" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:231 +msgid "View users who favorited this post" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:239 +#, fuzzy +msgid "Copy link to clipboard" +msgstr "Скопировать в буфер обмена" + +#: wxUI/dialogs/mastodon/postDialogs.py:241 +#: wxUI/dialogs/mastodon/postDialogs.py:280 +msgid "Check &spelling..." +msgstr "Проверка орфографии" + +#: wxUI/dialogs/mastodon/postDialogs.py:242 +#: wxUI/dialogs/mastodon/postDialogs.py:281 +msgid "&Translate..." +msgstr "Перевести" + +#: wxUI/dialogs/mastodon/postDialogs.py:243 +#: wxUI/dialogs/mastodon/postDialogs.py:282 +msgid "C&lose" +msgstr "За&крыть" + +#: wxUI/dialogs/mastodon/postDialogs.py:294 +msgid "Add a poll" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:298 +msgid "Participation time" +msgstr "" + +# | msgid "%d minutes, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "5 minutes" +msgstr "%d минут" + +# | msgid "%d minutes, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "30 minutes" +msgstr "%d минут" + +# | msgid "%d hour, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "1 hour" +msgstr "%d час" + +# | msgid "%d hours, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "6 hours" +msgstr "%d часов" + +# | msgid "%d day, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "1 day" +msgstr "%d день" + +# | msgid "%d days, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "2 days" +msgstr "%d дней" + +# | msgid "%d days, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "3 days" +msgstr "%d дней" + +# | msgid "%d days, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "4 days" +msgstr "%d дней" + +# | msgid "%d days, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "5 days" +msgstr "%d дней" + +# | msgid "%d days, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "6 days" +msgstr "%d дней" + +# | msgid "%d days, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "7 days" +msgstr "%d дней" + +#: wxUI/dialogs/mastodon/postDialogs.py:304 +msgid "Choices" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:308 +msgid "Option 1" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:315 +msgid "Option 2" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:322 +msgid "Option 3" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:329 +msgid "Option 4" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:334 +msgid "Allow multiple choices per user" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:337 +msgid "Hide votes count until the poll expires" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:363 +msgid "Please make sure you have provided at least two options for the poll." +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:363 +#, fuzzy +msgid "Not enough information" +msgstr "Информация " + +#: wxUI/dialogs/mastodon/postDialogs.py:368 +msgid "Vote in this poll" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:371 +#, fuzzy +msgid "Options" +msgstr "Действие" + +# | msgid "&Search" +#: wxUI/dialogs/mastodon/search.py:9 +#, fuzzy +msgid "Search" +msgstr "&Поиск" + +#: wxUI/dialogs/mastodon/search.py:18 +msgid "Posts" +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:22 +#, fuzzy +msgid "Select user" +msgstr "Выбрать ссылку" + +#: wxUI/dialogs/mastodon/showUserProfile.py:73 +#, fuzzy, python-brace-format +msgid "{}'s Profile" +msgstr "&Обновить профиль" + +#: wxUI/dialogs/mastodon/showUserProfile.py:79 +#, fuzzy +msgid "&Name: " +msgstr "Имя" + +#: wxUI/dialogs/mastodon/showUserProfile.py:84 +#, fuzzy +msgid "&URL: " +msgstr "Пользователь: " + +#: wxUI/dialogs/mastodon/showUserProfile.py:89 +msgid "&Bio: " +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:94 +msgid "&Joined at: " +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:99 +#, fuzzy +msgid "&Actions" +msgstr "Действие" + +#: wxUI/dialogs/mastodon/showUserProfile.py:104 +#, fuzzy +msgid "Header: " +msgstr "Скрыт" + +#: wxUI/dialogs/mastodon/showUserProfile.py:112 +msgid "Avatar: " +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:122 +#, python-brace-format +msgid "Field &{} - Label: " +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:129 +#, fuzzy +msgid "Content: " +msgstr "Контекст" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:43 +#: wxUI/dialogs/mastodon/filters/create_filter.py:65 +#: wxUI/dialogs/mastodon/showUserProfile.py:135 +msgid "Yes" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:43 +#: wxUI/dialogs/mastodon/filters/create_filter.py:65 +#: wxUI/dialogs/mastodon/filters/create_filter.py:69 +#: wxUI/dialogs/mastodon/showUserProfile.py:135 +msgid "No" +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:137 +#, fuzzy +msgid "&Private account: " +msgstr "Удалить аккаунт" + +#: wxUI/dialogs/mastodon/showUserProfile.py:144 +#, fuzzy +msgid "&Bot account: " +msgstr "Аккаунт" + +#: wxUI/dialogs/mastodon/showUserProfile.py:151 +#, fuzzy +msgid "&Discoverable account: " +msgstr "Удалить аккаунт" + +#: wxUI/dialogs/mastodon/showUserProfile.py:157 +#, python-brace-format +msgid "{} p&osts. Click to open posts timeline" +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:162 +#, python-brace-format +msgid "{} &following. Click to open Following timeline" +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:166 +#, python-brace-format +msgid "{} fo&llowers. Click to open followers timeline" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:43 +msgid "&Display Name" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:50 +#, fuzzy +msgid "&Bio" +msgstr "&Заблокировать" + +#: wxUI/dialogs/mastodon/updateProfile.py:58 +#, fuzzy +msgid "Header" +msgstr "Скрыт" + +#: wxUI/dialogs/mastodon/updateProfile.py:71 +#, fuzzy +msgid "Change &header" +msgstr "Скрыт" + +#: wxUI/dialogs/mastodon/updateProfile.py:79 +msgid "Avatar" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:92 +msgid "Change &avatar" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:102 +#, python-brace-format +msgid "Field &{}: Label" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:110 +#, fuzzy +msgid "Content" +msgstr "Контекст" + +#: wxUI/dialogs/mastodon/updateProfile.py:120 +#, fuzzy +msgid "&Private account" +msgstr "Удалить аккаунт" + +#: wxUI/dialogs/mastodon/updateProfile.py:122 +#, fuzzy +msgid "&Bot account" +msgstr "Аккаунт" + +#: wxUI/dialogs/mastodon/updateProfile.py:124 +#, fuzzy +msgid "&Discoverable account" +msgstr "Удалить аккаунт" + +#: wxUI/dialogs/mastodon/updateProfile.py:167 +msgid "Select header image - max 2MB" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:172 +#: wxUI/dialogs/mastodon/updateProfile.py:194 +msgid "The selected file is larger than 2MB. Do you want to select another file?" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:173 +#: wxUI/dialogs/mastodon/updateProfile.py:195 +msgid "File more than 2MB" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:189 +msgid "Select avatar image - max 2MB" +msgstr "" + +#: wxUI/dialogs/mastodon/userActions.py:19 +msgid "&Follow" +msgstr "&Начать читать" + +#: wxUI/dialogs/mastodon/userActions.py:20 +msgid "U&nfollow" +msgstr "П&ерестать читать" + +#: wxUI/dialogs/mastodon/userActions.py:22 +msgid "Unmu&te" +msgstr "Вк&лючить" + +#: wxUI/dialogs/mastodon/userActions.py:23 +msgid "&Block" +msgstr "&Заблокировать" + +#: wxUI/dialogs/mastodon/userActions.py:24 +msgid "Unbl&ock" +msgstr "Разбл&окировать" + +#: wxUI/dialogs/mastodon/userTimeline.py:9 +#, python-format +msgid "Timeline for %s" +msgstr "Лента твитов %s" + +#: wxUI/dialogs/mastodon/userTimeline.py:19 +msgid "&Posts" +msgstr "" + +#: wxUI/dialogs/mastodon/userTimeline.py:20 +msgid "&Followers" +msgstr "Читающие" + +#: wxUI/dialogs/mastodon/userTimeline.py:21 +#, fuzzy +msgid "Fo&llowing" +msgstr "П&ерестать читать" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:12 +#, fuzzy +msgid "Keyword" +msgstr "Клавиша" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:13 +#: wxUI/dialogs/mastodon/filters/create_filter.py:24 +msgid "Whole word" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:19 +msgid "Keyword:" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:25 +#: wxUI/dialogs/mastodon/filters/manage_filters.py:22 +#, fuzzy +msgid "Add" +msgstr "Адрес" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:34 +msgid "Palabras clave a filtrar:" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:74 +#, fuzzy +msgid "New filter" +msgstr "&Управление фильтрами" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:78 +#, fuzzy +msgid "Home timeline" +msgstr "Ленты" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:79 +msgid "Public statuses" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:81 +#, fuzzy +msgid "Threads" +msgstr "Готово" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:82 +#, fuzzy +msgid "Profiles" +msgstr "&Обновить профиль" + +# | msgid "Delete" +#: wxUI/dialogs/mastodon/filters/create_filter.py:86 +#, fuzzy +msgid "Hide posts" +msgstr "Удалить" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:87 +msgid "Set a content warning to posts" +msgstr "" + +# | msgid "%d hours, " +#: wxUI/dialogs/mastodon/filters/create_filter.py:91 +#, fuzzy +msgid "Hours" +msgstr "%d часов" + +# | msgid "%d days, " +#: wxUI/dialogs/mastodon/filters/create_filter.py:92 +#, fuzzy +msgid "Days" +msgstr "%d дней" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:93 +msgid "Weeks" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:94 +msgid "months" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:97 +#, fuzzy +msgid "Title:" +msgstr "Файл" + +# | msgid "Reply to {arg0}" +#: wxUI/dialogs/mastodon/filters/create_filter.py:104 +#, fuzzy +msgid "Apply to:" +msgstr "Ответ {arg0}" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:114 +#, fuzzy +msgid "Action:" +msgstr "Действие" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:122 +msgid "Expires in:" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/manage_filters.py:10 +#, fuzzy +msgid "Filters" +msgstr "Файл" + +#: wxUI/dialogs/mastodon/filters/manage_filters.py:15 +#, fuzzy +msgid "Title" +msgstr "Файл" + +#: wxUI/dialogs/mastodon/filters/manage_filters.py:16 +msgid "Keywords" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/manage_filters.py:17 +#, fuzzy +msgid "Contexts" +msgstr "Контекст" + +#: wxUI/dialogs/mastodon/filters/manage_filters.py:19 +#, fuzzy +msgid "Expires" +msgstr "Дополнительно" + +#~ msgid "There are no results for the coordinates in this tweet" +#~ msgstr "Отсутствуют координаты" + +#~ msgid "This list is already opened" +#~ msgstr "Список уже открыт" + +# | msgid "Timeline for {}" +#~ msgid "Timelines for {}" +#~ msgstr "Лента твитов {}" + +#~ msgid "{account_name} (Mastodon)" +#~ msgstr "" + +#~ msgid "URL of mastodon instance:" +#~ msgstr "" + +# | msgid "View &address" +#~ msgid "Email address:" +#~ msgstr "Просмотреть адрес" + +# | msgid "Password: " +#~ msgid "Password:" +#~ msgstr "Пароль: " + +# | msgid "Item" +#~ msgid "&Item" +#~ msgstr "Элемент" + +#~ msgid "Visibility" +#~ msgstr "" + +#~ msgid "Sensitive content" +#~ msgstr "" + +#~ msgid "Allow multiple votes per user" +#~ msgstr "" + +#~ msgid "{username} has mentionned you: {status}" +#~ msgstr "" + +#~ msgid "has mentionned you: {status}" +#~ msgstr "" + +#~ msgid "Likes for {}" +#~ msgstr "Понравившиеся {}" + +#~ msgid "Trending topics for %s" +#~ msgstr "Тренды по %s" + +#~ msgid "Select user" +#~ msgstr "Выберите пользователя" + +#~ msgid "Sent direct messages" +#~ msgstr "Отправленные личные сообщения" + +#~ msgid "Sent tweets" +#~ msgstr "Отправленные твиты" + +#~ msgid "Likes" +#~ msgstr "Понравившиеся" + +#~ msgid "Friends" +#~ msgstr "Читаемые" + +#~ msgid "{username}'s likes" +#~ msgstr "Понравившееся {username}" + +#~ msgid "{username}'s friends" +#~ msgstr "Список читаемых {username}" + +#~ msgid "Tweet" +#~ msgstr "Твит" + +#~ msgid "Write the tweet here" +#~ msgstr "Напишите текст твита здесь" + +#~ msgid "New tweet in {0}" +#~ msgstr "Новый твит в {0}" + +#~ msgid "{0} new tweets in {1}." +#~ msgstr "@{0} процитировал ваш твит: {1}" + +#~ msgid "Reply to {arg0}" +#~ msgstr "Ответ {arg0}" + +#~ msgid "Reply to %s" +#~ msgstr "Ответ %s" + +#~ msgid "Direct message to %s" +#~ msgstr "Личное сообщение для %s" + +#~ msgid "New direct message" +#~ msgstr "Новое личное сообщение" + +#~ msgid "This action is not supported on protected accounts." +#~ msgstr "Это действие не поддерживается в данном буфере" + +#~ msgid "Quote" +#~ msgstr "Комментарий к твиту" + +#~ msgid "Add your comment to the tweet" +#~ msgstr "Напишите ваш комментарий к этому твиту" + +#~ msgid "User details" +#~ msgstr "Профиль" + +#~ msgid "MMM D, YYYY. H:m" +#~ msgstr "MMM D, YYYY. H:m" + +#~ msgid "There are no coordinates in this tweet" +#~ msgstr "Координаты отсутствуют" + +#~ msgid "Error decoding coordinates. Try again later." +#~ msgstr "Ошибка. Координаты не найдены. Попробуйте, пожалуйста, немного позднее." + +#~ msgid "Invalid buffer" +#~ msgstr "Недопустимый буфер" + +#~ msgid "{0} new direct messages." +#~ msgstr "Новое личное сообщение" + +#~ msgid "This action is not supported in the buffer yet." +#~ msgstr "Это действие не поддерживается в данном буфере" + +#~ msgid "" +#~ "Getting more items cannot be done " +#~ "in this buffer. Use the direct " +#~ "messages buffer instead." +#~ msgstr "" +#~ "Невозможно получить больше элементов в " +#~ "данном буфере, используйте буфер личных " +#~ "сообщений вместо этого." + +#~ msgid "Mention" +#~ msgstr "Упомянуть" + +#~ msgid "Mention to %s" +#~ msgstr "Упоминание %s" + +#~ msgid "{0} new followers." +#~ msgstr "{0} новых читателей." + +#~ msgid "This action is not supported in the buffer, yet." +#~ msgstr "Это действие пока не поддерживается в буфере." + +#~ msgid "&Retweet" +#~ msgstr "&Ретвитнуть" + +#~ msgid "&Like" +#~ msgstr "&Нравится" + +#~ msgid "&Unlike" +#~ msgstr "н&е нравится" + +#~ msgid "View &address" +#~ msgstr "Просмотреть адрес" + +#~ msgid "&View lists" +#~ msgstr "&Просмотр списков" + +# | msgid "V&iew likes" +#~ msgid "View likes" +#~ msgstr "Просмотреть Понравившиеся" + +#~ msgid "Likes timelines" +#~ msgstr "Понравившиеся ленты" + +#~ msgid "Followers timelines" +#~ msgstr "Ленты читающих" + +#~ msgid "Following timelines" +#~ msgstr "Ленты читающих" + +#~ msgid "Lists" +#~ msgstr "Списки" + +#~ msgid "List for {}" +#~ msgstr "Список {}" + +#~ msgid "Filters cannot be applied on this buffer" +#~ msgstr "Фильтрация в данном буфере невозможна" + +#~ msgid "View item" +#~ msgstr "&просмотреть обьект" + +#~ msgid "Ask" +#~ msgstr "Вопрос" + +#~ msgid "Retweet without comments" +#~ msgstr "Ретвитнуть без комментария" + +#~ msgid "Retweet with comments" +#~ msgstr "Ретвитнуть с комментарием" + +#~ msgid "Edit template for tweets. Current template: {}" +#~ msgstr "" + +#~ msgid "Edit template for direct messages. Current template: {}" +#~ msgstr "" + +#~ msgid "Edit template for sent direct messages. Current template: {}" +#~ msgstr "" + +#~ msgid "User has been suspended" +#~ msgstr "Аккаунт этого пользователя был заморожен" + +#~ msgid "Information for %s" +#~ msgstr "Информация о %s" + +#~ msgid "Discarded" +#~ msgstr "Отменено" + +#~ msgid "Username: @%s\n" +#~ msgstr "Имя пользователя: @%s\n" + +#~ msgid "Name: %s\n" +#~ msgstr "Имя: %s\n" + +#~ msgid "Location: %s\n" +#~ msgstr "Откуда: %s\n" + +#~ msgid "URL: %s\n" +#~ msgstr "Сайт: %s\n" + +#~ msgid "Bio: %s\n" +#~ msgstr "Кратко о себе: %s\n" + +#~ msgid "Yes" +#~ msgstr "Да" + +#~ msgid "No" +#~ msgstr "Нет" + +#~ msgid "Protected: %s\n" +#~ msgstr "Защищённый аккаунт: %s\n" + +#~ msgid "Relationship: " +#~ msgstr "" + +#~ msgid "You follow {0}. " +#~ msgstr "Вы читаете {0}. " + +#~ msgid "{0} is following you." +#~ msgstr "{0} читает вас." + +#~ msgid "" +#~ "Followers: %s\n" +#~ " Friends: %s\n" +#~ msgstr "" +#~ "Читающих: %s\n" +#~ " Читаемых: %s\n" + +#~ msgid "Verified: %s\n" +#~ msgstr "Проверен: %s\n" + +#~ msgid "Tweets: %s\n" +#~ msgstr "Твитов: %s\n" + +#~ msgid "Likes: %s" +#~ msgstr "Понравившихся: %s" + +#~ msgid "You can't ignore direct messages" +#~ msgstr "Вы не можете игнорировать личные сообщения" + +#~ msgid "Attaching..." +#~ msgstr "Добавление" + +#~ msgid "Pause" +#~ msgstr "Пауза" + +#~ msgid "&Resume" +#~ msgstr "&Продолжить" + +#~ msgid "Resume" +#~ msgstr "&Продолжить" + +#~ msgid "&Pause" +#~ msgstr "Пауза" + +#~ msgid "&Stop" +#~ msgstr "Остановить" + +#~ msgid "Recording" +#~ msgstr "Запись" + +#~ msgid "Stopped" +#~ msgstr "Остановлено" + +#~ msgid "&Record" +#~ msgstr "Записать" + +#~ msgid "&Play" +#~ msgstr "Воспроизвести" + +#~ msgid "Recoding audio..." +#~ msgstr "Перекодирование аудио ..." + +#~ msgid "Error in file upload: {0}" +#~ msgstr "Ошибка при загрузке файла: {0}" + +#~ msgid "Transferred" +#~ msgstr "Передано" + +#~ msgid "Total file size" +#~ msgstr "Общий размер файла" + +#~ msgid "Transfer rate" +#~ msgstr "Скорость передачи" + +#~ msgid "Time left" +#~ msgstr "Оставшееся время" + +#~ msgid "Attach audio" +#~ msgstr "Добавить аудио" + +#~ msgid "&Add an existing file" +#~ msgstr "Добавить существующий файл" + +#~ msgid "&Discard" +#~ msgstr "Очистить" + +#~ msgid "Upload to" +#~ msgstr "Загрузить в" + +#~ msgid "Attach" +#~ msgstr "Добавить" + +#~ msgid "&Cancel" +#~ msgstr "Отменить" + +#~ msgid "Audio Files (*.mp3, *.ogg, *.wav)|*.mp3; *.ogg; *.wav" +#~ msgstr "Файлы (*.mp3, *.ogg, *.wav)|*.mp3; *.ogg; *.wav" + +#~ msgid "You have to start writing" +#~ msgstr "Вы должны начать писать" + +#~ msgid "There are no results in your users database" +#~ msgstr "Пользователя нет в базе данных" + +#~ msgid "Autocompletion only works for users." +#~ msgstr "Автозаполнение работает только для пользователей." + +#~ msgid "" +#~ "Updating database... You can close this" +#~ " window now. A message will tell " +#~ "you when the process finishes." +#~ msgstr "" +#~ "Обновление базы данных ... Вы можете " +#~ "закрыть это окно сейчас. Вам будет " +#~ "сообщено, когда процесс завершится." + +#~ msgid "Manage Autocompletion database" +#~ msgstr "Управление базой автозаполнения" + +#~ msgid "Editing {0} users database" +#~ msgstr "Редактирование базы данных {0} " + +#~ msgid "Username" +#~ msgstr "Имя пользователя" + +#~ msgid "Add user" +#~ msgstr "Добавить пользователя" + +#~ msgid "Remove user" +#~ msgstr "Удалить пользователя" + +#~ msgid "Twitter username" +#~ msgstr "Имя в твиттере" + +#~ msgid "Add user to database" +#~ msgstr "Добавить пользователя в базу данных" + +#~ msgid "The user does not exist" +#~ msgstr "Пользователь не существует" + +#~ msgid "Error!" +#~ msgstr "Ошибка" + +#~ msgid "Autocomplete users' settings" +#~ msgstr "Настройки автозаполнения " + +#~ msgid "Add followers to database" +#~ msgstr "" + +#~ msgid "Add friends to database" +#~ msgstr "Добавить пользователя в базу данных" + +#~ msgid "Updating autocompletion database" +#~ msgstr "Управление базой автозаполнения" + +#~ msgid "" +#~ "This process will retrieve the users " +#~ "you selected from Twitter, and add " +#~ "them to the user autocomplete database." +#~ " Please note that if there are " +#~ "many users or you have tried to" +#~ " perform this action less than 15 " +#~ "minutes ago, TWBlue may reach a " +#~ "limit in Twitter API calls when " +#~ "trying to load the users into the" +#~ " database. If this happens, we will" +#~ " show you an error, in which " +#~ "case you will have to try this " +#~ "process again in a few minutes. If" +#~ " this process ends with no error, " +#~ "you will be redirected back to the" +#~ " account settings dialog. Do you want" +#~ " to continue?" +#~ msgstr "" + +#~ msgid "TWBlue has imported {} users successfully." +#~ msgstr "" + +#~ msgid "Done" +#~ msgstr "Готово" + +#~ msgid "Error adding users from Twitter. Please try again in about 15 minutes." +#~ msgstr "" + +#~ msgid "New tweet" +#~ msgstr "Новый твит" + +#~ msgid "Retweet" +#~ msgstr "Ретвит" + +#~ msgid "Like a tweet" +#~ msgstr "Нравится" + +#~ msgid "Like/unlike a tweet" +#~ msgstr "Оценить твит" + +#~ msgid "Unlike a tweet" +#~ msgstr "Не нравится" + +#~ msgid "See user details" +#~ msgstr "Просмотреть профиль" + +#~ msgid "Show tweet" +#~ msgstr "Показать твит" + +#~ msgid "Interact with the currently focused tweet." +#~ msgstr "Работать с твитом в фокусе" + +#~ msgid "View in Twitter" +#~ msgstr "Посмотреть в Твиттере" + +#~ msgid "Edit profile" +#~ msgstr "Редактировать профиль" + +#~ msgid "Delete a tweet or direct message" +#~ msgstr "Удалить твит или личное сообщение" + +#~ msgid "Add to list" +#~ msgstr "Добавить в список" + +#~ msgid "Remove from list" +#~ msgstr "Удалить из списка" + +#~ msgid "Search on twitter" +#~ msgstr "Искать в твиттере" + +#~ msgid "Show lists for a specified user" +#~ msgstr "Показать списки конкретного пользователя" + +#~ msgid "Get geolocation" +#~ msgstr "узнать местоположение" + +#~ msgid "Display the tweet's geolocation in a dialog" +#~ msgstr "Показывать геолокацию в диалоговом окне" + +#~ msgid "Create a trending topics buffer" +#~ msgstr "Просмотр популярных тем" + +#~ msgid "" +#~ "Opens the list manager, which allows " +#~ "you to create, edit, delete and " +#~ "open lists in buffers." +#~ msgstr "" +#~ "Открыть меню, позволяющее создавать, " +#~ "редактировать, удалять и открывать списки " +#~ "в буферах." + +#~ msgid "Opens the list manager" +#~ msgstr "Открывает менеджер списков" + +#~ msgid "{account_name} (Twitter)" +#~ msgstr "" + +# | msgid "View in Twitter" +#~ msgid "Twitter" +#~ msgstr "Посмотреть в Твиттере" + +#~ msgid "" +#~ "The request to authorize your Twitter" +#~ " account will be opened in your " +#~ "browser. You only need to do this" +#~ " once. Would you like to continue?" +#~ msgstr "" +#~ "Сейчас будет открыта страница, где вы" +#~ " сможете разрешить доступ к своей " +#~ "учётной записи в twitter. Это нужно " +#~ "сделать единожды. Желаете продолжить?" + +#~ msgid "" +#~ "TWBlue is unable to authenticate the " +#~ "account for {} in Twitter. It " +#~ "might be due to an invalid or " +#~ "expired token, revoqued access to the" +#~ " application, or after an account " +#~ "reactivation. Please remove the account " +#~ "manually from your Twitter sessions in" +#~ " order to stop seeing this message." +#~ msgstr "" + +#~ msgid "Authentication error for session {}" +#~ msgstr "" + +#~ msgid "Dm to %s " +#~ msgstr "Личное сообщение для %s " + +#~ msgid "{0}. Quoted tweet from @{1}: {2}" +#~ msgstr "{0}. Процитированный твит от @{1}: {2}" + +#~ msgid "Unavailable" +#~ msgstr "Недоступно" + +#~ msgid "" +#~ "%s (@%s). %s followers, %s friends, " +#~ "%s tweets. Last tweeted %s. Joined " +#~ "Twitter %s" +#~ msgstr "" +#~ "%s (@%s). %s читателей, %s читаемых, " +#~ "%s твитов. Последний твит был %s. " +#~ "Регистрация в Twitterе %s" + +#~ msgid "No description available" +#~ msgstr "Описание отсутствует" + +#~ msgid "private" +#~ msgstr "Личный" + +#~ msgid "public" +#~ msgstr "Публичный" + +#~ msgid "Enter your PIN code here" +#~ msgstr "Введите PIN код здесь." + +#~ msgid "Authorising account..." +#~ msgstr "Авторизация аккаунта..." + +#~ msgid "" +#~ "We could not authorice your Twitter " +#~ "account to be used in TWBlue. This" +#~ " might be caused due to an " +#~ "incorrect verification code. Please try " +#~ "to add the session again." +#~ msgstr "" + +#~ msgid "%s failed. Reason: %s" +#~ msgstr "%s неудалось. Причина: %s" + +#~ msgid "Deleted account" +#~ msgstr "Добавить аккаунт" + +#~ msgid "$sender_display_name, $text $date" +#~ msgstr "" + +#~ msgid "" +#~ "$display_name (@$screen_name). $followers followers," +#~ " $following following, $tweets tweets. " +#~ "Joined Twitter $created_at." +#~ msgstr "" + +#~ msgid "Image description: {}." +#~ msgstr "Описание" + +#~ msgid "RT @{}: {} Quote from @{}: {}" +#~ msgstr "{0}. Процитированный твит от @{1}: {2}" + +# | msgid "{0}. Quoted tweet from @{1}: {2}" +#~ msgid "RT @{}: {}" +#~ msgstr "{0}. Процитированный твит от @{1}: {2}" + +# | msgid "{0}. Quoted tweet from @{1}: {2}" +#~ msgid "{} Quote from @{}: {}" +#~ msgstr "{0}. Процитированный твит от @{1}: {2}" + +#~ msgid "Sorry, you are not authorised to see this status." +#~ msgstr "Извините, но вы не авторизованы и не можете увидеть это сообщение." + +#~ msgid "Error {0}" +#~ msgstr "Код ошибки {0}" + +#~ msgid "{user_1}, {user_2} and {all_users} more: {text}" +#~ msgstr "" + +#~ msgid "" +#~ "This retweet is over 140 characters. " +#~ "Would you like to post it as " +#~ "a mention to the poster with your" +#~ " comments and a link to the " +#~ "original tweet?" +#~ msgstr "" +#~ "Этот ретвит больше ста сорока символов." +#~ " Вы можете опубликовать свой твит и" +#~ " в вашем твите появится ссылка на " +#~ "ретвит. Хотите продолжить?" + +#~ msgid "Would you like to add a comment to this tweet?" +#~ msgstr "Желаете добавить комментарий к этому твиту?" + +#~ msgid "" +#~ "Do you really want to delete this" +#~ " tweet? It will be deleted from " +#~ "Twitter as well." +#~ msgstr "" +#~ "Вы действительно хотите удалить этот " +#~ "твит? Он также будет удален из " +#~ "Твиттера." + +#~ msgid "Enter the name of the client : " +#~ msgstr "Введите имя клиента : " + +#~ msgid "Add client" +#~ msgstr "Добавить клиент" + +#~ msgid "This user has no tweets, so you can't open a timeline for them." +#~ msgstr "У пользователя ещё нет твитов. Невозможно открыть его ленту." + +#~ msgid "" +#~ "This is a protected Twitter user, " +#~ "which means you can't open a " +#~ "timeline using the Streaming API. The" +#~ " user's tweets will not update due" +#~ " to a twitter policy. Do you " +#~ "want to continue?" +#~ msgstr "" +#~ "Лента этого пользователя защищена, Это " +#~ "значит, что ее нельзя открыть в " +#~ "данном приложении. Твиты этого пользователя" +#~ " не будут обновляться, согласно политике" +#~ " Твиттера." + +#~ msgid "" +#~ "This is a protected user account, " +#~ "you need to follow this user to" +#~ " view their tweets or likes." +#~ msgstr "" +#~ "Учётная запись защищена. Вы должны " +#~ "начать читать этого пользователя, чтобы " +#~ "просматривать его твиты или понравившиеся " +#~ "ему записи." + +#~ msgid "This user has no tweets. {0} can't create a timeline." +#~ msgstr "У пользователя ещё нет твитов. Невозможно создать ленту." + +#~ msgid "This user has no favorited tweets. {0} can't create a timeline." +#~ msgstr "" +#~ "Пользователь ещё ничего не оценил как" +#~ " понравившееся. Невозможно создать ленту." + +#~ msgid "This user has no followers. {0} can't create a timeline." +#~ msgstr "Этого пользователя ещё никто не читает. Невозможно создать ленту." + +#~ msgid "This user has no friends. {0} can't create a timeline." +#~ msgstr "Пользователь ещё никого не читает. Невозможно создать ленту." + +#~ msgid "Geolocation data: {0}" +#~ msgstr "Узнать местоположение" + +#~ msgid "Geo data for this tweet" +#~ msgstr "Местоположение для этого твита" + +#~ msgid "You have been blocked from viewing this content" +#~ msgstr "Вы были заблокированы от просмотра этого содержимого" + +#~ msgid "" +#~ "You have been blocked from viewing " +#~ "someone's content. In order to avoid " +#~ "conflicts with the full session, TWBlue" +#~ " will remove the affected timeline." +#~ msgstr "" +#~ "Один из пользователей, чья лента была" +#~ " открыта в клиенте, заблокировал вас " +#~ "и вы больше не можете просматривать " +#~ "содержимое его твитов. Воизбежание ошибок " +#~ "сессии, клиент удалит данную ленту." + +#~ msgid "" +#~ "TWBlue cannot load this timeline because" +#~ " the user has been suspended from " +#~ "Twitter." +#~ msgstr "" +#~ "TWBlue не может показать ленту данного" +#~ " пользователя, так как его аккаунт " +#~ "был заблокирован Твиттером." + +#~ msgid "Do you really want to delete this filter?" +#~ msgstr "Вы действительно желаете удалить этот фильтр?" + +#~ msgid "This filter already exists. Please use a different title" +#~ msgstr "Такой фильтр уже существует. Пожалуйста, используйте другое название" + +#~ msgid "&Show direct message" +#~ msgstr "Показать личное сообщение" + +#~ msgid "&Show event" +#~ msgstr "Показать событие" + +#~ msgid "Direct &message" +#~ msgstr "Личное &сообщение" + +#~ msgid "&Show user" +#~ msgstr "Показать пользователя" + +#~ msgid "Search topic" +#~ msgstr "Поиск в теме" + +#~ msgid "&Tweet about this trend" +#~ msgstr "Твитнуть об этом тренде" + +#~ msgid "&Show item" +#~ msgstr "Показать элемент" + +#~ msgid "Update &profile" +#~ msgstr "Обновить профиль" + +#~ msgid "Event" +#~ msgstr "Событие" + +#~ msgid "Remove event" +#~ msgstr "Удалить событие" + +#~ msgid "Trending topic" +#~ msgstr "Тренды" + +#~ msgid "Tweet about this trend" +#~ msgstr "Твитнуть о тренде" + +#~ msgid "" +#~ "Scan account and add friends and " +#~ "followers to the user autocompletion " +#~ "database" +#~ msgstr "" + +#~ msgid "" +#~ "Inverted buffers: The newest tweets will" +#~ " be shown at the beginning while " +#~ "the oldest at the end" +#~ msgstr "" +#~ "Отображение твитов: Самые новые твиты " +#~ "будут показаны в начале списка, а " +#~ "самые старые в конце" + +#~ msgid "Retweet mode" +#~ msgstr "Режим ретвита" + +#~ msgid "" +#~ "Load cache for tweets in memory " +#~ "(much faster in big datasets but " +#~ "requires more RAM)" +#~ msgstr "" + +#~ msgid "Ignored clients" +#~ msgstr "Игнорируемые клиенты" + +#~ msgid "Remove client" +#~ msgstr "Удалить клиент" + +#~ msgid "Indicate audio tweets with sound" +#~ msgstr "Воспроизводить звук на твитах, содержащих аудио" + +#~ msgid "Indicate geotweets with sound" +#~ msgstr "Воспроизводить звук на твитах, содержащих геолокацию" + +#~ msgid "Indicate tweets containing images with sound" +#~ msgstr "Воспроизводить звук на твитах, содержащих изображения" + +#~ msgid "API Key for SndUp" +#~ msgstr "API ключ SndUp" + +#~ msgid "Create a filter for this buffer" +#~ msgstr "Создать фильтр для этого буфера" + +#~ msgid "Filter title" +#~ msgstr "Название фильтра" + +#~ msgid "Filter by word" +#~ msgstr "Фильтровать по слову" + +#~ msgid "Ignore tweets wich contain the following word" +#~ msgstr "Игнорировать твиты, содержащие следующее слово" + +#~ msgid "Ignore tweets without the following word" +#~ msgstr "Игнорировать твиты, несодержащие следующего слова" + +#~ msgid "word" +#~ msgstr "Слово" + +#~ msgid "Allow retweets" +#~ msgstr "Показывать ретвиты" + +#~ msgid "Allow quoted tweets" +#~ msgstr "Показывать процетированные твиты" + +#~ msgid "Allow replies" +#~ msgstr "Показывать ответы" + +#~ msgid "Use this term as a regular expression" +#~ msgstr "Использовать этот термин как регулярное выражение" + +#~ msgid "Filter by language" +#~ msgstr "Фильтровать по языку" + +#~ msgid "Load tweets in the following languages" +#~ msgstr "Загружать твиты на следующих языках" + +#~ msgid "Ignore tweets in the following languages" +#~ msgstr "Игнорировать твиты на следующих языках" + +#~ msgid "Don't filter by language" +#~ msgstr "Не фильтровать по языку" + +#~ msgid "Supported languages" +#~ msgstr "Поддерживаемые языки" + +#~ msgid "Add selected language to filter" +#~ msgstr "Добавить выбранный язык к фильтру" + +#~ msgid "Selected languages" +#~ msgstr "Выбранные языки" + +#~ msgid "You must define a name for the filter before creating it." +#~ msgstr "" + +#~ msgid "Missing filter name" +#~ msgstr "" + +#~ msgid "Manage filters" +#~ msgstr "Управление фильтрами" + +#~ msgid "Filters" +#~ msgstr "Фильтры" + +#~ msgid "Filter" +#~ msgstr "Фильтр" + +#~ msgid "Lists manager" +#~ msgstr "Менеджер Списков" + +#~ msgid "List" +#~ msgstr "Список" + +#~ msgid "Owner" +#~ msgstr "Создатель" + +#~ msgid "Members" +#~ msgstr "Участников" + +#~ msgid "mode" +#~ msgstr "Режим" + +#~ msgid "Create a new list" +#~ msgstr "Создать новый список" + +#~ msgid "Open in buffer" +#~ msgstr "Открыть в буфере" + +#~ msgid "Viewing lists for %s" +#~ msgstr "Просмотр списков пользователя %s" + +#~ msgid "Subscribe" +#~ msgstr "Подписаться" + +#~ msgid "Unsubscribe" +#~ msgstr "Отписаться" + +#~ msgid "Name (20 characters maximun)" +#~ msgstr "Название (максимум 20 символов)" + +#~ msgid "Mode" +#~ msgstr "Режим" + +#~ msgid "Private" +#~ msgstr "Личный" + +#~ msgid "Editing the list %s" +#~ msgstr "Редактирование списка %s" + +#~ msgid "Select a list to add the user" +#~ msgstr "В какой список вы хотите добавить пользователя?" + +#~ msgid "Add" +#~ msgstr "Добавить" + +#~ msgid "Select a list to remove the user" +#~ msgstr "Из какого списка вы хотите удалить пользователя?" + +#~ msgid "Do you really want to delete this list?" +#~ msgstr "Вы желаете удалить этот список?" + +#~ msgid "Search on Twitter" +#~ msgstr "Поиск в твиттере" + +#~ msgid "Tweets" +#~ msgstr "Твиты" + +#~ msgid "&Language for results: " +#~ msgstr "Язык результатов" + +#~ msgid "any" +#~ msgstr "Любой" + +#~ msgid "Results &type: " +#~ msgstr "&Тип результатов:" + +#~ msgid "Mixed" +#~ msgstr "Смешанные" + +#~ msgid "Recent" +#~ msgstr "Недавние" + +#~ msgid "Popular" +#~ msgstr "Популярные" + +#~ msgid "Details" +#~ msgstr "Детали" + +#~ msgid "&Go to URL" +#~ msgstr "&Перейти по ссылке" + +#~ msgid "View trending topics" +#~ msgstr "Просмотр трендов" + +#~ msgid "Trending topics by" +#~ msgstr "Сортировать по" + +#~ msgid "Country" +#~ msgstr "Стране" + +#~ msgid "City" +#~ msgstr "Городу" + +#~ msgid "&Location" +#~ msgstr "Местоположение" + +#~ msgid "Update your profile" +#~ msgstr "Обновить свой профиль" + +#~ msgid "&Name (50 characters maximum)" +#~ msgstr "Имя (максимум 50 символов)" + +#~ msgid "&Website" +#~ msgstr "Сайт" + +#~ msgid "&Bio (160 characters maximum)" +#~ msgstr "Кратко о себе (максимум 160 символов)" + +#~ msgid "Upload a &picture" +#~ msgstr "Загрузить фото" + +#~ msgid "Upload a picture" +#~ msgstr "Загрузить фото" + +#~ msgid "Discard image" +#~ msgstr "Удалить фото" + +#~ msgid "&Report as spam" +#~ msgstr "&Сообщить о спаме" + +#~ msgid "&Ignore tweets from this client" +#~ msgstr "Игнорировать твиты, которые отправляются из этого клиента" + +#~ msgid "&Tweets" +#~ msgstr "Твиты" + +#~ msgid "&Likes" +#~ msgstr "Понравившееся" + +#~ msgid "F&riends" +#~ msgstr "Чи&таемые" + +#~ msgid "Delete attachment" +#~ msgstr "Удалить вложение" + +#~ msgid "Added Tweets" +#~ msgstr "Отправленные твиты" + +#~ msgid "Delete tweet" +#~ msgstr "Отправленные твиты" + +#~ msgid "A&dd..." +#~ msgstr "" + +#~ msgid "Add t&weet" +#~ msgstr "Нравится" + +#~ msgid "&Attach audio..." +#~ msgstr "Добавить аудио" + +#~ msgid "Sen&d" +#~ msgstr "Отправи&ть" + +#~ msgid "Video files (*.mp4)|*.mp4" +#~ msgstr "" + +#~ msgid "" +#~ "It is not possible to add more " +#~ "attachments. Please make sure your tweet" +#~ " complies with Twitter'S attachment rules." +#~ " You can add only one video or" +#~ " GIF in every tweet, and a " +#~ "maximum of 4 photos." +#~ msgstr "" + +#~ msgid "&Mention to all" +#~ msgstr "Упомянуть всех" + +#~ msgid "&Recipient" +#~ msgstr "П&олучатель" + +#~ msgid "Tweet - %i characters " +#~ msgstr "Твит - Написано %i символов" + +#~ msgid "Retweets: " +#~ msgstr "Ретвиты:" + +#~ msgid "Likes: " +#~ msgstr "Понравившиеся" + +#~ msgid "View" +#~ msgstr "Вид" + +#~ msgid "Item" +#~ msgstr "Элемент" + +#~ msgid "&Expand URL" +#~ msgstr "Ра&звернуть ссылку" + +#~ msgid "Participation time (in days)" +#~ msgstr "" + +#~ msgid "&Open in Twitter" +#~ msgstr "Открыть в &Твиттере" + +#~ msgid "&Show tweet" +#~ msgstr "&Показать твит" + +#~ msgid "Translated" +#~ msgstr "Переведено" + +#~ msgid "Afrikaans" +#~ msgstr "Африкаанс" + +#~ msgid "Albanian" +#~ msgstr "Албанский" + +#~ msgid "Amharic" +#~ msgstr "Амхарский" + +#~ msgid "Arabic" +#~ msgstr "Арабский" + +#~ msgid "Armenian" +#~ msgstr "Армянский" + +#~ msgid "Azerbaijani" +#~ msgstr "Азербайджанский" + +#~ msgid "Basque" +#~ msgstr "Баскский" + +#~ msgid "Belarusian" +#~ msgstr "Белорусский" + +#~ msgid "Bengali" +#~ msgstr "Бенгальский" + +#~ msgid "Bihari" +#~ msgstr "Бихари" + +#~ msgid "Bulgarian" +#~ msgstr "Болгарский" + +#~ msgid "Burmese" +#~ msgstr "Бирманский" + +#~ msgid "Catalan" +#~ msgstr "Каталонский" + +#~ msgid "Cherokee" +#~ msgstr "Чероки" + +#~ msgid "Chinese" +#~ msgstr "Китайский" + +#~ msgid "Chinese_simplified" +#~ msgstr "Китайский (Упрощённый)" + +#~ msgid "Chinese_traditional" +#~ msgstr "Китайский (традиционный)" + +#~ msgid "Croatian" +#~ msgstr "Хорватский" + +#~ msgid "Czech" +#~ msgstr "Чешский" + +#~ msgid "Dhivehi" +#~ msgstr "Дивехи" + +#~ msgid "Esperanto" +#~ msgstr "Эсперанто" + +#~ msgid "Estonian" +#~ msgstr "Эстонский" + +#~ msgid "Filipino" +#~ msgstr "Филиппинский" + +#~ msgid "Galician" +#~ msgstr "Галисийский" + +#~ msgid "Georgian" +#~ msgstr "Грузинский" + +#~ msgid "Greek" +#~ msgstr "Греческий" + +#~ msgid "Guarani" +#~ msgstr "Гуарани" + +#~ msgid "Gujarati" +#~ msgstr "Гуджарати" + +#~ msgid "Hebrew" +#~ msgstr "Иврит" + +#~ msgid "Hindi" +#~ msgstr "Хинди" + +#~ msgid "Icelandic" +#~ msgstr "Исландский" + +#~ msgid "Indonesian" +#~ msgstr "Индонезийский" + +#~ msgid "Inuktitut" +#~ msgstr "Инуктитут" + +#~ msgid "Irish" +#~ msgstr "Ирландский" + +#~ msgid "Kannada" +#~ msgstr "Каннада" + +#~ msgid "Kazakh" +#~ msgstr "Казахский" + +#~ msgid "Khmer" +#~ msgstr "Кхмерский" + +#~ msgid "Kurdish" +#~ msgstr "Курдский" + +#~ msgid "Kyrgyz" +#~ msgstr "Киргизский" + +#~ msgid "Laothian" +#~ msgstr "Лаосский" + +#~ msgid "Latvian" +#~ msgstr "Латышский" + +#~ msgid "Lithuanian" +#~ msgstr "Литовский" + +#~ msgid "Macedonian" +#~ msgstr "Македонский" + +#~ msgid "Malay" +#~ msgstr "Малайский" + +#~ msgid "Malayalam" +#~ msgstr "Малаялам" + +#~ msgid "Maltese" +#~ msgstr "Мальтийский" + +#~ msgid "Marathi" +#~ msgstr "Маратхи" + +#~ msgid "Mongolian" +#~ msgstr "Монгольский" + +#~ msgid "Nepali" +#~ msgstr "Непальский" + +#~ msgid "Norwegian" +#~ msgstr "Норвежский" + +#~ msgid "Oriya" +#~ msgstr "Ория" + +#~ msgid "Pashto" +#~ msgstr "Пушту" + +#~ msgid "Persian" +#~ msgstr "Фарси" + +#~ msgid "Punjabi" +#~ msgstr "Панджаби" + +#~ msgid "Romanian" +#~ msgstr "Румынский" + +#~ msgid "Sanskrit" +#~ msgstr "Санскрит" + +#~ msgid "Serbian" +#~ msgstr "Сербский" + +#~ msgid "Sindhi" +#~ msgstr "Синдхи" + +#~ msgid "Sinhalese" +#~ msgstr "Сингальский" + +#~ msgid "Slovak" +#~ msgstr "Словацкий" + +#~ msgid "Slovenian" +#~ msgstr "Словенский" + +#~ msgid "Swahili" +#~ msgstr "Суахили" + +#~ msgid "Swedish" +#~ msgstr "Шведский" + +#~ msgid "Tajik" +#~ msgstr "Таджикский" + +#~ msgid "Tamil" +#~ msgstr "Тамильский" + +#~ msgid "Tagalog" +#~ msgstr "Тагальский" + +#~ msgid "Telugu" +#~ msgstr "Телугу" + +#~ msgid "Thai" +#~ msgstr "Тайский" + +#~ msgid "Tibetan" +#~ msgstr "Тибетский" + +#~ msgid "Ukrainian" +#~ msgstr "Украинский" + +#~ msgid "Urdu" +#~ msgstr "Урду" + +#~ msgid "Uzbek" +#~ msgstr "Узбекский" + +#~ msgid "Uighur" +#~ msgstr "Уйгурский" + +#~ msgid "Vietnamese" +#~ msgstr "Вьетнамский" + +#~ msgid "Welsh" +#~ msgstr "Валлийский" + +#~ msgid "Yiddish" +#~ msgstr "Идиш" + +#~ msgid "" +#~ "TWBlue has detected that you're running" +#~ " windows 10 and has changed the " +#~ "default keymap to the Windows 10 " +#~ "keymap. It means that some keyboard " +#~ "shorcuts could be different. Please " +#~ "check the keystroke editor by pressing" +#~ " Alt+Win+K to see all available " +#~ "keystrokes for this keymap." +#~ msgstr "" +#~ "TWBlue было определено , что вы " +#~ "используете windows 10 и список " +#~ "клавиатурных команд по умолчанию был " +#~ "заменен на горячие клавиши для Windows" +#~ " 10. Это значит, что некоторые " +#~ "сочетания клавиш могут отличаться. Чтобы " +#~ "посмотреть все доступные комбинации клавиш," +#~ " откройте редактор горячих клавиш нажав " +#~ "Альт +Win+K." + +#~ msgid "Boosts: " +#~ msgstr "" + +#~ msgid "Favorites: " +#~ msgstr "" + +#~ msgid "Date: " +#~ msgstr "Дата: " + +#~ msgid "Community for {}" +#~ msgstr "" + +#~ msgid "Run {0} at Windows startup" +#~ msgstr "Запускать {0} при старте Windows." + +#~ msgid "Use Codeofdusk's longtweet handlers (may decrease client performance)" +#~ msgstr "Использование удлинителя твитов (может вызвать торможение клиента)" + +#~ msgid "Remember state for mention all and long tweet" +#~ msgstr "Запоминать состояние для упоминаний всех пользователей и длинных твитов" + +#~ msgid "Bio: " +#~ msgstr "" + +#~ msgid "Joined at: " +#~ msgstr "" + +#~ msgid "Field {} - Label: " +#~ msgstr "" + +#~ msgid "{} posts. Click to open posts timeline" +#~ msgstr "" + +#~ msgid "{} following. Click to open Following timeline" +#~ msgstr "" + +#~ msgid "{} followers. Click to open followers timeline" +#~ msgstr "" + +#~ msgid "Display Name" +#~ msgstr "" + +#~ msgid "Bio" +#~ msgstr "" + +#~ msgid "Change header" +#~ msgstr "" + +#~ msgid "Change avatar" +#~ msgstr "" + +#~ msgid "Field {}: Label" +#~ msgstr "" + +#~ msgid "Add following to database" +#~ msgstr "" + +#~ msgid "Read long posts in GUI" +#~ msgstr "" + +#~ msgid "LibreTranslate API URL: " +#~ msgstr "" + +#~ msgid "LibreTranslate API Key (optional): " +#~ msgstr "" + +#~ msgid "DeepL API Key: " +#~ msgstr "" + +#~ msgid "" +#~ "Scan account and add followers and " +#~ "following users to the user " +#~ "autocompletion database" +#~ msgstr "" + +#~ msgid "" +#~ "Read preferences from instance (default " +#~ "visibility when publishing and displaying " +#~ "sensitive content)" +#~ msgstr "" + +#~ msgid "Ask confirmation before boosting a post" +#~ msgstr "" + +#~ msgid "hide emojis in usernames" +#~ msgstr "" + +#~ msgid "" +#~ "Load cache for items in memory " +#~ "(much faster in big datasets but " +#~ "requires more RAM)" +#~ msgstr "" + diff --git a/srcantiguo/locales/sr/LC_MESSAGES/twblue.mo b/srcantiguo/locales/sr/LC_MESSAGES/twblue.mo new file mode 100644 index 00000000..c1c6098e Binary files /dev/null and b/srcantiguo/locales/sr/LC_MESSAGES/twblue.mo differ diff --git a/srcantiguo/locales/sr/LC_MESSAGES/twblue.po b/srcantiguo/locales/sr/LC_MESSAGES/twblue.po new file mode 100644 index 00000000..36daee3d --- /dev/null +++ b/srcantiguo/locales/sr/LC_MESSAGES/twblue.po @@ -0,0 +1,4789 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2022 ORGANIZATION +# FIRST AUTHOR , 2022. +# Nikola Jović , 2022, 2023. +msgid "" +msgstr "" +"Project-Id-Version: TwBlue 0.80\n" +"Report-Msgid-Bugs-To: manuel@manuelcortez.net\n" +"POT-Creation-Date: 2025-04-13 01:18+0000\n" +"PO-Revision-Date: 2023-06-21 22:45+0000\n" +"Last-Translator: Nikola Jović \n" +"Language: sr\n" +"Language-Team: Serbian " +"\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" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.17.0\n" + +#: languageHandler.py:61 +msgctxt "languageName" +msgid "Amharic" +msgstr "Amharski" + +#: languageHandler.py:62 +msgctxt "languageName" +msgid "Aragonese" +msgstr "Aragonski" + +#: languageHandler.py:63 +msgctxt "languageName" +msgid "Spanish" +msgstr "Španski" + +#: languageHandler.py:64 +msgctxt "languageName" +msgid "Portuguese" +msgstr "Portugalski" + +#: languageHandler.py:65 +msgctxt "languageName" +msgid "Russian" +msgstr "Ruski" + +#: languageHandler.py:66 +msgctxt "languageName" +msgid "italian" +msgstr "Italijanski" + +#: languageHandler.py:67 +msgctxt "languageName" +msgid "Turkey" +msgstr "Turska" + +#: languageHandler.py:68 +msgctxt "languageName" +msgid "Galician" +msgstr "Galicijski" + +#: languageHandler.py:69 +msgctxt "languageName" +msgid "Catala" +msgstr "Katalonski" + +#: languageHandler.py:70 +msgctxt "languageName" +msgid "Vasque" +msgstr "Baskijski" + +#: languageHandler.py:71 +msgctxt "languageName" +msgid "polish" +msgstr "Poljski" + +#: languageHandler.py:72 +msgctxt "languageName" +msgid "Arabic" +msgstr "Arapski" + +#: languageHandler.py:73 +msgctxt "languageName" +msgid "Nepali" +msgstr "Nepalski" + +#: languageHandler.py:74 +msgctxt "languageName" +msgid "Serbian (Latin)" +msgstr "Srpski" + +#: languageHandler.py:75 +msgctxt "languageName" +msgid "Japanese" +msgstr "Japanski" + +#: languageHandler.py:99 +msgid "User default" +msgstr "Podrazumevano" + +#: main.py:105 +#, fuzzy +msgid "https://twblue.mcvsoftware.com/donate" +msgstr "https://twblue.es/donate" + +#: main.py:118 +#, python-brace-format +msgid "" +"{0} is already running. Close the other instance before starting this " +"one. If you're sure that {0} isn't running, try deleting the file at {1}." +" If you're unsure of how to do this, contact the {0} developers." +msgstr "" +"{0} je već pokrenut. Zatvorite druge pokrenute prozore aplikacije pre " +"pokretanja ovog. Ako ste sigurni da {0} nije pokrenut, pokušajte da " +"obrišete datoteku koja se nalazi na {1}. Ako niste sigurni kako ovo da " +"uradite, kontaktirajte {0} programere." + +#: sound.py:148 +msgid "Playing..." +msgstr "Reprodukujem..." + +#: sound.py:161 +msgid "Stopped." +msgstr "Zaustavljeno." + +#: controller/mainController.py:261 +msgid "Ready" +msgstr "Spreman" + +#: controller/mainController.py:369 controller/mainController.py:654 +#: controller/mainController.py:673 controller/mainController.py:692 +#: controller/mainController.py:711 +msgid "" +"No session is currently in focus. Focus a session with the next or " +"previous session shortcut." +msgstr "" +"Trenutno nijedna sesija nije u fokusu. Fokusirajte neku pritiskom na " +"prečicu za prethodnu ili sledeću." + +#: controller/mainController.py:373 +msgid "Empty buffer." +msgstr "Prazan kanal." + +#: controller/mainController.py:380 +#, python-brace-format +msgid "{0} not found." +msgstr "{0} nije pronađen." + +#: controller/mainController.py:702 controller/mainController.py:721 +#, python-format +msgid "%s, %s of %s" +msgstr "%s, %s od %s" + +#: controller/mainController.py:704 controller/mainController.py:723 +#: controller/mainController.py:751 controller/mainController.py:779 +#, python-format +msgid "%s. Empty" +msgstr "%s. Prazno" + +#: controller/mainController.py:739 controller/mainController.py:743 +#: controller/mainController.py:767 +#, python-brace-format +msgid "{0}: This account is not logged into Twitter." +msgstr "{0}: Ovaj nalog nije prijavljen na twitter." + +#: controller/mainController.py:749 controller/mainController.py:777 +#, python-format +msgid "%s. %s, %s of %s" +msgstr "%s. %s, %s od %s" + +#: controller/mainController.py:771 +#, python-brace-format +msgid "{0}: This account is not logged into twitter." +msgstr "{0}: Ovaj nalog nije prijavljen na twitter." + +#: controller/mainController.py:910 controller/mainController.py:926 +msgid "An error happened while trying to connect to the server. Please try later." +msgstr "" +"Došlo je do greške pri pokušaju povezivanja na server. Molimo pokušajte " +"kasnije." + +#: controller/mainController.py:957 +msgid "The auto-reading of new tweets is enabled for this buffer" +msgstr "Automatsko čitanje novih tvitova je uključeno na ovom kanalu" + +#: controller/mainController.py:960 +msgid "The auto-reading of new tweets is disabled for this buffer" +msgstr "Automatsko čitanje tvitova je isključeno za tvitove na ovom kanalu" + +#: controller/mainController.py:967 +msgid "Session mute on" +msgstr "Utišavanje sesije uključeno" + +#: controller/mainController.py:970 +msgid "Session mute off" +msgstr "Utišavanje sesije isključeno" + +#: controller/mainController.py:979 +msgid "Buffer mute on" +msgstr "Utišavanje kanala uključeno" + +#: controller/mainController.py:982 +msgid "Buffer mute off" +msgstr "Utišavanje kanala isključeno" + +#: controller/mainController.py:999 +msgid "Copied" +msgstr "Kopirano" + +#: controller/mainController.py:1019 +msgid "Unable to update this buffer." +msgstr "Ne mogu da ažuriram ovaj kanal." + +#: controller/mainController.py:1021 +msgid "Updating buffer..." +msgstr "Ažuriram kanal..." + +#: controller/mainController.py:1024 +#, python-brace-format +msgid "{0} items retrieved" +msgstr "{0} primljenih stavki" + +#: controller/buffers/mastodon/base.py:137 controller/mainController.py:1028 +#: controller/mastodon/handler.py:98 controller/mastodon/handler.py:241 +#, python-brace-format +msgid "Timeline for {}" +msgstr "Vremenska linija od {}" + +#: controller/buffers/mastodon/users.py:93 controller/mainController.py:1030 +#: controller/mastodon/handler.py:100 controller/mastodon/handler.py:255 +#, python-brace-format +msgid "Followers for {}" +msgstr "Pratioci od {}" + +#: controller/mainController.py:1032 +#, python-brace-format +msgid "Friends for {}" +msgstr "Prijatelji od {}" + +#: controller/buffers/mastodon/users.py:95 controller/mainController.py:1034 +#: controller/mastodon/handler.py:102 controller/mastodon/handler.py:269 +#, python-brace-format +msgid "Following for {}" +msgstr "Praćenja za {}" + +#: controller/messages.py:18 +#, fuzzy +msgid "Translated" +msgstr "&Prevedi" + +#: controller/settings.py:60 +msgid "System default" +msgstr "Sistemski podrazumevani" + +#: controller/settings.py:60 +msgid "HTTP" +msgstr "HTTP" + +#: controller/settings.py:60 +msgid "SOCKS v4" +msgstr "SOCKS v4" + +#: controller/settings.py:60 +msgid "SOCKS v4 with DNS support" +msgstr "SOCKS v4 sa DNS podrškom" + +#: controller/settings.py:60 +msgid "SOCKS v5" +msgstr "SOCKS v5" + +#: controller/settings.py:60 +msgid "SOCKS v5 with DNS support" +msgstr "SOCKS v5 sa DNS podrškom" + +#: controller/userAlias.py:31 +#, python-brace-format +msgid "Edit alias for {}" +msgstr "Uredi nadimak za {}" + +#: controller/buffers/base/base.py:91 +#: controller/buffers/mastodon/conversations.py:237 +#: controller/buffers/mastodon/search.py:80 +msgid "This action is not supported for this buffer" +msgstr "Ova radnja nije podržana na ovom kanalu" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:70 +#: controller/mastodon/settings.py:194 +msgid "Home" +msgstr "Početak" + +#: controller/buffers/mastodon/base.py:52 +#: controller/buffers/mastodon/community.py:22 +#: controller/mastodon/handler.py:72 controller/mastodon/handler.py:114 +#: controller/mastodon/settings.py:195 +msgid "Local" +msgstr "Lokalna" + +#: controller/buffers/mastodon/base.py:52 +#: controller/buffers/mastodon/community.py:22 +#: controller/mastodon/handler.py:74 controller/mastodon/settings.py:196 +msgid "Federated" +msgstr "Javna" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:76 +#: controller/mastodon/settings.py:197 +msgid "Mentions" +msgstr "Spominjanja" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:84 +#: controller/mastodon/settings.py:201 +msgid "Bookmarks" +msgstr "Markeri" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:78 +msgid "Direct messages" +msgstr "Direktne Poruke" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:80 +#: controller/mastodon/settings.py:199 +msgid "Sent" +msgstr "Poslato" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:82 +#: controller/mastodon/settings.py:200 wxUI/dialogs/mastodon/postDialogs.py:229 +msgid "Favorites" +msgstr "Omiljeni" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:86 +#: controller/mastodon/settings.py:202 +msgid "Followers" +msgstr "Pratioci" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:88 +#: controller/mastodon/settings.py:203 +msgid "Following" +msgstr "Praćenja" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:92 +#: controller/mastodon/settings.py:204 +msgid "Blocked users" +msgstr "Blokirani korisnici" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:90 +#: controller/mastodon/settings.py:205 +msgid "Muted users" +msgstr "Utišani korisnici" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:94 +#: controller/mastodon/settings.py:206 +#: wxUI/dialogs/mastodon/filters/create_filter.py:80 +msgid "Notifications" +msgstr "Obaveštenja" + +#: controller/buffers/mastodon/base.py:58 +#, python-brace-format +msgid "{username}'s timeline" +msgstr "Vremenska linija korisnika {username}" + +#: controller/buffers/mastodon/base.py:60 +#, python-brace-format +msgid "{username}'s followers" +msgstr "Pratioci korisnika {username}" + +#: controller/buffers/mastodon/base.py:62 +#, python-brace-format +msgid "{username}'s following" +msgstr "Praćenja korisnika {username}" + +#: controller/buffers/mastodon/base.py:64 +msgid "Unknown buffer" +msgstr "Nepoznat kanal" + +#: controller/buffers/mastodon/base.py:67 +#: controller/buffers/mastodon/base.py:645 wxUI/buffers/mastodon/base.py:24 +#: wxUI/buffers/mastodon/conversationList.py:24 +#: wxUI/buffers/mastodon/notifications.py:22 wxUI/buffers/mastodon/user.py:18 +#: wxUI/dialogs/mastodon/postDialogs.py:5 +#: wxUI/dialogs/mastodon/postDialogs.py:194 wxUI/sysTrayIcon.py:35 +msgid "Post" +msgstr "Objava" + +#: controller/buffers/mastodon/base.py:68 +#: controller/buffers/mastodon/base.py:646 +msgid "Write your post here" +msgstr "Otkucajte vašu objavu ovde" + +#: controller/buffers/mastodon/base.py:153 +#, python-brace-format +msgid "New post in {0}" +msgstr "Nova objava u {0}" + +#: controller/buffers/mastodon/base.py:159 +#, python-brace-format +msgid "{0} new posts in {1}." +msgstr "{0} novih objava u kanalu {1}." + +#: controller/buffers/mastodon/base.py:198 +#: controller/buffers/mastodon/community.py:90 +#: controller/buffers/mastodon/conversations.py:100 +#: controller/buffers/mastodon/mentions.py:82 +#: controller/buffers/mastodon/users.py:139 +#, python-format +msgid "%s items retrieved" +msgstr "%s primljenih stavki" + +#: controller/buffers/mastodon/base.py:216 +#: controller/buffers/mastodon/users.py:206 +msgid "This buffer is not a timeline; it can't be deleted." +msgstr "Ovaj kanal nije vremenska linija i ne može biti izbrisan." + +#: controller/buffers/mastodon/base.py:346 +#: controller/buffers/mastodon/base.py:384 +#, python-brace-format +msgid "Conversation with {}" +msgstr "Razgovor sa {}" + +#: controller/buffers/mastodon/base.py:347 +#: controller/buffers/mastodon/base.py:385 +#: controller/buffers/mastodon/conversations.py:181 +#: controller/buffers/mastodon/notifications.py:122 +#: controller/buffers/mastodon/users.py:52 +msgid "Write your message here" +msgstr "Otkucajte vašu poruku ovde" + +#: controller/buffers/mastodon/base.py:349 +#, python-brace-format +msgid "Reply to {}" +msgstr "Odgovori korisniku {}" + +#: controller/buffers/mastodon/base.py:350 +msgid "Write your reply here" +msgstr "Otkucajte vaš odgovor ovde" + +#: controller/buffers/mastodon/base.py:412 +msgid "This action is not supported on conversations." +msgstr "Ova radnja nije podržana za razgovore." + +#: controller/buffers/mastodon/base.py:477 +msgid "Opening URL..." +msgstr "Otvaram vezu..." + +#: controller/buffers/mastodon/base.py:490 +msgid "You can delete only your own posts." +msgstr "Možete da obrišete samo vaše objave." + +#: controller/buffers/mastodon/base.py:519 +msgid "Opening item in web browser..." +msgstr "Otvaram stavku u Web pretraživaču..." + +#: controller/buffers/mastodon/base.py:527 +#: controller/buffers/mastodon/base.py:547 +msgid "Adding to favorites..." +msgstr "Dodavanje u omiljene..." + +#: controller/buffers/mastodon/base.py:534 +#: controller/buffers/mastodon/base.py:549 +msgid "Removing from favorites..." +msgstr "Uklanjanje iz omiljenih..." + +#: controller/buffers/mastodon/base.py:544 +#: controller/buffers/mastodon/base.py:559 +#: controller/buffers/mastodon/base.py:573 +#: controller/buffers/mastodon/conversations.py:213 +msgid "No status found with that ID" +msgstr "Status koji ima ovaj ID nije pronađen" + +#: controller/buffers/mastodon/base.py:562 +msgid "Adding to bookmarks..." +msgstr "Dodavanje u markere..." + +#: controller/buffers/mastodon/base.py:564 +msgid "Removing from bookmarks..." +msgstr "Uklanjanje iz markera..." + +#: controller/buffers/mastodon/base.py:586 +#, python-brace-format +msgid "Picture {0}" +msgstr "Slika {0}" + +#: controller/buffers/mastodon/base.py:587 +msgid "Select the picture" +msgstr "Izaberite sliku" + +#: controller/buffers/mastodon/base.py:610 +msgid "Unable to extract text" +msgstr "Ne mogu da izdvojim tekst" + +#: controller/buffers/mastodon/base.py:612 +msgid "OCR Result" +msgstr "Rezultat prepoznavanja" + +#: controller/buffers/mastodon/base.py:627 +msgid "this poll no longer exists." +msgstr "Ova anketa više ne postoji." + +#: controller/buffers/mastodon/base.py:630 +msgid "This poll has already expired." +msgstr "Ova anketa je već završena." + +#: controller/buffers/mastodon/base.py:633 +msgid "You have already voted on this poll." +msgstr "Već ste glasali na ovu anketu." + +#: controller/buffers/mastodon/base.py:642 +msgid "Sending vote..." +msgstr "Slanje ankete..." + +#: controller/buffers/mastodon/conversations.py:180 +#, python-brace-format +msgid "Reply to conversation with {}" +msgstr "Odgovor na razgovor sa korisnikom {}" + +#: controller/buffers/mastodon/notifications.py:121 +#: controller/buffers/mastodon/users.py:51 +#, python-brace-format +msgid "New conversation with {}" +msgstr "Novi razgovor sa {}" + +#: controller/buffers/mastodon/notifications.py:151 +msgid "Notification dismissed." +msgstr "Obaveštenje odbačeno." + +#: controller/buffers/mastodon/users.py:110 +msgid "There are no more items in this buffer." +msgstr "Nema više stavki na ovom kalanu." + +#: controller/mastodon/handler.py:30 wxUI/dialogs/mastodon/updateProfile.py:35 +#, fuzzy +msgid "Update Profile" +msgstr "Ažuriraj profil" + +#: controller/mastodon/handler.py:31 wxUI/dialogs/mastodon/search.py:10 +#: wxUI/view.py:19 +msgid "&Search" +msgstr "Pretraži" + +#: controller/mastodon/handler.py:33 wxUI/view.py:22 +msgid "Manage user aliases" +msgstr "Upravljanje korisničkim nadimcima" + +#: controller/mastodon/handler.py:35 controller/mastodon/handler.py:59 +#: wxUI/view.py:30 +msgid "&Post" +msgstr "&Objavi" + +#: controller/mastodon/handler.py:36 wxUI/dialogs/mastodon/menus.py:9 +#: wxUI/dialogs/mastodon/menus.py:37 wxUI/view.py:31 +msgid "Re&ply" +msgstr "Odgovori" + +#: controller/mastodon/handler.py:37 wxUI/dialogs/mastodon/menus.py:7 +#: wxUI/dialogs/mastodon/menus.py:35 wxUI/view.py:32 +msgid "&Boost" +msgstr "&Podeli" + +#: controller/mastodon/handler.py:38 wxUI/dialogs/mastodon/menus.py:11 +#: wxUI/dialogs/mastodon/menus.py:39 wxUI/view.py:33 +msgid "&Add to favorites" +msgstr "&Dodaj u omiljene" + +#: controller/mastodon/handler.py:39 +msgid "Remove from favorites" +msgstr "Ukloni iz omiljenih" + +#: controller/mastodon/handler.py:40 wxUI/dialogs/mastodon/menus.py:21 +#: wxUI/dialogs/mastodon/menus.py:49 wxUI/view.py:35 +msgid "&Show post" +msgstr "&Prikaži objavu" + +#: controller/mastodon/handler.py:41 wxUI/view.py:36 +msgid "View conversa&tion" +msgstr "Vidi razgovor" + +#: controller/mastodon/handler.py:42 wxUI/view.py:37 +msgid "Read text in picture" +msgstr "Čitaj tekst u slici" + +#: controller/mastodon/handler.py:43 wxUI/dialogs/mastodon/menus.py:25 +#: wxUI/view.py:39 +msgid "&Delete" +msgstr "Izbriši" + +#: controller/mastodon/handler.py:45 wxUI/view.py:43 +msgid "&Actions..." +msgstr "Radnje..." + +#: controller/mastodon/handler.py:46 wxUI/view.py:44 +msgid "&View timeline..." +msgstr "Vidi vremensku liniju..." + +#: controller/mastodon/handler.py:47 wxUI/view.py:45 +msgid "Direct me&ssage" +msgstr "Direktna poruka" + +#: controller/mastodon/handler.py:48 wxUI/view.py:46 +msgid "Add a&lias" +msgstr "Dodaj &nadimak" + +#: controller/mastodon/handler.py:51 +#, fuzzy +msgid "Show user profile" +msgstr "Prikaži profil korisnika" + +#: controller/mastodon/handler.py:54 +msgid "Create c&ommunity timeline" +msgstr "" + +#: controller/mastodon/handler.py:55 wxUI/view.py:57 +msgid "Create a &filter" +msgstr "Napravi &filter" + +#: controller/mastodon/handler.py:56 wxUI/view.py:58 +msgid "&Manage filters" +msgstr "&Upravljanje filterima" + +#: controller/mastodon/handler.py:95 +msgid "Timelines" +msgstr "Vremenske linije" + +#: controller/mastodon/handler.py:107 +msgid "Searches" +msgstr "Pretrage" + +#: controller/mastodon/handler.py:110 controller/mastodon/handler.py:191 +#: controller/mastodon/handler.py:196 +#, python-brace-format +msgid "Search for {}" +msgstr "Pretraga za {}" + +#: controller/mastodon/handler.py:111 +msgid "Communities" +msgstr "" + +#: controller/mastodon/handler.py:114 +#, fuzzy +msgid "federated" +msgstr "Javna" + +#: controller/mastodon/handler.py:143 +#, python-brace-format +msgid "Conversation with {0}" +msgstr "Razgovor sa {0}" + +#: controller/mastodon/handler.py:299 +msgid "Add an user alias" +msgstr "Dodaj nadimak za korisnika" + +#: controller/mastodon/handler.py:311 +#, python-brace-format +msgid "Alias has been set correctly for {}." +msgstr "Nadimak za {} je uspešno podešen." + +#: controller/mastodon/handler.py:342 +#, fuzzy +msgid "Update profile" +msgstr "Ažuriraj profil" + +#: controller/mastodon/messages.py:115 +#, python-format +msgid "%s - %s of %d characters" +msgstr "%s - %s od %d znakova" + +#: controller/mastodon/messages.py:239 +#, python-brace-format +msgid "Poll with {} options" +msgstr "Anketa sa {} opcija" + +#: controller/mastodon/messages.py:272 +#, python-brace-format +msgid "Post from {}" +msgstr "Objava iz {}" + +#: controller/mastodon/messages.py:276 sessions/mastodon/templates.py:82 +#: wxUI/dialogs/mastodon/postDialogs.py:49 +msgid "Public" +msgstr "Javna" + +#: controller/mastodon/messages.py:276 sessions/mastodon/templates.py:82 +#: wxUI/dialogs/mastodon/postDialogs.py:49 +msgid "Not listed" +msgstr "Nije u listi" + +#: controller/mastodon/messages.py:276 +msgid "followers only" +msgstr "Samo pratioci" + +#: controller/mastodon/messages.py:276 sessions/mastodon/templates.py:82 +#: wxUI/dialogs/mastodon/postDialogs.py:49 +msgid "Direct" +msgstr "Direktna" + +#: controller/mastodon/messages.py:283 +msgid "Remote instance" +msgstr "Udaljena instanca" + +#: controller/mastodon/messages.py:291 controller/mastodon/messages.py:319 +#, fuzzy +msgid "Unmute conversation" +msgstr "Vidi razgovor" + +#: controller/mastodon/messages.py:315 wxUI/dialogs/mastodon/postDialogs.py:237 +#, fuzzy +msgid "Mute conversation" +msgstr "Vidi razgovor" + +#: controller/mastodon/messages.py:316 +#, fuzzy +msgid "Conversation unmuted." +msgstr "Razgovor sa {}" + +#: controller/mastodon/messages.py:320 +#, fuzzy +msgid "Conversation muted." +msgstr "Razgovor sa {}" + +#: controller/mastodon/messages.py:331 +msgid "people who boosted this post" +msgstr "" + +#: controller/mastodon/messages.py:336 +msgid "people who favorited this post" +msgstr "" + +#: controller/mastodon/messages.py:342 +msgid "Link copied to clipboard." +msgstr "Link kopiran u privremenu memoriju." + +#: controller/mastodon/settings.py:82 +#, python-format +msgid "Account settings for %s" +msgstr "Postavke naloga za %s" + +#: controller/mastodon/settings.py:92 +#, python-brace-format +msgid "Edit template for posts. Current template: {}" +msgstr "Uredi šablon objava. Trenutni šablon: {}" + +#: controller/mastodon/settings.py:101 +#, python-brace-format +msgid "Edit template for conversations. Current template: {}" +msgstr "Uredi šablon razgovora. Trenutni šablon: {}" + +#: controller/mastodon/settings.py:110 +#, python-brace-format +msgid "Edit template for persons. Current template: {}" +msgstr "Uredi šablon prikazivanja osoba. Trenutni šablon: {}" + +#: controller/mastodon/settings.py:198 +msgid "Direct Messages" +msgstr "Direktne poruke " + +#: controller/mastodon/filters/create_filter.py:75 +#, fuzzy, python-brace-format +msgid "Update Filter: {}" +msgstr "Ažuriraj profil" + +#: controller/mastodon/filters/manage_filters.py:57 +#: wxUI/dialogs/mastodon/filters/create_filter.py:90 +msgid "Never" +msgstr "" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:4 +msgid "Audio tweet." +msgstr "Tvit sa zvučnim zapisom." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:5 +msgid "User timeline buffer created." +msgstr "Kanal sa korisničkom vremenskom linijom je stvoren." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:6 +msgid "Buffer destroied." +msgstr "Kanal je izbrisan." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:7 +msgid "Direct message received." +msgstr "Primljena direktna poruka." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:8 +msgid "Direct message sent." +msgstr "Direktna poruka je poslata." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:9 +msgid "Error." +msgstr "Greška." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:10 +msgid "Tweet liked." +msgstr "Tvit je označen sa sviđa mi se." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:11 +msgid "Likes buffer updated." +msgstr "Kanal sviđanja je ažuriran." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:12 +msgid "Geotweet." +msgstr "Tvit sa lokacijom." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:13 +msgid "Tweet contains one or more images" +msgstr "Tvit sadrži jednu ili više slika" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:14 +msgid "Boundary reached." +msgstr "Vrh ili dno." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:15 +msgid "List updated." +msgstr "Lista ažurirana." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:16 +msgid "Too many characters." +msgstr "Previše znakova." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:17 +msgid "Mention received." +msgstr "Neko vas je spomenuo." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:18 +msgid "New event." +msgstr "Novi događaj." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:19 +#, python-brace-format +msgid "{0} is ready." +msgstr "{0} je spreman." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:20 +msgid "Mention sent." +msgstr "Spominjanje je poslato." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:21 +msgid "Tweet retweeted." +msgstr "Tvit je retvitovan." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:22 +msgid "Search buffer updated." +msgstr "Kanal pretrage je ažuriran." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:23 +msgid "Tweet received." +msgstr "Tvit je primljen." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:24 +msgid "Tweet sent." +msgstr "Tvit je poslat." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:25 +msgid "Trending topics buffer updated." +msgstr "Kanal sa temama u trendu je ažuriran." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:26 +msgid "New tweet in user timeline buffer." +msgstr "Novi tvit u kanalu korisničke vremenske linije." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:27 +msgid "New follower." +msgstr "Novi pratilac." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:28 +msgid "Volume changed." +msgstr "Jačina je promenjena." + +#: extra/SoundsTutorial/wx_ui.py:8 +msgid "Sounds tutorial" +msgstr "Zvučna uputstva" + +#: extra/SoundsTutorial/wx_ui.py:11 +msgid "Press enter to listen to the sound for the selected event" +msgstr "Pritisnite enter kako bi ste čuli zvuk određenog događaja" + +#: extra/SpellChecker/spellchecker.py:56 +#, python-format +msgid "Misspelled word: %s" +msgstr "Pogrešno napisana reč: %s" + +#: extra/SpellChecker/wx_ui.py:27 +msgid "Misspelled word" +msgstr "Pogrešno napisana reč" + +#: extra/SpellChecker/wx_ui.py:32 +msgid "Context" +msgstr "Kontekst" + +#: extra/SpellChecker/wx_ui.py:37 +msgid "Suggestions" +msgstr "Predlozi" + +#: extra/SpellChecker/wx_ui.py:42 +msgid "&Ignore" +msgstr "&Zanemari" + +#: extra/SpellChecker/wx_ui.py:43 +msgid "I&gnore all" +msgstr "Z&anemai sve" + +#: extra/SpellChecker/wx_ui.py:44 +msgid "&Replace" +msgstr "&Zameni" + +#: extra/SpellChecker/wx_ui.py:45 +msgid "R&eplace all" +msgstr "Zam&eni sve" + +#: extra/SpellChecker/wx_ui.py:46 +msgid "&Add to personal dictionary" +msgstr "&Dodaj u lični rečnik" + +#: extra/SpellChecker/wx_ui.py:79 +#, python-brace-format +msgid "" +"An error has occurred. There are no dictionaries available for the " +"selected language in {0}" +msgstr "Došlo je do greške. Nema rečnika za odabrani jezik {0}" + +#: extra/SpellChecker/wx_ui.py:79 +#: extra/autocompletionUsers/mastodon/wx_scan.py:44 +#: wxUI/commonMessageDialogs.py:23 wxUI/commonMessageDialogs.py:36 +#: wxUI/commonMessageDialogs.py:45 wxUI/commonMessageDialogs.py:52 +#: wxUI/commonMessageDialogs.py:55 wxUI/commonMessageDialogs.py:61 +#: wxUI/dialogs/mastodon/dialogs.py:38 wxUI/dialogs/mastodon/dialogs.py:43 +#: wxUI/dialogs/mastodon/dialogs.py:48 wxUI/dialogs/mastodon/dialogs.py:53 +#: wxUI/dialogs/mastodon/dialogs.py:60 +msgid "Error" +msgstr "Greška" + +#: extra/SpellChecker/wx_ui.py:82 +msgid "Spell check complete." +msgstr "Provera pravopisa je završena." + +#: extra/autocompletionUsers/completion.py:39 +#: extra/autocompletionUsers/completion.py:57 +msgid "You have to start writing" +msgstr "" + +#: extra/autocompletionUsers/completion.py:49 +#: extra/autocompletionUsers/completion.py:66 +#, fuzzy +msgid "There are no results in your users database" +msgstr "Nema više stavki na ovom kalanu." + +#: extra/autocompletionUsers/completion.py:51 +#, fuzzy +msgid "Autocompletion only works for users." +msgstr "&Automatsko dovršavanje" + +#: extra/autocompletionUsers/wx_manage.py:9 +#, fuzzy +msgid "Manage Autocompletion database" +msgstr "Upravljaj bazom automatskog dovršavanja" + +#: extra/autocompletionUsers/wx_manage.py:12 +#, fuzzy, python-brace-format +msgid "Editing {0} users database" +msgstr "Uredi korisničke nadimke" + +#: extra/autocompletionUsers/wx_manage.py:13 +#, fuzzy +msgid "Username" +msgstr "Korisnik" + +#: extra/autocompletionUsers/wx_manage.py:13 wxUI/dialogs/configuration.py:108 +msgid "Name" +msgstr "Ime" + +#: extra/autocompletionUsers/wx_manage.py:16 +#, fuzzy +msgid "Add user" +msgstr "Korisnik" + +#: extra/autocompletionUsers/wx_manage.py:17 +#, fuzzy +msgid "Remove user" +msgstr "Ukloni korisnički nadimak" + +#: extra/autocompletionUsers/wx_manage.py:38 +msgid "Twitter username" +msgstr "" + +#: extra/autocompletionUsers/wx_manage.py:38 +#, fuzzy +msgid "Add user to database" +msgstr "Dodaj nadimak za korisnika" + +#: extra/autocompletionUsers/wx_manage.py:44 +#, fuzzy +msgid "The user does not exist" +msgstr "Taj korisnik ne postoji." + +#: extra/autocompletionUsers/wx_manage.py:44 +#, fuzzy +msgid "Error!" +msgstr "Greška" + +#: extra/autocompletionUsers/mastodon/scan.py:49 +msgid "" +"Updating database... You can close this window now. A message will tell " +"you when the process finishes." +msgstr "" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:8 +#, fuzzy +msgid "Autocomplete users' settings" +msgstr "&Automatsko dovršavanje" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:11 +#, fuzzy +msgid "Add &followers to database" +msgstr "Dodaj nadimak za korisnika" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:12 +#, fuzzy +msgid "Add f&ollowing to database" +msgstr "Dodaj nadimak za korisnika" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:26 +#, fuzzy +msgid "Updating autocompletion database" +msgstr "Upravljaj bazom automatskog dovršavanja" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:34 +msgid "" +"This process will retrieve the users you selected from your Mastodon " +"account, and add them to the user autocomplete database. Please note that" +" if there are many users or you have tried to perform this action less " +"than 15 minutes ago, TWBlue may reach a limit in API calls when trying to" +" load the users into the database. If this happens, we will show you an " +"error, in which case you will have to try this process again in a few " +"minutes. If this process ends with no error, you will be redirected back " +"to the account settings dialog. Do you want to continue?" +msgstr "" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:34 +#: wxUI/commonMessageDialogs.py:20 +msgid "Attention" +msgstr "Pažnja" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:40 +#, python-brace-format +msgid "TWBlue has imported {} users successfully." +msgstr "" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:40 +#, fuzzy +msgid "Done" +msgstr "Dovršeno" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:44 +msgid "Error adding users from Mastodon. Please try again in about 15 minutes." +msgstr "" + +#: extra/ocr/OCRSpace.py:7 +msgid "Detect automatically" +msgstr "Otkrij automatski" + +#: extra/ocr/OCRSpace.py:7 +msgid "Danish" +msgstr "danski" + +#: extra/ocr/OCRSpace.py:7 +msgid "Dutch" +msgstr "Holandski" + +#: extra/ocr/OCRSpace.py:7 +msgid "English" +msgstr "engleski" + +#: extra/ocr/OCRSpace.py:7 +msgid "Finnish" +msgstr "finski" + +#: extra/ocr/OCRSpace.py:7 +msgid "French" +msgstr "francuski" + +#: extra/ocr/OCRSpace.py:7 +msgid "German" +msgstr "nemački" + +#: extra/ocr/OCRSpace.py:7 +msgid "Hungarian" +msgstr "mađarski" + +#: extra/ocr/OCRSpace.py:7 +msgid "Korean" +msgstr "korejski" + +#: extra/ocr/OCRSpace.py:7 +msgid "Italian" +msgstr "italijanski" + +#: extra/ocr/OCRSpace.py:7 +msgid "Japanese" +msgstr "japanski" + +#: extra/ocr/OCRSpace.py:7 +msgid "Polish" +msgstr "poljski" + +#: extra/ocr/OCRSpace.py:7 +msgid "Portuguese" +msgstr "portugalski" + +#: extra/ocr/OCRSpace.py:7 +msgid "Russian" +msgstr "ruski" + +#: extra/ocr/OCRSpace.py:7 +msgid "Spanish" +msgstr "španski" + +#: extra/ocr/OCRSpace.py:7 +msgid "Turkish" +msgstr "turski" + +#: extra/translator/wx_ui.py:25 +msgid "Translate message" +msgstr "prevedi poruku" + +#: extra/translator/wx_ui.py:29 +#, fuzzy +msgid "Translation engine" +msgstr "&Prevedi" + +#: extra/translator/wx_ui.py:32 +msgid "Target language" +msgstr "Odredišni jezik" + +#: keystrokeEditor/wx_ui.py:8 +msgid "Keystroke editor" +msgstr "Uređivač prečica" + +#: keystrokeEditor/wx_ui.py:11 +msgid "Select a keystroke to edit" +msgstr "Izaberite prečicu koju želite da izmenite" + +#: keystrokeEditor/wx_ui.py:12 +#: wxUI/dialogs/mastodon/filters/manage_filters.py:18 +#: wxUI/dialogs/mastodon/userActions.py:9 +#: wxUI/dialogs/mastodon/userActions.py:18 +#: wxUI/dialogs/mastodon/userActions.py:19 +msgid "Action" +msgstr "Radnja" + +#: keystrokeEditor/wx_ui.py:12 +msgid "Keystroke" +msgstr "Prečica" + +#: keystrokeEditor/wx_ui.py:17 +#: wxUI/dialogs/mastodon/filters/manage_filters.py:23 +#: wxUI/dialogs/userAliasDialogs.py:53 +msgid "Edit" +msgstr "Izmeni" + +#: keystrokeEditor/wx_ui.py:19 keystrokeEditor/wx_ui.py:49 +msgid "Undefine keystroke" +msgstr "Izbriši prečicu" + +#: keystrokeEditor/wx_ui.py:20 +msgid "Execute action" +msgstr "Izvrši radnju" + +#: keystrokeEditor/wx_ui.py:21 wxUI/dialogs/userAliasDialogs.py:25 +msgid "Close" +msgstr "Zatvori" + +#: keystrokeEditor/wx_ui.py:41 +msgid "Undefined" +msgstr "Izbrisana" + +#: keystrokeEditor/wx_ui.py:49 +msgid "Are you sure you want to undefine this keystroke?" +msgstr "Da li zaista želite da izbrišete ovu prečicu?" + +#: keystrokeEditor/wx_ui.py:53 +msgid "Editing keystroke" +msgstr "Uređujem prečicu" + +#: keystrokeEditor/wx_ui.py:56 +msgid "Control" +msgstr "Control" + +#: keystrokeEditor/wx_ui.py:57 +msgid "Alt" +msgstr "Alt" + +#: keystrokeEditor/wx_ui.py:58 +msgid "Shift" +msgstr "Shift" + +#: keystrokeEditor/wx_ui.py:59 +msgid "Windows" +msgstr "Windows" + +#: keystrokeEditor/wx_ui.py:65 +msgid "Key" +msgstr "Taster" + +#: keystrokeEditor/wx_ui.py:70 wxUI/dialogs/find.py:21 +#: wxUI/dialogs/mastodon/showUserProfile.py:31 +#: wxUI/dialogs/userAliasDialogs.py:23 +msgid "OK" +msgstr "U redu" + +#: keystrokeEditor/wx_ui.py:83 +msgid "You need to use the Windows key" +msgstr "Morate koristiti Windows taster" + +#: keystrokeEditor/wx_ui.py:83 keystrokeEditor/wx_ui.py:86 +msgid "Invalid keystroke" +msgstr "Pogrešna prečica" + +#: keystrokeEditor/wx_ui.py:86 +msgid "You must provide a character for the keystroke" +msgstr "Morate upisati znak u prečici" + +#: keystrokeEditor/actions/mastodon.py:3 +msgid "Go up in the current buffer" +msgstr "Idite na gore u trenutnom kanalu" + +#: keystrokeEditor/actions/mastodon.py:4 +msgid "Go down in the current buffer" +msgstr "Idite na dole u trenutnom kanalu" + +#: keystrokeEditor/actions/mastodon.py:5 +msgid "Go to the previous buffer" +msgstr "Idi na prethodni kanal" + +#: keystrokeEditor/actions/mastodon.py:6 +msgid "Go to the next buffer" +msgstr "Idi na sledeći kanal" + +#: keystrokeEditor/actions/mastodon.py:7 +msgid "Focus the next session" +msgstr "Fokusiraj sledeću sesiju" + +#: keystrokeEditor/actions/mastodon.py:8 +msgid "Focus the previous session" +msgstr "Fokusiraj prethodnu sesiju" + +#: keystrokeEditor/actions/mastodon.py:9 +msgid "Show or hide the GUI" +msgstr "Prikaži ili sakrij okruženje" + +#: keystrokeEditor/actions/mastodon.py:10 +msgid "Make a new post" +msgstr "Napiši novu objavu" + +#: keystrokeEditor/actions/mastodon.py:11 wxUI/buffers/mastodon/base.py:26 +#: wxUI/buffers/mastodon/conversationList.py:25 +msgid "Reply" +msgstr "Odgovori" + +#: keystrokeEditor/actions/mastodon.py:12 wxUI/buffers/mastodon/base.py:25 +#: wxUI/dialogs/mastodon/dialogs.py:7 +msgid "Boost" +msgstr "Podeli" + +#: keystrokeEditor/actions/mastodon.py:13 +msgid "Send direct message" +msgstr "Pošalji direktnu poruku" + +#: keystrokeEditor/actions/mastodon.py:14 +msgid "Add post to favorites" +msgstr "Dodaj objavu u omiljene" + +#: keystrokeEditor/actions/mastodon.py:15 +msgid "Remove post from favorites" +msgstr "Ukloni objavu iz omiljenih" + +#: keystrokeEditor/actions/mastodon.py:16 +msgid "Add/remove post from favorites" +msgstr "Dodaj/ukloni objavu iz omiljenih" + +#: keystrokeEditor/actions/mastodon.py:17 +msgid "Open the user actions dialogue" +msgstr "Otvori dialog korisničkih radnji" + +#: keystrokeEditor/actions/mastodon.py:18 +#, fuzzy +msgid "See user details" +msgstr "Ukloni korisnički nadimak" + +#: keystrokeEditor/actions/mastodon.py:19 +msgid "Show post" +msgstr "Prikaži objavu" + +#: keystrokeEditor/actions/mastodon.py:20 +msgid "Quit" +msgstr "Napusti" + +#: keystrokeEditor/actions/mastodon.py:21 +msgid "Open user timeline" +msgstr "Otvori korisničku vremensku crtu" + +#: keystrokeEditor/actions/mastodon.py:22 +msgid "Destroy buffer" +msgstr "Izbriši kanal" + +#: keystrokeEditor/actions/mastodon.py:23 +msgid "Interact with the currently focused post." +msgstr "Interakcija sa trenutno fokusiranom objavom." + +#: keystrokeEditor/actions/mastodon.py:24 +msgid "Open URL" +msgstr "Otvori vezu" + +#: keystrokeEditor/actions/mastodon.py:25 +msgid "View in browser" +msgstr "Prikaži u pretraživaču" + +#: keystrokeEditor/actions/mastodon.py:26 +msgid "Increase volume by 5%" +msgstr "Pojačaj ton za 5%" + +#: keystrokeEditor/actions/mastodon.py:27 +msgid "Decrease volume by 5%" +msgstr "Utišaj ton za 5%" + +#: keystrokeEditor/actions/mastodon.py:28 +msgid "Jump to the first element of a buffer" +msgstr "Skoči na prvi element kanala" + +#: keystrokeEditor/actions/mastodon.py:29 +msgid "Jump to the last element of the current buffer" +msgstr "Skoči na poslednji element kanala" + +#: keystrokeEditor/actions/mastodon.py:30 +msgid "Jump 20 elements up in the current buffer" +msgstr "Skoči dvadeset elemenata na gore u trenutnom kanalu" + +#: keystrokeEditor/actions/mastodon.py:31 +msgid "Jump 20 elements down in the current buffer" +msgstr "Skoči 20 elemenata nadole u trenutnom kanalu" + +#: keystrokeEditor/actions/mastodon.py:33 +msgid "Delete post" +msgstr "Izbriši objavu" + +#: keystrokeEditor/actions/mastodon.py:34 +msgid "Empty the current buffer" +msgstr "Očisti trenutni kanal" + +#: keystrokeEditor/actions/mastodon.py:35 +msgid "Repeat last item" +msgstr "Ponovi poslednju stavku" + +#: keystrokeEditor/actions/mastodon.py:36 +msgid "Copy to clipboard" +msgstr "Kopiraj u ostavu" + +#: keystrokeEditor/actions/mastodon.py:39 +msgid "Mute/unmute the active buffer" +msgstr "Utišaj ili pokreni trenutni kanal" + +#: keystrokeEditor/actions/mastodon.py:40 +msgid "Mute/unmute the current session" +msgstr "Utišaj ili pokreni trenutnu sesiju" + +#: keystrokeEditor/actions/mastodon.py:41 +msgid "toggle the automatic reading of incoming tweets in the active buffer" +msgstr "uključi ili isključi automatsko čitanje tvitova u trenutnom kanalu" + +#: keystrokeEditor/actions/mastodon.py:42 +msgid "Search on instance" +msgstr "Traži na instanci" + +#: keystrokeEditor/actions/mastodon.py:43 +msgid "Find a string in the currently focused buffer" +msgstr "Pronađi tekst u trenutnom kanalu" + +#: keystrokeEditor/actions/mastodon.py:44 +msgid "Show the keystroke editor" +msgstr "Prikaži uređivača prečica" + +#: keystrokeEditor/actions/mastodon.py:46 +msgid "load previous items" +msgstr "Učitaj prethodne stavke" + +#: keystrokeEditor/actions/mastodon.py:48 +msgid "View conversation" +msgstr "Vidi razgovor" + +#: keystrokeEditor/actions/mastodon.py:49 +msgid "Check and download updates" +msgstr "Proveri i preuzmi nadogradnje" + +#: keystrokeEditor/actions/mastodon.py:50 +msgid "Opens the global settings dialogue" +msgstr "Otvara dijalog globalnih podešavanja" + +#: keystrokeEditor/actions/mastodon.py:52 +msgid "Opens the account settings dialogue" +msgstr "Otvara podešavanja naloga" + +#: keystrokeEditor/actions/mastodon.py:53 +msgid "Try to play a media file" +msgstr "Pokušaj reprodukcije medijskog zapisa" + +#: keystrokeEditor/actions/mastodon.py:54 +msgid "Updates the buffer and retrieves possible lost items there." +msgstr "Ažurira kanal i preuzima moguće izgubljene stavke." + +#: keystrokeEditor/actions/mastodon.py:55 +msgid "Extracts the text from a picture and displays the result in a dialog." +msgstr "Izdvaja tekst iz slike i prikazuje rezultat u dijaloškom prozoru." + +#: keystrokeEditor/actions/mastodon.py:56 +msgid "Adds an alias to an user" +msgstr "Dodaje nadimak za korisnika" + +#: sessionmanager/sessionManager.py:69 +#, python-brace-format +msgid "{account_name}@{instance} (Mastodon)" +msgstr "{account_name}@{instance} (Mastodon)" + +#: sessionmanager/wxUI.py:11 +msgid "Session manager" +msgstr "Upravljanje sesijama" + +#: sessionmanager/wxUI.py:14 +msgid "Accounts list" +msgstr "Lista naloga" + +#: sessionmanager/wxUI.py:16 +msgid "Account" +msgstr "Nalog" + +#: sessionmanager/wxUI.py:20 +msgid "New account" +msgstr "Novi nalog" + +#: sessionmanager/wxUI.py:22 sessionmanager/wxUI.py:79 +msgid "Remove account" +msgstr "Ukloni nalog" + +#: sessionmanager/wxUI.py:24 +msgid "Global Settings" +msgstr "Globalna podešavanja" + +#: sessionmanager/wxUI.py:48 +msgid "You need to configure an account." +msgstr "Morate podesiti nalog." + +#: sessionmanager/wxUI.py:48 +msgid "Account Error" +msgstr "Greška naloga" + +#: sessionmanager/wxUI.py:54 +msgid "Mastodon" +msgstr "Mastodon" + +#: sessionmanager/wxUI.py:59 +msgid "" +"You will be prompted for your Mastodon data (instance URL, email address " +"and password) so we can authorise TWBlue in your instance. Would you like" +" to authorise your account now?" +msgstr "" +"Biće vam zatraženi Mastodon podaci (adresa instance, email adresa i " +"lozinka) kako bismo mogli da autorizujemo TWBlue na vašoj instanci. Da li" +" sada želite da autorizujete vaš nalog?" + +#: sessionmanager/wxUI.py:59 +msgid "Authorization" +msgstr "Autorizacija" + +#: sessionmanager/wxUI.py:67 +#, python-format +msgid "Authorized account %d" +msgstr "Autorizovan nalog %d" + +#: sessionmanager/wxUI.py:73 +msgid "" +"Your access token is invalid or the authorization has failed. Please try " +"again." +msgstr "" +"Vaš pristupni token je pogrešan ili autorizacija nije uspela. Molimo vas," +" pokušajte ponovo." + +#: sessionmanager/wxUI.py:73 +msgid "Invalid user token" +msgstr "Pogrešan korisnički token" + +#: sessionmanager/wxUI.py:79 +msgid "Do you really want to delete this account?" +msgstr "Želite li zaista da izbrišete ovaj nalog?" + +#: sessions/base.py:125 +#, python-brace-format +msgid "" +"An exception occurred while saving the {app} database. It will be deleted" +" and rebuilt automatically. If this error persists, send the error log to" +" the {app} developers." +msgstr "" +"Došlo je do greške pri čuvanju {app} baze podataka. Biće obrisana i " +"automatski ponovno napravljena. Ako se ova greška nastavi, pošaljite " +"dnevnike sa greškama {app} programerima." + +#: sessions/base.py:165 +#, python-brace-format +msgid "" +"An exception occurred while loading the {app} database. It will be " +"deleted and rebuilt automatically. If this error persists, send the error" +" log to the {app} developers." +msgstr "" +"Došlo je do greške pri čuvanju {app} baze podataka. Biće obrisana i " +"automatski ponovno napravljena. Ako se ova greška nastavi, pošaljite " +"dnevnike sa greškama {app} programerima." + +#: sessions/mastodon/compose.py:15 sessions/mastodon/compose.py:61 +msgid "dddd, MMMM D, YYYY H:m" +msgstr "dddd, MMMM D, YYYY H:m" + +#: sessions/mastodon/compose.py:17 sessions/mastodon/templates.py:74 +#: sessions/mastodon/templates.py:75 +#, python-brace-format +msgid "Boosted from @{}: {}" +msgstr "Podeljeno od strane korisnika @{}: {}" + +#: sessions/mastodon/compose.py:22 sessions/mastodon/compose.py:81 +#: sessions/mastodon/templates.py:81 sessions/mastodon/templates.py:176 +#, python-brace-format +msgid "hidden by filter {}" +msgstr "" + +#: sessions/mastodon/compose.py:36 sessions/mastodon/templates.py:28 +msgid "dddd, MMMM D, YYYY H:m:s" +msgstr "dddd, MMMM D, YYYY H:m:s" + +#: sessions/mastodon/compose.py:38 +#, python-format +msgid "%s (@%s). %s followers, %s following, %s posts. Joined %s" +msgstr "%s (@%s). %s pratilaca, %s praćenja, %s objava. Pridružio se na %s" + +#: sessions/mastodon/compose.py:49 +#, python-brace-format +msgid "Last message from {}: {}" +msgstr "Poslednja poruka od korisnika {}: {}" + +#: sessions/mastodon/compose.py:64 +#, python-brace-format +msgid "{username} has posted: {status}" +msgstr "{username} je objavio/la: {status}" + +#: sessions/mastodon/compose.py:66 +#, python-brace-format +msgid "{username} has mentioned you: {status}" +msgstr "{username} vas je spomenuo/la: {status}" + +#: sessions/mastodon/compose.py:68 +#, python-brace-format +msgid "{username} has boosted: {status}" +msgstr "{username} je podelio: {status}" + +#: sessions/mastodon/compose.py:70 +#, python-brace-format +msgid "{username} has added to favorites: {status}" +msgstr "{username} je dodao u omiljene: {status}" + +#: sessions/mastodon/compose.py:72 +#, python-brace-format +msgid "{username} has followed you." +msgstr "{username} vas je zapratio." + +#: sessions/mastodon/compose.py:74 +#, python-brace-format +msgid "{username} has joined the instance." +msgstr "{username} se pridružio/la instanci." + +#: sessions/mastodon/compose.py:76 sessions/mastodon/templates.py:171 +#, python-brace-format +msgid "A poll in which you have voted has expired: {status}" +msgstr "Anketa u kojoj ste glasali je završena: {status}" + +#: sessions/mastodon/compose.py:78 +#, python-brace-format +msgid "{username} wants to follow you." +msgstr "{username} želi da vas zaprati." + +#: sessions/mastodon/session.py:69 +msgid "Please enter your instance URL." +msgstr "Molimo upišite adresu vaše instance." + +#: sessions/mastodon/session.py:69 +msgid "Mastodon instance" +msgstr "Mastodon instanca" + +#: sessions/mastodon/session.py:80 +msgid "" +"We could not connect to your mastodon instance. Please verify that the " +"domain exists and the instance is accessible via a web browser." +msgstr "" +"Nije bilo moguće povezati se na vašu Mastodon instancu. Molimo proverite " +"da li domen postoji i da li se instanci može pristupiti iz vašeg Web " +"pretraživača." + +#: sessions/mastodon/session.py:80 +msgid "Instance error" +msgstr "Greška instance" + +#: sessions/mastodon/session.py:85 +msgid "Enter the verification code" +msgstr "Upišite kod za potvrdu" + +#: sessions/mastodon/session.py:85 +msgid "PIN code authorization" +msgstr "Autorizacija uz PIN kod" + +#: sessions/mastodon/session.py:94 +msgid "" +"We could not authorice your mastodon account to be used in TWBlue. This " +"might be caused due to an incorrect verification code. Please try to add " +"the session again." +msgstr "" +"Autorizacija vašeg Mastodon naloga uz TWBlue nije uspela. Možda je kod za" +" potvrdu neispravan. Molimo pokušajte ponovo da dodate sesiju." + +#: sessions/mastodon/session.py:94 +msgid "Authorization error" +msgstr "Greška pri autorizaciji" + +#: sessions/mastodon/session.py:215 +#, python-format +msgid "%s succeeded." +msgstr "%s uspelo." + +#: sessions/mastodon/templates.py:18 +msgid "$display_name, $text $image_descriptions $date. $source" +msgstr "$display_name, $text $image_descriptions $date. $source" + +#: sessions/mastodon/templates.py:19 +msgid "Dm to $recipient_display_name, $text $date" +msgstr "Direktna poruka za $recipient_display_name, $text $date" + +#: sessions/mastodon/templates.py:20 +msgid "" +"$display_name (@$screen_name). $followers followers, $following " +"following, $posts posts. Joined $created_at." +msgstr "" +"$display_name (@$screen_name). $followers pratilaca, $following praćenja," +" $posts objava. Pridružio se na $created_at." + +#: sessions/mastodon/templates.py:21 +msgid "$display_name $text, $date" +msgstr "$display_name $text, $date" + +#: sessions/mastodon/templates.py:34 +#, python-brace-format +msgid "Content warning: {}" +msgstr "Upozorenje za sadržaj: {}" + +#: sessions/mastodon/templates.py:45 +#, python-brace-format +msgid "Media description: {}" +msgstr "Opis medija: {}" + +#: sessions/mastodon/templates.py:82 wxUI/dialogs/mastodon/postDialogs.py:49 +msgid "Followers only" +msgstr "Samo pratioci" + +#: sessions/mastodon/templates.py:94 +#, fuzzy +msgid "Pinned." +msgstr "Kopirano" + +#: sessions/mastodon/templates.py:157 +#, python-brace-format +msgid "has posted: {status}" +msgstr "je objavio/la: {status}" + +#: sessions/mastodon/templates.py:159 +#, python-brace-format +msgid "has mentioned you: {status}" +msgstr "vas je spomenuo/la: {status}" + +#: sessions/mastodon/templates.py:161 +#, python-brace-format +msgid "has boosted: {status}" +msgstr "je podelio: {status}" + +#: sessions/mastodon/templates.py:163 +#, python-brace-format +msgid "has added to favorites: {status}" +msgstr "je dodao u omiljene: {status}" + +#: sessions/mastodon/templates.py:165 +#, python-brace-format +msgid "has updated a status: {status}" +msgstr "je ažurirao status: {status}" + +#: sessions/mastodon/templates.py:167 +msgid "has followed you." +msgstr "vas je zapratio." + +#: sessions/mastodon/templates.py:169 +msgid "has joined the instance." +msgstr "se pridružio/la instanci." + +#: sessions/mastodon/templates.py:173 +msgid "wants to follow you." +msgstr "želi da vas prati." + +#: update/utils.py:29 +#, python-format +msgid "%d day, " +msgstr "%d dan, " + +#: update/utils.py:31 +#, python-format +msgid "%d days, " +msgstr "%d dana, " + +#: update/utils.py:33 +#, python-format +msgid "%d hour, " +msgstr "%d čas, " + +#: update/utils.py:35 +#, python-format +msgid "%d hours, " +msgstr "%d časova, " + +#: update/utils.py:37 +#, python-format +msgid "%d minute, " +msgstr "%d minut, " + +#: update/utils.py:39 +#, python-format +msgid "%d minutes, " +msgstr "%d minuta, " + +#: update/utils.py:41 +#, python-format +msgid "%s second" +msgstr "%s sekund" + +#: update/utils.py:43 +#, python-format +msgid "%s seconds" +msgstr "%s sekundi" + +#: update/wxUpdater.py:11 +#, python-format +msgid "" +"There's a new %s version available, released on %s. Would you like to " +"download it now?\n" +"\n" +" %s version: %s\n" +"\n" +"Changes:\n" +"%s" +msgstr "" +"Postoji nova %s verzija, objavljena %s. Želite li da je preuzmete sada?\n" +"\n" +" %s verzija: %s\n" +"\n" +"Promene:\n" +"%s" + +#: update/wxUpdater.py:14 +#, python-format +msgid "" +"There's a new %s version available, released on %s. Updates are not " +"automatic in Windows 7, so you would need to visit TWBlue's download " +"website to get the latest version.\n" +"\n" +" %s version: %s\n" +"\n" +"Changes:\n" +"%s" +msgstr "" +"Dostupna je nova %s verzija, objavljena %s. Uz Windows 7, ažuriranja nisu" +" automatska, pa ćete morati da posetite TWBlue websajt kako biste " +"preuzeli najnoviju verziju.\n" +"\n" +" %s verzija: %s\n" +"\n" +"Promene:\n" +"%s" + +#: update/wxUpdater.py:16 +#, python-format +msgid "New version for %s" +msgstr "Nova verzija za %s" + +#: update/wxUpdater.py:23 +msgid "Download in Progress" +msgstr "Preuzimanje u toku" + +#: update/wxUpdater.py:23 +msgid "Downloading the new version..." +msgstr "Preuzimam novu verziju..." + +#: update/wxUpdater.py:33 +#, python-format +msgid "Updating... %s of %s" +msgstr "Ažuriram... %s od %s" + +#: update/wxUpdater.py:36 +msgid "" +"The update has been downloaded and installed successfully. Press OK to " +"continue." +msgstr "" +"Ažuriranje je preuzeto i uspešno instalirano. Pritisnite u redu za " +"nastavak." + +#: update/wxUpdater.py:36 +msgid "Done!" +msgstr "Dovršeno" + +#: wxUI/commonMessageDialogs.py:6 +#, python-brace-format +msgid "Do you really want to close {0}?" +msgstr "Želite li stvarno da zatvorite {0}?" + +#: wxUI/commonMessageDialogs.py:6 +msgid "Exit" +msgstr "Izlaz" + +#: wxUI/commonMessageDialogs.py:10 +#, python-brace-format +msgid " {0} must be restarted for these changes to take effect." +msgstr " {0} se mora ponovo pokrenuti kako bi ove promene stupile na snagu." + +#: wxUI/commonMessageDialogs.py:10 +#, python-brace-format +msgid "Restart {0} " +msgstr "Ponovo pokreni {0} " + +#: wxUI/commonMessageDialogs.py:13 +msgid "" +"Are you sure you want to delete this user from the database? This user " +"will not appear in autocomplete results anymore." +msgstr "" +"Jeste li sigurni da želite da izbrišete ovog korisnika iz baze podataka? " +"Ovaj korisnik se više neće pojavljivati u rezultatima automatskog " +"dovršavanja." + +#: wxUI/commonMessageDialogs.py:13 +msgid "Confirm" +msgstr "Potvrdi" + +#: wxUI/commonMessageDialogs.py:16 +msgid "" +"Do you really want to empty this buffer? It's items will be removed from" +" the list but not from Twitter" +msgstr "" +"Želite li zaista da očistite ovaj kanal? Njegove stavke će biti uklonjene" +" sa kanala, ali ne i sa twittera." + +#: wxUI/commonMessageDialogs.py:16 wxUI/dialogs/mastodon/dialogs.py:31 +msgid "Empty buffer" +msgstr "Očisti kanal" + +#: wxUI/commonMessageDialogs.py:20 +msgid "Do you really want to destroy this buffer?" +msgstr "Želite li zaista da izbrišete ovaj kanal?" + +#: wxUI/commonMessageDialogs.py:23 +msgid "That user does not exist" +msgstr "Taj korisnik ne postoji." + +#: wxUI/commonMessageDialogs.py:26 +msgid "A timeline for this user already exists. You can't open another" +msgstr "" +"Vremenska linija za tog korisnika već postoji. Ne možete otvoriti još " +"jednu." + +#: wxUI/commonMessageDialogs.py:26 +msgid "Existing timeline" +msgstr "Postojeća vremenska linija." + +#: wxUI/commonMessageDialogs.py:29 +#, python-brace-format +msgid "" +"If you like {0} we need your help to keep it going. Help us by donating " +"to the project. This will help us pay for the server, the domain and some" +" other things to ensure that {0} will be actively maintained. Your " +"donation will give us the means to continue the development of {0}, and " +"to keep {0} free. Would you like to donate now?" +msgstr "" +"Ako vam se sviđa {0} potrebna nam je vaša pomoć. Pomozite nam donacijom " +"projekta. To će nam pomoći da platimo server, domen i neke druge stvari " +"kako bi smo osigurali da {0} biti aktivno održavan. Vaša donacija će nam " +"dati motivaciju da nastavimo sa razvojem {0}, i da sačuvamo {0} " +"besplatnim. Želite li da donirate sada?" + +#: wxUI/commonMessageDialogs.py:29 +msgid "We need your help" +msgstr "Potrebna nam je vaša pomoć" + +#: wxUI/commonMessageDialogs.py:33 wxUI/dialogs/mastodon/postDialogs.py:207 +msgid "Information" +msgstr "Informacija" + +#: wxUI/commonMessageDialogs.py:36 +msgid "The configuration file is invalid." +msgstr "Datoteka sa podešavanjima je neispravna." + +#: wxUI/commonMessageDialogs.py:39 +#, python-brace-format +msgid "" +"{0} quit unexpectedly the last time it was run. If the problem persists, " +"please report it to the {0} developers." +msgstr "" +"{0} je neočekivano zatvoren pri poslednjem pokretanju. Ako se problem " +"nastavi, molimo prijavite ga{0} programerima." + +#: wxUI/commonMessageDialogs.py:39 +msgid "Warning" +msgstr "Upozorenje" + +#: wxUI/commonMessageDialogs.py:45 +#, python-brace-format +msgid "Sorry, you can't update while running {} from source." +msgstr "" + +#: wxUI/commonMessageDialogs.py:49 +msgid "the provided instance is invalid. Please try again." +msgstr "" + +#: wxUI/commonMessageDialogs.py:49 +#, fuzzy +msgid "Invalid instance" +msgstr "Mastodon instanca" + +#: wxUI/commonMessageDialogs.py:52 +msgid "" +"TWBlue was unable to add or update the filter with the specified " +"settings. Please try again." +msgstr "" + +#: wxUI/commonMessageDialogs.py:55 +msgid "" +"TWBlue was unable to load your filters from the instance. Please try " +"again." +msgstr "" + +#: wxUI/commonMessageDialogs.py:58 +#, fuzzy +msgid "Do you really want to delete this filter ?" +msgstr "Želite li zaista da izbrišete ovaj nalog?" + +#: wxUI/commonMessageDialogs.py:58 +#, fuzzy +msgid "Delete filter" +msgstr "Napravi &filter" + +#: wxUI/commonMessageDialogs.py:61 +msgid "TWBlue was unable to remove the filter you specified. Please try again." +msgstr "" + +#: wxUI/sysTrayIcon.py:36 wxUI/view.py:25 +msgid "&Global settings" +msgstr "Globalna podešavanja" + +#: wxUI/sysTrayIcon.py:37 wxUI/view.py:24 +msgid "Account se&ttings" +msgstr "Postavke naloga" + +#: wxUI/sysTrayIcon.py:39 +msgid "&Show / hide" +msgstr "Prikaži ili sakrij" + +#: wxUI/sysTrayIcon.py:40 wxUI/view.py:74 +msgid "&Documentation" +msgstr "Dokumentacija" + +#: wxUI/sysTrayIcon.py:41 +msgid "Check for &updates" +msgstr "Proveri da li postoje nadogradnje" + +#: wxUI/sysTrayIcon.py:42 +msgid "&Exit" +msgstr "Izlaz" + +#: wxUI/view.py:16 +msgid "&Manage accounts" +msgstr "Upravljaj nalozima" + +#: wxUI/view.py:17 +msgid "&Update profile" +msgstr "Ažuriraj profil" + +#: wxUI/view.py:18 +msgid "&Hide window" +msgstr "Sakrij prozor" + +#: wxUI/view.py:20 +msgid "&Lists manager" +msgstr "Upravljanje listama" + +#: wxUI/view.py:23 +msgid "&Edit keystrokes" +msgstr "Izmeni tasterske prečice" + +#: wxUI/view.py:26 +msgid "E&xit" +msgstr "Izlaz" + +#: wxUI/view.py:34 +msgid "&Remove from favorites" +msgstr "&Ukloni iz omiljenih" + +#: wxUI/view.py:47 +msgid "&Add to list" +msgstr "Dodaj na listu" + +#: wxUI/view.py:48 +msgid "R&emove from list" +msgstr "Ukloni sa liste" + +#: wxUI/view.py:49 +msgid "Show user &profile" +msgstr "Prikaži profil korisnika" + +#: wxUI/view.py:50 +msgid "V&iew likes" +msgstr "Vidi sviđanja" + +#: wxUI/view.py:54 +msgid "&Update buffer" +msgstr "Ažuriraj kanal" + +#: wxUI/dialogs/mastodon/communityTimeline.py:9 wxUI/view.py:55 +msgid "Create community timeline" +msgstr "" + +#: wxUI/view.py:56 +msgid "New &trending topics buffer..." +msgstr "Novi kanal sa temama u trendu" + +#: wxUI/view.py:59 +msgid "Find a string in the currently focused buffer..." +msgstr "Pronađi pojam u trenutno označenom kanalu..." + +#: wxUI/view.py:60 +msgid "&Load previous items" +msgstr "Učitaj prethodne stavke" + +#: wxUI/dialogs/mastodon/userActions.py:21 wxUI/view.py:62 +msgid "&Mute" +msgstr "Utišaj" + +#: wxUI/view.py:63 +msgid "&Autoread" +msgstr "Automatski čitaj" + +#: wxUI/view.py:64 +msgid "&Clear buffer" +msgstr "Očisti kanal" + +#: wxUI/view.py:65 +msgid "&Destroy" +msgstr "Izbriši" + +#: wxUI/view.py:69 +msgid "&Seek back 5 seconds" +msgstr "Premotaj unazad za 5 sekundi" + +#: wxUI/view.py:70 +msgid "&Seek forward 5 seconds" +msgstr "Premotaj unapred za 5 sekundi" + +#: wxUI/view.py:75 +msgid "Sounds &tutorial" +msgstr "Zvučna uputstva" + +#: wxUI/view.py:76 +msgid "&What's new in this version?" +msgstr "Šta je novo u ovoj verziji" + +#: wxUI/view.py:77 +msgid "&Check for updates" +msgstr "Proveri da li postoje nadogradnje" + +#: wxUI/view.py:78 +msgid "&Report an error" +msgstr "Prijavi grešku" + +#: wxUI/view.py:79 +#, python-brace-format +msgid "{0}'s &website" +msgstr "{0} &website" + +#: wxUI/view.py:80 +msgid "Get soundpacks for TWBlue" +msgstr "Nabavi zvučne pakete za TW Blue" + +#: wxUI/view.py:81 +#, python-brace-format +msgid "About &{0}" +msgstr "O &{0}" + +#: wxUI/view.py:84 +msgid "&Application" +msgstr "Aplikacija" + +#: wxUI/view.py:85 +msgid "&Tweet" +msgstr "Tvit" + +#: wxUI/dialogs/mastodon/userActions.py:10 wxUI/view.py:86 +msgid "&User" +msgstr "Korisnik" + +#: wxUI/view.py:87 +msgid "&Buffer" +msgstr "Kanal" + +#: wxUI/view.py:88 +msgid "&Audio" +msgstr "Audio" + +#: wxUI/view.py:89 +msgid "&Help" +msgstr "Pomoć" + +#: wxUI/view.py:175 +msgid "Address" +msgstr "Adresa" + +#: wxUI/view.py:206 +#, python-brace-format +msgid "Your {0} version is up to date" +msgstr "Imate najnoviju verziju {0}." + +#: wxUI/view.py:206 +msgid "Update" +msgstr "Ažuriraj" + +#: wxUI/buffers/panels.py:12 wxUI/buffers/panels.py:20 +msgid "Login" +msgstr "Prijavi se" + +#: wxUI/buffers/panels.py:14 +msgid "Log in automatically" +msgstr "Prijavi se automatski" + +#: wxUI/buffers/panels.py:22 +msgid "Logout" +msgstr "Odjavi se" + +#: wxUI/buffers/mastodon/base.py:11 +#: wxUI/buffers/mastodon/conversationList.py:11 wxUI/buffers/mastodon/user.py:8 +#: wxUI/dialogs/mastodon/userTimeline.py:10 wxUI/dialogs/userAliasDialogs.py:14 +msgid "User" +msgstr "Korisnik" + +#: wxUI/buffers/mastodon/base.py:11 +#: wxUI/buffers/mastodon/conversationList.py:11 +#: wxUI/buffers/mastodon/notifications.py:11 +#: wxUI/dialogs/mastodon/postDialogs.py:37 +#: wxUI/dialogs/mastodon/postDialogs.py:272 +msgid "Text" +msgstr "Tekst" + +#: wxUI/buffers/mastodon/base.py:11 +#: wxUI/buffers/mastodon/conversationList.py:11 +#: wxUI/buffers/mastodon/notifications.py:11 +#: wxUI/dialogs/mastodon/postDialogs.py:216 +msgid "Date" +msgstr "Datum" + +#: wxUI/buffers/mastodon/base.py:11 +#: wxUI/buffers/mastodon/conversationList.py:11 +msgid "Client" +msgstr "Klijent" + +#: wxUI/buffers/mastodon/base.py:27 +msgid "Favorite" +msgstr "Omiljena" + +#: wxUI/buffers/mastodon/base.py:28 +msgid "Bookmark" +msgstr "Marker" + +#: wxUI/buffers/mastodon/base.py:29 +msgid "Direct message" +msgstr "Direktna poruka" + +#: wxUI/buffers/mastodon/notifications.py:23 +#: wxUI/dialogs/mastodon/dialogs.py:23 +msgid "Dismiss" +msgstr "Odbaci" + +#: wxUI/buffers/mastodon/user.py:19 wxUI/dialogs/userAliasDialogs.py:48 +msgid "Actions" +msgstr "Radnje" + +#: wxUI/buffers/mastodon/user.py:20 +msgid "Message" +msgstr "Poruka" + +#: wxUI/dialogs/configuration.py:15 +#, fuzzy +msgid "&Language" +msgstr "Jezik" + +#: wxUI/dialogs/configuration.py:22 +#, fuzzy, python-brace-format +msgid "&Ask before exiting {0}" +msgstr "Pitaj pre zatvaranja {0}" + +#: wxUI/dialogs/configuration.py:24 +#, fuzzy +msgid "&Disable Streaming functions" +msgstr "Onemogući streaming funkcije" + +#: wxUI/dialogs/configuration.py:27 +#, fuzzy +msgid "&Buffer update interval, in minutes" +msgstr "Interval ažuriranja kanala, u minutima" + +#: wxUI/dialogs/configuration.py:33 +#, fuzzy, python-brace-format +msgid "Pla&y a sound when {0} launches" +msgstr "Reprodukuj zvuk kada se {0} pokrene" + +#: wxUI/dialogs/configuration.py:35 +#, fuzzy, python-brace-format +msgid "Sp&eak a message when {0} launches" +msgstr "Izgovori poruku kada se {0} pokrene" + +#: wxUI/dialogs/configuration.py:37 +#, fuzzy +msgid "&Use invisible interface's keyboard shortcuts while GUI is visible" +msgstr "Koristi prečice nevidljivog okruženja dok je grafičko okruženje prikazano" + +#: wxUI/dialogs/configuration.py:39 +#, fuzzy +msgid "A&ctivate Sapi5 when any other screen reader is not being run" +msgstr "Aktiviraj SAPI 5 u slučaju da nijedan čitač ekrana nije pokrenut" + +#: wxUI/dialogs/configuration.py:41 +#, fuzzy +msgid "&Hide GUI on launch" +msgstr "Sakrij grafičko okruženje prilikom pokretanja" + +#: wxUI/dialogs/configuration.py:43 +msgid "&Read long posts in GUI" +msgstr "" + +#: wxUI/dialogs/configuration.py:46 +#, fuzzy +msgid "&Keymap" +msgstr "Tasterske prečice" + +#: wxUI/dialogs/configuration.py:51 +#, fuzzy, python-brace-format +msgid "Check for u&pdates when {0} launches" +msgstr "Proveri postojanje nove verzije kada se {0} pokrene" + +#: wxUI/dialogs/configuration.py:61 +#, fuzzy +msgid "Proxy &type: " +msgstr "Vrsta proksija:" + +#: wxUI/dialogs/configuration.py:68 +#, fuzzy +msgid "Proxy s&erver: " +msgstr "Proksi server:" + +#: wxUI/dialogs/configuration.py:74 +#, fuzzy +msgid "&Port: " +msgstr "Port:" + +#: wxUI/dialogs/configuration.py:80 +#, fuzzy +msgid "&User: " +msgstr "Korisnik:" + +#: wxUI/dialogs/configuration.py:86 +#, fuzzy +msgid "P&assword: " +msgstr "Lozinka:" + +#: wxUI/dialogs/configuration.py:98 +#, fuzzy +msgid "Enable automatic s&peech feedback" +msgstr "Omogući automatske govorne povratne informacije" + +#: wxUI/dialogs/configuration.py:100 +#, fuzzy +msgid "Enable automatic &Braille feedback" +msgstr "Omogući automatske povratne informacije na brajevom redu" + +#: wxUI/dialogs/configuration.py:108 +msgid "Buffer" +msgstr "Kanal" + +#: wxUI/dialogs/configuration.py:108 +msgid "Status" +msgstr "Status" + +#: wxUI/dialogs/configuration.py:111 +#, fuzzy +msgid "S&how/hide" +msgstr "Prikaži ili sakrij" + +#: wxUI/dialogs/configuration.py:112 +#, fuzzy +msgid "Move &up" +msgstr "Pomeri gore" + +#: wxUI/dialogs/configuration.py:113 +#, fuzzy +msgid "Move &down" +msgstr "Pomeri dole" + +#: wxUI/dialogs/configuration.py:123 wxUI/dialogs/configuration.py:188 +#: wxUI/dialogs/configuration.py:191 wxUI/dialogs/configuration.py:196 +msgid "Show" +msgstr "Prikaži" + +#: wxUI/dialogs/configuration.py:125 wxUI/dialogs/configuration.py:135 +#: wxUI/dialogs/configuration.py:159 wxUI/dialogs/configuration.py:189 +msgid "Hide" +msgstr "Sakrij" + +#: wxUI/dialogs/configuration.py:133 wxUI/dialogs/configuration.py:157 +msgid "Select a buffer first." +msgstr "Najpre izaberite kanal." + +#: wxUI/dialogs/configuration.py:136 wxUI/dialogs/configuration.py:160 +msgid "The buffer is hidden, show it first." +msgstr "Kanal je sakriven, najpre ga prikažite." + +#: wxUI/dialogs/configuration.py:139 +msgid "The buffer is already at the top of the list." +msgstr "Kanal je već na vrhu liste." + +#: wxUI/dialogs/configuration.py:163 +msgid "The buffer is already at the bottom of the list." +msgstr "Kanal je već na dnu liste." + +#: wxUI/dialogs/configuration.py:205 +msgid "&LibreTranslate API URL: " +msgstr "" + +#: wxUI/dialogs/configuration.py:211 +msgid "LibreTranslate API &Key (optional): " +msgstr "" + +#: wxUI/dialogs/configuration.py:217 +msgid "&DeepL API Key: " +msgstr "" + +#: wxUI/dialogs/configuration.py:231 +#, python-brace-format +msgid "{0} preferences" +msgstr "{0} postavke" + +#: wxUI/dialogs/configuration.py:237 wxUI/dialogs/mastodon/configuration.py:144 +msgid "General" +msgstr "opšte" + +#: wxUI/dialogs/configuration.py:242 +msgid "Proxy" +msgstr "Proksi" + +#: wxUI/dialogs/configuration.py:246 +#, fuzzy +msgid "Translation services" +msgstr "&Prevedi" + +#: wxUI/dialogs/configuration.py:251 wxUI/dialogs/mastodon/configuration.py:170 +#, fuzzy +msgid "&Save" +msgstr "Sačuvaj" + +#: wxUI/dialogs/configuration.py:253 +#: wxUI/dialogs/mastodon/communityTimeline.py:27 +#: wxUI/dialogs/mastodon/configuration.py:172 +#: wxUI/dialogs/mastodon/search.py:26 +#: wxUI/dialogs/mastodon/showUserProfile.py:170 +#: wxUI/dialogs/mastodon/updateProfile.py:132 +#: wxUI/dialogs/mastodon/userActions.py:38 +#: wxUI/dialogs/mastodon/userTimeline.py:32 +msgid "&Close" +msgstr "Zatvori" + +#: wxUI/dialogs/find.py:13 +msgid "Find in current buffer" +msgstr "Pronađi u trenutnom kanalu" + +#: wxUI/dialogs/find.py:14 +msgid "String" +msgstr "Pojam" + +#: wxUI/dialogs/find.py:23 wxUI/dialogs/mastodon/showUserProfile.py:33 +msgid "Cancel" +msgstr "Otkaži" + +#: wxUI/dialogs/templateDialogs.py:8 +msgid "Edit Template" +msgstr "Uredi šablon" + +#: wxUI/dialogs/templateDialogs.py:13 +msgid "Edit template" +msgstr "Uredi šablon" + +#: wxUI/dialogs/templateDialogs.py:17 +msgid "Available variables" +msgstr "Dostupne varijable" + +#: wxUI/dialogs/templateDialogs.py:29 +msgid "Restore template" +msgstr "Vrati šablon" + +#: wxUI/dialogs/templateDialogs.py:48 +#, python-brace-format +msgid "Restored template to {}." +msgstr "Šablon vraćen na {}." + +#: wxUI/dialogs/templateDialogs.py:52 +msgid "" +"the template you have specified include variables that do not exists for " +"the object. Please fix the template and try again. For your reference, " +"you can see a list of all available variables in the variables list while" +" editing your template." +msgstr "" +"Šablon koji ste odredili sadrži varijable koje nisu ispravne za ovaj " +"objekat. Molimo popravite šablon i pokušajte ponovo. Kako bi vam olakšali" +" postupak, možete videti sve dostupne varijable iz liste kada uređujete " +"šablon." + +#: wxUI/dialogs/templateDialogs.py:52 +msgid "Invalid template" +msgstr "Neispravan šablon" + +#: wxUI/dialogs/urlList.py:6 +msgid "Select URL" +msgstr "Izaberite vezu" + +#: wxUI/dialogs/mastodon/userActions.py:13 +#: wxUI/dialogs/mastodon/userTimeline.py:13 wxUI/dialogs/userAliasDialogs.py:13 +msgid "&Autocomplete users" +msgstr "&Automatsko dovršavanje" + +#: wxUI/dialogs/userAliasDialogs.py:18 +msgid "Alias" +msgstr "Nadimak" + +#: wxUI/dialogs/userAliasDialogs.py:41 +msgid "Edit user aliases" +msgstr "Uredi korisničke nadimke" + +#: wxUI/dialogs/mastodon/search.py:19 wxUI/dialogs/userAliasDialogs.py:43 +msgid "Users" +msgstr "Korisnici" + +#: wxUI/dialogs/userAliasDialogs.py:50 +msgid "Add alias" +msgstr "Dodaj nadimak" + +#: wxUI/dialogs/userAliasDialogs.py:51 +msgid "Adds a new user alias" +msgstr "Dodaje novi nadimak za korisnika" + +#: wxUI/dialogs/userAliasDialogs.py:54 +msgid "Edit the currently focused user Alias." +msgstr "Uredi trenutno fokusirani korisnički nadimak." + +#: wxUI/dialogs/mastodon/filters/create_filter.py:26 +#: wxUI/dialogs/mastodon/filters/manage_filters.py:24 +#: wxUI/dialogs/userAliasDialogs.py:57 +msgid "Remove" +msgstr "Ukloni" + +#: wxUI/dialogs/userAliasDialogs.py:58 +msgid "Remove the currently focused user alias." +msgstr "Ukloni trenutno fokusirani korisnički nadimak." + +#: wxUI/dialogs/userAliasDialogs.py:82 +msgid "Are you sure you want to delete this user alias?" +msgstr "Da li zaista želite da izbrišete ovaj korisnički nadimak?" + +#: wxUI/dialogs/userAliasDialogs.py:82 +msgid "Remove user alias" +msgstr "Ukloni korisnički nadimak" + +#: wxUI/dialogs/userAliasDialogs.py:93 +msgid "User alias" +msgstr "Korisnički nadimak" + +#: wxUI/dialogs/userList.py:27 +#, fuzzy +msgid "View profile" +msgstr "Ažuriraj profil" + +#: wxUI/dialogs/mastodon/communityTimeline.py:10 +#, fuzzy +msgid "Community URL" +msgstr "Control" + +#: wxUI/dialogs/mastodon/communityTimeline.py:16 +#: wxUI/dialogs/mastodon/userTimeline.py:18 +msgid "Buffer type" +msgstr "Vrsta kanala" + +#: wxUI/dialogs/mastodon/communityTimeline.py:17 +#, fuzzy +msgid "&Local timeline" +msgstr "Vremenske linije" + +#: wxUI/dialogs/mastodon/communityTimeline.py:18 +#, fuzzy +msgid "&Federated Timeline" +msgstr "Vremenska linija korisnika {username}" + +#: wxUI/dialogs/mastodon/communityTimeline.py:25 +#: wxUI/dialogs/mastodon/search.py:24 +#: wxUI/dialogs/mastodon/updateProfile.py:130 +#: wxUI/dialogs/mastodon/userActions.py:36 +#: wxUI/dialogs/mastodon/userTimeline.py:30 +msgid "&OK" +msgstr "U redu" + +#: wxUI/dialogs/mastodon/configuration.py:14 +msgid "User autocompletion settings" +msgstr "Podešavanja automatskog dovršavanja korisnika" + +#: wxUI/dialogs/mastodon/configuration.py:15 +#, fuzzy +msgid "" +"Scan acc&ount and add followers and following users to the user " +"autocompletion database" +msgstr "" +"Skeniraj nalog i dodaj pratioce i korisnike koje pratite u bazu korisnika" +" za automatsko dovršavanje" + +#: wxUI/dialogs/mastodon/configuration.py:16 +#, fuzzy +msgid "&Manage autocompletion database" +msgstr "Upravljaj bazom automatskog dovršavanja" + +#: wxUI/dialogs/mastodon/configuration.py:21 +#, fuzzy +msgid "&Disable Streaming API endpoints" +msgstr "Onemogući streaming funkcije" + +#: wxUI/dialogs/mastodon/configuration.py:23 +#, fuzzy +msgid "&Relative timestamps" +msgstr "Relativne vremenske oznake" + +#: wxUI/dialogs/mastodon/configuration.py:25 +#, fuzzy +msgid "" +"R&ead preferences from instance (default visibility when publishing and " +"displaying sensitive content)" +msgstr "" +"Čitaj podešavanja iz instance (podrazumevana vidljivost kada se " +"objavljuje i prikazuje osetljiv sadržaj)" + +#: wxUI/dialogs/mastodon/configuration.py:28 +#, fuzzy +msgid "&Items on each API call" +msgstr "Stavke po svakom API pozivu" + +#: wxUI/dialogs/mastodon/configuration.py:34 +#, fuzzy +msgid "" +"I&nverted buffers: The newest items will be shown at the beginning while " +"the oldest at the end" +msgstr "" +"Okreni kanal: najnovije stavke će biti prikazane na vrhu a najstarije na " +"dnu" + +#: wxUI/dialogs/mastodon/configuration.py:36 +#, fuzzy +msgid "&Ask confirmation before boosting a post" +msgstr "zahtevaj potvrdu pre deljenja objave" + +#: wxUI/dialogs/mastodon/configuration.py:38 +#, fuzzy +msgid "S&how screen names instead of full names" +msgstr "Prikaži Twitter korisničko ime umesto punog imena" + +#: wxUI/dialogs/mastodon/configuration.py:40 +#, fuzzy +msgid "Hide e&mojis in usernames" +msgstr "Sakrij Emoji znakove u korisničkim imenima" + +#: wxUI/dialogs/mastodon/configuration.py:42 +#, fuzzy +msgid "" +"&Number of items per buffer to cache in database (0 to disable caching, " +"blank for unlimited)" +msgstr "" +"Broj stavki po kanalu u bazi podataka (0 za isključivanje memorije, " +"prazno za neograničeno)" + +#: wxUI/dialogs/mastodon/configuration.py:46 +#, fuzzy +msgid "" +"&Load cache for items in memory (much faster in big datasets but requires" +" more RAM)" +msgstr "" +"Učitavaj keš za stavke iz memorije (dosta brže sa većim količinama " +"podataka ali zahteva više RAM memorije)" + +#: wxUI/dialogs/mastodon/configuration.py:53 +#, fuzzy, python-brace-format +msgid "Edit template for &posts. Current template: {}" +msgstr "Uredi šablon objava. Trenutni šablon: {}" + +#: wxUI/dialogs/mastodon/configuration.py:55 +#, fuzzy, python-brace-format +msgid "Edit template for c&onversations. Current template: {}" +msgstr "Uredi šablon razgovora. Trenutni šablon: {}" + +#: wxUI/dialogs/mastodon/configuration.py:57 +#, fuzzy, python-brace-format +msgid "Edit template for p&ersons. Current template: {}" +msgstr "Uredi šablon prikazivanja osoba. Trenutni šablon: {}" + +#: wxUI/dialogs/mastodon/configuration.py:65 +#, fuzzy +msgid "&Volume" +msgstr "Jačina" + +#: wxUI/dialogs/mastodon/configuration.py:76 +#, fuzzy +msgid "S&ession mute" +msgstr "Utišaj sesiju" + +#: wxUI/dialogs/mastodon/configuration.py:78 +#, fuzzy +msgid "&Output device" +msgstr "Izlazni uređaj" + +#: wxUI/dialogs/mastodon/configuration.py:85 +#, fuzzy +msgid "&Input device" +msgstr "Ulazni uređaj" + +#: wxUI/dialogs/mastodon/configuration.py:93 +#, fuzzy +msgid "Sound &pack" +msgstr "Zvučna šema" + +#: wxUI/dialogs/mastodon/configuration.py:99 +#, fuzzy +msgid "Indicate &audio or video in posts with sound" +msgstr "Označi Audio ili video u objavama zvukom" + +#: wxUI/dialogs/mastodon/configuration.py:101 +#, fuzzy +msgid "Indicate posts containing i&mages with sound" +msgstr "Označi objave koje sadrže slike zvukom" + +#: wxUI/dialogs/mastodon/configuration.py:124 +#, fuzzy +msgid "&Language for OCR" +msgstr "Jezik za OCR" + +#: wxUI/dialogs/mastodon/configuration.py:149 +msgid "Feedback" +msgstr "Povratne informacije" + +#: wxUI/dialogs/mastodon/configuration.py:153 +msgid "Buffers" +msgstr "Kanali" + +#: wxUI/dialogs/mastodon/configuration.py:157 +msgid "Templates" +msgstr "Šabloni" + +#: wxUI/dialogs/mastodon/configuration.py:161 +msgid "Sound" +msgstr "Zvuk" + +#: wxUI/dialogs/mastodon/configuration.py:165 +msgid "Extras" +msgstr "Dodaci" + +#: wxUI/dialogs/mastodon/dialogs.py:7 +msgid "Would you like to share this post?" +msgstr "Da li želite da podelite ovu objavu?" + +#: wxUI/dialogs/mastodon/dialogs.py:15 +msgid "" +"Do you really want to delete this post? It will be deleted from the " +"instance as well." +msgstr "" +"Želite li zaista da izbrišete ovu objavu? Takođe će biti izbrisana sa " +"instance." + +#: wxUI/dialogs/mastodon/dialogs.py:15 +msgid "Delete" +msgstr "Izbriši" + +#: wxUI/dialogs/mastodon/dialogs.py:23 +msgid "" +"Are you sure you want to dismiss this notification? If you dismiss a " +"mention notification, it also disappears from your mentions buffer. The " +"post is not going to be deleted from the instance, though." +msgstr "" +"Da li ste sigurni da želite da odbacite ovo obaveštenje? Ako odbacite " +"obaveštenje o spominjanju, takođe će biti uklonjeno iz vašeg kanala " +"spominjanja. Međutim, objava neće biti obrisana sa instance." + +#: wxUI/dialogs/mastodon/dialogs.py:31 +msgid "" +"Do you really want to empty this buffer? It's items will be removed from" +" the list but not from the instance" +msgstr "" +"Želite li zaista da očistite ovaj kanal? Njegove stavke će biti uklonjene" +" iz liste, ali ne i sa instance." + +#: wxUI/dialogs/mastodon/dialogs.py:38 +#, python-brace-format +msgid "This user has no posts. {0} can't create a timeline." +msgstr "Ovaj korisnik nema objave. {0} ne može da napravi vremensku liniju." + +#: wxUI/dialogs/mastodon/dialogs.py:43 +#, python-brace-format +msgid "This user has no favorited posts. {0} can't create a timeline." +msgstr "" +"Ovaj korisnik nema omiljenih objava. {0} ne može da napravi vremensku " +"liniju." + +#: wxUI/dialogs/mastodon/dialogs.py:48 +#, python-brace-format +msgid "This user has no followers yet. {0} can't create a timeline." +msgstr "" +"Ovaj korisnik još uvek nema pratilaca. {0} ne može da kreira vremensku " +"liniju." + +#: wxUI/dialogs/mastodon/dialogs.py:53 +#, python-brace-format +msgid "This user is not following anyone. {0} can't create a timeline." +msgstr "Ovaj korisnik ne prati nikoga. {0} ne može da kreira vremensku liniju." + +#: wxUI/dialogs/mastodon/dialogs.py:60 +#, python-brace-format +msgid "The focused item has no user in it. {} ca't open a user profile" +msgstr "" + +#: wxUI/dialogs/mastodon/menus.py:13 wxUI/dialogs/mastodon/menus.py:41 +msgid "R&emove from favorites" +msgstr "&Ukloni iz omiljenih" + +#: wxUI/dialogs/mastodon/menus.py:15 wxUI/dialogs/mastodon/menus.py:43 +msgid "&Open URL" +msgstr "otvori vezu" + +#: wxUI/dialogs/mastodon/menus.py:17 wxUI/dialogs/mastodon/menus.py:47 +#, fuzzy +msgid "&Open in instance" +msgstr "Traži na instanci" + +#: wxUI/dialogs/mastodon/menus.py:19 wxUI/dialogs/mastodon/menus.py:45 +msgid "&Play audio" +msgstr "reprodukuj zvučni zapis" + +#: wxUI/dialogs/mastodon/menus.py:23 wxUI/dialogs/mastodon/menus.py:51 +msgid "&Copy to clipboard" +msgstr "Kopiraj u ostavu" + +#: wxUI/dialogs/mastodon/menus.py:27 wxUI/dialogs/mastodon/menus.py:55 +msgid "&User actions..." +msgstr "Radnje korisnika..." + +#: wxUI/dialogs/mastodon/menus.py:53 +#, fuzzy +msgid "&Dismiss" +msgstr "Odbaci" + +#: wxUI/dialogs/mastodon/postDialogs.py:20 +#: wxUI/dialogs/mastodon/postDialogs.py:38 +msgid "Attachments" +msgstr "Prilozi" + +#: wxUI/dialogs/mastodon/postDialogs.py:24 +msgid "File" +msgstr "Datoteka" + +#: wxUI/dialogs/mastodon/postDialogs.py:25 +msgid "Type" +msgstr "Vrsta" + +#: wxUI/dialogs/mastodon/postDialogs.py:26 +#: wxUI/dialogs/mastodon/postDialogs.py:141 +msgid "Description" +msgstr "Opis" + +#: wxUI/dialogs/mastodon/postDialogs.py:28 +msgid "Remove Attachment" +msgstr "Ukloni prilog" + +#: wxUI/dialogs/mastodon/postDialogs.py:33 +msgid "Post in the thread" +msgstr "Objavi u temi" + +#: wxUI/dialogs/mastodon/postDialogs.py:40 +msgid "Remove post" +msgstr "Ukloni objavu" + +#: wxUI/dialogs/mastodon/postDialogs.py:47 +msgid "&Visibility" +msgstr "&Vidljivost" + +#: wxUI/dialogs/mastodon/postDialogs.py:54 +#, fuzzy +msgid "Language" +msgstr "Jezik" + +#: wxUI/dialogs/mastodon/postDialogs.py:58 +msgid "A&dd" +msgstr "&Dodaj" + +#: wxUI/dialogs/mastodon/postDialogs.py:59 +msgid "S&ensitive content" +msgstr "Os&etljiv sadržaj" + +#: wxUI/dialogs/mastodon/postDialogs.py:64 +msgid "Content warning" +msgstr "Upozorenje sadržaja" + +#: wxUI/dialogs/mastodon/postDialogs.py:71 +msgid "Add p&ost" +msgstr "Dodaj &objavu" + +#: wxUI/dialogs/mastodon/postDialogs.py:75 +msgid "Auto&complete users" +msgstr "&Automatsko dovršavanje" + +#: wxUI/dialogs/mastodon/postDialogs.py:77 +msgid "Check &spelling" +msgstr "Proveri &pravopis" + +#: wxUI/dialogs/mastodon/postDialogs.py:79 +msgid "&Translate" +msgstr "&Prevedi" + +#: wxUI/dialogs/mastodon/postDialogs.py:106 +#, python-brace-format +msgid "Post - {} characters" +msgstr "Objava - {} znakova" + +#: wxUI/dialogs/mastodon/postDialogs.py:130 +msgid "Image" +msgstr "Slika" + +#: wxUI/dialogs/mastodon/postDialogs.py:132 +msgid "Video" +msgstr "Video" + +#: wxUI/dialogs/mastodon/postDialogs.py:134 +msgid "Audio" +msgstr "Audio" + +#: wxUI/dialogs/mastodon/postDialogs.py:136 +msgid "Poll" +msgstr "Anketa" + +#: wxUI/dialogs/mastodon/postDialogs.py:141 +msgid "please provide a description" +msgstr "Molimo vas navedite opis:" + +#: wxUI/dialogs/mastodon/postDialogs.py:148 +msgid "Select the picture to be uploaded" +msgstr "Izaberite sliku koju želite da otpremite" + +#: wxUI/dialogs/mastodon/postDialogs.py:148 +msgid "Image files (*.png, *.jpg, *.gif)|*.png; *.jpg; *.gif" +msgstr "Datoteke sa slikama" + +#: wxUI/dialogs/mastodon/postDialogs.py:155 +msgid "Select the video to be uploaded" +msgstr "Izaberite video zapis koji želite da otpremite" + +#: wxUI/dialogs/mastodon/postDialogs.py:155 +msgid "Video files (*.mp4, *.mov, *.m4v, *.webm)| *.mp4; *.m4v; *.mov; *.webm" +msgstr "" +"Datoteke video zapisa (*.mp4, *.mov, *.m4v, *.webm)| *.mp4; *.m4v; *.mov;" +" *.webm" + +#: wxUI/dialogs/mastodon/postDialogs.py:162 +msgid "Select the audio file to be uploaded" +msgstr "Izaberite zvučni zapis koji želite da otpremite" + +#: wxUI/dialogs/mastodon/postDialogs.py:162 +msgid "" +"Audio files (*.mp3, *.ogg, *.wav, *.flac, *.opus, *.aac, *.m4a, " +"*.3gp)|*.mp3; *.ogg; *.wav; *.flac; *.opus; *.aac; *.m4a; *.3gp" +msgstr "" +"Audio datoteke (*.mp3, *.ogg, *.wav, *.flac, *.opus, *.aac, *.m4a, " +"*.3gp)|*.mp3; *.ogg; *.wav; *.flac; *.opus; *.aac; *.m4a; *.3gp" + +#: wxUI/dialogs/mastodon/postDialogs.py:169 +msgid "" +"It is not possible to add more attachments. Please take into account that" +" You can add only a maximum of 4 images, or one audio, video or poll per" +" post. Please remove other attachments before continuing." +msgstr "" +"Nije moguće dodati više priloga. Molimo imajte na umu da možete dodati " +"najviše 4 slike, ili 1 audio, video video ili anketu po objavi. Molimo " +"uklonite druge priloge pre nego što nastavite." + +#: wxUI/dialogs/mastodon/postDialogs.py:169 +msgid "Error adding attachment" +msgstr "Greška pri dodavanju priloga" + +#: wxUI/dialogs/mastodon/postDialogs.py:172 +msgid "" +"You can add a poll or media files. In order to add your poll, please " +"remove other attachments first." +msgstr "" +"Možete dodati anketu ili medijske zapise. Da biste dodali vašu anketu, " +"molimo prvo uklonite druge priloge." + +#: wxUI/dialogs/mastodon/postDialogs.py:172 +msgid "Error adding poll" +msgstr "Greška pri dodavanju ankete" + +#: wxUI/dialogs/mastodon/postDialogs.py:177 +#, python-format +msgid "Post - %i characters " +msgstr "objava - %i znakova " + +#: wxUI/dialogs/mastodon/postDialogs.py:200 +msgid "Image description" +msgstr "Opis slike" + +#: wxUI/dialogs/mastodon/postDialogs.py:210 +msgid "Privacy" +msgstr "Privatnost" + +#: wxUI/dialogs/mastodon/postDialogs.py:214 +#, fuzzy +msgid "Source" +msgstr "Izvor:" + +#: wxUI/dialogs/mastodon/postDialogs.py:222 +#, fuzzy +msgid "Boosts" +msgstr "Deljenja: " + +#: wxUI/dialogs/mastodon/postDialogs.py:224 +msgid "View users who boosted this post" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:231 +msgid "View users who favorited this post" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:239 +msgid "Copy link to clipboard" +msgstr "Kopiraj link u privremenu memoriju" + +#: wxUI/dialogs/mastodon/postDialogs.py:241 +#: wxUI/dialogs/mastodon/postDialogs.py:280 +msgid "Check &spelling..." +msgstr "Proveri pravopis..." + +#: wxUI/dialogs/mastodon/postDialogs.py:242 +#: wxUI/dialogs/mastodon/postDialogs.py:281 +msgid "&Translate..." +msgstr "Prevedi..." + +#: wxUI/dialogs/mastodon/postDialogs.py:243 +#: wxUI/dialogs/mastodon/postDialogs.py:282 +msgid "C&lose" +msgstr "Zatvori" + +#: wxUI/dialogs/mastodon/postDialogs.py:294 +msgid "Add a poll" +msgstr "Dodaj anketu" + +#: wxUI/dialogs/mastodon/postDialogs.py:298 +msgid "Participation time" +msgstr "Vreme učešća" + +#: wxUI/dialogs/mastodon/postDialogs.py:300 +msgid "5 minutes" +msgstr "5 minuta" + +#: wxUI/dialogs/mastodon/postDialogs.py:300 +msgid "30 minutes" +msgstr "30 minuta" + +#: wxUI/dialogs/mastodon/postDialogs.py:300 +msgid "1 hour" +msgstr "1 sat" + +#: wxUI/dialogs/mastodon/postDialogs.py:300 +msgid "6 hours" +msgstr "6 sati" + +#: wxUI/dialogs/mastodon/postDialogs.py:300 +msgid "1 day" +msgstr "1 dan" + +#: wxUI/dialogs/mastodon/postDialogs.py:300 +msgid "2 days" +msgstr "2 dana" + +#: wxUI/dialogs/mastodon/postDialogs.py:300 +msgid "3 days" +msgstr "3 dana" + +#: wxUI/dialogs/mastodon/postDialogs.py:300 +msgid "4 days" +msgstr "4 dana" + +#: wxUI/dialogs/mastodon/postDialogs.py:300 +msgid "5 days" +msgstr "5 dana" + +#: wxUI/dialogs/mastodon/postDialogs.py:300 +msgid "6 days" +msgstr "6 dana" + +#: wxUI/dialogs/mastodon/postDialogs.py:300 +msgid "7 days" +msgstr "7 dana" + +#: wxUI/dialogs/mastodon/postDialogs.py:304 +msgid "Choices" +msgstr "Opcije" + +#: wxUI/dialogs/mastodon/postDialogs.py:308 +msgid "Option 1" +msgstr "Opcija 1" + +#: wxUI/dialogs/mastodon/postDialogs.py:315 +msgid "Option 2" +msgstr "Opcija 2" + +#: wxUI/dialogs/mastodon/postDialogs.py:322 +msgid "Option 3" +msgstr "Opcija 3" + +#: wxUI/dialogs/mastodon/postDialogs.py:329 +msgid "Option 4" +msgstr "Opcija 4" + +#: wxUI/dialogs/mastodon/postDialogs.py:334 +msgid "Allow multiple choices per user" +msgstr "Dozvoli više glasova po korisniku" + +#: wxUI/dialogs/mastodon/postDialogs.py:337 +msgid "Hide votes count until the poll expires" +msgstr "Sakrij broj glasova dok se anketa ne završi" + +#: wxUI/dialogs/mastodon/postDialogs.py:363 +msgid "Please make sure you have provided at least two options for the poll." +msgstr "Molimo uverite se da ste ponudili bar dve opcije u anketi." + +#: wxUI/dialogs/mastodon/postDialogs.py:363 +msgid "Not enough information" +msgstr "Nema dovoljno informacija" + +#: wxUI/dialogs/mastodon/postDialogs.py:368 +msgid "Vote in this poll" +msgstr "Glasaj na ovu anketu" + +#: wxUI/dialogs/mastodon/postDialogs.py:371 +msgid "Options" +msgstr "Opcije" + +#: wxUI/dialogs/mastodon/search.py:9 +msgid "Search" +msgstr "Pretraži" + +#: wxUI/dialogs/mastodon/search.py:18 +msgid "Posts" +msgstr "Objave" + +#: wxUI/dialogs/mastodon/showUserProfile.py:22 +#, fuzzy +msgid "Select user" +msgstr "Izaberite vezu" + +#: wxUI/dialogs/mastodon/showUserProfile.py:73 +#, fuzzy, python-brace-format +msgid "{}'s Profile" +msgstr "Ažuriraj profil" + +#: wxUI/dialogs/mastodon/showUserProfile.py:79 +#, fuzzy +msgid "&Name: " +msgstr "Ime" + +#: wxUI/dialogs/mastodon/showUserProfile.py:84 +#, fuzzy +msgid "&URL: " +msgstr "Korisnik:" + +#: wxUI/dialogs/mastodon/showUserProfile.py:89 +msgid "&Bio: " +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:94 +msgid "&Joined at: " +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:99 +#, fuzzy +msgid "&Actions" +msgstr "Radnje" + +#: wxUI/dialogs/mastodon/showUserProfile.py:104 +#, fuzzy +msgid "Header: " +msgstr "Sakrij" + +#: wxUI/dialogs/mastodon/showUserProfile.py:112 +msgid "Avatar: " +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:122 +#, python-brace-format +msgid "Field &{} - Label: " +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:129 +#, fuzzy +msgid "Content: " +msgstr "Kontekst" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:43 +#: wxUI/dialogs/mastodon/filters/create_filter.py:65 +#: wxUI/dialogs/mastodon/showUserProfile.py:135 +msgid "Yes" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:43 +#: wxUI/dialogs/mastodon/filters/create_filter.py:65 +#: wxUI/dialogs/mastodon/filters/create_filter.py:69 +#: wxUI/dialogs/mastodon/showUserProfile.py:135 +msgid "No" +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:137 +#, fuzzy +msgid "&Private account: " +msgstr "Ukloni nalog" + +#: wxUI/dialogs/mastodon/showUserProfile.py:144 +#, fuzzy +msgid "&Bot account: " +msgstr "Nalog" + +#: wxUI/dialogs/mastodon/showUserProfile.py:151 +#, fuzzy +msgid "&Discoverable account: " +msgstr "Ukloni nalog" + +#: wxUI/dialogs/mastodon/showUserProfile.py:157 +#, python-brace-format +msgid "{} p&osts. Click to open posts timeline" +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:162 +#, python-brace-format +msgid "{} &following. Click to open Following timeline" +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:166 +#, python-brace-format +msgid "{} fo&llowers. Click to open followers timeline" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:43 +msgid "&Display Name" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:50 +#, fuzzy +msgid "&Bio" +msgstr "&Podeli" + +#: wxUI/dialogs/mastodon/updateProfile.py:58 +#, fuzzy +msgid "Header" +msgstr "Sakrij" + +#: wxUI/dialogs/mastodon/updateProfile.py:71 +#, fuzzy +msgid "Change &header" +msgstr "Sakrij" + +#: wxUI/dialogs/mastodon/updateProfile.py:79 +msgid "Avatar" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:92 +msgid "Change &avatar" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:102 +#, python-brace-format +msgid "Field &{}: Label" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:110 +#, fuzzy +msgid "Content" +msgstr "Kontekst" + +#: wxUI/dialogs/mastodon/updateProfile.py:120 +#, fuzzy +msgid "&Private account" +msgstr "Ukloni nalog" + +#: wxUI/dialogs/mastodon/updateProfile.py:122 +#, fuzzy +msgid "&Bot account" +msgstr "Nalog" + +#: wxUI/dialogs/mastodon/updateProfile.py:124 +#, fuzzy +msgid "&Discoverable account" +msgstr "Ukloni nalog" + +#: wxUI/dialogs/mastodon/updateProfile.py:167 +msgid "Select header image - max 2MB" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:172 +#: wxUI/dialogs/mastodon/updateProfile.py:194 +msgid "The selected file is larger than 2MB. Do you want to select another file?" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:173 +#: wxUI/dialogs/mastodon/updateProfile.py:195 +msgid "File more than 2MB" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:189 +msgid "Select avatar image - max 2MB" +msgstr "" + +#: wxUI/dialogs/mastodon/userActions.py:19 +msgid "&Follow" +msgstr "Prati" + +#: wxUI/dialogs/mastodon/userActions.py:20 +msgid "U&nfollow" +msgstr "Otprati" + +#: wxUI/dialogs/mastodon/userActions.py:22 +msgid "Unmu&te" +msgstr "Ukloni utišavanje" + +#: wxUI/dialogs/mastodon/userActions.py:23 +msgid "&Block" +msgstr "Blokiraj" + +#: wxUI/dialogs/mastodon/userActions.py:24 +msgid "Unbl&ock" +msgstr "Odblokiraj" + +#: wxUI/dialogs/mastodon/userTimeline.py:9 +#, python-format +msgid "Timeline for %s" +msgstr "Vremenska crta od %s" + +#: wxUI/dialogs/mastodon/userTimeline.py:19 +msgid "&Posts" +msgstr "&Objave" + +#: wxUI/dialogs/mastodon/userTimeline.py:20 +msgid "&Followers" +msgstr "Pratioci" + +#: wxUI/dialogs/mastodon/userTimeline.py:21 +msgid "Fo&llowing" +msgstr "P&raćenja" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:12 +#, fuzzy +msgid "Keyword" +msgstr "Taster" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:13 +#: wxUI/dialogs/mastodon/filters/create_filter.py:24 +msgid "Whole word" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:19 +msgid "Keyword:" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:25 +#: wxUI/dialogs/mastodon/filters/manage_filters.py:22 +#, fuzzy +msgid "Add" +msgstr "&Dodaj" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:34 +msgid "Palabras clave a filtrar:" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:74 +#, fuzzy +msgid "New filter" +msgstr "&Upravljanje filterima" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:78 +#, fuzzy +msgid "Home timeline" +msgstr "Vremenske linije" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:79 +msgid "Public statuses" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:81 +#, fuzzy +msgid "Threads" +msgstr "Spreman" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:82 +#, fuzzy +msgid "Profiles" +msgstr "Ažuriraj profil" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:86 +#, fuzzy +msgid "Hide posts" +msgstr "Objave" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:87 +#, fuzzy +msgid "Set a content warning to posts" +msgstr "Upozorenje sadržaja" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:91 +#, fuzzy +msgid "Hours" +msgstr "6 sati" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:92 +#, fuzzy +msgid "Days" +msgstr "7 dana" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:93 +msgid "Weeks" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:94 +msgid "months" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:97 +#, fuzzy +msgid "Title:" +msgstr "Datoteka" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:104 +#, fuzzy +msgid "Apply to:" +msgstr "Odgovori korisniku {}" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:114 +#, fuzzy +msgid "Action:" +msgstr "Radnja" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:122 +msgid "Expires in:" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/manage_filters.py:10 +#, fuzzy +msgid "Filters" +msgstr "Datoteka" + +#: wxUI/dialogs/mastodon/filters/manage_filters.py:15 +#, fuzzy +msgid "Title" +msgstr "Datoteka" + +#: wxUI/dialogs/mastodon/filters/manage_filters.py:16 +msgid "Keywords" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/manage_filters.py:17 +#, fuzzy +msgid "Contexts" +msgstr "Kontekst" + +#: wxUI/dialogs/mastodon/filters/manage_filters.py:19 +#, fuzzy +msgid "Expires" +msgstr "Dodaci" + +#~ msgid "Unable to find address in OpenStreetMap." +#~ msgstr "Nemoguće pronaći adresu u OpenStreet mapi." + +#~ msgid "There are no results for the coordinates in this tweet" +#~ msgstr "Nema rezultata za te koordinate u ovom tvitu." + +#~ msgid "This list is already opened" +#~ msgstr "Ova lista je već otvorena" + +#~ msgid "Timelines for {}" +#~ msgstr "Vremenske linije za {}" + +#~ msgid "URL of mastodon instance:" +#~ msgstr "Adresa Mastodon instance:" + +#~ msgid "Email address:" +#~ msgstr "Email adresa:" + +#~ msgid "Password:" +#~ msgstr "Lozinka:" + +#~ msgid "&Item" +#~ msgstr "&Stavka" + +#~ msgid "Likes for {}" +#~ msgstr "Sviđanja od {}" + +#~ msgid "Trending topics for %s" +#~ msgstr "Teme u trendu za %s" + +#~ msgid "Select user" +#~ msgstr "Izaberite korisnika" + +#~ msgid "Sent direct messages" +#~ msgstr "Poslate direktne poruke" + +#~ msgid "Sent tweets" +#~ msgstr "Poslati tvitovi" + +#~ msgid "Likes" +#~ msgstr "Sviđanja" + +#~ msgid "Friends" +#~ msgstr "Prijatelji" + +#~ msgid "{username}'s likes" +#~ msgstr "Sviđanja korisnika {username}" + +#~ msgid "{username}'s friends" +#~ msgstr "Prijatelji korisnika {username}" + +#~ msgid "Tweet" +#~ msgstr "Tvit" + +#~ msgid "Write the tweet here" +#~ msgstr "Otkucajte tvit ovde:" + +#~ msgid "New tweet in {0}" +#~ msgstr "Novi tvit u kanalu {0}" + +#~ msgid "{0} new tweets in {1}." +#~ msgstr "{0} novih tvitova u kanalu {1}." + +#~ msgid "Reply to {arg0}" +#~ msgstr "Odgovori {arg0}" + +#~ msgid "Reply to %s" +#~ msgstr "Odgovori %s" + +#~ msgid "Direct message to %s" +#~ msgstr "Direktna poruka za %s" + +#~ msgid "New direct message" +#~ msgstr "Nova direktna poruka" + +#~ msgid "This action is not supported on protected accounts." +#~ msgstr "Ova radnja nije podržana na zaštićenim nalozima." + +#~ msgid "Quote" +#~ msgstr "Citiraj" + +#~ msgid "Add your comment to the tweet" +#~ msgstr "Dodajte vaš komentar u tvit" + +#~ msgid "User details" +#~ msgstr "Podaci o korisniku" + +#~ msgid "MMM D, YYYY. H:m" +#~ msgstr "MMM D, YYYY. H:m" + +#~ msgid "There are no coordinates in this tweet" +#~ msgstr "Nema koordinata u ovom tvitu." + +#~ msgid "Error decoding coordinates. Try again later." +#~ msgstr "Greška prilikom čitanja koordinata. Molimo vas da pokušate kasnije." + +#~ msgid "Invalid buffer" +#~ msgstr "Nevažeći kanal" + +#~ msgid "{0} new direct messages." +#~ msgstr "{0} novih direktnih poruka." + +#~ msgid "This action is not supported in the buffer yet." +#~ msgstr "Ova radnja još uvek nije podržana na ovom kanalu." + +#~ msgid "" +#~ "Getting more items cannot be done " +#~ "in this buffer. Use the direct " +#~ "messages buffer instead." +#~ msgstr "" +#~ "Nemoguće preuzeti dodatne stavke za ovaj" +#~ " kanal. Umesto toga, koristite kanal " +#~ "direktne poruke." + +#~ msgid "Mention" +#~ msgstr "Spomeni" + +#~ msgid "Mention to %s" +#~ msgstr "Spomeni %s" + +#~ msgid "{0} new followers." +#~ msgstr "{0} novih pratilaca." + +#~ msgid "This action is not supported in the buffer, yet." +#~ msgstr "Ova radnja još uvek nije podržana na ovom kanalu" + +#~ msgid "&Retweet" +#~ msgstr "Retvituj" + +#~ msgid "&Like" +#~ msgstr "Sviđa mi se" + +#~ msgid "&Unlike" +#~ msgstr "Ne sviđa mi se" + +#~ msgid "View &address" +#~ msgstr "Vidi adresu" + +#~ msgid "&View lists" +#~ msgstr "Vidi liste" + +#~ msgid "View likes" +#~ msgstr "Vidi sviđanja" + +#~ msgid "Likes timelines" +#~ msgstr "Vremenska linija omiljenih tvitova" + +#~ msgid "Followers timelines" +#~ msgstr "Vremenske linije pratilaca" + +#~ msgid "Following timelines" +#~ msgstr "Vremenske linije praćenih korisnika" + +#~ msgid "Lists" +#~ msgstr "Liste" + +#~ msgid "List for {}" +#~ msgstr "Liste od {}" + +#~ msgid "Filters cannot be applied on this buffer" +#~ msgstr "Filteri se ne mogu primeniti na ovaj kanal" + +#~ msgid "View item" +#~ msgstr "Prikaži stavku" + +#~ msgid "Ask" +#~ msgstr "Pitaj" + +#~ msgid "Retweet without comments" +#~ msgstr "Retvituj bez komentara" + +#~ msgid "Retweet with comments" +#~ msgstr "Retvituj sa komentarima" + +#~ msgid "Edit template for tweets. Current template: {}" +#~ msgstr "Uredi šablon prikazivanja tvitova. Trenutni šablon: {}" + +#~ msgid "Edit template for direct messages. Current template: {}" +#~ msgstr "Uredi šablon prikazivanja direktnih poruka. Trenutni šablon: {}" + +#~ msgid "Edit template for sent direct messages. Current template: {}" +#~ msgstr "" +#~ "Uredi šablon prikazivanja poslatih direktnih" +#~ " poruka. Trenutni šablon: {}" + +#~ msgid "User has been suspended" +#~ msgstr "Korisnik je suspendovan." + +#~ msgid "Information for %s" +#~ msgstr "Informacija za %s" + +#~ msgid "Discarded" +#~ msgstr "Odbačeno" + +#~ msgid "Username: @%s\n" +#~ msgstr "Korisničko ime: @%s\n" + +#~ msgid "Name: %s\n" +#~ msgstr "Ime: %s\n" + +#~ msgid "Location: %s\n" +#~ msgstr "Mesto: %s\n" + +#~ msgid "URL: %s\n" +#~ msgstr "Veza: %s\n" + +#~ msgid "Bio: %s\n" +#~ msgstr "Bio: %s\n" + +#~ msgid "Yes" +#~ msgstr "Da" + +#~ msgid "No" +#~ msgstr "Ne" + +#~ msgid "Protected: %s\n" +#~ msgstr "Zaštićeno: %s\n" + +#~ msgid "Relationship: " +#~ msgstr "Odnos: " + +#~ msgid "You follow {0}. " +#~ msgstr "Pratite {0}. " + +#~ msgid "{0} is following you." +#~ msgstr "{0} vas prati." + +#~ msgid "" +#~ "Followers: %s\n" +#~ " Friends: %s\n" +#~ msgstr "" +#~ "Pratioci: %s\n" +#~ " Prijatelji: %s\n" + +#~ msgid "Verified: %s\n" +#~ msgstr "Potvrđen: %s\n" + +#~ msgid "Tweets: %s\n" +#~ msgstr "Tvitovi: %s\n" + +#~ msgid "Likes: %s" +#~ msgstr "Omiljeno: %s" + +#~ msgid "You can't ignore direct messages" +#~ msgstr "Ne možete zanemariti direktne poruke." + +#~ msgid "Attaching..." +#~ msgstr "Prilažem..." + +#~ msgid "Pause" +#~ msgstr "Zastani" + +#~ msgid "&Resume" +#~ msgstr "&Nastavi" + +#~ msgid "Resume" +#~ msgstr "Nastavi" + +#~ msgid "&Pause" +#~ msgstr "&zastani" + +#~ msgid "&Stop" +#~ msgstr "&Zaustavi" + +#~ msgid "Recording" +#~ msgstr "Snimanje" + +#~ msgid "Stopped" +#~ msgstr "Zaustavljeno" + +#~ msgid "&Record" +#~ msgstr "&Snimi" + +#~ msgid "&Play" +#~ msgstr "&Pusti" + +#~ msgid "Recoding audio..." +#~ msgstr "Snimam zvučni zapis..." + +#~ msgid "Error in file upload: {0}" +#~ msgstr "Greška u otpremanju datoteke: {0}" + +#~ msgid "Transferred" +#~ msgstr "Preuzeto" + +#~ msgid "Total file size" +#~ msgstr "Ukupna veličina datoteke" + +#~ msgid "Transfer rate" +#~ msgstr "Brzina prenosa" + +#~ msgid "Time left" +#~ msgstr "Preostalo vreme" + +#~ msgid "Attach audio" +#~ msgstr "Priloži zvučni zapis" + +#~ msgid "&Add an existing file" +#~ msgstr "&Dodaj postojeću datoteku" + +#~ msgid "&Discard" +#~ msgstr "&Odbaci" + +#~ msgid "Upload to" +#~ msgstr "Otpremi na" + +#~ msgid "Attach" +#~ msgstr "Priloži" + +#~ msgid "&Cancel" +#~ msgstr "&Otkaži" + +#~ msgid "Audio Files (*.mp3, *.ogg, *.wav)|*.mp3; *.ogg; *.wav" +#~ msgstr "Zvučni zapisi (*.mp3, *.ogg, *.wav)|*.mp3; *.ogg; *.wav" + +#~ msgid "You have to start writing" +#~ msgstr "Morate da počnete da pišete." + +#~ msgid "There are no results in your users database" +#~ msgstr "Nema rezultata u vašoj bazi korisnika-." + +#~ msgid "Autocompletion only works for users." +#~ msgstr "Automatsko dovršavanje radi samo za korisnike." + +#~ msgid "" +#~ "Updating database... You can close this" +#~ " window now. A message will tell " +#~ "you when the process finishes." +#~ msgstr "" +#~ "Ažuriram bazu podataka... Sada možete " +#~ "zatvoriti ovaj prozor. Dobićete obaveštenje" +#~ " kada se proces završi." + +#~ msgid "Manage Autocompletion database" +#~ msgstr "Upravljaj bazom automatskog dovršavanja" + +#~ msgid "Editing {0} users database" +#~ msgstr "Uređujem {0} bazu korisničkih podataka" + +#~ msgid "Username" +#~ msgstr "Korisničko ime" + +#~ msgid "Add user" +#~ msgstr "Dodaj korisnika" + +#~ msgid "Remove user" +#~ msgstr "Ukloni korisnika" + +#~ msgid "Twitter username" +#~ msgstr "Twitter korisničko ime" + +#~ msgid "Add user to database" +#~ msgstr "Dodaj korisnika u bazu podataka" + +#~ msgid "The user does not exist" +#~ msgstr "Korisnik ne postoji." + +#~ msgid "Error!" +#~ msgstr "Greška" + +#~ msgid "Autocomplete users' settings" +#~ msgstr "Podešavanja automatskog dovršavanja" + +#~ msgid "Add followers to database" +#~ msgstr "" + +#~ msgid "Add friends to database" +#~ msgstr "Dodaj prijatelje u bazu podataka" + +#~ msgid "Updating autocompletion database" +#~ msgstr "Ažuriranje baze automatskog dovršavanja" + +#~ msgid "" +#~ "This process will retrieve the users " +#~ "you selected from Twitter, and add " +#~ "them to the user autocomplete database." +#~ " Please note that if there are " +#~ "many users or you have tried to" +#~ " perform this action less than 15 " +#~ "minutes ago, TWBlue may reach a " +#~ "limit in Twitter API calls when " +#~ "trying to load the users into the" +#~ " database. If this happens, we will" +#~ " show you an error, in which " +#~ "case you will have to try this " +#~ "process again in a few minutes. If" +#~ " this process ends with no error, " +#~ "you will be redirected back to the" +#~ " account settings dialog. Do you want" +#~ " to continue?" +#~ msgstr "" +#~ "Ovaj proces će preuzeti korisnike koje" +#~ " ste izabrali sa Twittera, i dodati" +#~ " ih u bazu korisnika za automatsko" +#~ " dovršavanje. Molimo imajte na umu da" +#~ " ako je izabrano mnogo korisnika ili" +#~ " ste pokušali da izvršite ovu radnju" +#~ " pre manje od 15 minuta, TWBlue " +#~ "može da dostigne API ograničenje kada" +#~ " pokušava da dodaje korisnike u bazu." +#~ " Ako se ovo desi, biće prikazana " +#~ "greška, a u tom slučaju ćete " +#~ "morati da pokušate ovaj proces ponovo" +#~ " za nekoliko minuta. Ako se ovaj " +#~ "proces završi bez greške, bićete vraćeni" +#~ " na dijalog sa podešavanjima naloga. " +#~ "Da li želite da nastavite?" + +#~ msgid "TWBlue has imported {} users successfully." +#~ msgstr "TWBlue je uspešno uvezao {} korisnika." + +#~ msgid "Done" +#~ msgstr "Dovršeno" + +#~ msgid "Error adding users from Twitter. Please try again in about 15 minutes." +#~ msgstr "" +#~ "Greška pri dodavanju korisnika sa " +#~ "Twittera. Molimo pokušajte ponovo za oko" +#~ " 15 minuta." + +#~ msgid "New tweet" +#~ msgstr "Novi tvit" + +#~ msgid "Retweet" +#~ msgstr "Retvituj" + +#~ msgid "Like a tweet" +#~ msgstr "Označi tvit sa sviđa mi se" + +#~ msgid "Like/unlike a tweet" +#~ msgstr "Označi da ti se tvit sviđa / ne sviđa" + +#~ msgid "Unlike a tweet" +#~ msgstr "Označi tvit sa ne sviđa mi se" + +#~ msgid "See user details" +#~ msgstr "Vidi pojedinosti o korisniku" + +#~ msgid "Show tweet" +#~ msgstr "Prikaži tvit" + +#~ msgid "Interact with the currently focused tweet." +#~ msgstr "Radnje sa trenutno obeleženim tvitom" + +#~ msgid "View in Twitter" +#~ msgstr "Prikaži na Twitteru" + +#~ msgid "Edit profile" +#~ msgstr "Izmeni profil" + +#~ msgid "Delete a tweet or direct message" +#~ msgstr "Izbriši tvit ili direktnu poruku" + +#~ msgid "Add to list" +#~ msgstr "Dodaj u listu" + +#~ msgid "Remove from list" +#~ msgstr "Ukloni iz liste" + +#~ msgid "Search on twitter" +#~ msgstr "Traži na twitter-u" + +#~ msgid "Show lists for a specified user" +#~ msgstr "Prikaži liste određenog korisnika" + +#~ msgid "Get geolocation" +#~ msgstr "Preuzmi geografsku lokaciju" + +#~ msgid "Display the tweet's geolocation in a dialog" +#~ msgstr "Prikaži geografsku lokaciju u dijalogu" + +#~ msgid "Create a trending topics buffer" +#~ msgstr "Stvori kanal trenutnih tema u trendu" + +#~ msgid "" +#~ "Opens the list manager, which allows " +#~ "you to create, edit, delete and " +#~ "open lists in buffers." +#~ msgstr "" +#~ "Otvara upravljanje listama, što vam " +#~ "dozvoljava da kreirate, uređujete, brišete " +#~ "i otvarate liste u kanalima." + +#~ msgid "Opens the list manager" +#~ msgstr "Otvara upravljanje listama" + +#~ msgid "{account_name} (Twitter)" +#~ msgstr "{account_name} (Twitter)" + +#~ msgid "Twitter" +#~ msgstr "Twitter" + +#~ msgid "" +#~ "The request to authorize your Twitter" +#~ " account will be opened in your " +#~ "browser. You only need to do this" +#~ " once. Would you like to continue?" +#~ msgstr "" +#~ "Zahtev za autorizaciju vašeg Twitter " +#~ "naloga će biti otvoren u vašem " +#~ "pregledniku. Potrebno je da to uradite" +#~ " samo jednom. Želite li da nastavite?" + +#~ msgid "" +#~ "TWBlue is unable to authenticate the " +#~ "account for {} in Twitter. It " +#~ "might be due to an invalid or " +#~ "expired token, revoqued access to the" +#~ " application, or after an account " +#~ "reactivation. Please remove the account " +#~ "manually from your Twitter sessions in" +#~ " order to stop seeing this message." +#~ msgstr "" +#~ "TWBlue ne može da izvrši autentikaciju" +#~ " naloga za {} na Twitteru. Ovo " +#~ "se može desiti zbog neispravnog ili " +#~ "isteklog tokena, odbijanja pristupa " +#~ "aplikacije, ili nakon ponovne aktivacije " +#~ "naloga. Molimo ručno uklonite nalog iz" +#~ " vaših Twitter sesija kako biste " +#~ "prestali da dobijate ovu poruku." + +#~ msgid "Authentication error for session {}" +#~ msgstr "Greška u autentikaciji za sesiju {}" + +#~ msgid "Dm to %s " +#~ msgstr "Direktna poruka za %s " + +#~ msgid "{0}. Quoted tweet from @{1}: {2}" +#~ msgstr "{0}. citira tvit od @{1}: {2}" + +#~ msgid "Unavailable" +#~ msgstr "Nedostupno" + +#~ msgid "" +#~ "%s (@%s). %s followers, %s friends, " +#~ "%s tweets. Last tweeted %s. Joined " +#~ "Twitter %s" +#~ msgstr "" +#~ "%s (@%s). %s pratilaca, %s prijatelja," +#~ " %s tvitova. Poslednji tvit %s. " +#~ "Pridružio se twitteru %s" + +#~ msgid "No description available" +#~ msgstr "Opis nije dostupan" + +#~ msgid "private" +#~ msgstr "Privatno" + +#~ msgid "public" +#~ msgstr "Javno" + +#~ msgid "Enter your PIN code here" +#~ msgstr "Ovde upišite vaš PIN kod" + +#~ msgid "Authorising account..." +#~ msgstr "Autorizacija naloga..." + +#~ msgid "" +#~ "We could not authorice your Twitter " +#~ "account to be used in TWBlue. This" +#~ " might be caused due to an " +#~ "incorrect verification code. Please try " +#~ "to add the session again." +#~ msgstr "" +#~ "Autorizacija vašeg Twitter naloga uz " +#~ "TWBlue nije uspela. Kod za potvrdu " +#~ "je možda neispravan. Molimo pokušajte " +#~ "ponovo da dodate sesiju." + +#~ msgid "%s failed. Reason: %s" +#~ msgstr "%s nije uspelo. Razlog: %s" + +#~ msgid "Deleted account" +#~ msgstr "Obrisan nalog" + +#~ msgid "$sender_display_name, $text $date" +#~ msgstr "$sender_display_name, $text $date" + +#~ msgid "" +#~ "$display_name (@$screen_name). $followers followers," +#~ " $following following, $tweets tweets. " +#~ "Joined Twitter $created_at." +#~ msgstr "" +#~ "$display_name (@$screen_name). $followers pratilaca," +#~ " $following praćenja, $tweets tvitova. " +#~ "Pridružio se Twitteru $created_at." + +#~ msgid "Image description: {}." +#~ msgstr "Opis slike: {}." + +#~ msgid "RT @{}: {} Quote from @{}: {}" +#~ msgstr "{0}. citira tvit od @{1}: {2}" + +#~ msgid "RT @{}: {}" +#~ msgstr "Podeljeno od strane korisnika @{}: {}" + +#~ msgid "{} Quote from @{}: {}" +#~ msgstr "Podeljeno od strane korisnika @{}: {}" + +#~ msgid "Sorry, you are not authorised to see this status." +#~ msgstr "Izvinite, nije vam dozvoljeno da vidite ovaj status." + +#~ msgid "Error {0}" +#~ msgstr "Greška {0}" + +#~ msgid "{user_1}, {user_2} and {all_users} more: {text}" +#~ msgstr "{user_1}, {user_2} i još {all_users} korisnika: {text}" + +#~ msgid "" +#~ "This retweet is over 140 characters. " +#~ "Would you like to post it as " +#~ "a mention to the poster with your" +#~ " comments and a link to the " +#~ "original tweet?" +#~ msgstr "" +#~ "Ovaj retvit ima preko 140 znakova. " +#~ "Želite li da pošaljete to kao " +#~ "spominjanje na pošiljaoca sa vašim " +#~ "komentarom i linkom do izvornog tvita?" + +#~ msgid "Would you like to add a comment to this tweet?" +#~ msgstr "Želite li da dodate komentar na ovaj tvit?" + +#~ msgid "" +#~ "Do you really want to delete this" +#~ " tweet? It will be deleted from " +#~ "Twitter as well." +#~ msgstr "" +#~ "Želite li zaista da izbrišete ovaj " +#~ "tvit? On će biti izbrisan sa " +#~ "Twitera takođe." + +#~ msgid "Enter the name of the client : " +#~ msgstr "Unesite ime klijenta" + +#~ msgid "Add client" +#~ msgstr "Dodaj program" + +#~ msgid "This user has no tweets, so you can't open a timeline for them." +#~ msgstr "" +#~ "Ovaj korisnik nema nijedan tvit, te " +#~ "s toga ne možete otvoriti njegovu " +#~ "vremensku liniju." + +#~ msgid "" +#~ "This is a protected Twitter user, " +#~ "which means you can't open a " +#~ "timeline using the Streaming API. The" +#~ " user's tweets will not update due" +#~ " to a twitter policy. Do you " +#~ "want to continue?" +#~ msgstr "" +#~ "Ovo je zaštićeni korisnik twittera, što" +#~ " znači da ne možete otvarati " +#~ "vremensku liniju koristeći Streaming API. " +#~ "Tvitovi korisnika neće biti ažurirani " +#~ "zbog politike tvitera. Želite li da " +#~ "nastavite??" + +#~ msgid "" +#~ "This is a protected user account, " +#~ "you need to follow this user to" +#~ " view their tweets or likes." +#~ msgstr "" +#~ "Ovaj korisnik je zaštitio svoj nalog." +#~ " Morate ga zapratiti kako bi videli" +#~ " njegove tvitove ili omiljene stvari." + +#~ msgid "This user has no tweets. {0} can't create a timeline." +#~ msgstr "Ovaj korisnik nema tvitove. {0} ne može da napravi vremensku liniju." + +#~ msgid "This user has no favorited tweets. {0} can't create a timeline." +#~ msgstr "" +#~ "Ovaj korisnik nema omiljenih tvitova. " +#~ "{0} ne može da napravi vremensku " +#~ "liniju." + +#~ msgid "This user has no followers. {0} can't create a timeline." +#~ msgstr "Ovog korisnika niko ne prati. {0} ne može da kreira vremensku liniju." + +#~ msgid "This user has no friends. {0} can't create a timeline." +#~ msgstr "Ovaj korisnik nema prijatelje. {0} ne može da napravi vremensku liniju." + +#~ msgid "Geolocation data: {0}" +#~ msgstr "Podaci o geografskoj lokaciji: {0}" + +#~ msgid "Geo data for this tweet" +#~ msgstr "Geografski podaci o ovom tvitu" + +#~ msgid "You have been blocked from viewing this content" +#~ msgstr "Blokirani ste i ne možete videti ovaj sadržaj." + +#~ msgid "" +#~ "You have been blocked from viewing " +#~ "someone's content. In order to avoid " +#~ "conflicts with the full session, TWBlue" +#~ " will remove the affected timeline." +#~ msgstr "" +#~ "Blokirani ste i ne možete videti " +#~ "sadržaj nekog korisnika. Kako bi smo " +#~ "izbegli konflikte sa sesijom, TWBlue će" +#~ " ukloniti vremensku liniju na koju " +#~ "ovo utiče." + +#~ msgid "" +#~ "TWBlue cannot load this timeline because" +#~ " the user has been suspended from " +#~ "Twitter." +#~ msgstr "" +#~ "TWBlue ne može da učita ovu " +#~ "vremensku liniju zbog toga što je " +#~ "korisnik suspendovan sa tvitera." + +#~ msgid "Do you really want to delete this filter?" +#~ msgstr "Da li zaista želite da izbrišete ovaj filter?" + +#~ msgid "This filter already exists. Please use a different title" +#~ msgstr "Ovaj filter već postoji. Molimo koristite drugi naziv" + +#~ msgid "&Show direct message" +#~ msgstr "Prikaži direktnu poruku" + +#~ msgid "&Show event" +#~ msgstr "Prikaži događaj" + +#~ msgid "Direct &message" +#~ msgstr "Direktna poruka" + +#~ msgid "&Show user" +#~ msgstr "Prikaži korisnika" + +#~ msgid "Search topic" +#~ msgstr "Pretraži temu" + +#~ msgid "&Tweet about this trend" +#~ msgstr "Tvituj o ovom trendu" + +#~ msgid "&Show item" +#~ msgstr "Prikaži stavku" + +#~ msgid "Update &profile" +#~ msgstr "Ažuriraj profil" + +#~ msgid "Event" +#~ msgstr "Događaj" + +#~ msgid "Remove event" +#~ msgstr "Ukloni događaj" + +#~ msgid "Trending topic" +#~ msgstr "Tema trenda" + +#~ msgid "Tweet about this trend" +#~ msgstr "Tvituj o ovom trendu" + +#~ msgid "" +#~ "Scan account and add friends and " +#~ "followers to the user autocompletion " +#~ "database" +#~ msgstr "" +#~ "Skeniraj nalog i dodaj pratioce i " +#~ "prijatelje u bazu korisnika za " +#~ "automatsko dovršavanje" + +#~ msgid "" +#~ "Inverted buffers: The newest tweets will" +#~ " be shown at the beginning while " +#~ "the oldest at the end" +#~ msgstr "" +#~ "Okreni kanal: Najnoviji tvitovi će biti" +#~ " prikazani na vrhu a najstariji na" +#~ " dnu." + +#~ msgid "Retweet mode" +#~ msgstr "Način retvitovanja" + +#~ msgid "" +#~ "Load cache for tweets in memory " +#~ "(much faster in big datasets but " +#~ "requires more RAM)" +#~ msgstr "" +#~ "Učitavaj keš za Tvitove iz memorije " +#~ "(dosta brže sa većim količinama podataka" +#~ " ali zahteva više RAM memorije)" + +#~ msgid "Ignored clients" +#~ msgstr "Zanemareni klijenti" + +#~ msgid "Remove client" +#~ msgstr "Ukloni program" + +#~ msgid "Indicate audio tweets with sound" +#~ msgstr "Označi Audio u tvitovima zvukom" + +#~ msgid "Indicate geotweets with sound" +#~ msgstr "Označi tvitove sa geografskim informacijama zvukom" + +#~ msgid "Indicate tweets containing images with sound" +#~ msgstr "Označi tvitove koji sadrže slike zvukom" + +#~ msgid "API Key for SndUp" +#~ msgstr "API ključ za SndUp" + +#~ msgid "Create a filter for this buffer" +#~ msgstr "Napravi filter za ovaj kanal" + +#~ msgid "Filter title" +#~ msgstr "Naziv filtera" + +#~ msgid "Filter by word" +#~ msgstr "Filtriraj na osnovu reči" + +#~ msgid "Ignore tweets wich contain the following word" +#~ msgstr "Zanemari tvitove koji sadrže sledeću reč" + +#~ msgid "Ignore tweets without the following word" +#~ msgstr "Zanemari tvitove bez sledeće reči" + +#~ msgid "word" +#~ msgstr "Reč" + +#~ msgid "Allow retweets" +#~ msgstr "Dozvoli retvitove" + +#~ msgid "Allow quoted tweets" +#~ msgstr "Dozvoli citirane tvitove" + +#~ msgid "Allow replies" +#~ msgstr "Dozvoli odgovore" + +#~ msgid "Use this term as a regular expression" +#~ msgstr "Koristi ovaj termin kao regulara nizraz" + +#~ msgid "Filter by language" +#~ msgstr "Filtriraj na osnovu jezika" + +#~ msgid "Load tweets in the following languages" +#~ msgstr "Učitaj tvitove na sledećim jezicima" + +#~ msgid "Ignore tweets in the following languages" +#~ msgstr "Zanemari tvitove na sledećim jezicima" + +#~ msgid "Don't filter by language" +#~ msgstr "Ne filtriraj na osnovu jezika" + +#~ msgid "Supported languages" +#~ msgstr "Podržani jezici" + +#~ msgid "Add selected language to filter" +#~ msgstr "Dodaj izabrani jezik u filter" + +#~ msgid "Selected languages" +#~ msgstr "Izabrani jezici" + +#~ msgid "You must define a name for the filter before creating it." +#~ msgstr "Morate upisati ime za filter pre nego što ga napravite." + +#~ msgid "Missing filter name" +#~ msgstr "Ime filtera nedostaje" + +#~ msgid "Manage filters" +#~ msgstr "Upravljanje filterima" + +#~ msgid "Filters" +#~ msgstr "Filteri" + +#~ msgid "Filter" +#~ msgstr "Filter" + +#~ msgid "Lists manager" +#~ msgstr "Upravljanje listama" + +#~ msgid "List" +#~ msgstr "Lista" + +#~ msgid "Owner" +#~ msgstr "Vlasnik" + +#~ msgid "Members" +#~ msgstr "Članovi" + +#~ msgid "mode" +#~ msgstr "Način" + +#~ msgid "Create a new list" +#~ msgstr "Stvori novu listu" + +#~ msgid "Open in buffer" +#~ msgstr "Otvori u kanalu" + +#~ msgid "Viewing lists for %s" +#~ msgstr "Prikazivanje lista za %s" + +#~ msgid "Subscribe" +#~ msgstr "Prijavi se" + +#~ msgid "Unsubscribe" +#~ msgstr "Odjavi se" + +#~ msgid "Name (20 characters maximun)" +#~ msgstr "Ime, najviše 20 znakova" + +#~ msgid "Mode" +#~ msgstr "Način" + +#~ msgid "Private" +#~ msgstr "Privatna" + +#~ msgid "Editing the list %s" +#~ msgstr "Uređivanje liste %s" + +#~ msgid "Select a list to add the user" +#~ msgstr "Izaberite listu na koju želite da dodate korisnika" + +#~ msgid "Add" +#~ msgstr "Dodaj" + +#~ msgid "Select a list to remove the user" +#~ msgstr "Izaberite listu sa koje želite da uklonite korisnika" + +#~ msgid "Do you really want to delete this list?" +#~ msgstr "Želite li zaista da izbrišete ovu listu?" + +#~ msgid "Search on Twitter" +#~ msgstr "Pretraži ttwitter" + +#~ msgid "Tweets" +#~ msgstr "Tvitovi" + +#~ msgid "&Language for results: " +#~ msgstr "Jezik za rezultate:" + +#~ msgid "any" +#~ msgstr "Bilo šta" + +#~ msgid "Results &type: " +#~ msgstr "Vrsta rezultata:" + +#~ msgid "Mixed" +#~ msgstr "Pomešano" + +#~ msgid "Recent" +#~ msgstr "Nedavno" + +#~ msgid "Popular" +#~ msgstr "Popularno" + +#~ msgid "Details" +#~ msgstr "Pojedoinosti" + +#~ msgid "&Go to URL" +#~ msgstr "Idi na vezu" + +#~ msgid "View trending topics" +#~ msgstr "Pogledaj teme u trendu" + +#~ msgid "Trending topics by" +#~ msgstr "Teme u trendu po" + +#~ msgid "Country" +#~ msgstr "Zemlji" + +#~ msgid "City" +#~ msgstr "Gradu" + +#~ msgid "&Location" +#~ msgstr "Mesto" + +#~ msgid "Update your profile" +#~ msgstr "Ažurirajte vaš profil" + +#~ msgid "&Name (50 characters maximum)" +#~ msgstr "&Ime(najviše 50 znakova)" + +#~ msgid "&Website" +#~ msgstr "Web:" + +#~ msgid "&Bio (160 characters maximum)" +#~ msgstr "Biografija, najviše 160 znakova" + +#~ msgid "Upload a &picture" +#~ msgstr "Otpremi sliku" + +#~ msgid "Upload a picture" +#~ msgstr "Otpremi sliku" + +#~ msgid "Discard image" +#~ msgstr "Odbaci sliku" + +#~ msgid "&Report as spam" +#~ msgstr "Prijavi kao neželjeno" + +#~ msgid "&Ignore tweets from this client" +#~ msgstr "Zanemari tvitove iz ovog klijenta" + +#~ msgid "&Tweets" +#~ msgstr "Tvitovi" + +#~ msgid "&Likes" +#~ msgstr "Sviđanja" + +#~ msgid "F&riends" +#~ msgstr "Prijatelji" + +#~ msgid "Delete attachment" +#~ msgstr "Ukloni prilog" + +#~ msgid "Added Tweets" +#~ msgstr "Dodati tvitovi" + +#~ msgid "Delete tweet" +#~ msgstr "Obriši tvit" + +#~ msgid "A&dd..." +#~ msgstr "&Dodaj..." + +#~ msgid "Add t&weet" +#~ msgstr "Dodaj t&vit" + +#~ msgid "&Attach audio..." +#~ msgstr "Priloži zvučni zapis..." + +#~ msgid "Sen&d" +#~ msgstr "Pošalji" + +#~ msgid "Video files (*.mp4)|*.mp4" +#~ msgstr "Datoteke video zapisa (*.mp4)|*.mp4" + +#~ msgid "" +#~ "It is not possible to add more " +#~ "attachments. Please make sure your tweet" +#~ " complies with Twitter'S attachment rules." +#~ " You can add only one video or" +#~ " GIF in every tweet, and a " +#~ "maximum of 4 photos." +#~ msgstr "" +#~ "Nije moguće dodati više priloga. Molimo" +#~ " uverite se da vaš tvit poštuje " +#~ "Twitter pravila o prilozima. Možete " +#~ "dodati samo jedan video ili GIF u" +#~ " svaki tvit, i najviše 4 slike." + +#~ msgid "&Mention to all" +#~ msgstr "Spomeni sve" + +#~ msgid "&Recipient" +#~ msgstr "Primalac" + +#~ msgid "Tweet - %i characters " +#~ msgstr "Tvit - %i znakova" + +#~ msgid "Retweets: " +#~ msgstr "Retvitova" + +#~ msgid "Likes: " +#~ msgstr "Sviđanja:" + +#~ msgid "View" +#~ msgstr "Vidi" + +#~ msgid "Item" +#~ msgstr "Stavka" + +#~ msgid "&Expand URL" +#~ msgstr "Proširi vezu" + +#~ msgid "Participation time (in days)" +#~ msgstr "Vreme učešća (u danima)" + +#~ msgid "&Open in Twitter" +#~ msgstr "&Otvori na Twitteru" + +#~ msgid "&Show tweet" +#~ msgstr "Prikaži tvit" + +#~ msgid "Translated" +#~ msgstr "Prevedeno" + +#~ msgid "Afrikaans" +#~ msgstr "Afrički" + +#~ msgid "Albanian" +#~ msgstr "Albanski" + +#~ msgid "Amharic" +#~ msgstr "Amharic" + +#~ msgid "Arabic" +#~ msgstr "arapski" + +#~ msgid "Armenian" +#~ msgstr "jermenski" + +#~ msgid "Azerbaijani" +#~ msgstr "azerbejdžanski" + +#~ msgid "Basque" +#~ msgstr "Baskijski" + +#~ msgid "Belarusian" +#~ msgstr "Beloruski" + +#~ msgid "Bengali" +#~ msgstr "Bengalski" + +#~ msgid "Bihari" +#~ msgstr "Bihari" + +#~ msgid "Bulgarian" +#~ msgstr "Bugarski" + +#~ msgid "Burmese" +#~ msgstr "Burmese" + +#~ msgid "Catalan" +#~ msgstr "Katalonski" + +#~ msgid "Cherokee" +#~ msgstr "Cherokee" + +#~ msgid "Chinese" +#~ msgstr "Kineski" + +#~ msgid "Chinese_simplified" +#~ msgstr "kineski pojednostavljeni" + +#~ msgid "Chinese_traditional" +#~ msgstr "kineski tradicionalni" + +#~ msgid "Croatian" +#~ msgstr "hrvatski" + +#~ msgid "Czech" +#~ msgstr "češki" + +#~ msgid "Dhivehi" +#~ msgstr "Dhivehi" + +#~ msgid "Esperanto" +#~ msgstr "Esperanto" + +#~ msgid "Estonian" +#~ msgstr "estonski" + +#~ msgid "Filipino" +#~ msgstr "filipinski" + +#~ msgid "Galician" +#~ msgstr "galicijski" + +#~ msgid "Georgian" +#~ msgstr "gruzijski" + +#~ msgid "Greek" +#~ msgstr "grčki" + +#~ msgid "Guarani" +#~ msgstr "Guarani" + +#~ msgid "Gujarati" +#~ msgstr "Gujarati" + +#~ msgid "Hebrew" +#~ msgstr "jevrejski" + +#~ msgid "Hindi" +#~ msgstr "indijski" + +#~ msgid "Icelandic" +#~ msgstr "islandski" + +#~ msgid "Indonesian" +#~ msgstr "indonežanski" + +#~ msgid "Inuktitut" +#~ msgstr "Inuktitut" + +#~ msgid "Irish" +#~ msgstr "irski" + +#~ msgid "Kannada" +#~ msgstr "Kannada" + +#~ msgid "Kazakh" +#~ msgstr "Kazakh" + +#~ msgid "Khmer" +#~ msgstr "Khmer" + +#~ msgid "Kurdish" +#~ msgstr "kurdski" + +#~ msgid "Kyrgyz" +#~ msgstr "kirgistanski" + +#~ msgid "Laothian" +#~ msgstr "Laothian" + +#~ msgid "Latvian" +#~ msgstr "letonski" + +#~ msgid "Lithuanian" +#~ msgstr "litvanski" + +#~ msgid "Macedonian" +#~ msgstr "makedonski" + +#~ msgid "Malay" +#~ msgstr "Malay" + +#~ msgid "Malayalam" +#~ msgstr "Malayalam" + +#~ msgid "Maltese" +#~ msgstr "malteški" + +#~ msgid "Marathi" +#~ msgstr "Marathi" + +#~ msgid "Mongolian" +#~ msgstr "mongolski" + +#~ msgid "Nepali" +#~ msgstr "nepalski" + +#~ msgid "Norwegian" +#~ msgstr "norveški" + +#~ msgid "Oriya" +#~ msgstr "Oriya" + +#~ msgid "Pashto" +#~ msgstr "Pashto" + +#~ msgid "Persian" +#~ msgstr "persijski" + +#~ msgid "Punjabi" +#~ msgstr "Punjabi" + +#~ msgid "Romanian" +#~ msgstr "rumunski" + +#~ msgid "Sanskrit" +#~ msgstr "Sanskrit" + +#~ msgid "Serbian" +#~ msgstr "srpski" + +#~ msgid "Sindhi" +#~ msgstr "Sindhi" + +#~ msgid "Sinhalese" +#~ msgstr "Sinhalese" + +#~ msgid "Slovak" +#~ msgstr "slovački" + +#~ msgid "Slovenian" +#~ msgstr "slovenački" + +#~ msgid "Swahili" +#~ msgstr "Swahili" + +#~ msgid "Swedish" +#~ msgstr "švedski" + +#~ msgid "Tajik" +#~ msgstr "Tajik" + +#~ msgid "Tamil" +#~ msgstr "Tamil" + +#~ msgid "Tagalog" +#~ msgstr "Tagalog" + +#~ msgid "Telugu" +#~ msgstr "Telugu" + +#~ msgid "Thai" +#~ msgstr "Thai" + +#~ msgid "Tibetan" +#~ msgstr "tibetanski" + +#~ msgid "Ukrainian" +#~ msgstr "ukrajinski" + +#~ msgid "Urdu" +#~ msgstr "Urdu" + +#~ msgid "Uzbek" +#~ msgstr "uzbekitanski" + +#~ msgid "Uighur" +#~ msgstr "Uighur" + +#~ msgid "Vietnamese" +#~ msgstr "vijetnamski" + +#~ msgid "Welsh" +#~ msgstr "velški" + +#~ msgid "Yiddish" +#~ msgstr "Yiddish" + +#~ msgid "" +#~ "TWBlue has detected that you're running" +#~ " windows 10 and has changed the " +#~ "default keymap to the Windows 10 " +#~ "keymap. It means that some keyboard " +#~ "shorcuts could be different. Please " +#~ "check the keystroke editor by pressing" +#~ " Alt+Win+K to see all available " +#~ "keystrokes for this keymap." +#~ msgstr "" +#~ "TWBlue je otkrio da koristite windows" +#~ " 10 i promenio je podrazumevane " +#~ "tasterske prečice na Windows 10 način" +#~ " rada. To znači da neke tasterske " +#~ "prečice mogu biti drugačije. Molimo vas" +#~ " da proverite uređivač tasterskih prečica" +#~ " pritiskanjem Alt+Win+K i pogledate sve " +#~ "dostupne prečice za ovaj način rada." + +#~ msgid "Favorites: " +#~ msgstr "Omiljeni: " + +#~ msgid "Date: " +#~ msgstr "Datum:" + +#~ msgid "Community for {}" +#~ msgstr "" + +#~ msgid "Run {0} at Windows startup" +#~ msgstr "Pokreni {0} prilikom pokretanja Windowsa" + +#~ msgid "Use Codeofdusk's longtweet handlers (may decrease client performance)" +#~ msgstr "" +#~ "Koristi Codeofdusk's upravljanje dugim " +#~ "tvitovima (može usporiti performanse programa)" + +#~ msgid "Remember state for mention all and long tweet" +#~ msgstr "Pamti stanje opcija spomeni sve i dug tvit" + +#~ msgid "Bio: " +#~ msgstr "" + +#~ msgid "Joined at: " +#~ msgstr "" + +#~ msgid "Field {} - Label: " +#~ msgstr "" + +#~ msgid "{} posts. Click to open posts timeline" +#~ msgstr "" + +#~ msgid "{} following. Click to open Following timeline" +#~ msgstr "" + +#~ msgid "{} followers. Click to open followers timeline" +#~ msgstr "" + +#~ msgid "Display Name" +#~ msgstr "" + +#~ msgid "Bio" +#~ msgstr "" + +#~ msgid "Change header" +#~ msgstr "" + +#~ msgid "Change avatar" +#~ msgstr "" + +#~ msgid "Field {}: Label" +#~ msgstr "" + +#~ msgid "Add following to database" +#~ msgstr "" + +#~ msgid "Read long posts in GUI" +#~ msgstr "" + +#~ msgid "LibreTranslate API URL: " +#~ msgstr "" + +#~ msgid "LibreTranslate API Key (optional): " +#~ msgstr "" + +#~ msgid "DeepL API Key: " +#~ msgstr "" + diff --git a/srcantiguo/locales/tr/LC_MESSAGES/twblue.mo b/srcantiguo/locales/tr/LC_MESSAGES/twblue.mo new file mode 100644 index 00000000..452956ee Binary files /dev/null and b/srcantiguo/locales/tr/LC_MESSAGES/twblue.mo differ diff --git a/srcantiguo/locales/tr/LC_MESSAGES/twblue.po b/srcantiguo/locales/tr/LC_MESSAGES/twblue.po new file mode 100644 index 00000000..1291d265 --- /dev/null +++ b/srcantiguo/locales/tr/LC_MESSAGES/twblue.po @@ -0,0 +1,4912 @@ + +msgid "" +msgstr "" +"Project-Id-Version: TW Blue 0.80\n" +"Report-Msgid-Bugs-To: manuel@manuelcortez.net\n" +"POT-Creation-Date: 2025-04-13 01:18+0000\n" +"PO-Revision-Date: 2022-12-20 22:42+0000\n" +"Last-Translator: Anonymous \n" +"Language: tr\n" +"Language-Team: Turkish " +"\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.17.0\n" + +#: languageHandler.py:61 +#, fuzzy +msgctxt "languageName" +msgid "Amharic" +msgstr "Amharca" + +#: languageHandler.py:62 +#, fuzzy +msgctxt "languageName" +msgid "Aragonese" +msgstr "Japonca" + +#: languageHandler.py:63 +#, fuzzy +msgctxt "languageName" +msgid "Spanish" +msgstr "İspanyolca" + +#: languageHandler.py:64 +#, fuzzy +msgctxt "languageName" +msgid "Portuguese" +msgstr "Portekizce" + +#: languageHandler.py:65 +#, fuzzy +msgctxt "languageName" +msgid "Russian" +msgstr "Rusça" + +#: languageHandler.py:66 +#, fuzzy +msgctxt "languageName" +msgid "italian" +msgstr "İtalyanca" + +#: languageHandler.py:67 +#, fuzzy +msgctxt "languageName" +msgid "Turkey" +msgstr "özellik" + +#: languageHandler.py:68 +#, fuzzy +msgctxt "languageName" +msgid "Galician" +msgstr "galicia dili" + +#: languageHandler.py:69 +#, fuzzy +msgctxt "languageName" +msgid "Catala" +msgstr "Katalanya dili" + +#: languageHandler.py:70 +#, fuzzy +msgctxt "languageName" +msgid "Vasque" +msgstr "bask" + +#: languageHandler.py:71 +#, fuzzy +msgctxt "languageName" +msgid "polish" +msgstr "Lehçe" + +#: languageHandler.py:72 +#, fuzzy +msgctxt "languageName" +msgid "Arabic" +msgstr "Arapça" + +#: languageHandler.py:73 +#, fuzzy +msgctxt "languageName" +msgid "Nepali" +msgstr "Nepal dili" + +#: languageHandler.py:74 +msgctxt "languageName" +msgid "Serbian (Latin)" +msgstr "" + +#: languageHandler.py:75 +#, fuzzy +msgctxt "languageName" +msgid "Japanese" +msgstr "Japonca" + +#: languageHandler.py:99 +msgid "User default" +msgstr "Kullanıcı varsayılanı" + +#: main.py:105 +#, fuzzy +msgid "https://twblue.mcvsoftware.com/donate" +msgstr "https://twblue.es/donate" + +#: main.py:118 +#, python-brace-format +msgid "" +"{0} is already running. Close the other instance before starting this " +"one. If you're sure that {0} isn't running, try deleting the file at {1}." +" If you're unsure of how to do this, contact the {0} developers." +msgstr "" +"{0} zaten çalışıyor. Bu kopyayı çalıştırmadan önce onu kapatın. {0} " +"programının çalışmadığına eminseniz, {1} konumundaki dosyayı silmeyi " +"deneyin. Bunu nasıl yapacağınızdan emin değilseniz, {0} üreticilerine " +"ulaşın." + +#: sound.py:148 +msgid "Playing..." +msgstr "Oynatılıyor..." + +#: sound.py:161 +msgid "Stopped." +msgstr "Durduruldu." + +#: controller/mainController.py:261 +msgid "Ready" +msgstr "Hazır" + +#: controller/mainController.py:369 controller/mainController.py:654 +#: controller/mainController.py:673 controller/mainController.py:692 +#: controller/mainController.py:711 +msgid "" +"No session is currently in focus. Focus a session with the next or " +"previous session shortcut." +msgstr "" +"Şu anda hiççbir hesaba odaklı değilsiniz. Sonraki ya da önceki hesap " +"kısayolarıyla bir hesaba odaklanın." + +#: controller/mainController.py:373 +msgid "Empty buffer." +msgstr "Boş buffer." + +#: controller/mainController.py:380 +#, python-brace-format +msgid "{0} not found." +msgstr "{0} bulunamadı" + +#: controller/mainController.py:702 controller/mainController.py:721 +#, python-format +msgid "%s, %s of %s" +msgstr "%s, %s/%s" + +#: controller/mainController.py:704 controller/mainController.py:723 +#: controller/mainController.py:751 controller/mainController.py:779 +#, python-format +msgid "%s. Empty" +msgstr "%s. boş" + +#: controller/mainController.py:739 controller/mainController.py:743 +#: controller/mainController.py:767 +#, python-brace-format +msgid "{0}: This account is not logged into Twitter." +msgstr "{0}: Bu hesap twitterda oturum açmadı" + +#: controller/mainController.py:749 controller/mainController.py:777 +#, python-format +msgid "%s. %s, %s of %s" +msgstr "%s. %s, %s / %s" + +#: controller/mainController.py:771 +#, python-brace-format +msgid "{0}: This account is not logged into twitter." +msgstr "{0}: Bu hesap twitterda oturum açmadı" + +#: controller/mainController.py:910 controller/mainController.py:926 +msgid "An error happened while trying to connect to the server. Please try later." +msgstr "" +"Sunucuya bağlanmaya çalışılırken bir hatayla karşılaşıldı. Lütfen daha " +"sonra tekrar deneyin." + +#: controller/mainController.py:957 +msgid "The auto-reading of new tweets is enabled for this buffer" +msgstr "Yeni tweetlerin okunması bu buffer için etkin" + +#: controller/mainController.py:960 +msgid "The auto-reading of new tweets is disabled for this buffer" +msgstr "Yeni tweetlerin okunması bu buffer için etkin değil" + +#: controller/mainController.py:967 +msgid "Session mute on" +msgstr "Hesap susturma açık" + +#: controller/mainController.py:970 +msgid "Session mute off" +msgstr "Hesap susturma kapalı" + +#: controller/mainController.py:979 +msgid "Buffer mute on" +msgstr "Buffer susturma açık" + +#: controller/mainController.py:982 +msgid "Buffer mute off" +msgstr "Buffer susturma kapalı" + +#: controller/mainController.py:999 +msgid "Copied" +msgstr "Kopyalandı" + +#: controller/mainController.py:1019 +msgid "Unable to update this buffer." +msgstr "Bu buffer güncellenemiyor." + +#: controller/mainController.py:1021 +msgid "Updating buffer..." +msgstr "Buffer güncelleniyor..." + +#: controller/mainController.py:1024 +#, python-brace-format +msgid "{0} items retrieved" +msgstr "{0} öğe alındı" + +#: controller/buffers/mastodon/base.py:137 controller/mainController.py:1028 +#: controller/mastodon/handler.py:98 controller/mastodon/handler.py:241 +#, python-brace-format +msgid "Timeline for {}" +msgstr "{} için çizelge" + +#: controller/buffers/mastodon/users.py:93 controller/mainController.py:1030 +#: controller/mastodon/handler.py:100 controller/mastodon/handler.py:255 +#, python-brace-format +msgid "Followers for {}" +msgstr "{} kişisinin takipçileri" + +#: controller/mainController.py:1032 +#, python-brace-format +msgid "Friends for {}" +msgstr "{} kişisinin arkadaşları" + +# | msgid "Followers for {}" +#: controller/buffers/mastodon/users.py:95 controller/mainController.py:1034 +#: controller/mastodon/handler.py:102 controller/mastodon/handler.py:269 +#, fuzzy, python-brace-format +msgid "Following for {}" +msgstr "{} kişisinin takipçileri" + +#: controller/messages.py:18 +#, fuzzy +msgid "Translated" +msgstr "Mesaj çevirildi" + +#: controller/settings.py:60 +#, fuzzy +msgid "System default" +msgstr "Kullanıcı varsayılanı" + +#: controller/settings.py:60 +msgid "HTTP" +msgstr "" + +#: controller/settings.py:60 +msgid "SOCKS v4" +msgstr "" + +#: controller/settings.py:60 +msgid "SOCKS v4 with DNS support" +msgstr "" + +#: controller/settings.py:60 +msgid "SOCKS v5" +msgstr "" + +#: controller/settings.py:60 +msgid "SOCKS v5 with DNS support" +msgstr "" + +#: controller/userAlias.py:31 +#, fuzzy, python-brace-format +msgid "Edit alias for {}" +msgstr "{} için liste" + +#: controller/buffers/base/base.py:91 +#: controller/buffers/mastodon/conversations.py:237 +#: controller/buffers/mastodon/search.py:80 +msgid "This action is not supported for this buffer" +msgstr "Bu eylem şu anki buffer için geçerli değil" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:70 +#: controller/mastodon/settings.py:194 +msgid "Home" +msgstr "Anasayfa" + +#: controller/buffers/mastodon/base.py:52 +#: controller/buffers/mastodon/community.py:22 +#: controller/mastodon/handler.py:72 controller/mastodon/handler.py:114 +#: controller/mastodon/settings.py:195 +msgid "Local" +msgstr "" + +#: controller/buffers/mastodon/base.py:52 +#: controller/buffers/mastodon/community.py:22 +#: controller/mastodon/handler.py:74 controller/mastodon/settings.py:196 +msgid "Federated" +msgstr "" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:76 +#: controller/mastodon/settings.py:197 +msgid "Mentions" +msgstr "Bahsetmeler" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:84 +#: controller/mastodon/settings.py:201 +msgid "Bookmarks" +msgstr "" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:78 +msgid "Direct messages" +msgstr "Direkt mesajlar" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:80 +#: controller/mastodon/settings.py:199 +msgid "Sent" +msgstr "" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:82 +#: controller/mastodon/settings.py:200 wxUI/dialogs/mastodon/postDialogs.py:229 +msgid "Favorites" +msgstr "" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:86 +#: controller/mastodon/settings.py:202 +msgid "Followers" +msgstr "Takipçiler" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:88 +#: controller/mastodon/settings.py:203 +#, fuzzy +msgid "Following" +msgstr "&Takibi bırak" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:92 +#: controller/mastodon/settings.py:204 +msgid "Blocked users" +msgstr "Engellenmiş kullanıcılar" + +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:90 +#: controller/mastodon/settings.py:205 +msgid "Muted users" +msgstr "susturulmuş kullanıcılar" + +# | msgid "&Location" +#: controller/buffers/mastodon/base.py:52 controller/mastodon/handler.py:94 +#: controller/mastodon/settings.py:206 +#: wxUI/dialogs/mastodon/filters/create_filter.py:80 +#, fuzzy +msgid "Notifications" +msgstr "&Yer" + +#: controller/buffers/mastodon/base.py:58 +#, python-brace-format +msgid "{username}'s timeline" +msgstr "{username} kişisinin çizelgesi" + +#: controller/buffers/mastodon/base.py:60 +#, python-brace-format +msgid "{username}'s followers" +msgstr "{username} kişisinin takipçileri" + +# | msgid "{username}'s followers" +#: controller/buffers/mastodon/base.py:62 +#, fuzzy, python-brace-format +msgid "{username}'s following" +msgstr "{username} kişisinin takipçileri" + +#: controller/buffers/mastodon/base.py:64 +msgid "Unknown buffer" +msgstr "Bilinmeyen buffer" + +#: controller/buffers/mastodon/base.py:67 +#: controller/buffers/mastodon/base.py:645 wxUI/buffers/mastodon/base.py:24 +#: wxUI/buffers/mastodon/conversationList.py:24 +#: wxUI/buffers/mastodon/notifications.py:22 wxUI/buffers/mastodon/user.py:18 +#: wxUI/dialogs/mastodon/postDialogs.py:5 +#: wxUI/dialogs/mastodon/postDialogs.py:194 wxUI/sysTrayIcon.py:35 +msgid "Post" +msgstr "" + +# | msgid "Write the tweet here" +#: controller/buffers/mastodon/base.py:68 +#: controller/buffers/mastodon/base.py:646 +#, fuzzy +msgid "Write your post here" +msgstr "Tweetinizi yazın" + +# | msgid "New tweet in {0}" +#: controller/buffers/mastodon/base.py:153 +#, fuzzy, python-brace-format +msgid "New post in {0}" +msgstr "{0} yeni tweet" + +# | msgid "{0} new tweets in {1}." +#: controller/buffers/mastodon/base.py:159 +#, fuzzy, python-brace-format +msgid "{0} new posts in {1}." +msgstr "{1} bufferında {0} yeni tweet." + +#: controller/buffers/mastodon/base.py:198 +#: controller/buffers/mastodon/community.py:90 +#: controller/buffers/mastodon/conversations.py:100 +#: controller/buffers/mastodon/mentions.py:82 +#: controller/buffers/mastodon/users.py:139 +#, python-format +msgid "%s items retrieved" +msgstr "%s öğe alındı" + +#: controller/buffers/mastodon/base.py:216 +#: controller/buffers/mastodon/users.py:206 +msgid "This buffer is not a timeline; it can't be deleted." +msgstr "Bu buffer çizelge olmadığı için silinemez." + +# | msgid "Conversation with {0}" +#: controller/buffers/mastodon/base.py:346 +#: controller/buffers/mastodon/base.py:384 +#, fuzzy, python-brace-format +msgid "Conversation with {}" +msgstr "{0} ile konuşma" + +# | msgid "Write the tweet here" +#: controller/buffers/mastodon/base.py:347 +#: controller/buffers/mastodon/base.py:385 +#: controller/buffers/mastodon/conversations.py:181 +#: controller/buffers/mastodon/notifications.py:122 +#: controller/buffers/mastodon/users.py:52 +#, fuzzy +msgid "Write your message here" +msgstr "Tweetinizi yazın" + +# | msgid "Reply to {arg0}" +#: controller/buffers/mastodon/base.py:349 +#, fuzzy, python-brace-format +msgid "Reply to {}" +msgstr "{arg0} Kişisine yanıt" + +# | msgid "Write the tweet here" +#: controller/buffers/mastodon/base.py:350 +#, fuzzy +msgid "Write your reply here" +msgstr "Tweetinizi yazın" + +#: controller/buffers/mastodon/base.py:412 +#, fuzzy +msgid "This action is not supported on conversations." +msgstr "Bu eylem buffer için henüz desteklenmiyor." + +#: controller/buffers/mastodon/base.py:477 +msgid "Opening URL..." +msgstr "Adres açılıyor... " + +#: controller/buffers/mastodon/base.py:490 +msgid "You can delete only your own posts." +msgstr "" + +#: controller/buffers/mastodon/base.py:519 +msgid "Opening item in web browser..." +msgstr "Öğe tarayıcıda açılıyor..." + +#: controller/buffers/mastodon/base.py:527 +#: controller/buffers/mastodon/base.py:547 +msgid "Adding to favorites..." +msgstr "" + +# | msgid "Remove from list" +#: controller/buffers/mastodon/base.py:534 +#: controller/buffers/mastodon/base.py:549 +#, fuzzy +msgid "Removing from favorites..." +msgstr "Listeden kaldır" + +#: controller/buffers/mastodon/base.py:544 +#: controller/buffers/mastodon/base.py:559 +#: controller/buffers/mastodon/base.py:573 +#: controller/buffers/mastodon/conversations.py:213 +msgid "No status found with that ID" +msgstr "Bu ID ile bir durum bulunamadı" + +#: controller/buffers/mastodon/base.py:562 +msgid "Adding to bookmarks..." +msgstr "" + +#: controller/buffers/mastodon/base.py:564 +msgid "Removing from bookmarks..." +msgstr "" + +#: controller/buffers/mastodon/base.py:586 +#, python-brace-format +msgid "Picture {0}" +msgstr "Resim {0}" + +#: controller/buffers/mastodon/base.py:587 +msgid "Select the picture" +msgstr "Resim seçin" + +#: controller/buffers/mastodon/base.py:610 +msgid "Unable to extract text" +msgstr "Metin çıkartılamıyor" + +#: controller/buffers/mastodon/base.py:612 +msgid "OCR Result" +msgstr "" + +#: controller/buffers/mastodon/base.py:627 +msgid "this poll no longer exists." +msgstr "" + +#: controller/buffers/mastodon/base.py:630 +msgid "This poll has already expired." +msgstr "" + +#: controller/buffers/mastodon/base.py:633 +msgid "You have already voted on this poll." +msgstr "" + +#: controller/buffers/mastodon/base.py:642 +#, fuzzy +msgid "Sending vote..." +msgstr "Ses yeniden kodlanıyor..." + +# | msgid "Conversation with {0}" +#: controller/buffers/mastodon/conversations.py:180 +#, fuzzy, python-brace-format +msgid "Reply to conversation with {}" +msgstr "{0} ile konuşma" + +# | msgid "Conversation with {0}" +#: controller/buffers/mastodon/notifications.py:121 +#: controller/buffers/mastodon/users.py:51 +#, fuzzy, python-brace-format +msgid "New conversation with {}" +msgstr "{0} ile konuşma" + +#: controller/buffers/mastodon/notifications.py:151 +msgid "Notification dismissed." +msgstr "" + +# | msgid "There are no coordinates in this tweet" +#: controller/buffers/mastodon/users.py:110 +#, fuzzy +msgid "There are no more items in this buffer." +msgstr "Bu tweette koordinatlar yok" + +#: controller/mastodon/handler.py:30 wxUI/dialogs/mastodon/updateProfile.py:35 +#, fuzzy +msgid "Update Profile" +msgstr "&Profili güncelle" + +#: controller/mastodon/handler.py:31 wxUI/dialogs/mastodon/search.py:10 +#: wxUI/view.py:19 +msgid "&Search" +msgstr "&Ara" + +#: controller/mastodon/handler.py:33 wxUI/view.py:22 +msgid "Manage user aliases" +msgstr "" + +#: controller/mastodon/handler.py:35 controller/mastodon/handler.py:59 +#: wxUI/view.py:30 +msgid "&Post" +msgstr "" + +#: controller/mastodon/handler.py:36 wxUI/dialogs/mastodon/menus.py:9 +#: wxUI/dialogs/mastodon/menus.py:37 wxUI/view.py:31 +msgid "Re&ply" +msgstr "ya&nıt" + +#: controller/mastodon/handler.py:37 wxUI/dialogs/mastodon/menus.py:7 +#: wxUI/dialogs/mastodon/menus.py:35 wxUI/view.py:32 +msgid "&Boost" +msgstr "" + +# | msgid "&Add to list" +#: controller/mastodon/handler.py:38 wxUI/dialogs/mastodon/menus.py:11 +#: wxUI/dialogs/mastodon/menus.py:39 wxUI/view.py:33 +#, fuzzy +msgid "&Add to favorites" +msgstr "&Listeye ekle" + +# | msgid "Remove from list" +#: controller/mastodon/handler.py:39 +#, fuzzy +msgid "Remove from favorites" +msgstr "Listeden kaldır" + +# | msgid "&Show user" +#: controller/mastodon/handler.py:40 wxUI/dialogs/mastodon/menus.py:21 +#: wxUI/dialogs/mastodon/menus.py:49 wxUI/view.py:35 +#, fuzzy +msgid "&Show post" +msgstr "&Kullanıcıyı göster" + +#: controller/mastodon/handler.py:41 wxUI/view.py:36 +msgid "View conversa&tion" +msgstr "&Konuşmayı görüntüle" + +#: controller/mastodon/handler.py:42 wxUI/view.py:37 +msgid "Read text in picture" +msgstr "Resimdeki metni oku" + +#: controller/mastodon/handler.py:43 wxUI/dialogs/mastodon/menus.py:25 +#: wxUI/view.py:39 +msgid "&Delete" +msgstr "&sil" + +#: controller/mastodon/handler.py:45 wxUI/view.py:43 +msgid "&Actions..." +msgstr "&Eylemler..." + +#: controller/mastodon/handler.py:46 wxUI/view.py:44 +msgid "&View timeline..." +msgstr "&Çizelge görüntüle..." + +#: controller/mastodon/handler.py:47 wxUI/view.py:45 +msgid "Direct me&ssage" +msgstr "&Direkt mesaj" + +#: controller/mastodon/handler.py:48 wxUI/view.py:46 +msgid "Add a&lias" +msgstr "" + +#: controller/mastodon/handler.py:51 +#, fuzzy +msgid "Show user profile" +msgstr "&Kullanıcı profilini göster" + +#: controller/mastodon/handler.py:54 +msgid "Create c&ommunity timeline" +msgstr "" + +#: controller/mastodon/handler.py:55 wxUI/view.py:57 +msgid "Create a &filter" +msgstr "Yeni &filtre oluştur" + +#: controller/mastodon/handler.py:56 wxUI/view.py:58 +msgid "&Manage filters" +msgstr "&filtreleri yönet" + +#: controller/mastodon/handler.py:95 +msgid "Timelines" +msgstr "çizelgeler" + +#: controller/mastodon/handler.py:107 +msgid "Searches" +msgstr "aramalar" + +#: controller/mastodon/handler.py:110 controller/mastodon/handler.py:191 +#: controller/mastodon/handler.py:196 +#, python-brace-format +msgid "Search for {}" +msgstr "{} kişisi için arama" + +#: controller/mastodon/handler.py:111 +msgid "Communities" +msgstr "" + +#: controller/mastodon/handler.py:114 +#, fuzzy +msgid "federated" +msgstr "{username} kişisinin çizelgesi" + +#: controller/mastodon/handler.py:143 +#, python-brace-format +msgid "Conversation with {0}" +msgstr "{0} ile konuşma" + +#: controller/mastodon/handler.py:299 +msgid "Add an user alias" +msgstr "" + +#: controller/mastodon/handler.py:311 +#, python-brace-format +msgid "Alias has been set correctly for {}." +msgstr "" + +#: controller/mastodon/handler.py:342 +#, fuzzy +msgid "Update profile" +msgstr "&Profili güncelle" + +#: controller/mastodon/messages.py:115 +#, python-format +msgid "%s - %s of %d characters" +msgstr "%s - %s / %d karakter" + +#: controller/mastodon/messages.py:239 +#, python-brace-format +msgid "Poll with {} options" +msgstr "" + +# | msgid "List for {}" +#: controller/mastodon/messages.py:272 +#, fuzzy, python-brace-format +msgid "Post from {}" +msgstr "{} için liste" + +#: controller/mastodon/messages.py:276 sessions/mastodon/templates.py:82 +#: wxUI/dialogs/mastodon/postDialogs.py:49 +msgid "Public" +msgstr "Herkese açık" + +# | msgid "Accounts list" +#: controller/mastodon/messages.py:276 sessions/mastodon/templates.py:82 +#: wxUI/dialogs/mastodon/postDialogs.py:49 +#, fuzzy +msgid "Not listed" +msgstr "hesap listesi" + +# | msgid "Followers" +#: controller/mastodon/messages.py:276 +#, fuzzy +msgid "followers only" +msgstr "Takipçiler" + +# | msgid "Direct message" +#: controller/mastodon/messages.py:276 sessions/mastodon/templates.py:82 +#: wxUI/dialogs/mastodon/postDialogs.py:49 +#, fuzzy +msgid "Direct" +msgstr "Dm" + +# | msgid "Remove client" +#: controller/mastodon/messages.py:283 +#, fuzzy +msgid "Remote instance" +msgstr "İstemci kaldır" + +#: controller/mastodon/messages.py:291 controller/mastodon/messages.py:319 +#, fuzzy +msgid "Unmute conversation" +msgstr "Konuşmayı görüntüle" + +#: controller/mastodon/messages.py:315 wxUI/dialogs/mastodon/postDialogs.py:237 +#, fuzzy +msgid "Mute conversation" +msgstr "Konuşmayı görüntüle" + +# | msgid "Conversation with {0}" +#: controller/mastodon/messages.py:316 +#, fuzzy +msgid "Conversation unmuted." +msgstr "{0} ile konuşma" + +# | msgid "Conversation with {0}" +#: controller/mastodon/messages.py:320 +#, fuzzy +msgid "Conversation muted." +msgstr "{0} ile konuşma" + +#: controller/mastodon/messages.py:331 +msgid "people who boosted this post" +msgstr "" + +#: controller/mastodon/messages.py:336 +msgid "people who favorited this post" +msgstr "" + +#: controller/mastodon/messages.py:342 +#, fuzzy +msgid "Link copied to clipboard." +msgstr "Panoya kopyala" + +#: controller/mastodon/settings.py:82 +#, python-format +msgid "Account settings for %s" +msgstr "%s için hesap ayarları" + +#: controller/mastodon/settings.py:92 +#, python-brace-format +msgid "Edit template for posts. Current template: {}" +msgstr "" + +#: controller/mastodon/settings.py:101 +#, python-brace-format +msgid "Edit template for conversations. Current template: {}" +msgstr "" + +#: controller/mastodon/settings.py:110 +#, python-brace-format +msgid "Edit template for persons. Current template: {}" +msgstr "" + +#: controller/mastodon/settings.py:198 +msgid "Direct Messages" +msgstr "Direkt mesajlar" + +#: controller/mastodon/filters/create_filter.py:75 +#, fuzzy, python-brace-format +msgid "Update Filter: {}" +msgstr "&Profili güncelle" + +#: controller/mastodon/filters/manage_filters.py:57 +#: wxUI/dialogs/mastodon/filters/create_filter.py:90 +msgid "Never" +msgstr "" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:4 +msgid "Audio tweet." +msgstr "Sesli tweet" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:5 +msgid "User timeline buffer created." +msgstr "Kullanıcı çizelgesi bufferi oluşturuldu" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:6 +msgid "Buffer destroied." +msgstr "Buffer kaldırıldı" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:7 +msgid "Direct message received." +msgstr "Direkt mesaj alındı" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:8 +msgid "Direct message sent." +msgstr "Direkt mesaj gönderildi" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:9 +msgid "Error." +msgstr "Hata" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:10 +msgid "Tweet liked." +msgstr "Tweet beğenildi." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:11 +msgid "Likes buffer updated." +msgstr "Beğeniler bufferi güncellendi" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:12 +msgid "Geotweet." +msgstr "Konumlu tweet" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:13 +msgid "Tweet contains one or more images" +msgstr "Tweet bir veya daha fazla resim içeriyor" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:14 +msgid "Boundary reached." +msgstr "Sınır" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:15 +msgid "List updated." +msgstr "Liste güncellendi" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:16 +msgid "Too many characters." +msgstr "Karakter sınırı aşıldı" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:17 +msgid "Mention received." +msgstr "Yanıt alındı" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:18 +msgid "New event." +msgstr "Yeni etkinlik" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:19 +#, python-brace-format +msgid "{0} is ready." +msgstr "{0} hazır." + +#: extra/SoundsTutorial/soundsTutorial_constants.py:20 +msgid "Mention sent." +msgstr "Yanıt gönderildi" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:21 +msgid "Tweet retweeted." +msgstr "Tweet retweetlendi" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:22 +msgid "Search buffer updated." +msgstr "Arama bufferi güncellendi" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:23 +msgid "Tweet received." +msgstr "Tweet alındı" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:24 +msgid "Tweet sent." +msgstr "Tweet gönderildi" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:25 +msgid "Trending topics buffer updated." +msgstr "Trend konular bufferi güncellendi" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:26 +msgid "New tweet in user timeline buffer." +msgstr "Kullanıcı çizelgesi bufferinda yeni tweet" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:27 +msgid "New follower." +msgstr "Yeni takipçi" + +#: extra/SoundsTutorial/soundsTutorial_constants.py:28 +msgid "Volume changed." +msgstr "Ses yüksekliği değiştirildi" + +#: extra/SoundsTutorial/wx_ui.py:8 +msgid "Sounds tutorial" +msgstr "Ses denemesi" + +#: extra/SoundsTutorial/wx_ui.py:11 +msgid "Press enter to listen to the sound for the selected event" +msgstr "Seçilen olay için sesi dinlemek için enter tuşuna basınız." + +#: extra/SpellChecker/spellchecker.py:56 +#, python-format +msgid "Misspelled word: %s" +msgstr "Yanlış yazılmış sözcük: %s" + +#: extra/SpellChecker/wx_ui.py:27 +msgid "Misspelled word" +msgstr "Yanlış yazılmış sözcük" + +#: extra/SpellChecker/wx_ui.py:32 +msgid "Context" +msgstr "içerik" + +#: extra/SpellChecker/wx_ui.py:37 +msgid "Suggestions" +msgstr "Öneriler" + +#: extra/SpellChecker/wx_ui.py:42 +msgid "&Ignore" +msgstr "&yoksay" + +#: extra/SpellChecker/wx_ui.py:43 +msgid "I&gnore all" +msgstr "&Tümünü yoksay" + +#: extra/SpellChecker/wx_ui.py:44 +msgid "&Replace" +msgstr "&Değiştir" + +#: extra/SpellChecker/wx_ui.py:45 +msgid "R&eplace all" +msgstr "&Tümünü değiştir" + +#: extra/SpellChecker/wx_ui.py:46 +msgid "&Add to personal dictionary" +msgstr "&Kişisel sözlüğe ekle" + +#: extra/SpellChecker/wx_ui.py:79 +#, python-brace-format +msgid "" +"An error has occurred. There are no dictionaries available for the " +"selected language in {0}" +msgstr "Bir hata oluştu. Seçilen dil için {0} programında sözlük bulunmamaktadır." + +#: extra/SpellChecker/wx_ui.py:79 +#: extra/autocompletionUsers/mastodon/wx_scan.py:44 +#: wxUI/commonMessageDialogs.py:23 wxUI/commonMessageDialogs.py:36 +#: wxUI/commonMessageDialogs.py:45 wxUI/commonMessageDialogs.py:52 +#: wxUI/commonMessageDialogs.py:55 wxUI/commonMessageDialogs.py:61 +#: wxUI/dialogs/mastodon/dialogs.py:38 wxUI/dialogs/mastodon/dialogs.py:43 +#: wxUI/dialogs/mastodon/dialogs.py:48 wxUI/dialogs/mastodon/dialogs.py:53 +#: wxUI/dialogs/mastodon/dialogs.py:60 +msgid "Error" +msgstr "Hata" + +#: extra/SpellChecker/wx_ui.py:82 +msgid "Spell check complete." +msgstr "Yazım kontrolü tamamlandı" + +#: extra/autocompletionUsers/completion.py:39 +#: extra/autocompletionUsers/completion.py:57 +msgid "You have to start writing" +msgstr "" + +# | msgid "There are no coordinates in this tweet" +#: extra/autocompletionUsers/completion.py:49 +#: extra/autocompletionUsers/completion.py:66 +#, fuzzy +msgid "There are no results in your users database" +msgstr "Bu tweette koordinatlar yok" + +#: extra/autocompletionUsers/completion.py:51 +#, fuzzy +msgid "Autocompletion only works for users." +msgstr "&Kullanıcılari tamamla" + +#: extra/autocompletionUsers/wx_manage.py:9 +#, fuzzy +msgid "Manage Autocompletion database" +msgstr "Otomatik tamamlama veritabanını yönet" + +#: extra/autocompletionUsers/wx_manage.py:12 +#, fuzzy, python-brace-format +msgid "Editing {0} users database" +msgstr "{0} kullanıcı veritabanı düzenleniyor" + +#: extra/autocompletionUsers/wx_manage.py:13 +#, fuzzy +msgid "Username" +msgstr "Kullanıcı" + +#: extra/autocompletionUsers/wx_manage.py:13 wxUI/dialogs/configuration.py:108 +msgid "Name" +msgstr "Ad" + +#: extra/autocompletionUsers/wx_manage.py:16 +#, fuzzy +msgid "Add user" +msgstr "Kullanıcı" + +#: extra/autocompletionUsers/wx_manage.py:17 +#, fuzzy +msgid "Remove user" +msgstr "Kullanıcı kaldır" + +#: extra/autocompletionUsers/wx_manage.py:38 +msgid "Twitter username" +msgstr "" + +#: extra/autocompletionUsers/wx_manage.py:38 +msgid "Add user to database" +msgstr "" + +#: extra/autocompletionUsers/wx_manage.py:44 +#, fuzzy +msgid "The user does not exist" +msgstr "Kullanıcı bulunamadı" + +#: extra/autocompletionUsers/wx_manage.py:44 +#, fuzzy +msgid "Error!" +msgstr "Hata" + +#: extra/autocompletionUsers/mastodon/scan.py:49 +msgid "" +"Updating database... You can close this window now. A message will tell " +"you when the process finishes." +msgstr "" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:8 +#, fuzzy +msgid "Autocomplete users' settings" +msgstr "&Kullanıcılari tamamla" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:11 +msgid "Add &followers to database" +msgstr "" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:12 +msgid "Add f&ollowing to database" +msgstr "" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:26 +#, fuzzy +msgid "Updating autocompletion database" +msgstr "Otomatik tamamlama veritabanını yönet" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:34 +msgid "" +"This process will retrieve the users you selected from your Mastodon " +"account, and add them to the user autocomplete database. Please note that" +" if there are many users or you have tried to perform this action less " +"than 15 minutes ago, TWBlue may reach a limit in API calls when trying to" +" load the users into the database. If this happens, we will show you an " +"error, in which case you will have to try this process again in a few " +"minutes. If this process ends with no error, you will be redirected back " +"to the account settings dialog. Do you want to continue?" +msgstr "" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:34 +#: wxUI/commonMessageDialogs.py:20 +msgid "Attention" +msgstr "Dikkat" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:40 +#, python-brace-format +msgid "TWBlue has imported {} users successfully." +msgstr "" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:40 +#, fuzzy +msgid "Done" +msgstr "Bitti!" + +#: extra/autocompletionUsers/mastodon/wx_scan.py:44 +msgid "Error adding users from Mastodon. Please try again in about 15 minutes." +msgstr "" + +#: extra/ocr/OCRSpace.py:7 +msgid "Detect automatically" +msgstr "Otomatik olarak algıla" + +#: extra/ocr/OCRSpace.py:7 +msgid "Danish" +msgstr "Danca" + +#: extra/ocr/OCRSpace.py:7 +msgid "Dutch" +msgstr "Hollandaca" + +#: extra/ocr/OCRSpace.py:7 +msgid "English" +msgstr "İngilizce" + +#: extra/ocr/OCRSpace.py:7 +msgid "Finnish" +msgstr "Fince" + +#: extra/ocr/OCRSpace.py:7 +msgid "French" +msgstr "Fransızca" + +#: extra/ocr/OCRSpace.py:7 +msgid "German" +msgstr "almanca" + +#: extra/ocr/OCRSpace.py:7 +msgid "Hungarian" +msgstr "Macarca" + +#: extra/ocr/OCRSpace.py:7 +msgid "Korean" +msgstr "Korece" + +#: extra/ocr/OCRSpace.py:7 +msgid "Italian" +msgstr "İtalyanca" + +#: extra/ocr/OCRSpace.py:7 +msgid "Japanese" +msgstr "Japonca" + +#: extra/ocr/OCRSpace.py:7 +msgid "Polish" +msgstr "Lehçe" + +#: extra/ocr/OCRSpace.py:7 +msgid "Portuguese" +msgstr "Portekizce" + +#: extra/ocr/OCRSpace.py:7 +msgid "Russian" +msgstr "Rusça" + +#: extra/ocr/OCRSpace.py:7 +msgid "Spanish" +msgstr "İspanyolca" + +#: extra/ocr/OCRSpace.py:7 +msgid "Turkish" +msgstr "Türkçe" + +#: extra/translator/wx_ui.py:25 +msgid "Translate message" +msgstr "Mesajı çevir" + +#: extra/translator/wx_ui.py:29 +#, fuzzy +msgid "Translation engine" +msgstr "Mesaj çevirildi" + +#: extra/translator/wx_ui.py:32 +msgid "Target language" +msgstr "Hedef dil" + +#: keystrokeEditor/wx_ui.py:8 +msgid "Keystroke editor" +msgstr "Kısayol düzenleyicisi" + +#: keystrokeEditor/wx_ui.py:11 +msgid "Select a keystroke to edit" +msgstr "Düzenlemek için bir kısayol seçin" + +#: keystrokeEditor/wx_ui.py:12 +#: wxUI/dialogs/mastodon/filters/manage_filters.py:18 +#: wxUI/dialogs/mastodon/userActions.py:9 +#: wxUI/dialogs/mastodon/userActions.py:18 +#: wxUI/dialogs/mastodon/userActions.py:19 +msgid "Action" +msgstr "Eylem" + +#: keystrokeEditor/wx_ui.py:12 +msgid "Keystroke" +msgstr "Kısayol" + +#: keystrokeEditor/wx_ui.py:17 +#: wxUI/dialogs/mastodon/filters/manage_filters.py:23 +#: wxUI/dialogs/userAliasDialogs.py:53 +msgid "Edit" +msgstr "Düzenle" + +#: keystrokeEditor/wx_ui.py:19 keystrokeEditor/wx_ui.py:49 +#, fuzzy +msgid "Undefine keystroke" +msgstr "Kısayol düzenleniyor" + +#: keystrokeEditor/wx_ui.py:20 +msgid "Execute action" +msgstr "Eylemi uygula" + +#: keystrokeEditor/wx_ui.py:21 wxUI/dialogs/userAliasDialogs.py:25 +msgid "Close" +msgstr "Kapat" + +#: keystrokeEditor/wx_ui.py:41 +msgid "Undefined" +msgstr "" + +#: keystrokeEditor/wx_ui.py:49 +#, fuzzy +msgid "Are you sure you want to undefine this keystroke?" +msgstr "Bu listeyi gerçekten silmek istediğinize emin misiniz?" + +#: keystrokeEditor/wx_ui.py:53 +msgid "Editing keystroke" +msgstr "Kısayol düzenleniyor" + +#: keystrokeEditor/wx_ui.py:56 +msgid "Control" +msgstr "Kontrol" + +#: keystrokeEditor/wx_ui.py:57 +msgid "Alt" +msgstr "Alt" + +#: keystrokeEditor/wx_ui.py:58 +msgid "Shift" +msgstr "Shift" + +#: keystrokeEditor/wx_ui.py:59 +msgid "Windows" +msgstr "Windows" + +#: keystrokeEditor/wx_ui.py:65 +msgid "Key" +msgstr "Tuş" + +#: keystrokeEditor/wx_ui.py:70 wxUI/dialogs/find.py:21 +#: wxUI/dialogs/mastodon/showUserProfile.py:31 +#: wxUI/dialogs/userAliasDialogs.py:23 +msgid "OK" +msgstr "Tamam" + +#: keystrokeEditor/wx_ui.py:83 +msgid "You need to use the Windows key" +msgstr "Windows tuşunu kullanmanız gerekir" + +#: keystrokeEditor/wx_ui.py:83 keystrokeEditor/wx_ui.py:86 +msgid "Invalid keystroke" +msgstr "Yanlış kısayol tuşu" + +#: keystrokeEditor/wx_ui.py:86 +msgid "You must provide a character for the keystroke" +msgstr "Kısayol için bir harf girmeniz gerekir" + +#: keystrokeEditor/actions/mastodon.py:3 +msgid "Go up in the current buffer" +msgstr "Şu anki bufferda yukarı git" + +#: keystrokeEditor/actions/mastodon.py:4 +msgid "Go down in the current buffer" +msgstr "Şu anki bufferda aşağı git" + +#: keystrokeEditor/actions/mastodon.py:5 +msgid "Go to the previous buffer" +msgstr "Önceki buffera git" + +#: keystrokeEditor/actions/mastodon.py:6 +msgid "Go to the next buffer" +msgstr "Sonraki buffera git" + +#: keystrokeEditor/actions/mastodon.py:7 +msgid "Focus the next session" +msgstr "Sonraki hesaba git" + +#: keystrokeEditor/actions/mastodon.py:8 +msgid "Focus the previous session" +msgstr "Önceki hesaba git" + +#: keystrokeEditor/actions/mastodon.py:9 +msgid "Show or hide the GUI" +msgstr "Görünür arayüzü göster veya gizle" + +# | msgid "Create a new list" +#: keystrokeEditor/actions/mastodon.py:10 +#, fuzzy +msgid "Make a new post" +msgstr "Yeni liste oluştur" + +#: keystrokeEditor/actions/mastodon.py:11 wxUI/buffers/mastodon/base.py:26 +#: wxUI/buffers/mastodon/conversationList.py:25 +msgid "Reply" +msgstr "Yanıt" + +#: keystrokeEditor/actions/mastodon.py:12 wxUI/buffers/mastodon/base.py:25 +#: wxUI/dialogs/mastodon/dialogs.py:7 +msgid "Boost" +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:13 +msgid "Send direct message" +msgstr "Direkt mesaj gönder" + +#: keystrokeEditor/actions/mastodon.py:14 +msgid "Add post to favorites" +msgstr "" + +# | msgid "Remove from list" +#: keystrokeEditor/actions/mastodon.py:15 +#, fuzzy +msgid "Remove post from favorites" +msgstr "Listeden kaldır" + +#: keystrokeEditor/actions/mastodon.py:16 +msgid "Add/remove post from favorites" +msgstr "" + +#: keystrokeEditor/actions/mastodon.py:17 +msgid "Open the user actions dialogue" +msgstr "Kullanıcı eylemler iletişim kutusunu aç" + +#: keystrokeEditor/actions/mastodon.py:18 +#, fuzzy +msgid "See user details" +msgstr "Kullanıcı kaldır" + +# | msgid "Show tweet" +#: keystrokeEditor/actions/mastodon.py:19 +#, fuzzy +msgid "Show post" +msgstr "Tweet göster" + +#: keystrokeEditor/actions/mastodon.py:20 +msgid "Quit" +msgstr "Çık" + +#: keystrokeEditor/actions/mastodon.py:21 +msgid "Open user timeline" +msgstr "Kullanıcı çizelgesini aç" + +#: keystrokeEditor/actions/mastodon.py:22 +msgid "Destroy buffer" +msgstr "Bufferi kaldır" + +# | msgid "Interact with the currently focused tweet." +#: keystrokeEditor/actions/mastodon.py:23 +#, fuzzy +msgid "Interact with the currently focused post." +msgstr "Odaktaki tweet ile etkileşime geç" + +#: keystrokeEditor/actions/mastodon.py:24 +msgid "Open URL" +msgstr "URL aç" + +# | msgid "View in Twitter" +#: keystrokeEditor/actions/mastodon.py:25 +#, fuzzy +msgid "View in browser" +msgstr "Twitter'da görüntüle" + +#: keystrokeEditor/actions/mastodon.py:26 +msgid "Increase volume by 5%" +msgstr "Sesi %5 oranında arttır" + +#: keystrokeEditor/actions/mastodon.py:27 +msgid "Decrease volume by 5%" +msgstr "Sesi %5 oranında azalt" + +#: keystrokeEditor/actions/mastodon.py:28 +msgid "Jump to the first element of a buffer" +msgstr "Bufferin ilk öğesine git" + +#: keystrokeEditor/actions/mastodon.py:29 +msgid "Jump to the last element of the current buffer" +msgstr "Bufferin son öğesine git" + +#: keystrokeEditor/actions/mastodon.py:30 +msgid "Jump 20 elements up in the current buffer" +msgstr "Bufferda 20 öğe yukarı git" + +#: keystrokeEditor/actions/mastodon.py:31 +msgid "Jump 20 elements down in the current buffer" +msgstr "Bufferda 20 öğe aşağı git" + +# | msgid "Delete" +#: keystrokeEditor/actions/mastodon.py:33 +#, fuzzy +msgid "Delete post" +msgstr "sil" + +#: keystrokeEditor/actions/mastodon.py:34 +msgid "Empty the current buffer" +msgstr "Şu anki bufferi boşalt" + +#: keystrokeEditor/actions/mastodon.py:35 +msgid "Repeat last item" +msgstr "Son öğeyi tekrarla" + +#: keystrokeEditor/actions/mastodon.py:36 +msgid "Copy to clipboard" +msgstr "Panoya kopyala" + +#: keystrokeEditor/actions/mastodon.py:39 +msgid "Mute/unmute the active buffer" +msgstr "Şu anki listeyi sustur/susturmayı kaldır" + +#: keystrokeEditor/actions/mastodon.py:40 +msgid "Mute/unmute the current session" +msgstr "Hesabı sustur/susturmayı kaldır" + +#: keystrokeEditor/actions/mastodon.py:41 +msgid "toggle the automatic reading of incoming tweets in the active buffer" +msgstr "Şu anki buffer için otomatik tweet okumayı aç/kapat" + +# | msgid "Search on twitter" +#: keystrokeEditor/actions/mastodon.py:42 +#, fuzzy +msgid "Search on instance" +msgstr "Twitterda ara" + +#: keystrokeEditor/actions/mastodon.py:43 +msgid "Find a string in the currently focused buffer" +msgstr "Odaktaki bufferda metin bul" + +#: keystrokeEditor/actions/mastodon.py:44 +msgid "Show the keystroke editor" +msgstr "Kısayol düzenleyiciyi aç" + +#: keystrokeEditor/actions/mastodon.py:46 +msgid "load previous items" +msgstr "Önceki öğeleri yükle" + +#: keystrokeEditor/actions/mastodon.py:48 +msgid "View conversation" +msgstr "Konuşmayı görüntüle" + +#: keystrokeEditor/actions/mastodon.py:49 +msgid "Check and download updates" +msgstr "&Güncellemeleri denetle ve indir" + +#: keystrokeEditor/actions/mastodon.py:50 +msgid "Opens the global settings dialogue" +msgstr "Global ayarlar iletişim kutusunu açar" + +#: keystrokeEditor/actions/mastodon.py:52 +msgid "Opens the account settings dialogue" +msgstr "Hesap ayarları iletişim kutusunu açar" + +# | msgid "Try to play an audio file" +#: keystrokeEditor/actions/mastodon.py:53 +#, fuzzy +msgid "Try to play a media file" +msgstr "Ses çalmayı deneyin" + +#: keystrokeEditor/actions/mastodon.py:54 +msgid "Updates the buffer and retrieves possible lost items there." +msgstr "Bufferi günceller ve kayıp olabilecek öğeleri alır" + +#: keystrokeEditor/actions/mastodon.py:55 +msgid "Extracts the text from a picture and displays the result in a dialog." +msgstr "Resimden metni çıkartır ve iletişim kutusunda görüntüler." + +#: keystrokeEditor/actions/mastodon.py:56 +#, fuzzy +msgid "Adds an alias to an user" +msgstr "Kullanıcıyı eklemek için liste seçin" + +#: sessionmanager/sessionManager.py:69 +#, python-brace-format +msgid "{account_name}@{instance} (Mastodon)" +msgstr "" + +#: sessionmanager/wxUI.py:11 +msgid "Session manager" +msgstr "Hesap yöneticisi" + +#: sessionmanager/wxUI.py:14 +msgid "Accounts list" +msgstr "hesap listesi" + +#: sessionmanager/wxUI.py:16 +msgid "Account" +msgstr "hesap" + +#: sessionmanager/wxUI.py:20 +msgid "New account" +msgstr "Yeni hesap" + +#: sessionmanager/wxUI.py:22 sessionmanager/wxUI.py:79 +msgid "Remove account" +msgstr "Hesabı kaldır" + +#: sessionmanager/wxUI.py:24 +msgid "Global Settings" +msgstr "Global ayarlar" + +#: sessionmanager/wxUI.py:48 +msgid "You need to configure an account." +msgstr "Bir hesap ayarlamanız gerekir" + +#: sessionmanager/wxUI.py:48 +msgid "Account Error" +msgstr "Hesap hatası" + +#: sessionmanager/wxUI.py:54 +msgid "Mastodon" +msgstr "" + +#: sessionmanager/wxUI.py:59 +msgid "" +"You will be prompted for your Mastodon data (instance URL, email address " +"and password) so we can authorise TWBlue in your instance. Would you like" +" to authorise your account now?" +msgstr "" + +#: sessionmanager/wxUI.py:59 +msgid "Authorization" +msgstr "İzin" + +#: sessionmanager/wxUI.py:67 +#, python-format +msgid "Authorized account %d" +msgstr "İzin verilmiş hesap %d" + +#: sessionmanager/wxUI.py:73 +msgid "" +"Your access token is invalid or the authorization has failed. Please try " +"again." +msgstr "İzin işlemi başarısız oldu. Lütfen yeniden deneyin" + +#: sessionmanager/wxUI.py:73 +msgid "Invalid user token" +msgstr "Yanlış kullanıcı kodu" + +#: sessionmanager/wxUI.py:79 +msgid "Do you really want to delete this account?" +msgstr "Bu hesabı silmek istiyor musunuz?" + +#: sessions/base.py:125 +#, python-brace-format +msgid "" +"An exception occurred while saving the {app} database. It will be deleted" +" and rebuilt automatically. If this error persists, send the error log to" +" the {app} developers." +msgstr "" + +#: sessions/base.py:165 +#, python-brace-format +msgid "" +"An exception occurred while loading the {app} database. It will be " +"deleted and rebuilt automatically. If this error persists, send the error" +" log to the {app} developers." +msgstr "" + +# | msgid "dddd, MMMM D, YYYY H:m:s" +#: sessions/mastodon/compose.py:15 sessions/mastodon/compose.py:61 +#, fuzzy +msgid "dddd, MMMM D, YYYY H:m" +msgstr "dddd, MMMM D, YYYY H:m:s" + +# | msgid "{0}. Quoted tweet from @{1}: {2}" +#: sessions/mastodon/compose.py:17 sessions/mastodon/templates.py:74 +#: sessions/mastodon/templates.py:75 +#, fuzzy, python-brace-format +msgid "Boosted from @{}: {}" +msgstr "{0}. @{1} kişisinden alıntılanmış tweet: {2}" + +#: sessions/mastodon/compose.py:22 sessions/mastodon/compose.py:81 +#: sessions/mastodon/templates.py:81 sessions/mastodon/templates.py:176 +#, python-brace-format +msgid "hidden by filter {}" +msgstr "" + +#: sessions/mastodon/compose.py:36 sessions/mastodon/templates.py:28 +msgid "dddd, MMMM D, YYYY H:m:s" +msgstr "dddd, MMMM D, YYYY H:m:s" + +# | msgid "" +# | "%s (@%s). %s followers, %s friends, %s tweets. Last tweeted %s. Joined " +# | "Twitter %s" +#: sessions/mastodon/compose.py:38 +#, fuzzy, python-format +msgid "%s (@%s). %s followers, %s following, %s posts. Joined %s" +msgstr "" +"%s (@%s). %s takipçi, %s arkadaş, %s tweet. En son tweet %s Tarihinde " +"atıldı. %s tarihinde twittera katıldı" + +#: sessions/mastodon/compose.py:49 +#, python-brace-format +msgid "Last message from {}: {}" +msgstr "" + +# | msgid "{username}'s followers" +#: sessions/mastodon/compose.py:64 +#, fuzzy, python-brace-format +msgid "{username} has posted: {status}" +msgstr "{username} kişisinin takipçileri" + +# | msgid "{username}'s followers" +#: sessions/mastodon/compose.py:66 +#, fuzzy, python-brace-format +msgid "{username} has mentioned you: {status}" +msgstr "{username} kişisinin takipçileri" + +#: sessions/mastodon/compose.py:68 +#, python-brace-format +msgid "{username} has boosted: {status}" +msgstr "" + +#: sessions/mastodon/compose.py:70 +#, python-brace-format +msgid "{username} has added to favorites: {status}" +msgstr "" + +# | msgid "{username}'s followers" +#: sessions/mastodon/compose.py:72 +#, fuzzy, python-brace-format +msgid "{username} has followed you." +msgstr "{username} kişisinin takipçileri" + +# | msgid "{username}'s followers" +#: sessions/mastodon/compose.py:74 +#, fuzzy, python-brace-format +msgid "{username} has joined the instance." +msgstr "{username} kişisinin takipçileri" + +#: sessions/mastodon/compose.py:76 sessions/mastodon/templates.py:171 +#, python-brace-format +msgid "A poll in which you have voted has expired: {status}" +msgstr "" + +# | msgid "{username}'s followers" +#: sessions/mastodon/compose.py:78 +#, fuzzy, python-brace-format +msgid "{username} wants to follow you." +msgstr "{username} kişisinin takipçileri" + +#: sessions/mastodon/session.py:69 +msgid "Please enter your instance URL." +msgstr "" + +#: sessions/mastodon/session.py:69 +msgid "Mastodon instance" +msgstr "" + +#: sessions/mastodon/session.py:80 +msgid "" +"We could not connect to your mastodon instance. Please verify that the " +"domain exists and the instance is accessible via a web browser." +msgstr "" + +# | msgid "&Report an error" +#: sessions/mastodon/session.py:80 +#, fuzzy +msgid "Instance error" +msgstr "&Hata raporla" + +#: sessions/mastodon/session.py:85 +msgid "Enter the verification code" +msgstr "" + +# | msgid "Authorization" +#: sessions/mastodon/session.py:85 +#, fuzzy +msgid "PIN code authorization" +msgstr "İzin" + +#: sessions/mastodon/session.py:94 +msgid "" +"We could not authorice your mastodon account to be used in TWBlue. This " +"might be caused due to an incorrect verification code. Please try to add " +"the session again." +msgstr "" + +# | msgid "Authorization" +#: sessions/mastodon/session.py:94 +#, fuzzy +msgid "Authorization error" +msgstr "İzin" + +#: sessions/mastodon/session.py:215 +#, python-format +msgid "%s succeeded." +msgstr "%s başarılı oldu" + +#: sessions/mastodon/templates.py:18 +msgid "$display_name, $text $image_descriptions $date. $source" +msgstr "" + +#: sessions/mastodon/templates.py:19 +msgid "Dm to $recipient_display_name, $text $date" +msgstr "" + +#: sessions/mastodon/templates.py:20 +msgid "" +"$display_name (@$screen_name). $followers followers, $following " +"following, $posts posts. Joined $created_at." +msgstr "" + +#: sessions/mastodon/templates.py:21 +msgid "$display_name $text, $date" +msgstr "" + +#: sessions/mastodon/templates.py:34 +#, python-brace-format +msgid "Content warning: {}" +msgstr "" + +#: sessions/mastodon/templates.py:45 +#, fuzzy, python-brace-format +msgid "Media description: {}" +msgstr "Resim açıklaması" + +# | msgid "Followers" +#: sessions/mastodon/templates.py:82 wxUI/dialogs/mastodon/postDialogs.py:49 +#, fuzzy +msgid "Followers only" +msgstr "Takipçiler" + +#: sessions/mastodon/templates.py:94 +#, fuzzy +msgid "Pinned." +msgstr "Kopyalandı" + +#: sessions/mastodon/templates.py:157 +#, python-brace-format +msgid "has posted: {status}" +msgstr "" + +#: sessions/mastodon/templates.py:159 +#, python-brace-format +msgid "has mentioned you: {status}" +msgstr "" + +#: sessions/mastodon/templates.py:161 +#, python-brace-format +msgid "has boosted: {status}" +msgstr "" + +#: sessions/mastodon/templates.py:163 +#, python-brace-format +msgid "has added to favorites: {status}" +msgstr "" + +#: sessions/mastodon/templates.py:165 +#, python-brace-format +msgid "has updated a status: {status}" +msgstr "" + +# | msgid "{0} is following you." +#: sessions/mastodon/templates.py:167 +#, fuzzy +msgid "has followed you." +msgstr "{0} kişisi sizi takip ediyor" + +# | msgid "Remove client" +#: sessions/mastodon/templates.py:169 +#, fuzzy +msgid "has joined the instance." +msgstr "İstemci kaldır" + +# | msgid "{0} is following you." +#: sessions/mastodon/templates.py:173 +#, fuzzy +msgid "wants to follow you." +msgstr "{0} kişisi sizi takip ediyor" + +#: update/utils.py:29 +#, python-format +msgid "%d day, " +msgstr "%d gün, " + +#: update/utils.py:31 +#, python-format +msgid "%d days, " +msgstr "%d gün, " + +#: update/utils.py:33 +#, python-format +msgid "%d hour, " +msgstr "%d saat, " + +#: update/utils.py:35 +#, python-format +msgid "%d hours, " +msgstr "%d saat, " + +#: update/utils.py:37 +#, python-format +msgid "%d minute, " +msgstr "%d dakika, " + +#: update/utils.py:39 +#, python-format +msgid "%d minutes, " +msgstr "%d dakika, " + +#: update/utils.py:41 +#, python-format +msgid "%s second" +msgstr "%s saniye" + +#: update/utils.py:43 +#, python-format +msgid "%s seconds" +msgstr "%s saniye" + +#: update/wxUpdater.py:11 +#, python-format +msgid "" +"There's a new %s version available, released on %s. Would you like to " +"download it now?\n" +"\n" +" %s version: %s\n" +"\n" +"Changes:\n" +"%s" +msgstr "" +"%s Programının yeni bir sürümü mevcut. \n" +"Çıkış tarihi: %s\n" +"\n" +"%s sürüm: %s\n" +"\n" +"değişiklikler:\n" +"%s" + +# | msgid "" +# | "There's a new %s version available, released on %s. Would you like to " +# | "download it now?\n" +# | "\n" +# | " %s version: %s\n" +# | "Changes:\n" +# | "%s" +#: update/wxUpdater.py:14 +#, fuzzy, python-format +msgid "" +"There's a new %s version available, released on %s. Updates are not " +"automatic in Windows 7, so you would need to visit TWBlue's download " +"website to get the latest version.\n" +"\n" +" %s version: %s\n" +"\n" +"Changes:\n" +"%s" +msgstr "" +"%s Programının yeni bir sürümü mevcut. \n" +"Çıkış tarihi: %s\n" +"\n" +"%s sürüm: %s\n" +"\n" +"değişiklikler:\n" +"%s" + +#: update/wxUpdater.py:16 +#, python-format +msgid "New version for %s" +msgstr "%s için yeni sürüm" + +#: update/wxUpdater.py:23 +msgid "Download in Progress" +msgstr "İndirme sürüyor" + +#: update/wxUpdater.py:23 +msgid "Downloading the new version..." +msgstr "Yeni sürüm indiriliyor<..." + +#: update/wxUpdater.py:33 +#, python-format +msgid "Updating... %s of %s" +msgstr "Güncelleniyor... %s / %s" + +#: update/wxUpdater.py:36 +msgid "" +"The update has been downloaded and installed successfully. Press OK to " +"continue." +msgstr "Güncelleme indirilip başarılı bir şekilde kurulmuştur." + +#: update/wxUpdater.py:36 +msgid "Done!" +msgstr "Bitti!" + +#: wxUI/commonMessageDialogs.py:6 +#, python-brace-format +msgid "Do you really want to close {0}?" +msgstr "{0} kapatmak istiyor musunuz?" + +#: wxUI/commonMessageDialogs.py:6 +msgid "Exit" +msgstr "Çıkış" + +#: wxUI/commonMessageDialogs.py:10 +#, python-brace-format +msgid " {0} must be restarted for these changes to take effect." +msgstr "" +"Değişikliklerin uygulanması için {0} programının yeniden başlatılması " +"gerekir." + +#: wxUI/commonMessageDialogs.py:10 +#, python-brace-format +msgid "Restart {0} " +msgstr "{0} programını yeniden başlat" + +#: wxUI/commonMessageDialogs.py:13 +msgid "" +"Are you sure you want to delete this user from the database? This user " +"will not appear in autocomplete results anymore." +msgstr "" +"Bu kullanıcıyı veritabanından silmek istediğinize emin misiniz? " +"Silindikten sonra otomatik tamamlama özelliğinde artık görülmeyecektir." + +#: wxUI/commonMessageDialogs.py:13 +msgid "Confirm" +msgstr "Onayla" + +#: wxUI/commonMessageDialogs.py:16 +msgid "" +"Do you really want to empty this buffer? It's items will be removed from" +" the list but not from Twitter" +msgstr "" +"Bu bufferi gerçekten boşaltmak istediğinizden emin misiniz? Bufferin " +"öğeleri sadece programdan silinecektir." + +#: wxUI/commonMessageDialogs.py:16 wxUI/dialogs/mastodon/dialogs.py:31 +msgid "Empty buffer" +msgstr "bufferi boşalt" + +#: wxUI/commonMessageDialogs.py:20 +msgid "Do you really want to destroy this buffer?" +msgstr "Bu bufferı gerçekten silmek istediğinize emin misiniz?" + +#: wxUI/commonMessageDialogs.py:23 +msgid "That user does not exist" +msgstr "Kullanıcı bulunamadı" + +#: wxUI/commonMessageDialogs.py:26 +msgid "A timeline for this user already exists. You can't open another" +msgstr "Bu kullanıcı için zaten bir çizelge var. Bir tane daha açamazsınız" + +#: wxUI/commonMessageDialogs.py:26 +msgid "Existing timeline" +msgstr "Varolan çizelge" + +#: wxUI/commonMessageDialogs.py:29 +#, python-brace-format +msgid "" +"If you like {0} we need your help to keep it going. Help us by donating " +"to the project. This will help us pay for the server, the domain and some" +" other things to ensure that {0} will be actively maintained. Your " +"donation will give us the means to continue the development of {0}, and " +"to keep {0} free. Would you like to donate now?" +msgstr "" +"{0} programını beğendiyseniz projenin devamı için bağışta " +"bulunabilirsiniz. Bağışınız sunucu için ödeme yapmamıza yardımcı " +"olacaktır ve {0} programının ücretsiz olmasını sağlayacaktır. Şimdi bağış" +" yapmak ister misiniz?" + +#: wxUI/commonMessageDialogs.py:29 +msgid "We need your help" +msgstr "Yardımınıza ihtiyacımız var" + +#: wxUI/commonMessageDialogs.py:33 wxUI/dialogs/mastodon/postDialogs.py:207 +msgid "Information" +msgstr "Bilgi" + +#: wxUI/commonMessageDialogs.py:36 +msgid "The configuration file is invalid." +msgstr "" + +#: wxUI/commonMessageDialogs.py:39 +#, python-brace-format +msgid "" +"{0} quit unexpectedly the last time it was run. If the problem persists, " +"please report it to the {0} developers." +msgstr "" +"{0} son çalıştığında beklenmedik şekilde kapandı. Eğer sorun devam ederse" +" lütfen bunu {0} üreticilerine bildirin." + +#: wxUI/commonMessageDialogs.py:39 +msgid "Warning" +msgstr "Uyarı" + +#: wxUI/commonMessageDialogs.py:45 +#, python-brace-format +msgid "Sorry, you can't update while running {} from source." +msgstr "" + +#: wxUI/commonMessageDialogs.py:49 +msgid "the provided instance is invalid. Please try again." +msgstr "" + +#: wxUI/commonMessageDialogs.py:49 +#, fuzzy +msgid "Invalid instance" +msgstr "Yanlış kısayol tuşu" + +#: wxUI/commonMessageDialogs.py:52 +msgid "" +"TWBlue was unable to add or update the filter with the specified " +"settings. Please try again." +msgstr "" + +#: wxUI/commonMessageDialogs.py:55 +msgid "" +"TWBlue was unable to load your filters from the instance. Please try " +"again." +msgstr "" + +#: wxUI/commonMessageDialogs.py:58 +#, fuzzy +msgid "Do you really want to delete this filter ?" +msgstr "Bu hesabı silmek istiyor musunuz?" + +#: wxUI/commonMessageDialogs.py:58 +#, fuzzy +msgid "Delete filter" +msgstr "Yeni &filtre oluştur" + +#: wxUI/commonMessageDialogs.py:61 +msgid "TWBlue was unable to remove the filter you specified. Please try again." +msgstr "" + +#: wxUI/sysTrayIcon.py:36 wxUI/view.py:25 +msgid "&Global settings" +msgstr "&global ayarlar" + +#: wxUI/sysTrayIcon.py:37 wxUI/view.py:24 +msgid "Account se&ttings" +msgstr "&hesap ayarları" + +#: wxUI/sysTrayIcon.py:39 +msgid "&Show / hide" +msgstr "&göster/gizle" + +#: wxUI/sysTrayIcon.py:40 wxUI/view.py:74 +msgid "&Documentation" +msgstr "&Dökümantasyon" + +#: wxUI/sysTrayIcon.py:41 +msgid "Check for &updates" +msgstr "&Güncellemeleri denetle" + +#: wxUI/sysTrayIcon.py:42 +msgid "&Exit" +msgstr "&Çıkış" + +#: wxUI/view.py:16 +msgid "&Manage accounts" +msgstr "&Hesapları yönet" + +#: wxUI/view.py:17 +msgid "&Update profile" +msgstr "&Profili güncelle" + +#: wxUI/view.py:18 +msgid "&Hide window" +msgstr "&Pencereyi gizle" + +#: wxUI/view.py:20 +msgid "&Lists manager" +msgstr "&Liste yöneticisi" + +#: wxUI/view.py:23 +msgid "&Edit keystrokes" +msgstr "&Kısayolları düzenle" + +#: wxUI/view.py:26 +msgid "E&xit" +msgstr "ç&ıkış" + +# | msgid "Remove from list" +#: wxUI/view.py:34 +#, fuzzy +msgid "&Remove from favorites" +msgstr "Listeden kaldır" + +#: wxUI/view.py:47 +msgid "&Add to list" +msgstr "&Listeye ekle" + +#: wxUI/view.py:48 +msgid "R&emove from list" +msgstr "&Listeden kaldır" + +#: wxUI/view.py:49 +msgid "Show user &profile" +msgstr "&Kullanıcı profilini göster" + +#: wxUI/view.py:50 +msgid "V&iew likes" +msgstr "&beğenileri görüntüle" + +#: wxUI/view.py:54 +msgid "&Update buffer" +msgstr "&Bufferi güncelle" + +#: wxUI/dialogs/mastodon/communityTimeline.py:9 wxUI/view.py:55 +msgid "Create community timeline" +msgstr "" + +#: wxUI/view.py:56 +msgid "New &trending topics buffer..." +msgstr "Yeni &trend konu bufferi..." + +#: wxUI/view.py:59 +msgid "Find a string in the currently focused buffer..." +msgstr "Şu anki bufferda metin bul..." + +#: wxUI/view.py:60 +msgid "&Load previous items" +msgstr "&Önceki öğeleri yükle" + +#: wxUI/dialogs/mastodon/userActions.py:21 wxUI/view.py:62 +msgid "&Mute" +msgstr "&Sustur" + +#: wxUI/view.py:63 +msgid "&Autoread" +msgstr "&Otomatik oku" + +#: wxUI/view.py:64 +msgid "&Clear buffer" +msgstr "Bufferi te&mizle" + +#: wxUI/view.py:65 +msgid "&Destroy" +msgstr "&Kaldır" + +#: wxUI/view.py:69 +msgid "&Seek back 5 seconds" +msgstr "5 saniye &geri sar" + +#: wxUI/view.py:70 +msgid "&Seek forward 5 seconds" +msgstr "5 saniye &ileri sar" + +#: wxUI/view.py:75 +msgid "Sounds &tutorial" +msgstr "Ses &denemesi" + +#: wxUI/view.py:76 +msgid "&What's new in this version?" +msgstr "&Bu sürümdeki yenilikler" + +#: wxUI/view.py:77 +msgid "&Check for updates" +msgstr "&Güncellemeleri denetle" + +#: wxUI/view.py:78 +msgid "&Report an error" +msgstr "&Hata raporla" + +#: wxUI/view.py:79 +#, python-brace-format +msgid "{0}'s &website" +msgstr "{0} &web sitesi" + +#: wxUI/view.py:80 +msgid "Get soundpacks for TWBlue" +msgstr "TWBlue için ses paketi al" + +#: wxUI/view.py:81 +#, python-brace-format +msgid "About &{0}" +msgstr "{0} h&akkında" + +#: wxUI/view.py:84 +msgid "&Application" +msgstr "&Uygulama" + +#: wxUI/view.py:85 +msgid "&Tweet" +msgstr "&Tweet" + +#: wxUI/dialogs/mastodon/userActions.py:10 wxUI/view.py:86 +msgid "&User" +msgstr "&Kullanıcı" + +#: wxUI/view.py:87 +msgid "&Buffer" +msgstr "&buffer" + +#: wxUI/view.py:88 +msgid "&Audio" +msgstr "&Ses" + +#: wxUI/view.py:89 +msgid "&Help" +msgstr "&Yardım" + +#: wxUI/view.py:175 +msgid "Address" +msgstr "Adres" + +#: wxUI/view.py:206 +#, python-brace-format +msgid "Your {0} version is up to date" +msgstr "{0} sürümünüz güncel" + +#: wxUI/view.py:206 +msgid "Update" +msgstr "Güncelleme" + +#: wxUI/buffers/panels.py:12 wxUI/buffers/panels.py:20 +msgid "Login" +msgstr "Giriş yap" + +#: wxUI/buffers/panels.py:14 +msgid "Log in automatically" +msgstr "Otomatik olarak oturum aç" + +#: wxUI/buffers/panels.py:22 +msgid "Logout" +msgstr "Çıkış yap" + +#: wxUI/buffers/mastodon/base.py:11 +#: wxUI/buffers/mastodon/conversationList.py:11 wxUI/buffers/mastodon/user.py:8 +#: wxUI/dialogs/mastodon/userTimeline.py:10 wxUI/dialogs/userAliasDialogs.py:14 +msgid "User" +msgstr "Kullanıcı" + +#: wxUI/buffers/mastodon/base.py:11 +#: wxUI/buffers/mastodon/conversationList.py:11 +#: wxUI/buffers/mastodon/notifications.py:11 +#: wxUI/dialogs/mastodon/postDialogs.py:37 +#: wxUI/dialogs/mastodon/postDialogs.py:272 +msgid "Text" +msgstr "Metin" + +#: wxUI/buffers/mastodon/base.py:11 +#: wxUI/buffers/mastodon/conversationList.py:11 +#: wxUI/buffers/mastodon/notifications.py:11 +#: wxUI/dialogs/mastodon/postDialogs.py:216 +msgid "Date" +msgstr "Tarih" + +#: wxUI/buffers/mastodon/base.py:11 +#: wxUI/buffers/mastodon/conversationList.py:11 +msgid "Client" +msgstr "İstemci" + +#: wxUI/buffers/mastodon/base.py:27 +msgid "Favorite" +msgstr "" + +#: wxUI/buffers/mastodon/base.py:28 +msgid "Bookmark" +msgstr "" + +#: wxUI/buffers/mastodon/base.py:29 +msgid "Direct message" +msgstr "Dm" + +#: wxUI/buffers/mastodon/notifications.py:23 +#: wxUI/dialogs/mastodon/dialogs.py:23 +msgid "Dismiss" +msgstr "" + +#: wxUI/buffers/mastodon/user.py:19 wxUI/dialogs/userAliasDialogs.py:48 +#, fuzzy +msgid "Actions" +msgstr "Eylem" + +# | msgid "Direct Messages" +#: wxUI/buffers/mastodon/user.py:20 +#, fuzzy +msgid "Message" +msgstr "Direkt mesajlar" + +#: wxUI/dialogs/configuration.py:15 +#, fuzzy +msgid "&Language" +msgstr "Dil" + +#: wxUI/dialogs/configuration.py:22 +#, fuzzy, python-brace-format +msgid "&Ask before exiting {0}" +msgstr "{0} Programından çıkmadan önce sor" + +#: wxUI/dialogs/configuration.py:24 +#, fuzzy +msgid "&Disable Streaming functions" +msgstr "Anında tweet fonksiyonlarını devredışı bırak" + +#: wxUI/dialogs/configuration.py:27 +#, fuzzy +msgid "&Buffer update interval, in minutes" +msgstr "Buffer güncelleme aralığı, dakika" + +#: wxUI/dialogs/configuration.py:33 +#, fuzzy, python-brace-format +msgid "Pla&y a sound when {0} launches" +msgstr "{0} çalıştığında ses çıkar" + +#: wxUI/dialogs/configuration.py:35 +#, fuzzy, python-brace-format +msgid "Sp&eak a message when {0} launches" +msgstr "{0} Çalıştığında konuş" + +#: wxUI/dialogs/configuration.py:37 +#, fuzzy +msgid "&Use invisible interface's keyboard shortcuts while GUI is visible" +msgstr "Görsel arayüz etkinken Gizli arayüz kısayollarını kullan" + +#: wxUI/dialogs/configuration.py:39 +#, fuzzy +msgid "A&ctivate Sapi5 when any other screen reader is not being run" +msgstr "Bir ekran okuyucu çalışmadığında sapi 5'i etkinleştir" + +#: wxUI/dialogs/configuration.py:41 +#, fuzzy +msgid "&Hide GUI on launch" +msgstr "Görsel arayüzü başlangıçta gizle" + +#: wxUI/dialogs/configuration.py:43 +msgid "&Read long posts in GUI" +msgstr "" + +#: wxUI/dialogs/configuration.py:46 +#, fuzzy +msgid "&Keymap" +msgstr "Tuşlar" + +#: wxUI/dialogs/configuration.py:51 +#, fuzzy, python-brace-format +msgid "Check for u&pdates when {0} launches" +msgstr "{0} Çalıştığında güncellemeleri denetle" + +#: wxUI/dialogs/configuration.py:61 +#, fuzzy +msgid "Proxy &type: " +msgstr "Proxy türü: " + +#: wxUI/dialogs/configuration.py:68 +#, fuzzy +msgid "Proxy s&erver: " +msgstr "Proxy sunucusu: " + +#: wxUI/dialogs/configuration.py:74 +#, fuzzy +msgid "&Port: " +msgstr "port: " + +#: wxUI/dialogs/configuration.py:80 +#, fuzzy +msgid "&User: " +msgstr "Kullanıcı: " + +#: wxUI/dialogs/configuration.py:86 +#, fuzzy +msgid "P&assword: " +msgstr "Şifre: " + +#: wxUI/dialogs/configuration.py:98 +#, fuzzy +msgid "Enable automatic s&peech feedback" +msgstr "Otomatik konuşma geribildirimini etkinleştir" + +#: wxUI/dialogs/configuration.py:100 +#, fuzzy +msgid "Enable automatic &Braille feedback" +msgstr "Otomatik braille geribildirimini etkinleştir" + +#: wxUI/dialogs/configuration.py:108 +msgid "Buffer" +msgstr "buffer" + +#: wxUI/dialogs/configuration.py:108 +msgid "Status" +msgstr "Durum" + +#: wxUI/dialogs/configuration.py:111 +#, fuzzy +msgid "S&how/hide" +msgstr "göster/gizle" + +#: wxUI/dialogs/configuration.py:112 +#, fuzzy +msgid "Move &up" +msgstr "Yukarı taşı" + +#: wxUI/dialogs/configuration.py:113 +#, fuzzy +msgid "Move &down" +msgstr "Aşağı taşı" + +#: wxUI/dialogs/configuration.py:123 wxUI/dialogs/configuration.py:188 +#: wxUI/dialogs/configuration.py:191 wxUI/dialogs/configuration.py:196 +msgid "Show" +msgstr "göster" + +#: wxUI/dialogs/configuration.py:125 wxUI/dialogs/configuration.py:135 +#: wxUI/dialogs/configuration.py:159 wxUI/dialogs/configuration.py:189 +msgid "Hide" +msgstr "Gizle" + +#: wxUI/dialogs/configuration.py:133 wxUI/dialogs/configuration.py:157 +msgid "Select a buffer first." +msgstr "İlk önce bir buffer seçin" + +#: wxUI/dialogs/configuration.py:136 wxUI/dialogs/configuration.py:160 +msgid "The buffer is hidden, show it first." +msgstr "Buffer gizli, ilk önce gösterin" + +#: wxUI/dialogs/configuration.py:139 +msgid "The buffer is already at the top of the list." +msgstr "Buffer zaten listenin en üstünde" + +#: wxUI/dialogs/configuration.py:163 +msgid "The buffer is already at the bottom of the list." +msgstr "Buffer zaten listenin en altında" + +#: wxUI/dialogs/configuration.py:205 +msgid "&LibreTranslate API URL: " +msgstr "" + +#: wxUI/dialogs/configuration.py:211 +msgid "LibreTranslate API &Key (optional): " +msgstr "" + +#: wxUI/dialogs/configuration.py:217 +msgid "&DeepL API Key: " +msgstr "" + +#: wxUI/dialogs/configuration.py:231 +#, python-brace-format +msgid "{0} preferences" +msgstr "{0} Ayarları" + +#: wxUI/dialogs/configuration.py:237 wxUI/dialogs/mastodon/configuration.py:144 +msgid "General" +msgstr "Genel" + +#: wxUI/dialogs/configuration.py:242 +msgid "Proxy" +msgstr "Proxy" + +#: wxUI/dialogs/configuration.py:246 +#, fuzzy +msgid "Translation services" +msgstr "Mesaj çevirildi" + +#: wxUI/dialogs/configuration.py:251 wxUI/dialogs/mastodon/configuration.py:170 +#, fuzzy +msgid "&Save" +msgstr "Kaydet" + +#: wxUI/dialogs/configuration.py:253 +#: wxUI/dialogs/mastodon/communityTimeline.py:27 +#: wxUI/dialogs/mastodon/configuration.py:172 +#: wxUI/dialogs/mastodon/search.py:26 +#: wxUI/dialogs/mastodon/showUserProfile.py:170 +#: wxUI/dialogs/mastodon/updateProfile.py:132 +#: wxUI/dialogs/mastodon/userActions.py:38 +#: wxUI/dialogs/mastodon/userTimeline.py:32 +msgid "&Close" +msgstr "&Kapat" + +#: wxUI/dialogs/find.py:13 +msgid "Find in current buffer" +msgstr "Şu anki bufferda bul" + +#: wxUI/dialogs/find.py:14 +msgid "String" +msgstr "metin" + +#: wxUI/dialogs/find.py:23 wxUI/dialogs/mastodon/showUserProfile.py:33 +msgid "Cancel" +msgstr "İptal" + +#: wxUI/dialogs/templateDialogs.py:8 +msgid "Edit Template" +msgstr "" + +#: wxUI/dialogs/templateDialogs.py:13 +msgid "Edit template" +msgstr "" + +#: wxUI/dialogs/templateDialogs.py:17 +#, fuzzy +msgid "Available variables" +msgstr "Geçersiz" + +#: wxUI/dialogs/templateDialogs.py:29 +msgid "Restore template" +msgstr "" + +#: wxUI/dialogs/templateDialogs.py:48 +#, python-brace-format +msgid "Restored template to {}." +msgstr "" + +#: wxUI/dialogs/templateDialogs.py:52 +msgid "" +"the template you have specified include variables that do not exists for " +"the object. Please fix the template and try again. For your reference, " +"you can see a list of all available variables in the variables list while" +" editing your template." +msgstr "" + +#: wxUI/dialogs/templateDialogs.py:52 +#, fuzzy +msgid "Invalid template" +msgstr "Yanlış kısayol tuşu" + +#: wxUI/dialogs/urlList.py:6 +msgid "Select URL" +msgstr "Adres seçin" + +#: wxUI/dialogs/mastodon/userActions.py:13 +#: wxUI/dialogs/mastodon/userTimeline.py:13 wxUI/dialogs/userAliasDialogs.py:13 +msgid "&Autocomplete users" +msgstr "&Kullanıcıları otomatik tamamla" + +#: wxUI/dialogs/userAliasDialogs.py:18 +#, fuzzy +msgid "Alias" +msgstr "her zaman" + +#: wxUI/dialogs/userAliasDialogs.py:41 +#, fuzzy +msgid "Edit user aliases" +msgstr "{0} kullanıcı veritabanı düzenleniyor" + +#: wxUI/dialogs/mastodon/search.py:19 wxUI/dialogs/userAliasDialogs.py:43 +msgid "Users" +msgstr "Kullanıcılar" + +#: wxUI/dialogs/userAliasDialogs.py:50 +#, fuzzy +msgid "Add alias" +msgstr "Listeye ekle" + +#: wxUI/dialogs/userAliasDialogs.py:51 +msgid "Adds a new user alias" +msgstr "" + +#: wxUI/dialogs/userAliasDialogs.py:54 +#, fuzzy +msgid "Edit the currently focused user Alias." +msgstr "Odaktaki tweet ile etkileşime geç" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:26 +#: wxUI/dialogs/mastodon/filters/manage_filters.py:24 +#: wxUI/dialogs/userAliasDialogs.py:57 +msgid "Remove" +msgstr "Kaldır" + +#: wxUI/dialogs/userAliasDialogs.py:58 +#, fuzzy +msgid "Remove the currently focused user alias." +msgstr "Şu anki bufferda metin bul..." + +#: wxUI/dialogs/userAliasDialogs.py:82 +#, fuzzy +msgid "Are you sure you want to delete this user alias?" +msgstr "Bu listeyi gerçekten silmek istediğinize emin misiniz?" + +#: wxUI/dialogs/userAliasDialogs.py:82 +#, fuzzy +msgid "Remove user alias" +msgstr "Kullanıcı kaldır" + +#: wxUI/dialogs/userAliasDialogs.py:93 +#, fuzzy +msgid "User alias" +msgstr "Kullanıcı Ayrıntıları" + +#: wxUI/dialogs/userList.py:27 +#, fuzzy +msgid "View profile" +msgstr "&Profili güncelle" + +#: wxUI/dialogs/mastodon/communityTimeline.py:10 +#, fuzzy +msgid "Community URL" +msgstr "Kontrol" + +#: wxUI/dialogs/mastodon/communityTimeline.py:16 +#: wxUI/dialogs/mastodon/userTimeline.py:18 +msgid "Buffer type" +msgstr "Buffer türü" + +#: wxUI/dialogs/mastodon/communityTimeline.py:17 +#, fuzzy +msgid "&Local timeline" +msgstr "çizelgeler" + +#: wxUI/dialogs/mastodon/communityTimeline.py:18 +#, fuzzy +msgid "&Federated Timeline" +msgstr "{username} kişisinin çizelgesi" + +#: wxUI/dialogs/mastodon/communityTimeline.py:25 +#: wxUI/dialogs/mastodon/search.py:24 +#: wxUI/dialogs/mastodon/updateProfile.py:130 +#: wxUI/dialogs/mastodon/userActions.py:36 +#: wxUI/dialogs/mastodon/userTimeline.py:30 +msgid "&OK" +msgstr "&Tamam" + +#: wxUI/dialogs/mastodon/configuration.py:14 +#, fuzzy +msgid "User autocompletion settings" +msgstr "Otomatik tamamlama ayarları..." + +#: wxUI/dialogs/mastodon/configuration.py:15 +msgid "" +"Scan acc&ount and add followers and following users to the user " +"autocompletion database" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:16 +#, fuzzy +msgid "&Manage autocompletion database" +msgstr "Otomatik tamamlama veritabanını yönet" + +#: wxUI/dialogs/mastodon/configuration.py:21 +#, fuzzy +msgid "&Disable Streaming API endpoints" +msgstr "Anında tweet fonksiyonlarını devredışı bırak" + +#: wxUI/dialogs/mastodon/configuration.py:23 +#, fuzzy +msgid "&Relative timestamps" +msgstr "Tweetleri zamanıyla gösterme" + +#: wxUI/dialogs/mastodon/configuration.py:25 +msgid "" +"R&ead preferences from instance (default visibility when publishing and " +"displaying sensitive content)" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:28 +#, fuzzy +msgid "&Items on each API call" +msgstr "Her API çağrısındaki öğeler" + +# | msgid "" +# | "Inverted buffers: The newest tweets will be shown at the beginning while +# " +# | "the oldest at the end" +#: wxUI/dialogs/mastodon/configuration.py:34 +#, fuzzy +msgid "" +"I&nverted buffers: The newest items will be shown at the beginning while " +"the oldest at the end" +msgstr "Ters bufferlar: Yeni tweetler başta, eski tweetler sonda gösterilir" + +#: wxUI/dialogs/mastodon/configuration.py:36 +msgid "&Ask confirmation before boosting a post" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:38 +#, fuzzy +msgid "S&how screen names instead of full names" +msgstr "Tam adlar yerine ekran adlarını göster" + +#: wxUI/dialogs/mastodon/configuration.py:40 +msgid "Hide e&mojis in usernames" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:42 +#, fuzzy +msgid "" +"&Number of items per buffer to cache in database (0 to disable caching, " +"blank for unlimited)" +msgstr "" +"Bufferda depolanacak öğe sayısı 0 devredışı bırakır, boş bırakmak " +"sınırsız depolamayı sağlar" + +#: wxUI/dialogs/mastodon/configuration.py:46 +msgid "" +"&Load cache for items in memory (much faster in big datasets but requires" +" more RAM)" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:53 +#, python-brace-format +msgid "Edit template for &posts. Current template: {}" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:55 +#, python-brace-format +msgid "Edit template for c&onversations. Current template: {}" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:57 +#, python-brace-format +msgid "Edit template for p&ersons. Current template: {}" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:65 +#, fuzzy +msgid "&Volume" +msgstr "Ses yüksekliği" + +#: wxUI/dialogs/mastodon/configuration.py:76 +#, fuzzy +msgid "S&ession mute" +msgstr "Hesap susturması" + +#: wxUI/dialogs/mastodon/configuration.py:78 +#, fuzzy +msgid "&Output device" +msgstr "Çıkış cihazı" + +#: wxUI/dialogs/mastodon/configuration.py:85 +#, fuzzy +msgid "&Input device" +msgstr "Giriş cihazı" + +#: wxUI/dialogs/mastodon/configuration.py:93 +#, fuzzy +msgid "Sound &pack" +msgstr "Ses paketi" + +# | msgid "Indicate audio tweets with sound" +#: wxUI/dialogs/mastodon/configuration.py:99 +#, fuzzy +msgid "Indicate &audio or video in posts with sound" +msgstr "Ses içeren tweetleri ses ile belirt" + +# | msgid "Indicate tweets containing images with sound" +#: wxUI/dialogs/mastodon/configuration.py:101 +#, fuzzy +msgid "Indicate posts containing i&mages with sound" +msgstr "Resim içeren tweetleri ses ile belirt" + +#: wxUI/dialogs/mastodon/configuration.py:124 +#, fuzzy +msgid "&Language for OCR" +msgstr "OCR dili" + +#: wxUI/dialogs/mastodon/configuration.py:149 +msgid "Feedback" +msgstr "Geribildirim" + +#: wxUI/dialogs/mastodon/configuration.py:153 +msgid "Buffers" +msgstr "Bufferlar" + +#: wxUI/dialogs/mastodon/configuration.py:157 +msgid "Templates" +msgstr "" + +#: wxUI/dialogs/mastodon/configuration.py:161 +msgid "Sound" +msgstr "ses" + +#: wxUI/dialogs/mastodon/configuration.py:165 +msgid "Extras" +msgstr "Ekstralar" + +# | msgid "Would you like to add a comment to this tweet?" +#: wxUI/dialogs/mastodon/dialogs.py:7 +#, fuzzy +msgid "Would you like to share this post?" +msgstr "Bu tweete yorum eklemek ister misiniz?" + +# | msgid "" +# | "Do you really want to delete this tweet? It will be deleted from Twitter +# " +# | "as well." +#: wxUI/dialogs/mastodon/dialogs.py:15 +#, fuzzy +msgid "" +"Do you really want to delete this post? It will be deleted from the " +"instance as well." +msgstr "" +"Bu tweeti silmek istediğinizdden emin misiniz? Tweet twitterdan da " +"silinecektir." + +#: wxUI/dialogs/mastodon/dialogs.py:15 +msgid "Delete" +msgstr "sil" + +#: wxUI/dialogs/mastodon/dialogs.py:23 +msgid "" +"Are you sure you want to dismiss this notification? If you dismiss a " +"mention notification, it also disappears from your mentions buffer. The " +"post is not going to be deleted from the instance, though." +msgstr "" + +# | msgid "" +# | "Do you really want to empty this buffer? It's items will be removed from +# " +# | "the list but not from Twitter" +#: wxUI/dialogs/mastodon/dialogs.py:31 +#, fuzzy +msgid "" +"Do you really want to empty this buffer? It's items will be removed from" +" the list but not from the instance" +msgstr "" +"Bu bufferi gerçekten boşaltmak istediğinizden emin misiniz? Bufferin " +"öğeleri sadece programdan silinecektir." + +# | msgid "This user has no tweets. {0} can't create a timeline." +#: wxUI/dialogs/mastodon/dialogs.py:38 +#, fuzzy, python-brace-format +msgid "This user has no posts. {0} can't create a timeline." +msgstr "Bu kullanıcının tweeti yok. Bu kullanıcı için çizelge açamazsınız." + +# | msgid "This user has no favorited tweets. {0} can't create a timeline." +#: wxUI/dialogs/mastodon/dialogs.py:43 +#, fuzzy, python-brace-format +msgid "This user has no favorited posts. {0} can't create a timeline." +msgstr "Bu kullanıcının tfavorisi yok. Bu kullanıcı için çizelge açamazsınız." + +# | msgid "This user has no followers. {0} can't create a timeline." +#: wxUI/dialogs/mastodon/dialogs.py:48 +#, fuzzy, python-brace-format +msgid "This user has no followers yet. {0} can't create a timeline." +msgstr "Bu kullanıcının takipçisi yok. {0} çizelge oluşturulamıyor." + +# | msgid "This user has no followers. {0} can't create a timeline." +#: wxUI/dialogs/mastodon/dialogs.py:53 +#, fuzzy, python-brace-format +msgid "This user is not following anyone. {0} can't create a timeline." +msgstr "Bu kullanıcının takipçisi yok. {0} çizelge oluşturulamıyor." + +#: wxUI/dialogs/mastodon/dialogs.py:60 +#, python-brace-format +msgid "The focused item has no user in it. {} ca't open a user profile" +msgstr "" + +# | msgid "R&emove from list" +#: wxUI/dialogs/mastodon/menus.py:13 wxUI/dialogs/mastodon/menus.py:41 +#, fuzzy +msgid "R&emove from favorites" +msgstr "&Listeden kaldır" + +#: wxUI/dialogs/mastodon/menus.py:15 wxUI/dialogs/mastodon/menus.py:43 +msgid "&Open URL" +msgstr "&adres aç" + +# | msgid "Search on twitter" +#: wxUI/dialogs/mastodon/menus.py:17 wxUI/dialogs/mastodon/menus.py:47 +#, fuzzy +msgid "&Open in instance" +msgstr "Twitterda ara" + +#: wxUI/dialogs/mastodon/menus.py:19 wxUI/dialogs/mastodon/menus.py:45 +msgid "&Play audio" +msgstr "&ses çal" + +#: wxUI/dialogs/mastodon/menus.py:23 wxUI/dialogs/mastodon/menus.py:51 +msgid "&Copy to clipboard" +msgstr "&Panoya kopyala" + +#: wxUI/dialogs/mastodon/menus.py:27 wxUI/dialogs/mastodon/menus.py:55 +msgid "&User actions..." +msgstr "&kullanıcı eylemleri..." + +#: wxUI/dialogs/mastodon/menus.py:53 +msgid "&Dismiss" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:20 +#: wxUI/dialogs/mastodon/postDialogs.py:38 +msgid "Attachments" +msgstr "Ekler" + +#: wxUI/dialogs/mastodon/postDialogs.py:24 +msgid "File" +msgstr "Dosya" + +#: wxUI/dialogs/mastodon/postDialogs.py:25 +msgid "Type" +msgstr "Tür" + +#: wxUI/dialogs/mastodon/postDialogs.py:26 +#: wxUI/dialogs/mastodon/postDialogs.py:141 +msgid "Description" +msgstr "Açıklama" + +# | msgid "Remove client" +#: wxUI/dialogs/mastodon/postDialogs.py:28 +#, fuzzy +msgid "Remove Attachment" +msgstr "İstemci kaldır" + +#: wxUI/dialogs/mastodon/postDialogs.py:33 +msgid "Post in the thread" +msgstr "" + +# | msgid "Remove from list" +#: wxUI/dialogs/mastodon/postDialogs.py:40 +#, fuzzy +msgid "Remove post" +msgstr "Listeden kaldır" + +#: wxUI/dialogs/mastodon/postDialogs.py:47 +msgid "&Visibility" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:54 +#, fuzzy +msgid "Language" +msgstr "Dil" + +#: wxUI/dialogs/mastodon/postDialogs.py:58 +msgid "A&dd" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:59 +msgid "S&ensitive content" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:64 +msgid "Content warning" +msgstr "" + +# | msgid "Add to list" +#: wxUI/dialogs/mastodon/postDialogs.py:71 +#, fuzzy +msgid "Add p&ost" +msgstr "Listeye ekle" + +#: wxUI/dialogs/mastodon/postDialogs.py:75 +msgid "Auto&complete users" +msgstr "&Kullanıcılari tamamla" + +# | msgid "Check &spelling..." +#: wxUI/dialogs/mastodon/postDialogs.py:77 +#, fuzzy +msgid "Check &spelling" +msgstr "&Yazım hatası denetimi..." + +#: wxUI/dialogs/mastodon/postDialogs.py:79 +#, fuzzy +msgid "&Translate" +msgstr "Mesaj çevirildi" + +# | msgid "Tweet - %i characters " +#: wxUI/dialogs/mastodon/postDialogs.py:106 +#, fuzzy, python-brace-format +msgid "Post - {} characters" +msgstr "Yeni tweet- %i karakter" + +#: wxUI/dialogs/mastodon/postDialogs.py:130 +msgid "Image" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:132 +#, fuzzy +msgid "Video" +msgstr "Gizle" + +# | msgid "&Audio" +#: wxUI/dialogs/mastodon/postDialogs.py:134 +#, fuzzy +msgid "Audio" +msgstr "&Ses" + +#: wxUI/dialogs/mastodon/postDialogs.py:136 +msgid "Poll" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:141 +msgid "please provide a description" +msgstr "Lütfen açıklama sağlayın" + +#: wxUI/dialogs/mastodon/postDialogs.py:148 +msgid "Select the picture to be uploaded" +msgstr "Yüklenecek resim seçin" + +#: wxUI/dialogs/mastodon/postDialogs.py:148 +msgid "Image files (*.png, *.jpg, *.gif)|*.png; *.jpg; *.gif" +msgstr "Resim dosyaları (*.png, *.jpg, *.gif)|*.png; *.jpg; *.gif" + +#: wxUI/dialogs/mastodon/postDialogs.py:155 +#, fuzzy +msgid "Select the video to be uploaded" +msgstr "Yüklenecek resim seçin" + +# | msgid "Audio Files (*.mp3, *.ogg, *.wav)|*.mp3; *.ogg; *.wav" +#: wxUI/dialogs/mastodon/postDialogs.py:155 +#, fuzzy +msgid "Video files (*.mp4, *.mov, *.m4v, *.webm)| *.mp4; *.m4v; *.mov; *.webm" +msgstr "Ses dosyaları (*.mp3, *.ogg, *.wav)|*.mp3; *.ogg; *.wav" + +#: wxUI/dialogs/mastodon/postDialogs.py:162 +msgid "Select the audio file to be uploaded" +msgstr "Yüklenecek ses seçin" + +#: wxUI/dialogs/mastodon/postDialogs.py:162 +msgid "" +"Audio files (*.mp3, *.ogg, *.wav, *.flac, *.opus, *.aac, *.m4a, " +"*.3gp)|*.mp3; *.ogg; *.wav; *.flac; *.opus; *.aac; *.m4a; *.3gp" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:169 +msgid "" +"It is not possible to add more attachments. Please take into account that" +" You can add only a maximum of 4 images, or one audio, video or poll per" +" post. Please remove other attachments before continuing." +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:169 +#, fuzzy +msgid "Error adding attachment" +msgstr "Ek ekle" + +#: wxUI/dialogs/mastodon/postDialogs.py:172 +msgid "" +"You can add a poll or media files. In order to add your poll, please " +"remove other attachments first." +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:172 +#, fuzzy +msgid "Error adding poll" +msgstr "Ek ekle" + +# | msgid "Tweet - %i characters " +#: wxUI/dialogs/mastodon/postDialogs.py:177 +#, fuzzy, python-format +msgid "Post - %i characters " +msgstr "Yeni tweet- %i karakter" + +#: wxUI/dialogs/mastodon/postDialogs.py:200 +msgid "Image description" +msgstr "Resim açıklaması" + +# | msgid "Private" +#: wxUI/dialogs/mastodon/postDialogs.py:210 +#, fuzzy +msgid "Privacy" +msgstr "Özel" + +#: wxUI/dialogs/mastodon/postDialogs.py:214 +#, fuzzy +msgid "Source" +msgstr "Kaynak: " + +#: wxUI/dialogs/mastodon/postDialogs.py:222 +msgid "Boosts" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:224 +msgid "View users who boosted this post" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:231 +msgid "View users who favorited this post" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:239 +#, fuzzy +msgid "Copy link to clipboard" +msgstr "Panoya kopyala" + +#: wxUI/dialogs/mastodon/postDialogs.py:241 +#: wxUI/dialogs/mastodon/postDialogs.py:280 +msgid "Check &spelling..." +msgstr "&Yazım hatası denetimi..." + +#: wxUI/dialogs/mastodon/postDialogs.py:242 +#: wxUI/dialogs/mastodon/postDialogs.py:281 +msgid "&Translate..." +msgstr "&Çevir..." + +#: wxUI/dialogs/mastodon/postDialogs.py:243 +#: wxUI/dialogs/mastodon/postDialogs.py:282 +msgid "C&lose" +msgstr "&Kapat" + +#: wxUI/dialogs/mastodon/postDialogs.py:294 +msgid "Add a poll" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:298 +msgid "Participation time" +msgstr "" + +# | msgid "%d minutes, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "5 minutes" +msgstr "%d dakika, " + +# | msgid "%d minutes, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "30 minutes" +msgstr "%d dakika, " + +# | msgid "%d hour, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "1 hour" +msgstr "%d saat, " + +# | msgid "%d hours, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "6 hours" +msgstr "%d saat, " + +# | msgid "%d day, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "1 day" +msgstr "%d gün, " + +# | msgid "%d days, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "2 days" +msgstr "%d gün, " + +# | msgid "%d days, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "3 days" +msgstr "%d gün, " + +# | msgid "%d days, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "4 days" +msgstr "%d gün, " + +# | msgid "%d days, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "5 days" +msgstr "%d gün, " + +# | msgid "%d days, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "6 days" +msgstr "%d gün, " + +# | msgid "%d days, " +#: wxUI/dialogs/mastodon/postDialogs.py:300 +#, fuzzy +msgid "7 days" +msgstr "%d gün, " + +#: wxUI/dialogs/mastodon/postDialogs.py:304 +msgid "Choices" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:308 +msgid "Option 1" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:315 +msgid "Option 2" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:322 +msgid "Option 3" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:329 +msgid "Option 4" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:334 +msgid "Allow multiple choices per user" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:337 +msgid "Hide votes count until the poll expires" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:363 +msgid "Please make sure you have provided at least two options for the poll." +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:363 +#, fuzzy +msgid "Not enough information" +msgstr "Bilgi" + +#: wxUI/dialogs/mastodon/postDialogs.py:368 +msgid "Vote in this poll" +msgstr "" + +#: wxUI/dialogs/mastodon/postDialogs.py:371 +#, fuzzy +msgid "Options" +msgstr "Eylem" + +# | msgid "&Search" +#: wxUI/dialogs/mastodon/search.py:9 +#, fuzzy +msgid "Search" +msgstr "&Ara" + +#: wxUI/dialogs/mastodon/search.py:18 +msgid "Posts" +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:22 +#, fuzzy +msgid "Select user" +msgstr "Adres seçin" + +#: wxUI/dialogs/mastodon/showUserProfile.py:73 +#, fuzzy, python-brace-format +msgid "{}'s Profile" +msgstr "&Profili güncelle" + +#: wxUI/dialogs/mastodon/showUserProfile.py:79 +#, fuzzy +msgid "&Name: " +msgstr "Ad" + +#: wxUI/dialogs/mastodon/showUserProfile.py:84 +#, fuzzy +msgid "&URL: " +msgstr "Kullanıcı: " + +#: wxUI/dialogs/mastodon/showUserProfile.py:89 +msgid "&Bio: " +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:94 +msgid "&Joined at: " +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:99 +#, fuzzy +msgid "&Actions" +msgstr "Eylem" + +#: wxUI/dialogs/mastodon/showUserProfile.py:104 +#, fuzzy +msgid "Header: " +msgstr "Gizle" + +#: wxUI/dialogs/mastodon/showUserProfile.py:112 +msgid "Avatar: " +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:122 +#, python-brace-format +msgid "Field &{} - Label: " +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:129 +#, fuzzy +msgid "Content: " +msgstr "içerik" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:43 +#: wxUI/dialogs/mastodon/filters/create_filter.py:65 +#: wxUI/dialogs/mastodon/showUserProfile.py:135 +msgid "Yes" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:43 +#: wxUI/dialogs/mastodon/filters/create_filter.py:65 +#: wxUI/dialogs/mastodon/filters/create_filter.py:69 +#: wxUI/dialogs/mastodon/showUserProfile.py:135 +msgid "No" +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:137 +#, fuzzy +msgid "&Private account: " +msgstr "Hesabı kaldır" + +#: wxUI/dialogs/mastodon/showUserProfile.py:144 +#, fuzzy +msgid "&Bot account: " +msgstr "hesap" + +#: wxUI/dialogs/mastodon/showUserProfile.py:151 +#, fuzzy +msgid "&Discoverable account: " +msgstr "Hesabı kaldır" + +#: wxUI/dialogs/mastodon/showUserProfile.py:157 +#, python-brace-format +msgid "{} p&osts. Click to open posts timeline" +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:162 +#, python-brace-format +msgid "{} &following. Click to open Following timeline" +msgstr "" + +#: wxUI/dialogs/mastodon/showUserProfile.py:166 +#, python-brace-format +msgid "{} fo&llowers. Click to open followers timeline" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:43 +msgid "&Display Name" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:50 +#, fuzzy +msgid "&Bio" +msgstr "&Engelle" + +#: wxUI/dialogs/mastodon/updateProfile.py:58 +#, fuzzy +msgid "Header" +msgstr "Gizle" + +#: wxUI/dialogs/mastodon/updateProfile.py:71 +#, fuzzy +msgid "Change &header" +msgstr "Gizle" + +#: wxUI/dialogs/mastodon/updateProfile.py:79 +msgid "Avatar" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:92 +msgid "Change &avatar" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:102 +#, python-brace-format +msgid "Field &{}: Label" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:110 +#, fuzzy +msgid "Content" +msgstr "içerik" + +#: wxUI/dialogs/mastodon/updateProfile.py:120 +#, fuzzy +msgid "&Private account" +msgstr "Hesabı kaldır" + +#: wxUI/dialogs/mastodon/updateProfile.py:122 +#, fuzzy +msgid "&Bot account" +msgstr "hesap" + +#: wxUI/dialogs/mastodon/updateProfile.py:124 +#, fuzzy +msgid "&Discoverable account" +msgstr "Hesabı kaldır" + +#: wxUI/dialogs/mastodon/updateProfile.py:167 +msgid "Select header image - max 2MB" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:172 +#: wxUI/dialogs/mastodon/updateProfile.py:194 +msgid "The selected file is larger than 2MB. Do you want to select another file?" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:173 +#: wxUI/dialogs/mastodon/updateProfile.py:195 +msgid "File more than 2MB" +msgstr "" + +#: wxUI/dialogs/mastodon/updateProfile.py:189 +msgid "Select avatar image - max 2MB" +msgstr "" + +#: wxUI/dialogs/mastodon/userActions.py:19 +msgid "&Follow" +msgstr "&Takip et" + +#: wxUI/dialogs/mastodon/userActions.py:20 +msgid "U&nfollow" +msgstr "&Takibi bırak" + +#: wxUI/dialogs/mastodon/userActions.py:22 +msgid "Unmu&te" +msgstr "&Susturmayı kaldır" + +#: wxUI/dialogs/mastodon/userActions.py:23 +msgid "&Block" +msgstr "&Engelle" + +#: wxUI/dialogs/mastodon/userActions.py:24 +msgid "Unbl&ock" +msgstr "&Engeli kaldır" + +#: wxUI/dialogs/mastodon/userTimeline.py:9 +#, python-format +msgid "Timeline for %s" +msgstr "%s için çizelge" + +#: wxUI/dialogs/mastodon/userTimeline.py:19 +msgid "&Posts" +msgstr "" + +#: wxUI/dialogs/mastodon/userTimeline.py:20 +msgid "&Followers" +msgstr "&Takipçiler" + +#: wxUI/dialogs/mastodon/userTimeline.py:21 +#, fuzzy +msgid "Fo&llowing" +msgstr "&Takibi bırak" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:12 +#, fuzzy +msgid "Keyword" +msgstr "Tuş" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:13 +#: wxUI/dialogs/mastodon/filters/create_filter.py:24 +msgid "Whole word" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:19 +msgid "Keyword:" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:25 +#: wxUI/dialogs/mastodon/filters/manage_filters.py:22 +#, fuzzy +msgid "Add" +msgstr "Adres" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:34 +msgid "Palabras clave a filtrar:" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:74 +#, fuzzy +msgid "New filter" +msgstr "&filtreleri yönet" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:78 +#, fuzzy +msgid "Home timeline" +msgstr "çizelgeler" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:79 +msgid "Public statuses" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:81 +#, fuzzy +msgid "Threads" +msgstr "Hazır" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:82 +#, fuzzy +msgid "Profiles" +msgstr "&Profili güncelle" + +# | msgid "Delete" +#: wxUI/dialogs/mastodon/filters/create_filter.py:86 +#, fuzzy +msgid "Hide posts" +msgstr "sil" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:87 +msgid "Set a content warning to posts" +msgstr "" + +# | msgid "%d hours, " +#: wxUI/dialogs/mastodon/filters/create_filter.py:91 +#, fuzzy +msgid "Hours" +msgstr "%d saat, " + +# | msgid "%d days, " +#: wxUI/dialogs/mastodon/filters/create_filter.py:92 +#, fuzzy +msgid "Days" +msgstr "%d gün, " + +#: wxUI/dialogs/mastodon/filters/create_filter.py:93 +msgid "Weeks" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:94 +msgid "months" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:97 +#, fuzzy +msgid "Title:" +msgstr "Dosya" + +# | msgid "Reply to {arg0}" +#: wxUI/dialogs/mastodon/filters/create_filter.py:104 +#, fuzzy +msgid "Apply to:" +msgstr "{arg0} Kişisine yanıt" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:114 +#, fuzzy +msgid "Action:" +msgstr "Eylem" + +#: wxUI/dialogs/mastodon/filters/create_filter.py:122 +msgid "Expires in:" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/manage_filters.py:10 +#, fuzzy +msgid "Filters" +msgstr "Dosya" + +#: wxUI/dialogs/mastodon/filters/manage_filters.py:15 +#, fuzzy +msgid "Title" +msgstr "Dosya" + +#: wxUI/dialogs/mastodon/filters/manage_filters.py:16 +msgid "Keywords" +msgstr "" + +#: wxUI/dialogs/mastodon/filters/manage_filters.py:17 +#, fuzzy +msgid "Contexts" +msgstr "içerik" + +#: wxUI/dialogs/mastodon/filters/manage_filters.py:19 +#, fuzzy +msgid "Expires" +msgstr "Ekstralar" + +#~ msgid "There are no results for the coordinates in this tweet" +#~ msgstr "Bu tweetin koordinatları için bir sonuç bulunamadı" + +#~ msgid "This list is already opened" +#~ msgstr "Bu liste zaten açık" + +# | msgid "Timeline for {}" +#~ msgid "Timelines for {}" +#~ msgstr "{} için çizelge" + +#~ msgid "{account_name} (Mastodon)" +#~ msgstr "" + +#~ msgid "URL of mastodon instance:" +#~ msgstr "" + +# | msgid "View &address" +#~ msgid "Email address:" +#~ msgstr "&Adresi görüntüle" + +# | msgid "Password: " +#~ msgid "Password:" +#~ msgstr "Şifre: " + +# | msgid "Item" +#~ msgid "&Item" +#~ msgstr "Öğe" + +#~ msgid "Visibility" +#~ msgstr "" + +#~ msgid "Sensitive content" +#~ msgstr "" + +#~ msgid "Allow multiple votes per user" +#~ msgstr "" + +#~ msgid "{username} has mentionned you: {status}" +#~ msgstr "" + +#~ msgid "has mentionned you: {status}" +#~ msgstr "" + +#~ msgid "Likes for {}" +#~ msgstr "{} için beğeniler" + +#~ msgid "Trending topics for %s" +#~ msgstr "%s için trend konular" + +#~ msgid "Select user" +#~ msgstr "Kullanıcı seçin" + +#~ msgid "Sent direct messages" +#~ msgstr "Giden Mesajlar" + +#~ msgid "Sent tweets" +#~ msgstr "Gönderilmiş tweetler" + +#~ msgid "Likes" +#~ msgstr "Beğeniler" + +#~ msgid "Friends" +#~ msgstr "Arkadaşlar" + +#~ msgid "{username}'s likes" +#~ msgstr "{username} kişisinin beğenileri" + +#~ msgid "{username}'s friends" +#~ msgstr "{username} kişisinin arkadaşları" + +#~ msgid "Tweet" +#~ msgstr "Tweet" + +#~ msgid "Write the tweet here" +#~ msgstr "Tweetinizi yazın" + +#~ msgid "New tweet in {0}" +#~ msgstr "{0} yeni tweet" + +#~ msgid "{0} new tweets in {1}." +#~ msgstr "{1} bufferında {0} yeni tweet." + +#~ msgid "Reply to {arg0}" +#~ msgstr "{arg0} Kişisine yanıt" + +#~ msgid "Reply to %s" +#~ msgstr "%s Kişisine yanıt" + +#~ msgid "Direct message to %s" +#~ msgstr "%s Kişisine Direkt mesaj" + +#~ msgid "New direct message" +#~ msgstr "Yeni direkt mesaj" + +#~ msgid "This action is not supported on protected accounts." +#~ msgstr "Bu eylem buffer için henüz desteklenmiyor." + +#~ msgid "Quote" +#~ msgstr "Alıntı" + +#~ msgid "Add your comment to the tweet" +#~ msgstr "Tweete yorumunuzu ekleyin" + +#~ msgid "User details" +#~ msgstr "Kullanıcı Ayrıntıları" + +#~ msgid "MMM D, YYYY. H:m" +#~ msgstr "AAA G, YYYY. S:d" + +#~ msgid "There are no coordinates in this tweet" +#~ msgstr "Bu tweette koordinatlar yok" + +#~ msgid "Error decoding coordinates. Try again later." +#~ msgstr "Koordinat bulma hatası. Lütfen yeniden deneyin." + +#~ msgid "Invalid buffer" +#~ msgstr "Yanlış buffer" + +#~ msgid "{0} new direct messages." +#~ msgstr "{0} yeni direkt mesaj" + +#~ msgid "This action is not supported in the buffer yet." +#~ msgstr "Bu eylem buffer için henüz desteklenmiyor." + +#~ msgid "" +#~ "Getting more items cannot be done " +#~ "in this buffer. Use the direct " +#~ "messages buffer instead." +#~ msgstr "" +#~ "Daha fazla öğe alma işlemi bu " +#~ "bufferda yapılamaz. Bunun yerine direkt " +#~ "mesajlar bufferını kullanın." + +#~ msgid "Mention" +#~ msgstr "Bahsetme" + +#~ msgid "Mention to %s" +#~ msgstr "%s kişisinden bahset" + +#~ msgid "{0} new followers." +#~ msgstr "{0} yeni takipçi" + +#~ msgid "This action is not supported in the buffer, yet." +#~ msgstr "" +#~ "Bu eylem buffer için henüz " +#~ "desteklenmiyor.Bu eylem şu anki buffer " +#~ "için geçerli değil" + +#~ msgid "&Retweet" +#~ msgstr "&Retweet" + +#~ msgid "&Like" +#~ msgstr "&Beğen" + +#~ msgid "&Unlike" +#~ msgstr "Beğenmekten &vazgeç" + +#~ msgid "View &address" +#~ msgstr "&Adresi görüntüle" + +#~ msgid "&View lists" +#~ msgstr "Listeleri &görüntüle" + +# | msgid "V&iew likes" +#~ msgid "View likes" +#~ msgstr "&beğenileri görüntüle" + +#~ msgid "Likes timelines" +#~ msgstr "Beğenme çizelgesi" + +#~ msgid "Followers timelines" +#~ msgstr "Takipçi çizelgesi" + +#~ msgid "Following timelines" +#~ msgstr "Takipçi çizelgesi" + +#~ msgid "Lists" +#~ msgstr "Listeler" + +#~ msgid "List for {}" +#~ msgstr "{} için liste" + +#~ msgid "Filters cannot be applied on this buffer" +#~ msgstr "Bu buffera filtre uygulanamaz" + +#~ msgid "View item" +#~ msgstr "Öğeyi görüntüle" + +#~ msgid "Ask" +#~ msgstr "Sor" + +#~ msgid "Retweet without comments" +#~ msgstr "Yorumsuz retweetle" + +#~ msgid "Retweet with comments" +#~ msgstr "Yorum ile retweetle" + +#~ msgid "Edit template for tweets. Current template: {}" +#~ msgstr "" + +#~ msgid "Edit template for direct messages. Current template: {}" +#~ msgstr "" + +#~ msgid "Edit template for sent direct messages. Current template: {}" +#~ msgstr "" + +#~ msgid "User has been suspended" +#~ msgstr "Kullanıcı uzaklaştırıldı" + +#~ msgid "Information for %s" +#~ msgstr "%s için kullanıcı bilgisi" + +#~ msgid "Discarded" +#~ msgstr "Ses silindi" + +#~ msgid "Username: @%s\n" +#~ msgstr "Kullanıcı adı: @%s\n" + +#~ msgid "Name: %s\n" +#~ msgstr "Ad: %s\n" + +#~ msgid "Location: %s\n" +#~ msgstr "Yer: %s\n" + +#~ msgid "URL: %s\n" +#~ msgstr "URL: %s\n" + +#~ msgid "Bio: %s\n" +#~ msgstr "Bio: %s\n" + +#~ msgid "Yes" +#~ msgstr "Evet" + +#~ msgid "No" +#~ msgstr "Hayır" + +#~ msgid "Protected: %s\n" +#~ msgstr "Korunmuş: %s\n" + +#~ msgid "Relationship: " +#~ msgstr "" + +#~ msgid "You follow {0}. " +#~ msgstr "{0} kişisini takip ediyorsunuz." + +#~ msgid "{0} is following you." +#~ msgstr "{0} kişisi sizi takip ediyor" + +#~ msgid "" +#~ "Followers: %s\n" +#~ " Friends: %s\n" +#~ msgstr "" +#~ "Takipçiler: %s\n" +#~ " Arkadaşlar: %s\n" + +#~ msgid "Verified: %s\n" +#~ msgstr "Doğrulandı: %s\n" + +#~ msgid "Tweets: %s\n" +#~ msgstr "Tweetler: %s\n" + +#~ msgid "Likes: %s" +#~ msgstr "Beğeniler: %s" + +#~ msgid "You can't ignore direct messages" +#~ msgstr "Dmleri yoksayamazsınız" + +#~ msgid "Attaching..." +#~ msgstr "Ekleniyor..." + +#~ msgid "Pause" +#~ msgstr "Duraklat" + +#~ msgid "&Resume" +#~ msgstr "&Devam et" + +#~ msgid "Resume" +#~ msgstr "Devam et" + +#~ msgid "&Pause" +#~ msgstr "&Duraklat" + +#~ msgid "&Stop" +#~ msgstr "&Durdur" + +#~ msgid "Recording" +#~ msgstr "Kaydediliyor..." + +#~ msgid "Stopped" +#~ msgstr "Durduruldu" + +#~ msgid "&Record" +#~ msgstr "&Kaydet" + +#~ msgid "&Play" +#~ msgstr "Oynat" + +#~ msgid "Recoding audio..." +#~ msgstr "Ses yeniden kodlanıyor..." + +#~ msgid "Error in file upload: {0}" +#~ msgstr "Dosya yüklemede hata: {0}" + +#~ msgid "Transferred" +#~ msgstr "Transfer edildi" + +#~ msgid "Total file size" +#~ msgstr "Toplam dosya boyutu" + +#~ msgid "Transfer rate" +#~ msgstr "Transfer hızı" + +#~ msgid "Time left" +#~ msgstr "Kalan zaman" + +#~ msgid "Attach audio" +#~ msgstr "Ses ekle" + +#~ msgid "&Add an existing file" +#~ msgstr "&Varolan bir dosya ekle" + +#~ msgid "&Discard" +#~ msgstr "&Sesi sil" + +#~ msgid "Upload to" +#~ msgstr "Yükle" + +#~ msgid "Attach" +#~ msgstr "Ekle" + +#~ msgid "&Cancel" +#~ msgstr "&İptal" + +#~ msgid "Audio Files (*.mp3, *.ogg, *.wav)|*.mp3; *.ogg; *.wav" +#~ msgstr "Ses dosyaları (*.mp3, *.ogg, *.wav)|*.mp3; *.ogg; *.wav" + +#~ msgid "You have to start writing" +#~ msgstr "Yazmaya başlamak zorundasınız" + +#~ msgid "There are no results in your users database" +#~ msgstr "Kullanıcı veritabanınızda hiçbir sonuç bulunamadı" + +#~ msgid "Autocompletion only works for users." +#~ msgstr "Otomatik tamamlama sadece kullanıcılar için çalışır." + +#~ msgid "" +#~ "Updating database... You can close this" +#~ " window now. A message will tell " +#~ "you when the process finishes." +#~ msgstr "" +#~ "Veritabanı güncelleniyor... Pencereyi " +#~ "kapatabilirsiniz. İşlem tamamlandığında " +#~ "bilgilendirileceksiniz." + +#~ msgid "Manage Autocompletion database" +#~ msgstr "Otomatik tamamlama veritabanını yönet" + +#~ msgid "Editing {0} users database" +#~ msgstr "{0} kullanıcı veritabanı düzenleniyor" + +#~ msgid "Username" +#~ msgstr "Kullanıcı adı" + +#~ msgid "Add user" +#~ msgstr "Kullanıcı ekle" + +#~ msgid "Remove user" +#~ msgstr "Kullanıcı kaldır" + +#~ msgid "Twitter username" +#~ msgstr "Twitter kullanıcı adı" + +#~ msgid "Add user to database" +#~ msgstr "Kullanıcıyı veritabanına ekle" + +#~ msgid "The user does not exist" +#~ msgstr "Kullanıcı bulunamadı" + +#~ msgid "Error!" +#~ msgstr "Hata!" + +#~ msgid "Autocomplete users' settings" +#~ msgstr "Otomatik kullanıcı tamamlama ayarları" + +#~ msgid "Add followers to database" +#~ msgstr "" + +#~ msgid "Add friends to database" +#~ msgstr "Kullanıcıyı veritabanına ekle" + +#~ msgid "Updating autocompletion database" +#~ msgstr "Otomatik tamamlama veritabanını yönet" + +#~ msgid "" +#~ "This process will retrieve the users " +#~ "you selected from Twitter, and add " +#~ "them to the user autocomplete database." +#~ " Please note that if there are " +#~ "many users or you have tried to" +#~ " perform this action less than 15 " +#~ "minutes ago, TWBlue may reach a " +#~ "limit in Twitter API calls when " +#~ "trying to load the users into the" +#~ " database. If this happens, we will" +#~ " show you an error, in which " +#~ "case you will have to try this " +#~ "process again in a few minutes. If" +#~ " this process ends with no error, " +#~ "you will be redirected back to the" +#~ " account settings dialog. Do you want" +#~ " to continue?" +#~ msgstr "" + +#~ msgid "TWBlue has imported {} users successfully." +#~ msgstr "" + +#~ msgid "Done" +#~ msgstr "Bitti" + +#~ msgid "Error adding users from Twitter. Please try again in about 15 minutes." +#~ msgstr "" + +#~ msgid "New tweet" +#~ msgstr "Yeni tweet" + +#~ msgid "Retweet" +#~ msgstr "Retweet" + +#~ msgid "Like a tweet" +#~ msgstr "Tweeti beğen" + +#~ msgid "Like/unlike a tweet" +#~ msgstr "Tweeti beğen/beğenmekten vazgeç" + +#~ msgid "Unlike a tweet" +#~ msgstr "Tweeti beğenmekten vazgeç" + +#~ msgid "See user details" +#~ msgstr "Kullanıcı ayrıntılarını görüntüle" + +#~ msgid "Show tweet" +#~ msgstr "Tweet göster" + +#~ msgid "Interact with the currently focused tweet." +#~ msgstr "Odaktaki tweet ile etkileşime geç" + +#~ msgid "View in Twitter" +#~ msgstr "Twitter'da görüntüle" + +#~ msgid "Edit profile" +#~ msgstr "Profili düzenle" + +#~ msgid "Delete a tweet or direct message" +#~ msgstr "Tweeti ya da Direkt mesajı sil" + +#~ msgid "Add to list" +#~ msgstr "Listeye ekle" + +#~ msgid "Remove from list" +#~ msgstr "Listeden kaldır" + +#~ msgid "Search on twitter" +#~ msgstr "Twitterda ara" + +#~ msgid "Show lists for a specified user" +#~ msgstr "Bir kullanıcı için listeleri göster" + +#~ msgid "Get geolocation" +#~ msgstr "Tweetin konumunu al" + +#~ msgid "Display the tweet's geolocation in a dialog" +#~ msgstr "Tweetin konumunu iletişim kutusunda görüntüle" + +#~ msgid "Create a trending topics buffer" +#~ msgstr "Trend konular bufferini aç" + +#~ msgid "" +#~ "Opens the list manager, which allows " +#~ "you to create, edit, delete and " +#~ "open lists in buffers." +#~ msgstr "Listeleri düzenlemenize yarayan liste yöneticisini açar." + +#~ msgid "Opens the list manager" +#~ msgstr "Liste yöneticisini açar" + +#~ msgid "{account_name} (Twitter)" +#~ msgstr "" + +# | msgid "View in Twitter" +#~ msgid "Twitter" +#~ msgstr "Twitter'da görüntüle" + +#~ msgid "" +#~ "The request to authorize your Twitter" +#~ " account will be opened in your " +#~ "browser. You only need to do this" +#~ " once. Would you like to continue?" +#~ msgstr "" +#~ "Twitter hesap izin isteği sayfası " +#~ "tarayıcınızda açılacaktır. Bu işlemi bir " +#~ "kez yapmanız yeterlidir. Devam etmek " +#~ "ister misiniz?" + +#~ msgid "" +#~ "TWBlue is unable to authenticate the " +#~ "account for {} in Twitter. It " +#~ "might be due to an invalid or " +#~ "expired token, revoqued access to the" +#~ " application, or after an account " +#~ "reactivation. Please remove the account " +#~ "manually from your Twitter sessions in" +#~ " order to stop seeing this message." +#~ msgstr "" + +#~ msgid "Authentication error for session {}" +#~ msgstr "" + +#~ msgid "Dm to %s " +#~ msgstr "%s kişisine dm" + +#~ msgid "{0}. Quoted tweet from @{1}: {2}" +#~ msgstr "{0}. @{1} kişisinden alıntılanmış tweet: {2}" + +#~ msgid "Unavailable" +#~ msgstr "Geçersiz" + +#~ msgid "" +#~ "%s (@%s). %s followers, %s friends, " +#~ "%s tweets. Last tweeted %s. Joined " +#~ "Twitter %s" +#~ msgstr "" +#~ "%s (@%s). %s takipçi, %s arkadaş, " +#~ "%s tweet. En son tweet %s " +#~ "Tarihinde atıldı. %s tarihinde twittera " +#~ "katıldı" + +#~ msgid "No description available" +#~ msgstr "Açıklama yok" + +#~ msgid "private" +#~ msgstr "Özel" + +#~ msgid "public" +#~ msgstr "Herkese açık" + +#~ msgid "Enter your PIN code here" +#~ msgstr "PIN kodunu girin" + +#~ msgid "Authorising account..." +#~ msgstr "Hesaba izin veriliyor..." + +#~ msgid "" +#~ "We could not authorice your Twitter " +#~ "account to be used in TWBlue. This" +#~ " might be caused due to an " +#~ "incorrect verification code. Please try " +#~ "to add the session again." +#~ msgstr "" + +#~ msgid "%s failed. Reason: %s" +#~ msgstr "%s başarısız oldu. Neden: %s" + +#~ msgid "Deleted account" +#~ msgstr "Yeni hesap" + +#~ msgid "$sender_display_name, $text $date" +#~ msgstr "" + +#~ msgid "" +#~ "$display_name (@$screen_name). $followers followers," +#~ " $following following, $tweets tweets. " +#~ "Joined Twitter $created_at." +#~ msgstr "" + +#~ msgid "Image description: {}." +#~ msgstr "Resim açıklaması" + +#~ msgid "RT @{}: {} Quote from @{}: {}" +#~ msgstr "{0}. @{1} kişisinden alıntılanmış tweet: {2}" + +# | msgid "{0}. Quoted tweet from @{1}: {2}" +#~ msgid "RT @{}: {}" +#~ msgstr "{0}. @{1} kişisinden alıntılanmış tweet: {2}" + +# | msgid "{0}. Quoted tweet from @{1}: {2}" +#~ msgid "{} Quote from @{}: {}" +#~ msgstr "{0}. @{1} kişisinden alıntılanmış tweet: {2}" + +#~ msgid "Sorry, you are not authorised to see this status." +#~ msgstr "Bu durumu görmek için izniniz yok." + +#~ msgid "Error {0}" +#~ msgstr "Hata kodu {0}" + +#~ msgid "{user_1}, {user_2} and {all_users} more: {text}" +#~ msgstr "" + +#~ msgid "" +#~ "This retweet is over 140 characters. " +#~ "Would you like to post it as " +#~ "a mention to the poster with your" +#~ " comments and a link to the " +#~ "original tweet?" +#~ msgstr "" +#~ "Bu tweet 140 karakteri aşıyor. Kendi " +#~ "yorumlarınızı ve orijinal tweeti yanıt " +#~ "olarak göndermek ister misiniz?" + +#~ msgid "Would you like to add a comment to this tweet?" +#~ msgstr "Bu tweete yorum eklemek ister misiniz?" + +#~ msgid "" +#~ "Do you really want to delete this" +#~ " tweet? It will be deleted from " +#~ "Twitter as well." +#~ msgstr "" +#~ "Bu tweeti silmek istediğinizdden emin " +#~ "misiniz? Tweet twitterdan da silinecektir." + +#~ msgid "Enter the name of the client : " +#~ msgstr "İstemci adını yazın" + +#~ msgid "Add client" +#~ msgstr "İstemci ekle" + +#~ msgid "This user has no tweets, so you can't open a timeline for them." +#~ msgstr "Bu kullanıcının tweeti yok. Bu kullanıcı için çizelge açamazsınız." + +#~ msgid "" +#~ "This is a protected Twitter user, " +#~ "which means you can't open a " +#~ "timeline using the Streaming API. The" +#~ " user's tweets will not update due" +#~ " to a twitter policy. Do you " +#~ "want to continue?" +#~ msgstr "" +#~ "Twitter kurallarına göre, tweetleri koruma " +#~ "altında olan bir kullanıcının tweet " +#~ "bufferi oluşturulduğunda bir daha " +#~ "güncellenemez. Devam etmek ister misiniz?" + +#~ msgid "" +#~ "This is a protected user account, " +#~ "you need to follow this user to" +#~ " view their tweets or likes." +#~ msgstr "" +#~ "Bu korunmuş bir hesaptır, tweet ve " +#~ "beğenilerini görebilmek için bu kullanıcıyı" +#~ " takip etmeniz gerekir." + +#~ msgid "This user has no tweets. {0} can't create a timeline." +#~ msgstr "Bu kullanıcının tweeti yok. Bu kullanıcı için çizelge açamazsınız." + +#~ msgid "This user has no favorited tweets. {0} can't create a timeline." +#~ msgstr "Bu kullanıcının tfavorisi yok. Bu kullanıcı için çizelge açamazsınız." + +#~ msgid "This user has no followers. {0} can't create a timeline." +#~ msgstr "Bu kullanıcının takipçisi yok. {0} çizelge oluşturulamıyor." + +#~ msgid "This user has no friends. {0} can't create a timeline." +#~ msgstr "Bu kullanıcının arkadaşı yok. {0} çizelge oluşturulamıyor." + +#~ msgid "Geolocation data: {0}" +#~ msgstr "Konum bilgisi: {0}" + +#~ msgid "Geo data for this tweet" +#~ msgstr "Bu tweet için konum bilgisi" + +#~ msgid "You have been blocked from viewing this content" +#~ msgstr "Bu içeriği görüntülemekten men edildiniz" + +#~ msgid "" +#~ "You have been blocked from viewing " +#~ "someone's content. In order to avoid " +#~ "conflicts with the full session, TWBlue" +#~ " will remove the affected timeline." +#~ msgstr "" +#~ "Bir kişinin içeriğini görüntülemekten men " +#~ "edildiniz. Çakışmaları önlemek için TWBlue " +#~ "etkilenen çizelgeyi kaldırdı." + +#~ msgid "" +#~ "TWBlue cannot load this timeline because" +#~ " the user has been suspended from " +#~ "Twitter." +#~ msgstr "" +#~ "TWBlue bu kullanıcı twitter'dan " +#~ "uzaklaştırıldığı için çizelgeyi açamadı." + +#~ msgid "Do you really want to delete this filter?" +#~ msgstr "Bu filtreyi gerçekten silmek istediğinize emin misiniz?" + +#~ msgid "This filter already exists. Please use a different title" +#~ msgstr "Bu filtre zaten mevcut. Başka bir başlık kullanmayı deneyin" + +#~ msgid "&Show direct message" +#~ msgstr "&Direkt mesajı göster" + +#~ msgid "&Show event" +#~ msgstr "&etkinliği göster" + +#~ msgid "Direct &message" +#~ msgstr "&Direkt mesaj" + +#~ msgid "&Show user" +#~ msgstr "&Kullanıcıyı göster" + +#~ msgid "Search topic" +#~ msgstr "Konu ara" + +#~ msgid "&Tweet about this trend" +#~ msgstr "&Bu trend hakkında tweetle" + +#~ msgid "&Show item" +#~ msgstr "&Öğeyi göster" + +#~ msgid "Update &profile" +#~ msgstr "&profili güncelle" + +#~ msgid "Event" +#~ msgstr "Etkinlik" + +#~ msgid "Remove event" +#~ msgstr "Etkinlliği kaldır" + +#~ msgid "Trending topic" +#~ msgstr "Trend konu" + +#~ msgid "Tweet about this trend" +#~ msgstr "Bu trend hakkında tweetle" + +#~ msgid "" +#~ "Scan account and add friends and " +#~ "followers to the user autocompletion " +#~ "database" +#~ msgstr "" + +#~ msgid "" +#~ "Inverted buffers: The newest tweets will" +#~ " be shown at the beginning while " +#~ "the oldest at the end" +#~ msgstr "Ters bufferlar: Yeni tweetler başta, eski tweetler sonda gösterilir" + +#~ msgid "Retweet mode" +#~ msgstr "Retweet modu" + +#~ msgid "" +#~ "Load cache for tweets in memory " +#~ "(much faster in big datasets but " +#~ "requires more RAM)" +#~ msgstr "" + +#~ msgid "Ignored clients" +#~ msgstr "Yoksayılan istemciler" + +#~ msgid "Remove client" +#~ msgstr "İstemci kaldır" + +#~ msgid "Indicate audio tweets with sound" +#~ msgstr "Ses içeren tweetleri ses ile belirt" + +#~ msgid "Indicate geotweets with sound" +#~ msgstr "Konum içeren tweetleri ses ile belirt" + +#~ msgid "Indicate tweets containing images with sound" +#~ msgstr "Resim içeren tweetleri ses ile belirt" + +#~ msgid "API Key for SndUp" +#~ msgstr "SndUp için API anahtarı" + +#~ msgid "Create a filter for this buffer" +#~ msgstr "Bu buffer için filtre oluştur" + +#~ msgid "Filter title" +#~ msgstr "Filtre başlığı" + +#~ msgid "Filter by word" +#~ msgstr "Sözcüğe göre filtrele" + +#~ msgid "Ignore tweets wich contain the following word" +#~ msgstr "Şu sözcüğü içeren tweetleri yoksay" + +#~ msgid "Ignore tweets without the following word" +#~ msgstr "Şu sözcüğü içermeyen tweetleri yoksay" + +#~ msgid "word" +#~ msgstr "sözcük" + +#~ msgid "Allow retweets" +#~ msgstr "Retweetlere izin ver" + +#~ msgid "Allow quoted tweets" +#~ msgstr "Alıntılı tweetlere izin ver" + +#~ msgid "Allow replies" +#~ msgstr "Yanıtlara izin ver" + +#~ msgid "Use this term as a regular expression" +#~ msgstr "Bu terimi düzenli ifade olarak kullan" + +#~ msgid "Filter by language" +#~ msgstr "Dile göre filtre" + +#~ msgid "Load tweets in the following languages" +#~ msgstr "Şu dillerdeki tweetleri yükle" + +#~ msgid "Ignore tweets in the following languages" +#~ msgstr "Şu dillerdeki tweetleri yoksay" + +#~ msgid "Don't filter by language" +#~ msgstr "Dil filtrelemesi yapma" + +#~ msgid "Supported languages" +#~ msgstr "Desteklenen diller" + +#~ msgid "Add selected language to filter" +#~ msgstr "Seçili dili filtreye ekle" + +#~ msgid "Selected languages" +#~ msgstr "Seçili diller" + +#~ msgid "You must define a name for the filter before creating it." +#~ msgstr "" + +#~ msgid "Missing filter name" +#~ msgstr "" + +#~ msgid "Manage filters" +#~ msgstr "Filtreleri yönet" + +#~ msgid "Filters" +#~ msgstr "Filtreler" + +#~ msgid "Filter" +#~ msgstr "Filtre" + +#~ msgid "Lists manager" +#~ msgstr "Liste yöneticisi" + +#~ msgid "List" +#~ msgstr "Liste" + +#~ msgid "Owner" +#~ msgstr "sahip" + +#~ msgid "Members" +#~ msgstr "Üyeler" + +#~ msgid "mode" +#~ msgstr "mod" + +#~ msgid "Create a new list" +#~ msgstr "Yeni liste oluştur" + +#~ msgid "Open in buffer" +#~ msgstr "Bufferda aç" + +#~ msgid "Viewing lists for %s" +#~ msgstr "%s için listeler görüntüleniyor" + +#~ msgid "Subscribe" +#~ msgstr "Katıl" + +#~ msgid "Unsubscribe" +#~ msgstr "Katılmaktan vazgeç" + +#~ msgid "Name (20 characters maximun)" +#~ msgstr "ad (en fazla 20 harf)" + +#~ msgid "Mode" +#~ msgstr "Mod" + +#~ msgid "Private" +#~ msgstr "Özel" + +#~ msgid "Editing the list %s" +#~ msgstr "%s listesi düzenleniyor" + +#~ msgid "Select a list to add the user" +#~ msgstr "Kullanıcıyı eklemek için liste seçin" + +#~ msgid "Add" +#~ msgstr "Ekle" + +#~ msgid "Select a list to remove the user" +#~ msgstr "Kullanıcıyı kaldırmak için bir liste seçin" + +#~ msgid "Do you really want to delete this list?" +#~ msgstr "Bu listeyi gerçekten silmek istediğinize emin misiniz?" + +#~ msgid "Search on Twitter" +#~ msgstr "Twitter'da ara" + +#~ msgid "Tweets" +#~ msgstr "Tweetler" + +#~ msgid "&Language for results: " +#~ msgstr "&sonuç dili: " + +#~ msgid "any" +#~ msgstr "Hepsi" + +#~ msgid "Results &type: " +#~ msgstr "&sonuç türü: " + +#~ msgid "Mixed" +#~ msgstr "Karışık" + +#~ msgid "Recent" +#~ msgstr "En son" + +#~ msgid "Popular" +#~ msgstr "Popüler" + +#~ msgid "Details" +#~ msgstr "Ayrıntılar" + +#~ msgid "&Go to URL" +#~ msgstr "&Adrese git" + +#~ msgid "View trending topics" +#~ msgstr "Trend konuları gör" + +#~ msgid "Trending topics by" +#~ msgstr "Şuna göre trend konular" + +#~ msgid "Country" +#~ msgstr "Ülke" + +#~ msgid "City" +#~ msgstr "Şehir" + +#~ msgid "&Location" +#~ msgstr "&Yer" + +#~ msgid "Update your profile" +#~ msgstr "Profilinizi güncelleyin" + +#~ msgid "&Name (50 characters maximum)" +#~ msgstr "&ad (en fazla 50 karakter)" + +#~ msgid "&Website" +#~ msgstr "&Site adresi" + +#~ msgid "&Bio (160 characters maximum)" +#~ msgstr "&Bio (en fazla 160 karakter)" + +#~ msgid "Upload a &picture" +#~ msgstr "&Resim yükle" + +#~ msgid "Upload a picture" +#~ msgstr "Resim yükle" + +#~ msgid "Discard image" +#~ msgstr "Resmi sil" + +#~ msgid "&Report as spam" +#~ msgstr "&Spam olarak raporla" + +#~ msgid "&Ignore tweets from this client" +#~ msgstr "&Bu istemciden gelen tweetleri yoksay" + +#~ msgid "&Tweets" +#~ msgstr "&Tweetler" + +#~ msgid "&Likes" +#~ msgstr "&Beğeniler" + +#~ msgid "F&riends" +#~ msgstr "&Arkadaşlar" + +#~ msgid "Delete attachment" +#~ msgstr "Ek kaldır" + +#~ msgid "Added Tweets" +#~ msgstr "Gönderilmiş tweetler" + +#~ msgid "Delete tweet" +#~ msgstr "Gönderilmiş tweetler" + +#~ msgid "A&dd..." +#~ msgstr "" + +#~ msgid "Add t&weet" +#~ msgstr "Tweeti beğen" + +#~ msgid "&Attach audio..." +#~ msgstr "&Ses ekle..." + +#~ msgid "Sen&d" +#~ msgstr "&Gönder" + +#~ msgid "Video files (*.mp4)|*.mp4" +#~ msgstr "" + +#~ msgid "" +#~ "It is not possible to add more " +#~ "attachments. Please make sure your tweet" +#~ " complies with Twitter'S attachment rules." +#~ " You can add only one video or" +#~ " GIF in every tweet, and a " +#~ "maximum of 4 photos." +#~ msgstr "" + +#~ msgid "&Mention to all" +#~ msgstr "&Tümünü yanıtla" + +#~ msgid "&Recipient" +#~ msgstr "&Alıcı" + +#~ msgid "Tweet - %i characters " +#~ msgstr "Yeni tweet- %i karakter" + +#~ msgid "Retweets: " +#~ msgstr "Retweetler: " + +#~ msgid "Likes: " +#~ msgstr "Beğeniler" + +#~ msgid "View" +#~ msgstr "Görünüm" + +#~ msgid "Item" +#~ msgstr "Öğe" + +#~ msgid "&Expand URL" +#~ msgstr "&Adresi genişlet" + +#~ msgid "Participation time (in days)" +#~ msgstr "" + +#~ msgid "&Open in Twitter" +#~ msgstr "&Twitter'da aç" + +#~ msgid "&Show tweet" +#~ msgstr "&Tweet göster" + +#~ msgid "Translated" +#~ msgstr "Mesaj çevirildi" + +#~ msgid "Afrikaans" +#~ msgstr "Afrikanca" + +#~ msgid "Albanian" +#~ msgstr "Bulgarca" + +#~ msgid "Amharic" +#~ msgstr "Amharca" + +#~ msgid "Arabic" +#~ msgstr "Arapça" + +#~ msgid "Armenian" +#~ msgstr "Ermenice" + +#~ msgid "Azerbaijani" +#~ msgstr "Azerice" + +#~ msgid "Basque" +#~ msgstr "bask" + +#~ msgid "Belarusian" +#~ msgstr "Belarusian" + +#~ msgid "Bengali" +#~ msgstr "Bengal dili" + +#~ msgid "Bihari" +#~ msgstr "Bihari" + +#~ msgid "Bulgarian" +#~ msgstr "Bulgarca" + +#~ msgid "Burmese" +#~ msgstr "Birmanya dili" + +#~ msgid "Catalan" +#~ msgstr "Katalanya dili" + +#~ msgid "Cherokee" +#~ msgstr "cherok" + +#~ msgid "Chinese" +#~ msgstr "Çince" + +#~ msgid "Chinese_simplified" +#~ msgstr "Çince basitleştirilmiş" + +#~ msgid "Chinese_traditional" +#~ msgstr "Çince geleneksel" + +#~ msgid "Croatian" +#~ msgstr "Hırvatça" + +#~ msgid "Czech" +#~ msgstr "Çekçe" + +#~ msgid "Dhivehi" +#~ msgstr "dhivehi" + +#~ msgid "Esperanto" +#~ msgstr "Esperanto dili" + +#~ msgid "Estonian" +#~ msgstr "Estonya dili" + +#~ msgid "Filipino" +#~ msgstr "Filipin dili" + +#~ msgid "Galician" +#~ msgstr "galicia dili" + +#~ msgid "Georgian" +#~ msgstr "Gürcüce" + +#~ msgid "Greek" +#~ msgstr "Yunanca" + +#~ msgid "Guarani" +#~ msgstr "Guarani" + +#~ msgid "Gujarati" +#~ msgstr "gücerat dili" + +#~ msgid "Hebrew" +#~ msgstr "İbranice" + +#~ msgid "Hindi" +#~ msgstr "Hintçe" + +#~ msgid "Icelandic" +#~ msgstr "izlanda dili" + +#~ msgid "Indonesian" +#~ msgstr "Endonezya dili" + +#~ msgid "Inuktitut" +#~ msgstr "inuktitut" + +#~ msgid "Irish" +#~ msgstr "İrlanda dili" + +#~ msgid "Kannada" +#~ msgstr "kannada" + +#~ msgid "Kazakh" +#~ msgstr "kazakça" + +#~ msgid "Khmer" +#~ msgstr "khmer" + +#~ msgid "Kurdish" +#~ msgstr "Kürtçe" + +#~ msgid "Kyrgyz" +#~ msgstr "Kırgızistan dili" + +#~ msgid "Laothian" +#~ msgstr "laosça" + +#~ msgid "Latvian" +#~ msgstr "Letonya dili" + +#~ msgid "Lithuanian" +#~ msgstr "Litvanya dili" + +#~ msgid "Macedonian" +#~ msgstr "Makedonca" + +#~ msgid "Malay" +#~ msgstr "Malaya dili" + +#~ msgid "Malayalam" +#~ msgstr "Malayalam" + +#~ msgid "Maltese" +#~ msgstr "malta dili" + +#~ msgid "Marathi" +#~ msgstr "marathi" + +#~ msgid "Mongolian" +#~ msgstr "Moğolca" + +#~ msgid "Nepali" +#~ msgstr "Nepal dili" + +#~ msgid "Norwegian" +#~ msgstr "Norveççe" + +#~ msgid "Oriya" +#~ msgstr "oriya" + +#~ msgid "Pashto" +#~ msgstr "peştuca" + +#~ msgid "Persian" +#~ msgstr "Farsça" + +#~ msgid "Punjabi" +#~ msgstr "Pencap dili" + +#~ msgid "Romanian" +#~ msgstr "Romanca" + +#~ msgid "Sanskrit" +#~ msgstr "sanskritçe" + +#~ msgid "Serbian" +#~ msgstr "Sırpça" + +#~ msgid "Sindhi" +#~ msgstr "sindhi" + +#~ msgid "Sinhalese" +#~ msgstr "sinhalese" + +#~ msgid "Slovak" +#~ msgstr "Slovakça" + +#~ msgid "Slovenian" +#~ msgstr "Slovan" + +#~ msgid "Swahili" +#~ msgstr "swahili" + +#~ msgid "Swedish" +#~ msgstr "İsveççe" + +#~ msgid "Tajik" +#~ msgstr "tajekistan dili" + +#~ msgid "Tamil" +#~ msgstr "tamil" + +#~ msgid "Tagalog" +#~ msgstr "tagalog" + +#~ msgid "Telugu" +#~ msgstr "telugu" + +#~ msgid "Thai" +#~ msgstr "tayland dili" + +#~ msgid "Tibetan" +#~ msgstr "tibetçe" + +#~ msgid "Ukrainian" +#~ msgstr "Ukraynaca" + +#~ msgid "Urdu" +#~ msgstr "Urdu dili" + +#~ msgid "Uzbek" +#~ msgstr "özbekçe" + +#~ msgid "Uighur" +#~ msgstr "uygur" + +#~ msgid "Vietnamese" +#~ msgstr "Viyetnamca" + +#~ msgid "Welsh" +#~ msgstr "galce" + +#~ msgid "Yiddish" +#~ msgstr "eskenazi dili" + +#~ msgid "" +#~ "TWBlue has detected that you're running" +#~ " windows 10 and has changed the " +#~ "default keymap to the Windows 10 " +#~ "keymap. It means that some keyboard " +#~ "shorcuts could be different. Please " +#~ "check the keystroke editor by pressing" +#~ " Alt+Win+K to see all available " +#~ "keystrokes for this keymap." +#~ msgstr "" +#~ "TWBlue windows10 çalıştırdığınızı algıladı ve" +#~ " tuş haritanızı değiştirdi. Değişen " +#~ "kısayolları görmek için alt+windows+k " +#~ "tuşlarını kullanabilirsiniz." + +#~ msgid "Boosts: " +#~ msgstr "" + +#~ msgid "Favorites: " +#~ msgstr "" + +#~ msgid "Date: " +#~ msgstr "Tarih: " + +#~ msgid "Community for {}" +#~ msgstr "" + +#~ msgid "Run {0} at Windows startup" +#~ msgstr "{0} programını windows başlangıcında çalıştır" + +#~ msgid "Use Codeofdusk's longtweet handlers (may decrease client performance)" +#~ msgstr "" +#~ "Codeofdusk uzun tweet servisini kullan " +#~ "(istemci performansını düşürebilir)" + +#~ msgid "Remember state for mention all and long tweet" +#~ msgstr "Tümünü yanıtla ve uzun tweet ayarlarının durumunu hatırla" + +#~ msgid "Bio: " +#~ msgstr "" + +#~ msgid "Joined at: " +#~ msgstr "" + +#~ msgid "Field {} - Label: " +#~ msgstr "" + +#~ msgid "{} posts. Click to open posts timeline" +#~ msgstr "" + +#~ msgid "{} following. Click to open Following timeline" +#~ msgstr "" + +#~ msgid "{} followers. Click to open followers timeline" +#~ msgstr "" + +#~ msgid "Display Name" +#~ msgstr "" + +#~ msgid "Bio" +#~ msgstr "" + +#~ msgid "Change header" +#~ msgstr "" + +#~ msgid "Change avatar" +#~ msgstr "" + +#~ msgid "Field {}: Label" +#~ msgstr "" + +#~ msgid "Add following to database" +#~ msgstr "" + +#~ msgid "Read long posts in GUI" +#~ msgstr "" + +#~ msgid "LibreTranslate API URL: " +#~ msgstr "" + +#~ msgid "LibreTranslate API Key (optional): " +#~ msgstr "" + +#~ msgid "DeepL API Key: " +#~ msgstr "" + +#~ msgid "" +#~ "Scan account and add followers and " +#~ "following users to the user " +#~ "autocompletion database" +#~ msgstr "" + +#~ msgid "" +#~ "Read preferences from instance (default " +#~ "visibility when publishing and displaying " +#~ "sensitive content)" +#~ msgstr "" + +#~ msgid "Ask confirmation before boosting a post" +#~ msgstr "" + +#~ msgid "hide emojis in usernames" +#~ msgstr "" + +#~ msgid "" +#~ "Load cache for items in memory " +#~ "(much faster in big datasets but " +#~ "requires more RAM)" +#~ msgstr "" + diff --git a/srcantiguo/logger.py b/srcantiguo/logger.py new file mode 100644 index 00000000..0e8293aa --- /dev/null +++ b/srcantiguo/logger.py @@ -0,0 +1,45 @@ +# -*- coding: utf-8 -*- +import os +import logging +from logging.handlers import RotatingFileHandler +import paths +import sys + +APP_LOG_FILE = 'debug.log' +ERROR_LOG_FILE = "error.log" +MESSAGE_FORMAT = "%(asctime)s %(name)s %(levelname)s: %(message)s" +DATE_FORMAT = "%d/%m/%Y %H:%M:%S" + +formatter = logging.Formatter(MESSAGE_FORMAT, datefmt=DATE_FORMAT) + +requests_log = logging.getLogger("requests") +requests_log.setLevel(logging.WARNING) +urllib3 = logging.getLogger("urllib3") +urllib3.setLevel(logging.WARNING) +requests_oauthlib = logging.getLogger("requests_oauthlib") +requests_oauthlib.setLevel(logging.WARNING) +oauthlib = logging.getLogger("oauthlib") +oauthlib.setLevel(logging.WARNING) + +logger = logging.getLogger() +logger.setLevel(logging.DEBUG) + +#handlers + +app_handler = RotatingFileHandler(os.path.join(paths.logs_path(), APP_LOG_FILE), mode="w", encoding="utf-8") +app_handler.setFormatter(formatter) +app_handler.setLevel(logging.DEBUG) +logger.addHandler(app_handler) + +error_handler = logging.FileHandler(os.path.join(paths.logs_path(), ERROR_LOG_FILE), mode="w", encoding="utf-8") +error_handler.setFormatter(formatter) +error_handler.setLevel(logging.ERROR) +logger.addHandler(error_handler) + +def handle_exception(exc_type, exc_value, exc_traceback): + if issubclass(exc_type, KeyboardInterrupt): + sys.__excepthook__(exc_type, exc_value, exc_traceback) + return + logger.error("Uncaught exception", exc_info=(exc_type, exc_value, exc_traceback)) + +sys.excepthook = handle_exception diff --git a/srcantiguo/main.py b/srcantiguo/main.py new file mode 100644 index 00000000..453f6528 --- /dev/null +++ b/srcantiguo/main.py @@ -0,0 +1,126 @@ +# -*- coding: utf-8 -*- +import sys +import os +import platform +#redirect the original stdout and stderr +stdout=sys.stdout +stderr=sys.stderr +sys.stdout = open(os.path.join(os.getenv("temp"), "stdout.log"), "w") +sys.stderr = open(os.path.join(os.getenv("temp"), "stderr.log"), "w") +import languageHandler +import paths +#check if TWBlue is installed +# ToDo: Remove this soon as this is done already when importing the paths module. +if os.path.exists(os.path.join(paths.app_path(), "Uninstall.exe")): + paths.mode="installed" +import psutil +import commandline +import config +import output +import logging +import application +from mysc.thread_utils import call_threaded +import fixes +import widgetUtils +import webbrowser +from wxUI import commonMessageDialogs +from logger import logger +from update import updater +stdout_temp=sys.stdout +stderr_temp=sys.stderr +#if it's a binary version +if hasattr(sys, 'frozen'): + sys.stderr = open(os.path.join(paths.logs_path(), "stderr.log"), 'w') + sys.stdout = open(os.path.join(paths.logs_path(), "stdout.log"), 'w') +else: + sys.stdout=stdout + sys.stderr=stderr + # We are running from source, let's prepare vlc module for that situation + arch="x86" + if platform.architecture()[0][:2] == "64": + arch="x64" + os.environ['PYTHON_VLC_MODULE_PATH']=os.path.abspath(os.path.join(paths.app_path(), "..", "windows-dependencies", arch)) + os.environ['PYTHON_VLC_LIB_PATH']=os.path.abspath(os.path.join(paths.app_path(), "..", "windows-dependencies", arch, "libvlc.dll")) +#the final log files have been opened succesfully, let's close the temporary files +stdout_temp.close() +stderr_temp.close() +#finally, remove the temporary files. TW Blue doesn't need them anymore, and we will get more free space on the harddrive +os.remove(stdout_temp.name) +os.remove(stderr_temp.name) +import sound + +log = logging.getLogger("main") + +def setup(): + log.debug("Starting " + application.name + " %s" % (application.version,)) + config.setup() + proxy_setup() + log.debug("Using %s %s" % (platform.system(), platform.architecture()[0])) + log.debug("Application path is %s" % (paths.app_path(),)) + log.debug("config path is %s" % (paths.config_path(),)) + sound.setup() + languageHandler.setLanguage(config.app["app-settings"]["language"]) + fixes.setup() + output.setup() + from controller import settings + from controller import mainController + from sessionmanager import sessionManager + app = widgetUtils.mainLoopObject() + check_pid() + if config.app["app-settings"]["donation_dialog_displayed"] == False: + donation() + if config.app['app-settings']['check_for_updates']: + updater.do_update() + sm = sessionManager.sessionManagerController() + sm.fill_list() + if len(sm.sessions) == 0: + sm.show() + else: + sm.do_ok() + if hasattr(sm.view, "destroy"): + sm.view.destroy() + del sm + r = mainController.Controller() + r.view.show() + r.do_work() + r.check_invisible_at_startup() + call_threaded(r.start) + app.run() + +def proxy_setup(): + if config.app["proxy"]["server"] != "" and config.app["proxy"]["type"] > 0: + log.debug("Loading proxy settings") + proxy_url = config.app["proxy"]["server"] + ":" + str(config.app["proxy"]["port"]) + if config.app["proxy"]["user"] != "" and config.app["proxy"]["password"] != "": + proxy_url = config.app["proxy"]["user"] + ":" + config.app["proxy"]["password"] + "@" + proxy_url + elif config.app["proxy"]["user"] != "" and config.proxyTypes[config.app["proxy"]["type"]] in ["socks4", "socks4a"]: + proxy_url = config.app["proxy"]["user"] + "@" + proxy_url + proxy_url = config.proxyTypes[config.app["proxy"]["type"]] + "://" + proxy_url + os.environ["HTTP_PROXY"] = proxy_url + os.environ["HTTPS_PROXY"] = proxy_url + +def donation(): + dlg = commonMessageDialogs.donation() + if dlg == widgetUtils.YES: + webbrowser.open_new_tab(_("https://twblue.mcvsoftware.com/donate")) + config.app["app-settings"]["donation_dialog_displayed"] = True + +def check_pid(): + "Ensures that only one copy of the application is running at a time." + pidpath = os.path.join(os.getenv("temp"), "{}.pid".format(application.name)) + if os.path.exists(pidpath): + with open(pidpath) as fin: + pid = int(fin.read()) + try: + p = psutil.Process(pid=pid) + if p.is_running(): + # Display warning dialog + commonMessageDialogs.common_error(_("{0} is already running. Close the other instance before starting this one. If you're sure that {0} isn't running, try deleting the file at {1}. If you're unsure of how to do this, contact the {0} developers.").format(application.name, pidpath)) + sys.exit(1) + except psutil.NoSuchProcess: + commonMessageDialogs.dead_pid() + # Write the new PID + with open(pidpath,"w") as cam: + cam.write(str(os.getpid())) + +setup() diff --git a/srcantiguo/mastodon.defaults b/srcantiguo/mastodon.defaults new file mode 100644 index 00000000..525bfc84 --- /dev/null +++ b/srcantiguo/mastodon.defaults @@ -0,0 +1,60 @@ +[mastodon] +access_token = string(default="") +instance = string(default="") +user_name = string(default="") +ignored_clients = list(default=list()) +type = string(default="mastodon") + +[general] +relative_times = boolean(default=True) +read_preferences_from_instance = boolean(default=True) +max_posts_per_call = integer(default=40) +reverse_timelines = boolean(default=False) +persist_size = integer(default=0) +load_cache_in_memory=boolean(default=True) +show_screen_names = boolean(default=False) +hide_emojis = boolean(default=False) +buffer_order = list(default=list('home', 'local', 'mentions', 'direct_messages', 'sent', 'favorites', 'bookmarks', 'followers', 'following', 'blocked', 'muted', 'notifications')) +boost_mode = string(default="ask") +disable_streaming = boolean(default=False) + +[sound] +volume = float(default=1.0) +input_device = string(default="Default") +output_device = string(default="Default") +session_mute = boolean(default=False) +current_soundpack = string(default="FreakyBlue") +indicate_audio = boolean(default=True) +indicate_img = boolean(default=True) + +[other_buffers] +timelines = list(default=list()) +searches = list(default=list()) +communities = list(default=list()) +lists = list(default=list()) +followers_timelines = list(default=list()) +following_timelines = list(default=list()) +trending_topic_buffers = list(default=list()) +muted_buffers = list(default=list()) +autoread_buffers = list(default=list(mentions, direct_messages, events)) +post_searches = list(default = list()) + +[mysc] +spelling_language = string(default="") +save_followers_in_autocompletion_db = boolean(default=False) +save_friends_in_autocompletion_db = boolean(default=False) +ocr_language = string(default="") + +[reporting] +braille_reporting = boolean(default=True) +speech_reporting = boolean(default=True) + +[templates] +post = string(default="$display_name, $safe_text $image_descriptions $date. $visibility. $source") +person = string(default="$display_name (@$screen_name). $followers followers, $following following, $posts posts. Joined $created_at.") +conversation = string(default="Conversation with $users. Last message: $last_post") +notification = string(default="$display_name $text, $date") + +[filters] + +[user-aliases] diff --git a/srcantiguo/multiplatform_widgets/__init__.py b/srcantiguo/multiplatform_widgets/__init__.py new file mode 100644 index 00000000..f50f564e --- /dev/null +++ b/srcantiguo/multiplatform_widgets/__init__.py @@ -0,0 +1,3 @@ +from __future__ import absolute_import +from __future__ import unicode_literals +from . import widgets diff --git a/srcantiguo/multiplatform_widgets/widgets.py b/srcantiguo/multiplatform_widgets/widgets.py new file mode 100644 index 00000000..1a15e4ca --- /dev/null +++ b/srcantiguo/multiplatform_widgets/widgets.py @@ -0,0 +1,92 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals +from builtins import range +from builtins import object +import wx +import platform +import logging +log = logging.getLogger("multiplatform_widgets.widgets") + +class list(object): + def __init__(self, parent, *columns, **listArguments): + self.system = platform.system() + self.columns = columns + self.listArguments = listArguments + log.debug("Creating list: Columns: %s, arguments: %s" % (self.columns, self.listArguments)) + self.create_list(parent) +# self.set_size() + + def set_windows_size(self, column, characters_max): + # it = wx.ListItem() + # dc = wx.WindowDC(self.list) + # dc.SetFont(it.GetFont()) + # (x, y) = dc.GetTextExtent("r"*characters_max) + self.list.SetColumnWidth(column, characters_max*2) + + def set_size(self): + self.list.SetSize((self.list.GetBestSize()[0], 728)) +# self.list.SetSize((1439, 1000)) + + def create_list(self, parent): + if self.system == "Windows": + self.list = wx.ListCtrl(parent, -1, **self.listArguments) + for i in range(0, len(self.columns)): + self.list.InsertColumn(i, u"%s" % (self.columns[i])) + else: + self.list = wx.ListBox(parent, -1, choices=[]) + + def insert_item(self, reversed, *item): + """ Inserts an item on the list, depending on the OS.""" + if self.system == "Windows": + if reversed == False: items = self.list.GetItemCount() + else: items = 0 + self.list.InsertItem(items, item[0]) + for i in range(1, len(self.columns)): + self.list.SetItem(items, i, item[i]) + else: + self.list.Append(" ".join(item)) + + def remove_item(self, pos): + """ Deletes an item from the list.""" + if self.system == "Windows": + if pos > 0: self.list.Focus(pos-1) + self.list.DeleteItem(pos) + else: + if pos > 0: self.list.SetSelection(pos-1) + self.list.Delete(pos) + + def clear(self): + if self.system == "Windows": + self.list.DeleteAllItems() + else: + self.list.Clear() + + def get_selected(self): + if self.system == "Windows": + return self.list.GetFocusedItem() + else: + return self.list.GetSelection() + + def select_item(self, pos): + if self.system == "Windows": + self.list.Focus(pos) + else: + self.list.SetSelection(pos) + + def get_count(self): + if self.system == "Windows": + selected = self.list.GetItemCount() + else: + selected = self.list.GetCount() + if selected == -1: + return 0 + else: + return selected + + def get_text_column(self, indexId, column): + item = self.list.GetItem(indexId, column) + return item.GetText() + + def set_text_column(self, indexId, column, text): + item = self.list.SetStringItem(indexId, column, text) + return item diff --git a/srcantiguo/mysc/__init__.py b/srcantiguo/mysc/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/srcantiguo/mysc/localization.py b/srcantiguo/mysc/localization.py new file mode 100644 index 00000000..b6e360cc --- /dev/null +++ b/srcantiguo/mysc/localization.py @@ -0,0 +1,18 @@ +from __future__ import unicode_literals +import os +import languageHandler +import logging +log = logging.getLogger("mysc.localization") + +def get(rootFolder): + log.debug("Getting documentation folder. RootFolder: %s" % (rootFolder,)) + defaultLocale = languageHandler.curLang + if len(defaultLocale) > 2: + defaultLocale = defaultLocale[:2] + log.debug("Locale: %s" % (defaultLocale,)) + if os.path.exists(rootFolder+"/"+defaultLocale): + return defaultLocale + else: + log.debug("The folder does not exist, using the English folder...") + return "en" + diff --git a/srcantiguo/mysc/repeating_timer.py b/srcantiguo/mysc/repeating_timer.py new file mode 100644 index 00000000..fcc3c021 --- /dev/null +++ b/srcantiguo/mysc/repeating_timer.py @@ -0,0 +1,37 @@ +from __future__ import unicode_literals +import threading +import logging +log = logging.getLogger("mysc.repeating_timer") + +class RepeatingTimer(threading.Thread): + """Call a function after a specified number of seconds, it will then repeat again after the specified number of seconds + Note: If the function provided takes time to execute, this time is NOT taken from the next wait period + + t = RepeatingTimer(30.0, f, args=[], kwargs={}) + t.start() + t.cancel() # stop the timer's actions + """ + + def __init__(self, interval, function, daemon=True, *args, **kwargs): + threading.Thread.__init__(self) + self.daemon = daemon + self.interval = float(interval) + self.function = function + self.args = args + self.kwargs = kwargs + self.finished = threading.Event() + + def cancel(self): + """Stop the timer if it hasn't finished yet""" + log.debug("Stopping repeater for %s" % (self.function,)) + self.finished.set() + stop = cancel + + def run(self): + while not self.finished.is_set(): + self.finished.wait(self.interval) + if not self.finished.is_set(): #In case someone has canceled while waiting + try: + self.function(*self.args, **self.kwargs) + except: + log.exception("Execution failed. Function: %r args: %r and kwargs: %r" % (self.function, self.args, self.kwargs)) diff --git a/srcantiguo/mysc/restart.py b/srcantiguo/mysc/restart.py new file mode 100644 index 00000000..3ea9d14a --- /dev/null +++ b/srcantiguo/mysc/restart.py @@ -0,0 +1,16 @@ +# -*- coding: cp1252 +from __future__ import unicode_literals +import sys, os +import application + +def restart_program(): + """ Function that restarts the application if is executed.""" + args = sys.argv[:] + if not hasattr(sys, "frozen"): + args.insert(0, sys.executable) + if sys.platform == 'win32': + args = ['"%s"' % arg for arg in args] + pidpath = os.path.join(os.getenv("temp"), "{}.pid".format(application.name)) + if os.path.exists(pidpath): + os.remove(pidpath) + os.execv(sys.executable, args) diff --git a/srcantiguo/mysc/thread_utils.py b/srcantiguo/mysc/thread_utils.py new file mode 100644 index 00000000..39cdaa09 --- /dev/null +++ b/srcantiguo/mysc/thread_utils.py @@ -0,0 +1,19 @@ +# -*- coding: utf-8 -*- +import logging +log = logging.getLogger("mysc.thread_utils") +import threading +import wx +from pubsub import pub + +def call_threaded(func, *args, **kwargs): + #Call the given function in a daemonized thread and return the thread. + def new_func(*a, **k): + try: + func(*a, **k) + except: + log.exception("Thread %d with function %r, args of %r, and kwargs of %r failed to run." % (threading.current_thread().ident, func, a, k)) +# pass + thread = threading.Thread(target=new_func, args=args, kwargs=kwargs) + thread.daemon = True + thread.start() + return thread diff --git a/srcantiguo/output.py b/srcantiguo/output.py new file mode 100644 index 00000000..75ac2c6b --- /dev/null +++ b/srcantiguo/output.py @@ -0,0 +1,35 @@ +# *- coding: utf-8 -*- +import logging as original_logging +logging = original_logging.getLogger('core.output') + +from accessible_output2 import outputs +import sys + +speaker = None + +def speak(text, interrupt=0, speech=True, braille=True): + global speaker + if not speaker: + setup() + if speech: + speaker.speak(text, interrupt) + if braille: + speaker.braille(text) + +def setup (): + global speaker + logging.debug("Initializing output subsystem.") + try: + # speaker = speech.Speaker(speech.outputs.Sapi5()) + # else: + speaker = outputs.auto.Auto() + except: + return logging.exception("Output: Error during initialization.") + +def copy(text): + import win32clipboard + #Copies text to the clipboard. + win32clipboard.OpenClipboard() + win32clipboard.EmptyClipboard() + win32clipboard.SetClipboardText(text, win32clipboard.CF_UNICODETEXT) + win32clipboard.CloseClipboard() diff --git a/srcantiguo/paths.py b/srcantiguo/paths.py new file mode 100644 index 00000000..72435db0 --- /dev/null +++ b/srcantiguo/paths.py @@ -0,0 +1,67 @@ +# -*- coding: utf-8 -*- +import sys +import platform +import os +import glob +from platform_utils import paths as paths_ + +mode = "portable" +directory = None +fsencoding = sys.getfilesystemencoding() + +if len(glob.glob("Uninstall.exe")) > 0: # installed copy + mode= "installed" + +def app_path(): + return paths_.app_path() + +def config_path(): + global mode, directory + if mode == "portable": + if directory != None: path = os.path.join(directory, "config") + elif directory == None: path = os.path.join(app_path(), "config") + elif mode == "installed": + path = os.path.join(data_path(), "config") + if not os.path.exists(path): + # log.debug("%s path does not exist, creating..." % (path,)) + os.mkdir(path) + return path + +def logs_path(): + global mode, directory + if mode == "portable": + if directory != None: path = os.path.join(directory, "logs") + elif directory == None: path = os.path.join(app_path(), "logs") + elif mode == "installed": + path = os.path.join(data_path(), "logs") + if not os.path.exists(path): + # log.debug("%s path does not exist, creating..." % (path,)) + os.mkdir(path) + return path + +def data_path(app_name='TW Blue'): + if platform.system() == "Windows": + data_path = os.path.join(os.getenv("AppData"), app_name) + else: + data_path = os.path.join(os.environ['HOME'], ".%s" % app_name) + if not os.path.exists(data_path): + os.mkdir(data_path) + return data_path + +def locale_path(): + return os.path.join(app_path(), "locales") + +def sound_path(): + return os.path.join(app_path(), "sounds") + +def com_path(): + global mode, directory + if mode == "portable": + if directory != None: path = os.path.join(directory, "com_cache") + elif directory == None: path = os.path.join(app_path(), "com_cache") + elif mode == "installed": + path = os.path.join(data_path(), "com_cache") + if not os.path.exists(path): + # log.debug("%s path does not exist, creating..." % (path,)) + os.mkdir(path) + return path diff --git a/srcantiguo/sessionmanager/__init__.py b/srcantiguo/sessionmanager/__init__.py new file mode 100644 index 00000000..f59d8d26 --- /dev/null +++ b/srcantiguo/sessionmanager/__init__.py @@ -0,0 +1,9 @@ +# -*- coding: utf-8 -*- +""" Module to manage sessions. It can create and configure all sessions. + +Contents of this package: + wxUI: The graphical user interface written in WX Python (for windows). The view. + session_exceptions: Some useful exceptions when there is an error. + manager: Handles multiple sessions, setting the configuration files and check if the session is valid. Part of the model. + session: Creates a twitter session for an user. The other part of the model. +""" diff --git a/srcantiguo/sessionmanager/manager.py b/srcantiguo/sessionmanager/manager.py new file mode 100644 index 00000000..89d95503 --- /dev/null +++ b/srcantiguo/sessionmanager/manager.py @@ -0,0 +1,34 @@ +# -*- coding: cp1252 -*- +""" Lightweigth module that saves session position across global config and performs validation of config files. """ +import os +import logging +import config +import paths +log = logging.getLogger("sessionmanager.manager") +from sessions import session_exceptions + +manager = None +def setup(): + """ Creates the singleton instance used within TWBlue to access this object. """ + global manager + if not manager: + manager = sessionManager() + +class sessionManager(object): + + def get_current_session(self): + """ Returns the currently focused session, if valid. """ + if self.is_valid(config.app["sessions"]["current_session"]): + return config.app["sessions"]["current_session"] + + def set_current_session(self, sessionID): + config.app["sessions"]["current_session"] = sessionID + config.app.write() + + def is_valid(self, id): + if not os.path.exists(os.path.join(paths.config_path(), id)): + raise session_exceptions.NonExistentSessionError("That session does not exist.") + config.app["sessions"]["current_session"] = "" + return False + else: + return True diff --git a/srcantiguo/sessionmanager/sessionManager.py b/srcantiguo/sessionmanager/sessionManager.py new file mode 100644 index 00000000..e89f99c1 --- /dev/null +++ b/srcantiguo/sessionmanager/sessionManager.py @@ -0,0 +1,136 @@ +# -*- coding: utf-8 -*- +""" Module to perform session actions such as addition, removal or display of the global settings dialogue. """ +import time +import os +import logging +import shutil +import widgetUtils +import sessions +import output +import paths +import config_utils +import config +import application +from pubsub import pub +from controller import settings +from sessions.mastodon import session as MastodonSession +from sessions.gotosocial import session as GotosocialSession +from . import manager +from . import wxUI as view + +log = logging.getLogger("sessionmanager.sessionManager") + +class sessionManagerController(object): + def __init__(self, started: bool = False): + """ Class constructor. + + Creates the SessionManager class controller, responsible for the accounts within TWBlue. From this dialog, users can add/Remove accounts, or load the global settings dialog. + + :param started: Indicates whether this object is being created during application startup (when no other controller has been instantiated) or not. It is important for us to know this, as we won't show the button to open global settings dialog if the application has been started. Users must choose the corresponding option in the menu bar. + :type started: bool + """ + super(sessionManagerController, self).__init__() + log.debug("Setting up the session manager.") + self.started = started + # Initialize the manager, responsible for storing session objects. + manager.setup() + self.view = view.sessionManagerWindow() + pub.subscribe(self.manage_new_account, "sessionmanager.new_account") + pub.subscribe(self.remove_account, "sessionmanager.remove_account") + if self.started == False: + pub.subscribe(self.configuration, "sessionmanager.configuration") + else: + self.view.hide_configuration() + # Store a temporary copy of new and removed sessions, so we will perform actions on them during call to on_ok. + self.new_sessions = {} + self.removed_sessions = [] + + def fill_list(self): + """ Fills the session list with all valid sessions that could be found in config path. """ + sessionsList = [] + reserved_dirs = ["dicts"] + log.debug("Filling the sessions list.") + self.sessions = [] + for i in os.listdir(paths.config_path()): + if os.path.isdir(os.path.join(paths.config_path(), i)) and i not in reserved_dirs: + log.debug("Adding session %s" % (i,)) + strconfig = "%s/session.conf" % (os.path.join(paths.config_path(), i)) + config_test = config_utils.load_config(strconfig) + if len(config_test) == 0: + try: + log.debug("Deleting session %s" % (i,)) + shutil.rmtree(os.path.join(paths.config_path(), i)) + continue + except: + output.speak("An exception was raised while attempting to clean malformed session data. See the error log for details. If this message persists, contact the developers.",True) + os.exception("Exception thrown while removing malformed session") + continue + if config_test.get("mastodon") != None: + name = _("{account_name}@{instance} (Mastodon)").format(account_name=config_test["mastodon"]["user_name"], instance=config_test["mastodon"]["instance"].replace("https://", "")) + if config_test["mastodon"]["instance"] != "" and config_test["mastodon"]["access_token"] != "": + sessionsList.append(name) + self.sessions.append(dict(type=config_test["mastodon"].get("type", "mastodon"), id=i)) + else: + try: + log.debug("Deleting session %s" % (i,)) + shutil.rmtree(os.path.join(paths.config_path(), i)) + except: + output.speak("An exception was raised while attempting to clean malformed session data. See the error log for details. If this message persists, contact the developers.",True) + os.exception("Exception thrown while removing malformed session") + self.view.fill_list(sessionsList) + + def show(self): + """ Displays the session manager dialog. """ + if self.view.get_response() == widgetUtils.OK: + self.do_ok() +# else: + self.view.destroy() + + def do_ok(self): + log.debug("Starting sessions...") + for i in self.sessions: + # Skip already created sessions. Useful when session manager controller is not created during startup. + if sessions.sessions.get(i.get("id")) != None: + continue + # Create the session object based in session type. + if i.get("type") == "mastodon": + s = MastodonSession.Session(i.get("id")) + elif i.get("type") == "gotosocial": + s = GotosocialSession.Session(i.get("id")) + s.get_configuration() + if i.get("id") not in config.app["sessions"]["ignored_sessions"]: + try: + s.login() + except Exception as e: + log.exception("Exception during login on a TWBlue session.") + continue + sessions.sessions[i.get("id")] = s + self.new_sessions[i.get("id")] = s +# self.view.destroy() + + def show_auth_error(self): + error = view.auth_error() + + def manage_new_account(self, type): + # Generic settings for all account types. + location = (str(time.time())[-6:]) + log.debug("Creating %s session in the %s path" % (type, location)) + if type == "mastodon": + s = MastodonSession.Session(location) + result = s.authorise() + if result == True: + self.sessions.append(dict(id=location, type=s.settings["mastodon"].get("type"))) + self.view.add_new_session_to_list() + + def remove_account(self, index): + selected_account = self.sessions[index] + self.view.remove_session(index) + self.removed_sessions.append(selected_account.get("id")) + self.sessions.remove(selected_account) + shutil.rmtree(path=os.path.join(paths.config_path(), selected_account.get("id")), ignore_errors=True) + + def configuration(self): + """ Opens the global settings dialogue.""" + d = settings.globalSettingsController() + if d.response == widgetUtils.OK: + d.save_configuration() diff --git a/srcantiguo/sessionmanager/wxUI.py b/srcantiguo/sessionmanager/wxUI.py new file mode 100644 index 00000000..2a23c3cf --- /dev/null +++ b/srcantiguo/sessionmanager/wxUI.py @@ -0,0 +1,99 @@ +# -*- coding: utf-8 -*- +""" Base GUI (Wx) class for the Session manager module.""" +import wx +import application +from pubsub import pub +from multiplatform_widgets import widgets + +class sessionManagerWindow(wx.Dialog): + """ Dialog that displays all session managing capabilities to users. """ + def __init__(self): + super(sessionManagerWindow, self).__init__(parent=None, title=_(u"Session manager"), size=wx.DefaultSize) + panel = wx.Panel(self) + sizer = wx.BoxSizer(wx.VERTICAL) + label = wx.StaticText(panel, -1, _(u"Accounts list"), size=wx.DefaultSize) + listSizer = wx.BoxSizer(wx.HORIZONTAL) + self.list = widgets.list(panel, _(u"Account"), style=wx.LC_SINGLE_SEL|wx.LC_REPORT) + listSizer.Add(label, 0, wx.ALL, 5) + listSizer.Add(self.list.list, 0, wx.ALL, 5) + sizer.Add(listSizer, 0, wx.ALL, 5) + self.new = wx.Button(panel, -1, _(u"New account"), size=wx.DefaultSize) + self.new.Bind(wx.EVT_BUTTON, self.on_new_account) + self.remove = wx.Button(panel, -1, _(u"Remove account")) + self.remove.Bind(wx.EVT_BUTTON, self.on_remove) + self.configuration = wx.Button(panel, -1, _(u"Global Settings")) + self.configuration.Bind(wx.EVT_BUTTON, self.on_configuration) + ok = wx.Button(panel, wx.ID_OK, size=wx.DefaultSize) + ok.SetDefault() + cancel = wx.Button(panel, wx.ID_CANCEL, size=wx.DefaultSize) + buttons = wx.BoxSizer(wx.HORIZONTAL) + buttons.Add(self.new, 0, wx.ALL, 5) + buttons.Add(self.configuration, 0, wx.ALL, 5) + buttons.Add(ok, 0, wx.ALL, 5) + buttons.Add(cancel, 0, wx.ALL, 5) + sizer.Add(buttons, 0, wx.ALL, 5) + panel.SetSizer(sizer) + min = sizer.CalcMin() + self.SetClientSize(min) + + def fill_list(self, sessionsList): + for i in sessionsList: + self.list.insert_item(False, i) + if self.list.get_count() > 0: + self.list.select_item(0) + self.list.list.SetSize(self.list.list.GetBestSize()) + + def ok(self, ev): + if self.list.get_count() == 0: + wx.MessageDialog(None, _(u"You need to configure an account."), _(u"Account Error"), wx.ICON_ERROR).ShowModal() + return + self.EndModal(wx.ID_OK) + + def on_new_account(self, *args, **kwargs): + menu = wx.Menu() + mastodon = menu.Append(wx.ID_ANY, _("Mastodon")) + menu.Bind(wx.EVT_MENU, self.on_new_mastodon_account, mastodon) + self.PopupMenu(menu, self.new.GetPosition()) + + def on_new_mastodon_account(self, *args, **kwargs): + dlg = wx.MessageDialog(self, _("You will be prompted for your Mastodon data (instance URL, email address and password) so we can authorise TWBlue in your instance. Would you like to authorise your account now?"), _(u"Authorization"), wx.YES_NO) + response = dlg.ShowModal() + dlg.Destroy() + if response == wx.ID_YES: + pub.sendMessage("sessionmanager.new_account", type="mastodon") + + def add_new_session_to_list(self): + total = self.list.get_count() + name = _(u"Authorized account %d") % (total+1) + self.list.insert_item(False, name) + if self.list.get_count() == 1: + self.list.select_item(0) + + def show_unauthorised_error(self): + wx.MessageDialog(None, _(u"Your access token is invalid or the authorization has failed. Please try again."), _(u"Invalid user token"), wx.ICON_ERROR).ShowModal() + + def get_response(self): + return self.ShowModal() + + def on_remove(self, *args, **kwargs): + dlg = wx.MessageDialog(self, _(u"Do you really want to delete this account?"), _(u"Remove account"), wx.YES_NO) + response = dlg.ShowModal() + dlg.Destroy() + if response == wx.ID_YES: + selected = self.list.get_selected() + pub.sendMessage("sessionmanager.remove_account", index=selected) + + def on_configuration(self, *args, **kwargs): + pub.sendMessage("sessionmanager.configuration") + + def get_selected(self): + return self.list.get_selected() + + def remove_session(self, sessionID): + self.list.remove_item(sessionID) + + def hide_configuration(self): + self.configuration.Hide() + + def destroy(self): + self.Destroy() diff --git a/srcantiguo/sessions/__init__.py b/srcantiguo/sessions/__init__.py new file mode 100644 index 00000000..318104d8 --- /dev/null +++ b/srcantiguo/sessions/__init__.py @@ -0,0 +1,5 @@ +# -*- coding: utf-8 -*- +""" this package contains code related to Sessions. +In TWBlue, a session module defines everything a social network needs to be used in the program.""" +# let's define a global object for storing sessions across the program. +sessions = {} diff --git a/srcantiguo/sessions/base.py b/srcantiguo/sessions/base.py new file mode 100644 index 00000000..10e308fd --- /dev/null +++ b/srcantiguo/sessions/base.py @@ -0,0 +1,171 @@ +# -*- coding: utf-8 -*- +""" A base class to be derived in possible new sessions for TWBlue and services.""" +import os +import paths +import output +import time +import sound +import logging +import config +import config_utils +import sqlitedict +import application +from . import session_exceptions as Exceptions + +log = logging.getLogger("sessionmanager.session") + +class baseSession(object): + """ toDo: Decorators does not seem to be working when using them in an inherited class.""" + + # Decorators. + + def _require_login(fn): + """ Decorator for checking if the user is logged in. + Some functions may need this to avoid making unneeded calls.""" + def f(self, *args, **kwargs): + if self.logged == True: + fn(self, *args, **kwargs) + else: + raise Exceptions.NotLoggedSessionError("You are not logged in yet.") + return f + + def _require_configuration(fn): + """ Check if the user has a configured session.""" + def f(self, *args, **kwargs): + if self.settings != None: + fn(self, *args, **kwargs) + else: + raise Exceptions.NotConfiguredSessionError("Not configured.") + return f + + def __init__(self, session_id): + """ session_id (str): The name of the folder inside the config directory where the session is located.""" + super(baseSession, self).__init__() + self.session_id = session_id + self.logged = False + self.settings = None + self.db={} + # Config specification file. + self.config_spec = "conf.defaults" + # Session type. + self.type = "base" + + @property + def is_logged(self): + return self.logged + + def create_session_folder(self): + path = os.path.join(paths.config_path(), self.session_id) + if not os.path.exists(path): + log.debug("Creating %s path" % (os.path.join(paths.config_path(), path),)) + os.mkdir(path) + config.app["sessions"]["sessions"].append(id) + + def get_configuration(self): + """ Get settings for a session.""" + file_ = "%s/session.conf" % (self.session_id,) + log.debug("Creating config file %s" % (file_,)) + self.settings = config_utils.load_config(os.path.join(paths.config_path(), file_), os.path.join(paths.app_path(), self.config_spec)) + self.init_sound() + self.load_persistent_data() + + def get_name(self): + pass + + def init_sound(self): + try: self.sound = sound.soundSystem(self.settings["sound"]) + except: pass + + @_require_configuration + def login(self, verify_credentials=True): + pass + + @_require_configuration + def authorise(self): + pass + + def get_sized_buffer(self, buffer, size, reversed=False): + """ Returns a list with the amount of items specified by size.""" + if isinstance(buffer, list) and size != -1 and len(buffer) > size: + log.debug("Requesting {} items from a list of {} items. Reversed mode: {}".format(size, len(buffer), reversed)) + if reversed == True: + return buffer[:size] + else: + return buffer[len(buffer)-size:] + else: + return buffer + + def save_persistent_data(self): + """ Save the data to a persistent sqlite backed file. .""" + dbname=os.path.join(paths.config_path(), str(self.session_id), "cache.db") + log.debug("Saving storage information...") + # persist_size set to 0 means not saving data actually. + if self.settings["general"]["persist_size"] == 0: + if os.path.exists(dbname): + os.remove(dbname) + return + # Let's check if we need to create a new SqliteDict object (when loading db in memory) or we just need to call to commit in self (if reading from disk).db. + # If we read from disk, we cannot modify the buffer size here as we could damage the app's integrity. + # We will modify buffer's size (managed by persist_size) upon loading the db into memory in app startup. + if self.settings["general"]["load_cache_in_memory"] and isinstance(self.db, dict): + log.debug("Opening database to dump memory contents...") + db=sqlitedict.SqliteDict(dbname, 'c') + for k in self.db.keys(): + sized_buff = self.get_sized_buffer(self.db[k], self.settings["general"]["persist_size"], self.settings["general"]["reverse_timelines"]) + db[k] = sized_buff + db.commit(blocking=True) + db.close() + log.debug("Data has been saved in the database.") + else: + try: + log.debug("Syncing new data to disk...") + if hasattr(self.db, "commit"): + self.db.commit() + except: + output.speak(_("An exception occurred while saving the {app} database. It will be deleted and rebuilt automatically. If this error persists, send the error log to the {app} developers.").format(app=application.name),True) + log.exception("Exception while saving {}".format(dbname)) + os.remove(dbname) + + def load_persistent_data(self): + """Import data from a database file from user config.""" + log.debug("Loading storage data...") + dbname=os.path.join(paths.config_path(), str(self.session_id), "cache.db") + # If persist_size is set to 0, we should remove the db file as we are no longer going to save anything. + if self.settings["general"]["persist_size"] == 0: + if os.path.exists(dbname): + os.remove(dbname) + # Let's return from here, as we are not loading anything. + return + # try to load the db file. + try: + log.debug("Opening database...") + db=sqlitedict.SqliteDict(os.path.join(paths.config_path(), dbname), 'c') + # If load_cache_in_memory is set to true, we will load the whole database into memory for faster access. + # This is going to be faster when retrieving specific objects, at the cost of more memory. + # Setting this to False will read the objects from database as they are needed, which might be slower for bigger datasets. + if self.settings["general"]["load_cache_in_memory"]: + log.debug("Loading database contents into memory...") + for k in db.keys(): + self.db[k] = db[k] + db.commit(blocking=True) + db.close() + log.debug("Contents were loaded successfully.") + else: + log.debug("Instantiating database from disk.") + self.db = db + # We must make sure we won't load more than the amount of buffer specified. + log.debug("Checking if we will load all content...") + for k in self.db.keys(): + sized_buffer = self.get_sized_buffer(self.db[k], self.settings["general"]["persist_size"], self.settings["general"]["reverse_timelines"]) + self.db[k] = sized_buffer + if self.db.get("cursors") == None: + cursors = dict(direct_messages=-1) + self.db["cursors"] = cursors + except: + output.speak(_("An exception occurred while loading the {app} database. It will be deleted and rebuilt automatically. If this error persists, send the error log to the {app} developers.").format(app=application.name), True) + log.exception("Exception while loading {}".format(dbname)) + try: + os.remove(dbname) + except: + pass + diff --git a/srcantiguo/sessions/gotosocial/__init__.py b/srcantiguo/sessions/gotosocial/__init__.py new file mode 100644 index 00000000..40a96afc --- /dev/null +++ b/srcantiguo/sessions/gotosocial/__init__.py @@ -0,0 +1 @@ +# -*- coding: utf-8 -*- diff --git a/srcantiguo/sessions/gotosocial/session.py b/srcantiguo/sessions/gotosocial/session.py new file mode 100644 index 00000000..f9228853 --- /dev/null +++ b/srcantiguo/sessions/gotosocial/session.py @@ -0,0 +1,13 @@ +from sessions.mastodon import session + +class Session(session.Session): + # disable version check so Mastodon.py won't throw exceptions. + version_check_mode = "none" + name = "GoToSocial" + + def get_lists(self): + """ Gets the lists that the user is subscribed to and stores them in the database. Returns None.""" + self.db["lists"] = [] + + def get_muted_users(self): + self.db["muted_users"] = [] diff --git a/srcantiguo/sessions/mastodon/__init__.py b/srcantiguo/sessions/mastodon/__init__.py new file mode 100644 index 00000000..40a96afc --- /dev/null +++ b/srcantiguo/sessions/mastodon/__init__.py @@ -0,0 +1 @@ +# -*- coding: utf-8 -*- diff --git a/srcantiguo/sessions/mastodon/compose.py b/srcantiguo/sessions/mastodon/compose.py new file mode 100644 index 00000000..b9d9534f --- /dev/null +++ b/srcantiguo/sessions/mastodon/compose.py @@ -0,0 +1,87 @@ +# -*- coding: utf-8 -*- +import arrow +import languageHandler +from . import utils, templates + +def compose_post(post, db, settings, relative_times, show_screen_names, safe=True): + if show_screen_names == False: + user = utils.get_user_alias(post.account, settings) + else: + user = post.account.get("acct") + original_date = arrow.get(post.created_at) + if relative_times: + ts = original_date.humanize(locale=languageHandler.curLang[:2]) + else: + ts = original_date.shift(hours=db["utc_offset"]).format(_("dddd, MMMM D, YYYY H:m"), locale=languageHandler.curLang[:2]) + if post.reblog != None: + text = _("Boosted from @{}: {}").format(post.reblog.account.acct, templates.process_text(post.reblog, safe=safe)) + else: + text = templates.process_text(post, safe=safe) + # Handle quoted posts + if hasattr(post, 'quote') and post.quote != None and hasattr(post.quote, 'quoted_status') and post.quote.quoted_status != None: + quoted_user = post.quote.quoted_status.account.acct + quoted_text = templates.process_text(post.quote.quoted_status, safe=safe) + text = text + " " + _("Quoting @{}: {}").format(quoted_user, quoted_text) + filtered = utils.evaluate_filters(post=post, current_context="home") + if filtered != None: + text = _("hidden by filter {}").format(filtered) + source = post.get("application", "") + # "" means remote user, None for legacy apps so we should cover both sides. + if source != None and source != "": + source = source.get("name", "") + else: + source = "" + return [user+", ", text, ts+", ", source] + +def compose_user(user, db, settings, relative_times=True, show_screen_names=False, safe=False): + original_date = arrow.get(user.created_at) + if relative_times: + ts = original_date.humanize(locale=languageHandler.curLang[:2]) + else: + ts = original_date.shift(hours=db["utc_offset"]).format(_("dddd, MMMM D, YYYY H:m:s"), locale=languageHandler.curLang[:2]) + name = utils.get_user_alias(user, settings) + return [_("%s (@%s). %s followers, %s following, %s posts. Joined %s") % (name, user.acct, user.followers_count, user.following_count, user.statuses_count, ts)] + +def compose_conversation(conversation, db, settings, relative_times, show_screen_names, safe=False): + users = [] + for account in conversation.accounts: + if account.display_name != "": + users.append(utils.get_user_alias(account, settings)) + else: + users.append(account.username) + users = ", ".join(users) + last_post = compose_post(conversation.last_status, db, settings, relative_times, show_screen_names) + text = _("Last message from {}: {}").format(last_post[0], last_post[1]) + return [users, text, last_post[-2], last_post[-1]] + +def compose_notification(notification, db, settings, relative_times, show_screen_names, safe=False): + if show_screen_names == False: + user = utils.get_user_alias(notification.account, settings) + else: + user = notification.account.get("acct") + original_date = arrow.get(notification.created_at) + if relative_times: + ts = original_date.humanize(locale=languageHandler.curLang[:2]) + else: + ts = original_date.shift(hours=db["utc_offset"]).format(_("dddd, MMMM D, YYYY H:m"), locale=languageHandler.curLang[:2]) + text = "Unknown: %r" % (notification) + if notification.type == "status": + text = _("{username} has posted: {status}").format(username=user, status=",".join(compose_post(notification.status, db, settings, relative_times, show_screen_names, safe=safe))) + elif notification.type == "mention": + text = _("{username} has mentioned you: {status}").format(username=user, status=",".join(compose_post(notification.status, db, settings, relative_times, show_screen_names, safe=safe))) + elif notification.type == "reblog": + text = _("{username} has boosted: {status}").format(username=user, status=",".join(compose_post(notification.status, db, settings, relative_times, show_screen_names, safe=safe))) + elif notification.type == "favourite": + text = _("{username} has added to favorites: {status}").format(username=user, status=",".join(compose_post(notification.status, db, settings, relative_times, show_screen_names, safe=safe))) + elif notification.type == "follow": + text = _("{username} has followed you.").format(username=user) + elif notification.type == "admin.sign_up": + text = _("{username} has joined the instance.").format(username=user) + elif notification.type == "poll": + text = _("A poll in which you have voted has expired: {status}").format(status=",".join(compose_post(notification.status, db, settings, relative_times, show_screen_names, safe=safe))) + elif notification.type == "follow_request": + text = _("{username} wants to follow you.").format(username=user) + filtered = utils.evaluate_filters(post=notification, current_context="notifications") + if filtered != None: + text = _("hidden by filter {}").format(filtered) + return [user, text, ts] \ No newline at end of file diff --git a/srcantiguo/sessions/mastodon/session.py b/srcantiguo/sessions/mastodon/session.py new file mode 100644 index 00000000..658fd3c4 --- /dev/null +++ b/srcantiguo/sessions/mastodon/session.py @@ -0,0 +1,430 @@ +# -*- coding: utf-8 -*- +import os +import paths +import time +import logging +import webbrowser +import wx +import mastodon +import demoji +import config +import config_utils +import output +import application +from mastodon import MastodonError, MastodonAPIError, MastodonNotFoundError, MastodonUnauthorizedError, MastodonVersionError +from pubsub import pub +from mysc.thread_utils import call_threaded +from sessions import base +from sessions.mastodon import utils, streaming + +log = logging.getLogger("sessions.mastodonSession") + +MASTODON_VERSION = "4.3.2" + +class Session(base.baseSession): + version_check_mode = "created" + name = "Mastodon" + + def __init__(self, *args, **kwargs): + super(Session, self).__init__(*args, **kwargs) + self.config_spec = "mastodon.defaults" + self.supported_languages = [] + self.default_language = None + self.type = "mastodon" + self.db["pagination_info"] = dict() + self.char_limit = 500 + self.post_visibility = "public" + self.expand_spoilers = False + self.software = "mastodon" + pub.subscribe(self.on_status, "mastodon.status_received") + pub.subscribe(self.on_status_updated, "mastodon.status_updated") + pub.subscribe(self.on_notification, "mastodon.notification_received") + + def login(self, verify_credentials=True): + if self.settings["mastodon"]["access_token"] != None and self.settings["mastodon"]["instance"] != None: + try: + log.debug("Logging in to Mastodon instance {}...".format(self.settings["mastodon"]["instance"])) + self.api = mastodon.Mastodon(access_token=self.settings["mastodon"]["access_token"], api_base_url=self.settings["mastodon"]["instance"], mastodon_version=MASTODON_VERSION, user_agent="TWBlue/{}".format(application.version), version_check_mode=self.version_check_mode) + if verify_credentials == True: + credentials = self.api.account_verify_credentials() + self.db["user_name"] = credentials["username"] + self.db["user_id"] = credentials["id"] + if hasattr(credentials, "source") and hasattr(credentials.source, "language"): + log.info(f"Setting default language on account {credentials.username} to {credentials.source.language}") + self.default_language = credentials.source.language + self.settings["mastodon"]["user_name"] = credentials["username"] + self.logged = True + log.debug("Logged.") + self.counter = 0 + except MastodonError: + log.exception(f"The login attempt failed on instance {self.settings['mastodon']['instance']}.") + self.logged = False + else: + self.logged = False + raise Exceptions.RequireCredentialsSessionError + + def authorise(self): + if self.logged == True: + raise Exceptions.AlreadyAuthorisedError("The authorisation process is not needed at this time.") + authorisation_dialog = wx.TextEntryDialog(None, _("Please enter your instance URL."), _("Mastodon instance")) + answer = authorisation_dialog.ShowModal() + instance = authorisation_dialog.GetValue() + authorisation_dialog.Destroy() + if answer != wx.ID_OK: + return + try: + client_id, client_secret = mastodon.Mastodon.create_app("TWBlue", api_base_url=authorisation_dialog.GetValue(), website="https://twblue.es") + temporary_api = mastodon.Mastodon(client_id=client_id, client_secret=client_secret, api_base_url=instance, mastodon_version=MASTODON_VERSION, user_agent="TWBlue/{}".format(application.version), version_check_mode="none") # disable version check so we can handle more platforms than Mastodon. + auth_url = temporary_api.auth_request_url() + except MastodonError: + dlg = wx.MessageDialog(None, _("We could not connect to your mastodon instance. Please verify that the domain exists and the instance is accessible via a web browser."), _("Instance error"), wx.ICON_ERROR) + dlg.ShowModal() + dlg.Destroy() + return + webbrowser.open_new_tab(auth_url) + verification_dialog = wx.TextEntryDialog(None, _("Enter the verification code"), _("PIN code authorization")) + answer = verification_dialog.ShowModal() + code = verification_dialog.GetValue() + verification_dialog.Destroy() + if answer != wx.ID_OK: + return + try: + access_token = temporary_api.log_in(code=verification_dialog.GetValue()) + except MastodonError: + dlg = wx.MessageDialog(None, _("We could not authorice your mastodon account to be used in TWBlue. This might be caused due to an incorrect verification code. Please try to add the session again."), _("Authorization error"), wx.ICON_ERROR) + dlg.ShowModal() + dlg.Destroy() + return + self.create_session_folder() + self.get_configuration() + # handle when the instance is GoTosocial. + # this might be extended for other activity pub software later on. + nodeinfo = temporary_api.instance_nodeinfo() + if nodeinfo.software.get("name") == "gotosocial": + self.settings["mastodon"]["type"] = nodeinfo.software.get("name") + # GoToSocial doesn't support certain buffers so we redefine all of them here. + self.settings["general"]["buffer_order"] = ['home', 'local', 'mentions', 'sent', 'favorites', 'bookmarks', 'followers', 'following', 'blocked', 'notifications'] + self.settings["mastodon"]["access_token"] = access_token + self.settings["mastodon"]["instance"] = instance + self.settings.write() + return True + + def get_user_info(self): + """ Retrieves some information required by TWBlue for setup.""" + # retrieve the current user's UTC offset so we can calculate dates properly. + offset = time.timezone if (time.localtime().tm_isdst == 0) else time.altzone + offset = offset / 60 / 60 * -1 + self.db["utc_offset"] = offset + instance = self.api.instance() + if len(self.supported_languages) == 0: + try: + self.supported_languages = self.api.instance_languages() + except (Exception, MastodonVersionError): + pass + self.get_lists() + self.get_muted_users() + # determine instance custom characters limit. + if hasattr(instance, "configuration") and hasattr(instance.configuration, "statuses") and hasattr(instance.configuration.statuses, "max_characters"): + self.char_limit = instance.configuration.statuses.max_characters + # User preferences for some things. + preferences = self.api.preferences() + self.post_visibility = preferences.get("posting:default:visibility") + self.expand_spoilers = preferences.get("reading:expand:spoilers") + self.settings.write() + + def get_lists(self): + """ Gets the lists that the user is subscribed to and stores them in the database. Returns None.""" + if self.software == "gotosocial": + self.db["lists"] = [] + return + self.db["lists"] = self.api.lists() + + def get_muted_users(self): + ### ToDo: Use a function to retrieve all muted users. + if self.software == "gotosocial": + self.db["muted_users"] = [] + return + try: + self.db["muted_users"] = self.api.mutes() + except MastodonNotFoundError: + self.db["muted_users"] = [] + + def order_buffer(self, name, data, ignore_older=False): + num = 0 + last_id = None + if self.db.get(name) == None: + self.db[name] = [] + objects = self.db[name] + if ignore_older and len(self.db[name]) > 0: + if self.settings["general"]["reverse_timelines"] == False: + last_id = self.db[name][0].id + else: + last_id = self.db[name][-1].id + for i in data: + # handle empty notifications. + post_types = ["status", "mention", "reblog", "favourite", "update", "poll"] + if hasattr(i, "type") and i.type in post_types and i.status == None: + continue + if ignore_older and last_id != None: + if i.id < last_id: + log.error("Ignoring an older tweet... Last id: {0}, tweet id: {1}".format(last_id, i.id)) + continue + if utils.find_item(i, self.db[name]) == None: + filter_status = utils.evaluate_filters(post=i, current_context=utils.get_current_context(name)) + if filter_status == "hide": + continue + if self.settings["general"]["reverse_timelines"] == False: objects.append(i) + else: objects.insert(0, i) + num = num+1 + self.db[name] = objects + return num + + def update_item(self, name, item): + if name not in self.db: + return False + items = self.db[name] + if type(items) != list: + return False + # determine item position in buffer. + item_position = next((x for x in range(len(items)) if items[x].id == item.id), None) + if item_position != None: + self.db[name][item_position] = item + return item_position + return False + + def api_call(self, call_name, action="", _sound=None, report_success=False, report_failure=True, preexec_message="", *args, **kwargs): + finished = False + tries = 0 + if preexec_message: + output.speak(preexec_message, True) + while finished==False and tries < 5: + try: + val = getattr(self.api, call_name)(*args, **kwargs) + finished = True + except Exception as e: + output.speak(str(e)) + if isinstance(e, MastodonAPIError): + log.exception("API Error returned when making a Call on {}. Call name={}, args={}, kwargs={}".format(self.get_name(), call_name, args, kwargs)) + raise e + val = None + tries = tries+1 + time.sleep(5) + if tries == 4 and finished == False: + raise e + if report_success: + output.speak(_("%s succeeded.") % action) + if _sound != None: + self.sound.play(_sound) + return val + + def send_post(self, reply_to=None, visibility=None, language=None, posts=[]): + """ Convenience function to send a thread. """ + in_reply_to_id = reply_to + for obj in posts: + text = obj.get("text") + scheduled_at = obj.get("scheduled_at") + if len(obj["attachments"]) == 0: + try: + item = self.api_call(call_name="status_post", status=text, _sound="tweet_send.ogg", in_reply_to_id=in_reply_to_id, visibility=visibility, sensitive=obj["sensitive"], spoiler_text=obj["spoiler_text"], language=language, scheduled_at=scheduled_at) + # If it fails, let's basically send an event with all passed info so we will catch it later. + except Exception as e: + pub.sendMessage("mastodon.error_post", name=self.get_name(), reply_to=reply_to, visibility=visibility, posts=posts, lang=language) + return + if item != None: + in_reply_to_id = item["id"] + else: + media_ids = [] + try: + poll = None + if len(obj["attachments"]) == 1 and obj["attachments"][0]["type"] == "poll": + poll = self.api.make_poll(options=obj["attachments"][0]["options"], expires_in=obj["attachments"][0]["expires_in"], multiple=obj["attachments"][0]["multiple"], hide_totals=obj["attachments"][0]["hide_totals"]) + else: + for i in obj["attachments"]: + media = self.api_call("media_post", media_file=i["file"], description=i["description"], synchronous=True) + media_ids.append(media.id) + item = self.api_call(call_name="status_post", status=text, _sound="tweet_send.ogg", in_reply_to_id=in_reply_to_id, media_ids=media_ids, visibility=visibility, poll=poll, sensitive=obj["sensitive"], spoiler_text=obj["spoiler_text"], language=language, scheduled_at=scheduled_at) + if item != None: + in_reply_to_id = item["id"] + except Exception as e: + pub.sendMessage("mastodon.error_post", name=self.get_name(), reply_to=reply_to, visibility=visibility, posts=posts, lang=language) + return + + def edit_post(self, post_id, posts=[]): + """ Convenience function to edit a post. Only the first item in posts list is used as threads cannot be edited. + + Note: According to Mastodon API, not all fields can be edited. Visibility, language, and reply context cannot be changed. + + Args: + post_id: ID of the status to edit + posts: List with post data. Only first item is used. + + Returns: + Updated status object or None on failure + """ + if len(posts) == 0: + log.warning("edit_post called with empty posts list") + return None + + obj = posts[0] + text = obj.get("text") + + if not text: + log.warning("edit_post called without text content") + return None + + media_ids = [] + media_attributes = [] + + try: + poll = None + # Handle poll attachments + if len(obj["attachments"]) == 1 and obj["attachments"][0]["type"] == "poll": + poll = self.api.make_poll( + options=obj["attachments"][0]["options"], + expires_in=obj["attachments"][0]["expires_in"], + multiple=obj["attachments"][0]["multiple"], + hide_totals=obj["attachments"][0]["hide_totals"] + ) + log.debug("Editing post with poll (this will reset votes)") + # Handle media attachments + elif len(obj["attachments"]) > 0: + for i in obj["attachments"]: + # If attachment has an 'id', it's an existing media that we keep + if "id" in i: + media_ids.append(i["id"]) + # If existing media has metadata to update, use generate_media_edit_attributes + if "description" in i or "focus" in i: + media_attr = self.api.generate_media_edit_attributes( + id=i["id"], + description=i.get("description"), + focus=i.get("focus") + ) + media_attributes.append(media_attr) + # Otherwise it's a new file to upload + elif "file" in i: + description = i.get("description", "") + focus = i.get("focus", None) + media = self.api_call( + "media_post", + media_file=i["file"], + description=description, + focus=focus, + synchronous=True + ) + media_ids.append(media.id) + log.debug("Uploaded new media with id: {}".format(media.id)) + + # Prepare parameters for status_update + update_params = { + "id": post_id, + "status": text, + "_sound": "tweet_send.ogg", + "sensitive": obj.get("sensitive", False), + "spoiler_text": obj.get("spoiler_text", None), + } + + # Add optional parameters only if provided + if media_ids: + update_params["media_ids"] = media_ids + if media_attributes: + update_params["media_attributes"] = media_attributes + if poll: + update_params["poll"] = poll + + # Call status_update API + log.debug("Editing post {} with params: {}".format(post_id, {k: v for k, v in update_params.items() if k not in ["_sound"]})) + item = self.api_call(call_name="status_update", **update_params) + + if item: + log.info("Successfully edited post {}".format(post_id)) + return item + + except MastodonAPIError as e: + log.exception("Mastodon API error updating post {}: {}".format(post_id, str(e))) + output.speak(_("Error editing post: {}").format(str(e))) + pub.sendMessage("mastodon.error_edit", name=self.get_name(), post_id=post_id, error=str(e)) + return None + except Exception as e: + log.exception("Unexpected error updating post {}: {}".format(post_id, str(e))) + output.speak(_("Error editing post: {}").format(str(e))) + return None + + def get_name(self): + instance = self.settings["mastodon"]["instance"] + instance = instance.replace("https://", "") + user = self.settings["mastodon"]["user_name"] + return "{}@{} ({})".format(user, instance, self.name) + + def start_streaming(self): + if self.settings["general"]["disable_streaming"]: + log.info("Streaming is disabled for session {}. Skipping...".format(self.get_name())) + return + if self.software == "gotosocial": + return + listener = streaming.StreamListener(session_name=self.get_name(), user_id=self.db["user_id"]) + try: + stream_healthy = self.api.stream_healthy() + if stream_healthy == True: + self.user_stream = self.api.stream_user(listener, run_async=True, reconnect_async=True, reconnect_async_wait_sec=30) + self.direct_stream = self.api.stream_direct(listener, run_async=True, reconnect_async=True, reconnect_async_wait_sec=30) + log.debug("Started streams for session {}.".format(self.get_name())) + except Exception as e: + log.exception("Detected streaming unhealthy in {} session.".format(self.get_name())) + + def stop_streaming(self): + if config.app["app-settings"]["no_streaming"]: + return + + def check_streams(self): + pass + + def check_buffers(self, status): + buffers = [] + buffers.append("home_timeline") + if status.account.id == self.db["user_id"]: + buffers.append("sent") + return buffers + + def on_status(self, status, session_name): + # Discard processing the status if the streaming sends a tweet for another account. + if self.get_name() != session_name: + return + buffers = self.check_buffers(status) + for b in buffers[::]: + num = self.order_buffer(b, [status]) + if num == 0: + buffers.remove(b) + pub.sendMessage("mastodon.new_item", session_name=self.get_name(), item=status, _buffers=buffers) + + def on_status_updated(self, status, session_name): + # Discard processing the status if the streaming sends a tweet for another account. + if self.get_name() != session_name: + return + buffers = {} + for b in list(self.db.keys()): + updated = self.update_item(b, status) + if updated != False: + buffers[b] = updated + pub.sendMessage("mastodon.updated_item", session_name=self.get_name(), item=status, _buffers=buffers) + + def on_notification(self, notification, session_name): + # Discard processing the notification if the streaming sends a tweet for another account. + if self.get_name() != session_name: + return + buffers = [] + obj = None + if notification.type == "mention": + buffers = ["mentions"] + obj = notification + elif notification.type == "follow": + buffers = ["followers"] + obj = notification.account + for b in buffers[::]: + num = self.order_buffer(b, [obj]) + if num == 0: + buffers.remove(b) + pub.sendMessage("mastodon.new_item", session_name=self.get_name(), item=obj, _buffers=buffers) + # Now, add notification to its buffer. + num = self.order_buffer("notifications", [notification]) + if num > 0: + pub.sendMessage("mastodon.new_item", session_name=self.get_name(), item=notification, _buffers=["notifications"]) \ No newline at end of file diff --git a/srcantiguo/sessions/mastodon/streaming.py b/srcantiguo/sessions/mastodon/streaming.py new file mode 100644 index 00000000..b9e56135 --- /dev/null +++ b/srcantiguo/sessions/mastodon/streaming.py @@ -0,0 +1,25 @@ +# -*- coding: utf-8 -*- +import mastodon +from pubsub import pub + +class StreamListener(mastodon.StreamListener): + + def __init__(self, session_name, user_id): + self.session_name = session_name + self.user_id = user_id + super(StreamListener, self).__init__() + + def on_update(self, status): + pub.sendMessage("mastodon.status_received", status=status, session_name=self.session_name) + + def on_status_update(self, status): + pub.sendMessage("mastodon.status_updated", status=status, session_name=self.session_name) + + def on_conversation(self, conversation): + pub.sendMessage("mastodon.conversation_received", conversation=conversation, session_name=self.session_name) + + def on_notification(self, notification): + pub.sendMessage("mastodon.notification_received", notification=notification, session_name=self.session_name) + + def on_unknown_event(self, event, payload): + log.error("Unknown event: {} with payload as {}".format(event, payload)) diff --git a/srcantiguo/sessions/mastodon/templates.py b/srcantiguo/sessions/mastodon/templates.py new file mode 100644 index 00000000..2674bea3 --- /dev/null +++ b/srcantiguo/sessions/mastodon/templates.py @@ -0,0 +1,187 @@ +# -*- coding: utf-8 -*- +import re +import arrow +import languageHandler +from string import Template +from . import utils, compose + +# Define variables that would be available for all template objects. +# This will be used for the edit template dialog. +# Available variables for post objects. +# safe_text will be the content warning in case a post contains one, text will always be the full text, no matter if has a content warning or not. +post_variables = ["date", "display_name", "screen_name", "source", "lang", "safe_text", "text", "image_descriptions", "visibility", "pinned"] +person_variables = ["display_name", "screen_name", "description", "followers", "following", "favorites", "posts", "created_at"] +conversation_variables = ["users", "last_post"] +notification_variables = ["display_name", "screen_name", "text", "date"] + +# Default, translatable templates. +post_default_template = _("$display_name, $text $image_descriptions $date. $source") +dm_sent_default_template = _("Dm to $recipient_display_name, $text $date") +person_default_template = _("$display_name (@$screen_name). $followers followers, $following following, $posts posts. Joined $created_at.") +notification_default_template = _("$display_name $text, $date") + +def process_date(field, relative_times=True, offset_hours=0): + original_date = arrow.get(field) + if relative_times == True: + ts = original_date.humanize(locale=languageHandler.curLang[:2]) + else: + ts = original_date.shift(hours=offset_hours).format(_("dddd, MMMM D, YYYY H:m:s"), locale=languageHandler.curLang[:2]) + return ts + +def process_text(post, safe=True): +# text = utils.clean_mentions(utils.StripChars(text)) + if safe == True and post.sensitive == True and post.spoiler_text != "": + return _("Content warning: {}").format(post.spoiler_text) + return utils.html_filter(post.content) + +def process_image_descriptions(media_attachments): + """ Attempt to extract information for image descriptions. """ + image_descriptions = [] + for media in media_attachments: + if media.get("description") != None and media.get("description") != "": + image_descriptions.append(media.get("description")) + idescriptions = "" + for image in image_descriptions: + idescriptions = idescriptions + _("Media description: {}").format(image) + "\n" + return idescriptions + +def render_post(post, template, settings, relative_times=False, offset_hours=0): + """ Renders any given post according to the passed template. + Available data for posts will be stored in the following variables: + $date: Creation date. + $display_name: User profile name. + $screen_name: User screen name, this is the same name used to reference the user in Twitter. + $ source: Source client from where the current tweet was sent. + $lang: Two letter code for the automatically detected language for the tweet. This detection is performed by Twitter. + $safe_text: Safe text to display. If a content warning is applied in posts, display those instead of the whole post. + $text: Toot text. This always displays the full text, even if there is a content warning present. + $image_descriptions: Information regarding image descriptions added by twitter users. + $visibility: post's visibility: public, not listed, followers only or direct. + $pinned: Wether the post is pinned or not (if not pinned, this will be blank). + """ + global post_variables + available_data = dict(source="") + created_at = process_date(post.created_at, relative_times, offset_hours) + available_data.update(date=created_at) + # user. + display_name = utils.get_user_alias(post.account, settings) + available_data.update(display_name=display_name, screen_name=post.account.acct) + # Source client from where tweet was originated. + source = "" + if hasattr(post, "application") and post.application != None: + available_data.update(source=post.application.get("name")) + if post.reblog != None: + text = _("Boosted from @{}: {}").format(post.reblog.account.acct, process_text(post.reblog, safe=False), ) + safe_text = _("Boosted from @{}: {}").format(post.reblog.account.acct, process_text(post.reblog), ) + else: + text = process_text(post, safe=False) + safe_text = process_text(post) + # Handle quoted posts + if hasattr(post, 'quote') and post.quote != None and hasattr(post.quote, 'quoted_status') and post.quote.quoted_status != None: + quoted_user = post.quote.quoted_status.account.acct + quoted_text = process_text(post.quote.quoted_status, safe=False) + quoted_safe_text = process_text(post.quote.quoted_status, safe=True) + text = text + " " + _("Quoting @{}: {}").format(quoted_user, quoted_text) + safe_text = safe_text + " " + _("Quoting @{}: {}").format(quoted_user, quoted_safe_text) + filtered = utils.evaluate_filters(post=post, current_context="home") + if filtered != None: + text = _("hidden by filter {}").format(filtered) + visibility_settings = dict(public=_("Public"), unlisted=_("Not listed"), private=_("Followers only"), direct=_("Direct")) + visibility = visibility_settings.get(post.visibility) + available_data.update(lang=post.language, text=text, safe_text=safe_text, visibility=visibility) + # process image descriptions + image_descriptions = "" + if post.reblog != None: + image_descriptions = process_image_descriptions(post.reblog.media_attachments) + else: + image_descriptions = process_image_descriptions(post.media_attachments) + available_data.update(image_descriptions=image_descriptions) + # Process if the post is pinned + if post.get("pinned", False): + pinned = _("Pinned.") + else: + pinned = "" + available_data.update(pinned=pinned) + result = Template(_(template)).safe_substitute(**available_data) + return result + +def render_user(user, template, settings, relative_times=True, offset_hours=0): + """ Renders persons by using the provided template. + Available data will be stored in the following variables: + $display_name: The name of the user, as they’ve defined it. Not necessarily a person’s name. Typically capped at 50 characters, but subject to change. + $screen_name: The screen name, handle, or alias that this user identifies themselves with. + $description: The user-defined UTF-8 string describing their account. + $followers: The number of followers this account currently has. This value might be inaccurate. + $following: The number of users this account is following (AKA their “followings”). This value might be inaccurate. + $posts: The number of Tweets (including retweets) issued by the user. This value might be inaccurate. + $created_at: The date and time that the user account was created on Twitter. + """ + global person_variables + display_name = utils.get_user_alias(user, settings) + available_data = dict(display_name=display_name, screen_name=user.acct, followers=user.followers_count, following=user.following_count, posts=user.statuses_count) + # Nullable values. + nullables = ["description"] + for nullable in nullables: + if hasattr(user, nullable) and getattr(user, nullable) != None: + available_data[nullable] = getattr(user, nullable) + created_at = process_date(user.created_at, relative_times=relative_times, offset_hours=offset_hours) + available_data.update(created_at=created_at) + result = Template(_(template)).safe_substitute(**available_data) + return result + +def render_conversation(conversation, template, settings, post_template, relative_times=False, offset_hours=0): + users = [] + for account in conversation.accounts: + if account.display_name != "": + users.append(utils.get_user_alias(account, settings)) + else: + users.append(account.username) + users = ", ".join(users) + last_post = render_post(conversation.last_status, post_template, settings, relative_times=relative_times, offset_hours=offset_hours) + available_data = dict(users=users, last_post=last_post) + result = Template(_(template)).safe_substitute(**available_data) + return result + +def render_notification(notification, template, post_template, settings, relative_times=False, offset_hours=0): + """ Renders any given notification according to the passed template. + Available data for notifications will be stored in the following variables: + $date: Creation date. + $display_name: User profile name. + $screen_name: User screen name, this is the same name used to reference the user in Twitter. + $text: Notification text, describing the action. + """ + global notification_variables + available_data = dict() + created_at = process_date(notification.created_at, relative_times, offset_hours) + available_data.update(date=created_at) + # user. + display_name = utils.get_user_alias(notification.account, settings) + available_data.update(display_name=display_name, screen_name=notification.account.acct) + text = "Unknown: %r" % (notification) + # Remove date from status, so it won't be rendered twice. + post_template = post_template.replace("$date", "") + if notification.type == "status": + text = _("has posted: {status}").format(status=render_post(notification.status, post_template, settings, relative_times, offset_hours)) + elif notification.type == "mention": + text = _("has mentioned you: {status}").format(status=render_post(notification.status, post_template, settings, relative_times, offset_hours)) + elif notification.type == "reblog": + text = _("has boosted: {status}").format(status=render_post(notification.status, post_template, settings, relative_times, offset_hours)) + elif notification.type == "favourite": + text = _("has added to favorites: {status}").format(status=render_post(notification.status, post_template, settings, relative_times, offset_hours)) + elif notification.type == "update": + text = _("has updated a status: {status}").format(status=render_post(notification.status, post_template, settings, relative_times, offset_hours)) + elif notification.type == "follow": + text = _("has followed you.") + elif notification.type == "admin.sign_up": + text = _("has joined the instance.") + elif notification.type == "poll": + text = _("A poll in which you have voted has expired: {status}").format(status=render_post(notification.status, post_template, settings, relative_times, offset_hours)) + elif notification.type == "follow_request": + text = _("wants to follow you.") + filtered = utils.evaluate_filters(post=notification, current_context="notifications") + if filtered != None: + text = _("hidden by filter {}").format(filtered) + available_data.update(text=text) + result = Template(_(template)).safe_substitute(**available_data) + result = result.replace(" . ", "") + return result diff --git a/srcantiguo/sessions/mastodon/utils.py b/srcantiguo/sessions/mastodon/utils.py new file mode 100644 index 00000000..589ee23f --- /dev/null +++ b/srcantiguo/sessions/mastodon/utils.py @@ -0,0 +1,179 @@ +import re +import demoji +from html.parser import HTMLParser +from datetime import datetime, timezone + +url_re = re.compile(r'') + +class HTMLFilter(HTMLParser): + # Classes to ignore when parsing HTML + IGNORED_CLASSES = ["quote-inline"] + + text = "" + first_paragraph = True + skip_depth = 0 # Track nesting depth of ignored elements + + def handle_data(self, data): + # Only add data if we're not inside an ignored element + if self.skip_depth == 0: + self.text += data + + def handle_starttag(self, tag, attrs): + # Check if this tag has a class that should be ignored + attrs_dict = dict(attrs) + tag_class = attrs_dict.get("class", "") + + # Check if any ignored class is present in this tag + should_skip = any(ignored_class in tag_class for ignored_class in self.IGNORED_CLASSES) + + if should_skip: + self.skip_depth += 1 + elif self.skip_depth == 0: # Only process tags if we're not skipping + if tag == "br": + self.text = self.text+"\n" + elif tag == "p": + if self.first_paragraph: + self.first_paragraph = False + else: + self.text = self.text+"\n\n" + else: + # We're inside a skipped element, increment depth for nested tags + self.skip_depth += 1 + + def handle_endtag(self, tag): + # Decrement skip depth when closing any tag while skipping + if self.skip_depth > 0: + self.skip_depth -= 1 + +def html_filter(data): + f = HTMLFilter() + f.feed(data) + return f.text + +def find_item(item, listItems): + for i in range(0, len(listItems)): + if listItems[i].id == item.id: + return i + if hasattr(item, "reblog") and item.reblog != None and item.reblog.id == listItems[i].id: + return i + return None + +def is_audio_or_video(post): + if post.reblog != None: + return is_audio_or_video(post.reblog) + # Checks firstly for Mastodon native videos and audios. + for media in post.media_attachments: + if media["type"] == "video" or media["type"] == "audio": + return True + +def is_image(post): + if post.reblog != None: + return is_image(post.reblog) + # Checks firstly for Mastodon native videos and audios. + for media in post.media_attachments: + if media["type"] == "gifv" or media["type"] == "image": + return True + +def get_media_urls(post): + if hasattr(post, "reblog") and post.reblog != None: + return get_media_urls(post.reblog) + urls = [] + for media in post.media_attachments: + if media.get("type") == "audio" or media.get("type") == "video": + url_keys = ["remote_url", "url"] + for url_key in url_keys: + if media.get(url_key) != None: + urls.append(media.get(url_key)) + break + return urls + +def find_urls(post, include_tags=False): + urls = url_re.findall(post.content) + if include_tags == False: + for tag in post.tags: + for url in urls[::]: + if url.lower().endswith("/tags/"+tag["name"]): + urls.remove(url) + return urls + +def get_user_alias(user, settings): + if user.display_name == None or user.display_name == "": + display_name = user.username + else: + display_name = user.display_name + aliases = settings.get("user-aliases") + if aliases == None: + return demoji_user(display_name, settings) + user_alias = aliases.get(str(user.id)) + if user_alias != None: + return user_alias + return demoji_user(display_name, settings) + +def demoji_user(name, settings): + if settings["general"]["hide_emojis"] == True: + user = demoji.replace(name, "") + # Take care of Mastodon instance emojis. + user = re.sub(r":(.*?):", "", user) + return user + return name + +def get_current_context(buffer: str) -> str: + """ Gets the name of a buffer and returns the context it belongs to. useful for filtering. """ + if buffer == "home_timeline": + return "home" + elif buffer == "mentions" or buffer == "notifications": + return "notifications" + +def evaluate_filters(post: dict, current_context: str) -> str | None: + """ + Evaluates the 'filtered' attribute of a Mastodon post to determine its visibility, + considering the current context, expiration, and matches (keywords or status). + + Parameters: + post (dict): A dictionary representing a Mastodon post. + current_context (str): The context in which the post is displayed + (e.g., "home", "notifications", "public", "thread", or "profile"). + + Returns: + - "hide" if any applicable filter indicates the post should be hidden. + - A string with the filter's title if an applicable "warn" filter is present. + - None if no applicable filters are found, meaning the post should be shown normally. + """ + filters = post.get("filtered", None) + + # Automatically hide muted conversations from home timeline. + if current_context == "home" and post.get("muted") == True: + return "hide" + + if filters == None: + return + warn_filter_title = None + now = datetime.now(timezone.utc) + for result in filters: + filter_data = result.get("filter", {}) + # Check if the filter applies to the current context. + filter_contexts = filter_data.get("context", []) + if current_context not in filter_contexts: + continue # Skip filters not applicable in this context + # Check if the filter has expired. + expires_at = filter_data.get("expires_at") + if expires_at is not None: + # If expires_at is a string, attempt to parse it. + if isinstance(expires_at, str): + try: + expiration_dt = datetime.fromisoformat(expires_at) + except ValueError: + continue # Skip if the date format is invalid + else: + expiration_dt = expires_at + if expiration_dt < now: + continue # Skip expired filters + action = filter_data.get("filter_action", "") + if action == "hide": + return "hide" + elif action == "warn": + title = filter_data.get("title", "") + warn_filter_title = title if title else "warn" + if warn_filter_title: + return warn_filter_title + return None \ No newline at end of file diff --git a/srcantiguo/sessions/session_exceptions.py b/srcantiguo/sessions/session_exceptions.py new file mode 100644 index 00000000..9b16e287 --- /dev/null +++ b/srcantiguo/sessions/session_exceptions.py @@ -0,0 +1,9 @@ +# -*- coding: cp1252 -*- +from __future__ import unicode_literals + +class InvalidSessionError(Exception): pass +class NonExistentSessionError(Exception): pass +class NotLoggedSessionError(BaseException): pass +class NotConfiguredSessionError(BaseException): pass +class RequireCredentialsSessionError(BaseException): pass +class AlreadyAuthorisedError(BaseException): pass diff --git a/srcantiguo/setup.py b/srcantiguo/setup.py new file mode 100644 index 00000000..b1a0069f --- /dev/null +++ b/srcantiguo/setup.py @@ -0,0 +1,61 @@ +# -*- coding: utf-8 -*- +import sys +import application +import platform +import os +from cx_Freeze import setup, Executable, winmsvcr +from requests import certs + +def get_architecture_files(): + if platform.architecture()[0][:2] == "32": + return ["../windows-dependencies/x86/oggenc2.exe", "../windows-dependencies/x86/bootstrap.exe", "../windows-dependencies/x86/libvlc.dll", "../windows-dependencies/x86/libvlccore.dll", "../windows-dependencies/x86/plugins", ["../windows-dependencies/dictionaries", "lib/enchant/data/mingw32/share/enchant/hunspell"], ["../windows-dependencies/x86/Microsoft.VC142.CRT", "."], ["../windows-dependencies/x86/Microsoft.VC142.MFC", "."], ["../windows-dependencies/x86/Microsoft.VC142.MFCLOC", "."], ["../windows-dependencies/x86/ucrt", "."]] + elif platform.architecture()[0][:2] == "64": + return ["../windows-dependencies/x64/oggenc2.exe", "../windows-dependencies/x64/bootstrap.exe", "../windows-dependencies/x64/libvlc.dll", "../windows-dependencies/x64/libvlccore.dll", "../windows-dependencies/x64/plugins", ["../windows-dependencies/dictionaries", "lib/enchant/data/mingw64/share/enchant/hunspell"], ["../windows-dependencies/x64/Microsoft.VC142.CRT", "."], ["../windows-dependencies/x64/Microsoft.VC142.MFC", "."], ["../windows-dependencies/x64/Microsoft.VC142.MFCLOC", "."], ["../windows-dependencies/x64/ucrt", "."]] + +def find_sound_lib_datafiles(): + import os + import platform + import sound_lib + path = os.path.join(sound_lib.__path__[0], 'lib') + if platform.architecture()[0] == '32bit' or platform.system() == 'Darwin': + arch = 'x86' + else: + arch = 'x64' + dest_dir = os.path.join('sound_lib', 'lib', arch) + source = os.path.join(path, arch) + return (source, dest_dir) + +def find_accessible_output2_datafiles(): + import os + import accessible_output2 + path = os.path.join(accessible_output2.__path__[0], 'lib') + dest_dir = os.path.join('accessible_output2', 'lib') + return (path, dest_dir) + +base = None +if sys.platform == 'win32': + base = 'Win32GUI' + +build_exe_options = dict( + build_exe="dist", + optimize=1, + includes=["enchant.tokenize.en"], # This is not handled automatically by cx_freeze. + include_msvcr=False, + replace_paths = [("*", "")], + include_files=["icon.ico", "app-configuration.defaults", "mastodon.defaults", "keymaps", "locales", "sounds", "documentation", find_sound_lib_datafiles(), find_accessible_output2_datafiles()]+get_architecture_files(), + packages=["wxUI"], + bin_path_excludes=["C:\\Program Files", "C:\Program Files (x86)"], +) + +executables = [ + Executable('main.py', base=base, target_name="twblue") +] + +winmsvcr.FILES = () +winmsvcr.FILES_TO_DUPLICATE = () +setup(name=application.name, + version=application.version, + description=application.description, + options = {"build_exe": build_exe_options}, + executables=executables + ) diff --git a/srcantiguo/sound.py b/srcantiguo/sound.py new file mode 100644 index 00000000..7b6e770a --- /dev/null +++ b/srcantiguo/sound.py @@ -0,0 +1,168 @@ +# -*- coding: utf-8 -*- +import os +import logging as original_logger +import sys +import subprocess +import platform +import tempfile +import glob +import audio_services +import paths +import sound_lib +import output +from audio_services import youtube_utils +import application +system = platform.system() +if system=="Windows" and not hasattr(sys, 'frozen'): # We are running from source on Windows + current_dir=os.getcwd() + os.chdir(os.environ['PYTHON_VLC_MODULE_PATH']) +import vlc +if system=="Windows" and not hasattr(sys, 'frozen'): # Restore the original folder + os.chdir(current_dir) +import sound_lib.output, sound_lib.input, sound_lib.stream, sound_lib.recording +from mysc.repeating_timer import RepeatingTimer +from mysc.thread_utils import call_threaded + +URLPlayer = None + +log = original_logger.getLogger("sound") + +def setup(): + global URLPlayer + if not URLPlayer: + log.debug("creating stream URL player...") + URLPlayer = URLStream() + +def recode_audio(filename, quality=4.5): + global system + if system == "Windows": subprocess.call(r'"%s" -q %r "%s"' % (os.path.join(paths.app_path(), 'oggenc2.exe'), quality, filename)) + +def recording(filename): + # try: + val = sound_lib.recording.WaveRecording(filename=filename) +# except sound_lib.main.BassError: +# sound_lib.input.Input() +# val = sound_lib.recording.WaveRecording(filename=filename) + return val + +class soundSystem(object): + + def check_soundpack(self): + """ Checks if the folder where live the current soundpack exists.""" + self.soundpack_OK = False + if os.path.exists(os.path.join(paths.sound_path(), self.config["current_soundpack"])): + self.path = os.path.join(paths.sound_path(), self.config["current_soundpack"]) + self.soundpack_OK = True + elif os.path.exists(os.path.join(paths.sound_path(), "default")): + log.error("The soundpack does not exist, using default...") + self.path = os.path.join(paths.sound_path(), "default") + self.soundpack_OK = True + else: + log.error("The current soundpack could not be found and the default soundpack has been deleted, " + application.name + " will not play sounds.") + self.soundpack_OK = False + + def __init__(self, soundConfig): + """ Sound Player.""" + self.config = soundConfig + # Set the output and input default devices. + try: + self.output = sound_lib.output.Output() + self.input = sound_lib.input.Input() + except: + pass + # Try to use the selected device from the configuration. It can fail if the machine does not has a mic. + try: + log.debug("Setting input and output devices...") + self.output.set_device(self.output.find_device_by_name(self.config["output_device"])) + self.input.set_device(self.input.find_device_by_name(self.config["input_device"])) + except: + log.error("Error in input or output devices, using defaults...") + self.config["output_device"] = "Default" + self.config["input_device"] = "Default" + + self.files = [] + self.cleaner = RepeatingTimer(60, self.clear_list) + self.cleaner.start() + self.check_soundpack() + + def clear_list(self): + if len(self.files) == 0: return + try: + for i in range(0, len(self.files)): + if self.files[i].is_playing == False: + self.files[i].free() + self.files.pop(i) + except IndexError: + pass + + def play(self, sound, argument=False): + if self.soundpack_OK == False: return + if self.config["session_mute"] == True: return + sound_object = sound_lib.stream.FileStream(file="%s/%s" % (self.path, sound)) + sound_object.volume = float(self.config["volume"]) + self.files.append(sound_object) + sound_object.play() + +class URLStream(object): + """ URL Stream Player implementation.""" + + def __init__(self): + # URL status. Should be True after URL expansion and transformation. + self.prepared = False + log.debug("URL Player initialized") + # LibVLC controls. + self.instance = vlc.Instance("--quiet") + self.instance.log_unset() + self.player = self.instance.media_player_new() + self.event_manager = self.player.event_manager() + self.event_manager.event_attach(vlc.EventType.MediaPlayerEndReached, self.end_callback) + + def prepare(self, url): + """ Takes an URL and prepares it to be streamed. This function will try to unshorten the passed URL and, if needed, to transform it into a valid URL.""" + log.debug("Preparing URL: %s" % (url,)) + self.prepared = False + self.url = url + if self.url == None: + self.url = url + log.debug("Expanded URL: %s" % (self.url,)) + if self.url != None: + transformer = audio_services.find_url_transformer(self.url) + transformed_url = transformer(self.url) + self.url = transformed_url + log.debug("Transformed URL: %s. Prepared" % (self.url,)) + self.prepared = True + + def seek(self, step): + pos=self.player.get_time() + pos+=step + pos=self.player.set_time(pos) + + def playpause(self): + if self.player.is_playing() == True: + self.player.pause() + else: + self.player.play() + + def play(self, url=None, volume=1.0, announce=True): + if announce: + output.speak(_(u"Playing...")) + log.debug("Attempting to play an URL...") + if url != None: + self.prepare(url) + if self.prepared == True: + media = self.instance.media_new(self.url) + self.player.set_media(media) + self.player.audio_set_volume(int(volume*100)) + self.player.play() + log.debug("played") + self.prepared=False + + def stop_audio(self): + output.speak(_(u"Stopped."), True) + self.player.stop() + + def end_callback(self, event, *args, **kwargs): + call_threaded(self.player.stop) + + def __del__(self): + self.event_manager.event_detach(vlc.EventType.MediaPlayerEndReached) \ No newline at end of file diff --git a/srcantiguo/sounds/FightingGames/audio.ogg b/srcantiguo/sounds/FightingGames/audio.ogg new file mode 100644 index 00000000..7a1b8779 Binary files /dev/null and b/srcantiguo/sounds/FightingGames/audio.ogg differ diff --git a/srcantiguo/sounds/FightingGames/create_timeline.ogg b/srcantiguo/sounds/FightingGames/create_timeline.ogg new file mode 100644 index 00000000..a56e5f8b Binary files /dev/null and b/srcantiguo/sounds/FightingGames/create_timeline.ogg differ diff --git a/srcantiguo/sounds/FightingGames/delete_timeline.ogg b/srcantiguo/sounds/FightingGames/delete_timeline.ogg new file mode 100644 index 00000000..735ea90d Binary files /dev/null and b/srcantiguo/sounds/FightingGames/delete_timeline.ogg differ diff --git a/srcantiguo/sounds/FightingGames/dm_received.ogg b/srcantiguo/sounds/FightingGames/dm_received.ogg new file mode 100644 index 00000000..4f89e542 Binary files /dev/null and b/srcantiguo/sounds/FightingGames/dm_received.ogg differ diff --git a/srcantiguo/sounds/FightingGames/dm_sent.ogg b/srcantiguo/sounds/FightingGames/dm_sent.ogg new file mode 100644 index 00000000..fbf0503d Binary files /dev/null and b/srcantiguo/sounds/FightingGames/dm_sent.ogg differ diff --git a/srcantiguo/sounds/FightingGames/error.ogg b/srcantiguo/sounds/FightingGames/error.ogg new file mode 100644 index 00000000..6e1571d5 Binary files /dev/null and b/srcantiguo/sounds/FightingGames/error.ogg differ diff --git a/srcantiguo/sounds/FightingGames/favourite.ogg b/srcantiguo/sounds/FightingGames/favourite.ogg new file mode 100644 index 00000000..f47c6513 Binary files /dev/null and b/srcantiguo/sounds/FightingGames/favourite.ogg differ diff --git a/srcantiguo/sounds/FightingGames/favourites_timeline_updated.ogg b/srcantiguo/sounds/FightingGames/favourites_timeline_updated.ogg new file mode 100644 index 00000000..0bea3b84 Binary files /dev/null and b/srcantiguo/sounds/FightingGames/favourites_timeline_updated.ogg differ diff --git a/srcantiguo/sounds/FightingGames/geo.ogg b/srcantiguo/sounds/FightingGames/geo.ogg new file mode 100644 index 00000000..5fd3c74e Binary files /dev/null and b/srcantiguo/sounds/FightingGames/geo.ogg differ diff --git a/srcantiguo/sounds/FightingGames/image.ogg b/srcantiguo/sounds/FightingGames/image.ogg new file mode 100644 index 00000000..80cc1188 Binary files /dev/null and b/srcantiguo/sounds/FightingGames/image.ogg differ diff --git a/srcantiguo/sounds/FightingGames/limit.ogg b/srcantiguo/sounds/FightingGames/limit.ogg new file mode 100644 index 00000000..48520461 Binary files /dev/null and b/srcantiguo/sounds/FightingGames/limit.ogg differ diff --git a/srcantiguo/sounds/FightingGames/list_tweet.ogg b/srcantiguo/sounds/FightingGames/list_tweet.ogg new file mode 100644 index 00000000..8c7506e2 Binary files /dev/null and b/srcantiguo/sounds/FightingGames/list_tweet.ogg differ diff --git a/srcantiguo/sounds/FightingGames/max_length.ogg b/srcantiguo/sounds/FightingGames/max_length.ogg new file mode 100644 index 00000000..14bfd70e Binary files /dev/null and b/srcantiguo/sounds/FightingGames/max_length.ogg differ diff --git a/srcantiguo/sounds/FightingGames/mention_received.ogg b/srcantiguo/sounds/FightingGames/mention_received.ogg new file mode 100644 index 00000000..7f3172cc Binary files /dev/null and b/srcantiguo/sounds/FightingGames/mention_received.ogg differ diff --git a/srcantiguo/sounds/FightingGames/new_event.ogg b/srcantiguo/sounds/FightingGames/new_event.ogg new file mode 100644 index 00000000..92660ae8 Binary files /dev/null and b/srcantiguo/sounds/FightingGames/new_event.ogg differ diff --git a/srcantiguo/sounds/FightingGames/ready.ogg b/srcantiguo/sounds/FightingGames/ready.ogg new file mode 100644 index 00000000..8d6d1a44 Binary files /dev/null and b/srcantiguo/sounds/FightingGames/ready.ogg differ diff --git a/srcantiguo/sounds/FightingGames/reply_send.ogg b/srcantiguo/sounds/FightingGames/reply_send.ogg new file mode 100644 index 00000000..deda1770 Binary files /dev/null and b/srcantiguo/sounds/FightingGames/reply_send.ogg differ diff --git a/srcantiguo/sounds/FightingGames/retweet_send.ogg b/srcantiguo/sounds/FightingGames/retweet_send.ogg new file mode 100644 index 00000000..5b7e704a Binary files /dev/null and b/srcantiguo/sounds/FightingGames/retweet_send.ogg differ diff --git a/srcantiguo/sounds/FightingGames/search_updated.ogg b/srcantiguo/sounds/FightingGames/search_updated.ogg new file mode 100644 index 00000000..13cbb9f4 Binary files /dev/null and b/srcantiguo/sounds/FightingGames/search_updated.ogg differ diff --git a/srcantiguo/sounds/FightingGames/sound notes.txt b/srcantiguo/sounds/FightingGames/sound notes.txt new file mode 100644 index 00000000..91edbbdc --- /dev/null +++ b/srcantiguo/sounds/FightingGames/sound notes.txt @@ -0,0 +1 @@ +These sounds do not belong to us; they are the property of their original creators. \ No newline at end of file diff --git a/srcantiguo/sounds/FightingGames/trends_updated.ogg b/srcantiguo/sounds/FightingGames/trends_updated.ogg new file mode 100644 index 00000000..ccf10867 Binary files /dev/null and b/srcantiguo/sounds/FightingGames/trends_updated.ogg differ diff --git a/srcantiguo/sounds/FightingGames/tweet_received.ogg b/srcantiguo/sounds/FightingGames/tweet_received.ogg new file mode 100644 index 00000000..c8f0df99 Binary files /dev/null and b/srcantiguo/sounds/FightingGames/tweet_received.ogg differ diff --git a/srcantiguo/sounds/FightingGames/tweet_send.ogg b/srcantiguo/sounds/FightingGames/tweet_send.ogg new file mode 100644 index 00000000..eed6f7c9 Binary files /dev/null and b/srcantiguo/sounds/FightingGames/tweet_send.ogg differ diff --git a/srcantiguo/sounds/FightingGames/tweet_timeline.ogg b/srcantiguo/sounds/FightingGames/tweet_timeline.ogg new file mode 100644 index 00000000..90c68f9e Binary files /dev/null and b/srcantiguo/sounds/FightingGames/tweet_timeline.ogg differ diff --git a/srcantiguo/sounds/FightingGames/update_followers.ogg b/srcantiguo/sounds/FightingGames/update_followers.ogg new file mode 100644 index 00000000..997cd22e Binary files /dev/null and b/srcantiguo/sounds/FightingGames/update_followers.ogg differ diff --git a/srcantiguo/sounds/FightingGames/volume_changed.ogg b/srcantiguo/sounds/FightingGames/volume_changed.ogg new file mode 100644 index 00000000..495e255d Binary files /dev/null and b/srcantiguo/sounds/FightingGames/volume_changed.ogg differ diff --git a/srcantiguo/sounds/FreakyBlue/Image.ogg b/srcantiguo/sounds/FreakyBlue/Image.ogg new file mode 100644 index 00000000..81ad0b1d Binary files /dev/null and b/srcantiguo/sounds/FreakyBlue/Image.ogg differ diff --git a/srcantiguo/sounds/FreakyBlue/audio.ogg b/srcantiguo/sounds/FreakyBlue/audio.ogg new file mode 100644 index 00000000..70d79ca5 Binary files /dev/null and b/srcantiguo/sounds/FreakyBlue/audio.ogg differ diff --git a/srcantiguo/sounds/FreakyBlue/create_timeline.ogg b/srcantiguo/sounds/FreakyBlue/create_timeline.ogg new file mode 100644 index 00000000..d27be728 Binary files /dev/null and b/srcantiguo/sounds/FreakyBlue/create_timeline.ogg differ diff --git a/srcantiguo/sounds/FreakyBlue/delete_timeline.ogg b/srcantiguo/sounds/FreakyBlue/delete_timeline.ogg new file mode 100644 index 00000000..35443d2d Binary files /dev/null and b/srcantiguo/sounds/FreakyBlue/delete_timeline.ogg differ diff --git a/srcantiguo/sounds/FreakyBlue/dm_received.ogg b/srcantiguo/sounds/FreakyBlue/dm_received.ogg new file mode 100644 index 00000000..4e716ff2 Binary files /dev/null and b/srcantiguo/sounds/FreakyBlue/dm_received.ogg differ diff --git a/srcantiguo/sounds/FreakyBlue/dm_sent.ogg b/srcantiguo/sounds/FreakyBlue/dm_sent.ogg new file mode 100644 index 00000000..e282d854 Binary files /dev/null and b/srcantiguo/sounds/FreakyBlue/dm_sent.ogg differ diff --git a/srcantiguo/sounds/FreakyBlue/error.ogg b/srcantiguo/sounds/FreakyBlue/error.ogg new file mode 100644 index 00000000..2891921f Binary files /dev/null and b/srcantiguo/sounds/FreakyBlue/error.ogg differ diff --git a/srcantiguo/sounds/FreakyBlue/favourite.ogg b/srcantiguo/sounds/FreakyBlue/favourite.ogg new file mode 100644 index 00000000..36146d97 Binary files /dev/null and b/srcantiguo/sounds/FreakyBlue/favourite.ogg differ diff --git a/srcantiguo/sounds/FreakyBlue/favourites_timeline_updated.ogg b/srcantiguo/sounds/FreakyBlue/favourites_timeline_updated.ogg new file mode 100644 index 00000000..a2cda8ae Binary files /dev/null and b/srcantiguo/sounds/FreakyBlue/favourites_timeline_updated.ogg differ diff --git a/srcantiguo/sounds/FreakyBlue/geo.ogg b/srcantiguo/sounds/FreakyBlue/geo.ogg new file mode 100644 index 00000000..890ccc31 Binary files /dev/null and b/srcantiguo/sounds/FreakyBlue/geo.ogg differ diff --git a/srcantiguo/sounds/FreakyBlue/limit.ogg b/srcantiguo/sounds/FreakyBlue/limit.ogg new file mode 100644 index 00000000..01a250b7 Binary files /dev/null and b/srcantiguo/sounds/FreakyBlue/limit.ogg differ diff --git a/srcantiguo/sounds/FreakyBlue/list_tweet.ogg b/srcantiguo/sounds/FreakyBlue/list_tweet.ogg new file mode 100644 index 00000000..ac2a6d49 Binary files /dev/null and b/srcantiguo/sounds/FreakyBlue/list_tweet.ogg differ diff --git a/srcantiguo/sounds/FreakyBlue/max_length.ogg b/srcantiguo/sounds/FreakyBlue/max_length.ogg new file mode 100644 index 00000000..895d48f7 Binary files /dev/null and b/srcantiguo/sounds/FreakyBlue/max_length.ogg differ diff --git a/srcantiguo/sounds/FreakyBlue/mention_received.ogg b/srcantiguo/sounds/FreakyBlue/mention_received.ogg new file mode 100644 index 00000000..48a34402 Binary files /dev/null and b/srcantiguo/sounds/FreakyBlue/mention_received.ogg differ diff --git a/srcantiguo/sounds/FreakyBlue/new_event.ogg b/srcantiguo/sounds/FreakyBlue/new_event.ogg new file mode 100644 index 00000000..42fb3c18 Binary files /dev/null and b/srcantiguo/sounds/FreakyBlue/new_event.ogg differ diff --git a/srcantiguo/sounds/FreakyBlue/ready.ogg b/srcantiguo/sounds/FreakyBlue/ready.ogg new file mode 100644 index 00000000..0b8a992c Binary files /dev/null and b/srcantiguo/sounds/FreakyBlue/ready.ogg differ diff --git a/srcantiguo/sounds/FreakyBlue/reply_send.ogg b/srcantiguo/sounds/FreakyBlue/reply_send.ogg new file mode 100644 index 00000000..236ce312 Binary files /dev/null and b/srcantiguo/sounds/FreakyBlue/reply_send.ogg differ diff --git a/srcantiguo/sounds/FreakyBlue/retweet_send.ogg b/srcantiguo/sounds/FreakyBlue/retweet_send.ogg new file mode 100644 index 00000000..8cd79172 Binary files /dev/null and b/srcantiguo/sounds/FreakyBlue/retweet_send.ogg differ diff --git a/srcantiguo/sounds/FreakyBlue/search_updated.ogg b/srcantiguo/sounds/FreakyBlue/search_updated.ogg new file mode 100644 index 00000000..c7abcb1f Binary files /dev/null and b/srcantiguo/sounds/FreakyBlue/search_updated.ogg differ diff --git a/srcantiguo/sounds/FreakyBlue/trends_updated.ogg b/srcantiguo/sounds/FreakyBlue/trends_updated.ogg new file mode 100644 index 00000000..0b850b9e Binary files /dev/null and b/srcantiguo/sounds/FreakyBlue/trends_updated.ogg differ diff --git a/srcantiguo/sounds/FreakyBlue/tweet_received.ogg b/srcantiguo/sounds/FreakyBlue/tweet_received.ogg new file mode 100644 index 00000000..5db020ca Binary files /dev/null and b/srcantiguo/sounds/FreakyBlue/tweet_received.ogg differ diff --git a/srcantiguo/sounds/FreakyBlue/tweet_send.ogg b/srcantiguo/sounds/FreakyBlue/tweet_send.ogg new file mode 100644 index 00000000..5bf1b9b8 Binary files /dev/null and b/srcantiguo/sounds/FreakyBlue/tweet_send.ogg differ diff --git a/srcantiguo/sounds/FreakyBlue/tweet_timeline.ogg b/srcantiguo/sounds/FreakyBlue/tweet_timeline.ogg new file mode 100644 index 00000000..8e268dec Binary files /dev/null and b/srcantiguo/sounds/FreakyBlue/tweet_timeline.ogg differ diff --git a/srcantiguo/sounds/FreakyBlue/update_followers.ogg b/srcantiguo/sounds/FreakyBlue/update_followers.ogg new file mode 100644 index 00000000..c3486e2b Binary files /dev/null and b/srcantiguo/sounds/FreakyBlue/update_followers.ogg differ diff --git a/srcantiguo/sounds/FreakyBlue/volume_changed.ogg b/srcantiguo/sounds/FreakyBlue/volume_changed.ogg new file mode 100644 index 00000000..aadc4d89 Binary files /dev/null and b/srcantiguo/sounds/FreakyBlue/volume_changed.ogg differ diff --git a/srcantiguo/sounds/Magical Fountain/audio.ogg b/srcantiguo/sounds/Magical Fountain/audio.ogg new file mode 100644 index 00000000..ff790761 Binary files /dev/null and b/srcantiguo/sounds/Magical Fountain/audio.ogg differ diff --git a/srcantiguo/sounds/Magical Fountain/create_timeline.ogg b/srcantiguo/sounds/Magical Fountain/create_timeline.ogg new file mode 100644 index 00000000..3c4b4317 Binary files /dev/null and b/srcantiguo/sounds/Magical Fountain/create_timeline.ogg differ diff --git a/srcantiguo/sounds/Magical Fountain/delete_timeline.ogg b/srcantiguo/sounds/Magical Fountain/delete_timeline.ogg new file mode 100644 index 00000000..4ca725fa Binary files /dev/null and b/srcantiguo/sounds/Magical Fountain/delete_timeline.ogg differ diff --git a/srcantiguo/sounds/Magical Fountain/dm_received.ogg b/srcantiguo/sounds/Magical Fountain/dm_received.ogg new file mode 100644 index 00000000..a5b067c0 Binary files /dev/null and b/srcantiguo/sounds/Magical Fountain/dm_received.ogg differ diff --git a/srcantiguo/sounds/Magical Fountain/dm_sent.ogg b/srcantiguo/sounds/Magical Fountain/dm_sent.ogg new file mode 100644 index 00000000..85b45160 Binary files /dev/null and b/srcantiguo/sounds/Magical Fountain/dm_sent.ogg differ diff --git a/srcantiguo/sounds/Magical Fountain/error.ogg b/srcantiguo/sounds/Magical Fountain/error.ogg new file mode 100644 index 00000000..1dd4b417 Binary files /dev/null and b/srcantiguo/sounds/Magical Fountain/error.ogg differ diff --git a/srcantiguo/sounds/Magical Fountain/favourite.ogg b/srcantiguo/sounds/Magical Fountain/favourite.ogg new file mode 100644 index 00000000..32889f3c Binary files /dev/null and b/srcantiguo/sounds/Magical Fountain/favourite.ogg differ diff --git a/srcantiguo/sounds/Magical Fountain/favourites_timeline_updated.ogg b/srcantiguo/sounds/Magical Fountain/favourites_timeline_updated.ogg new file mode 100644 index 00000000..9287210b Binary files /dev/null and b/srcantiguo/sounds/Magical Fountain/favourites_timeline_updated.ogg differ diff --git a/srcantiguo/sounds/Magical Fountain/geo.ogg b/srcantiguo/sounds/Magical Fountain/geo.ogg new file mode 100644 index 00000000..494ff6fc Binary files /dev/null and b/srcantiguo/sounds/Magical Fountain/geo.ogg differ diff --git a/srcantiguo/sounds/Magical Fountain/image.ogg b/srcantiguo/sounds/Magical Fountain/image.ogg new file mode 100644 index 00000000..35ba20ae Binary files /dev/null and b/srcantiguo/sounds/Magical Fountain/image.ogg differ diff --git a/srcantiguo/sounds/Magical Fountain/limit.ogg b/srcantiguo/sounds/Magical Fountain/limit.ogg new file mode 100644 index 00000000..89fdc2c7 Binary files /dev/null and b/srcantiguo/sounds/Magical Fountain/limit.ogg differ diff --git a/srcantiguo/sounds/Magical Fountain/list_tweet.ogg b/srcantiguo/sounds/Magical Fountain/list_tweet.ogg new file mode 100644 index 00000000..868c8319 Binary files /dev/null and b/srcantiguo/sounds/Magical Fountain/list_tweet.ogg differ diff --git a/srcantiguo/sounds/Magical Fountain/max_length.ogg b/srcantiguo/sounds/Magical Fountain/max_length.ogg new file mode 100644 index 00000000..b9e769c3 Binary files /dev/null and b/srcantiguo/sounds/Magical Fountain/max_length.ogg differ diff --git a/srcantiguo/sounds/Magical Fountain/mention_received.ogg b/srcantiguo/sounds/Magical Fountain/mention_received.ogg new file mode 100644 index 00000000..9acf192c Binary files /dev/null and b/srcantiguo/sounds/Magical Fountain/mention_received.ogg differ diff --git a/srcantiguo/sounds/Magical Fountain/new_event.ogg b/srcantiguo/sounds/Magical Fountain/new_event.ogg new file mode 100644 index 00000000..0f9fe23d Binary files /dev/null and b/srcantiguo/sounds/Magical Fountain/new_event.ogg differ diff --git a/srcantiguo/sounds/Magical Fountain/ready.ogg b/srcantiguo/sounds/Magical Fountain/ready.ogg new file mode 100644 index 00000000..5564cbb0 Binary files /dev/null and b/srcantiguo/sounds/Magical Fountain/ready.ogg differ diff --git a/srcantiguo/sounds/Magical Fountain/reply_send.ogg b/srcantiguo/sounds/Magical Fountain/reply_send.ogg new file mode 100644 index 00000000..902c44b2 Binary files /dev/null and b/srcantiguo/sounds/Magical Fountain/reply_send.ogg differ diff --git a/srcantiguo/sounds/Magical Fountain/retweet_send.ogg b/srcantiguo/sounds/Magical Fountain/retweet_send.ogg new file mode 100644 index 00000000..e26a9e16 Binary files /dev/null and b/srcantiguo/sounds/Magical Fountain/retweet_send.ogg differ diff --git a/srcantiguo/sounds/Magical Fountain/search_updated.ogg b/srcantiguo/sounds/Magical Fountain/search_updated.ogg new file mode 100644 index 00000000..027610cd Binary files /dev/null and b/srcantiguo/sounds/Magical Fountain/search_updated.ogg differ diff --git a/srcantiguo/sounds/Magical Fountain/trends_updated.ogg b/srcantiguo/sounds/Magical Fountain/trends_updated.ogg new file mode 100644 index 00000000..d4df13c3 Binary files /dev/null and b/srcantiguo/sounds/Magical Fountain/trends_updated.ogg differ diff --git a/srcantiguo/sounds/Magical Fountain/tweet_received.ogg b/srcantiguo/sounds/Magical Fountain/tweet_received.ogg new file mode 100644 index 00000000..74cebf1e Binary files /dev/null and b/srcantiguo/sounds/Magical Fountain/tweet_received.ogg differ diff --git a/srcantiguo/sounds/Magical Fountain/tweet_send.ogg b/srcantiguo/sounds/Magical Fountain/tweet_send.ogg new file mode 100644 index 00000000..93508caa Binary files /dev/null and b/srcantiguo/sounds/Magical Fountain/tweet_send.ogg differ diff --git a/srcantiguo/sounds/Magical Fountain/tweet_timeline.ogg b/srcantiguo/sounds/Magical Fountain/tweet_timeline.ogg new file mode 100644 index 00000000..c93c1549 Binary files /dev/null and b/srcantiguo/sounds/Magical Fountain/tweet_timeline.ogg differ diff --git a/srcantiguo/sounds/Magical Fountain/update_followers.ogg b/srcantiguo/sounds/Magical Fountain/update_followers.ogg new file mode 100644 index 00000000..eee1835c Binary files /dev/null and b/srcantiguo/sounds/Magical Fountain/update_followers.ogg differ diff --git a/srcantiguo/sounds/Magical Fountain/volume_changed.ogg b/srcantiguo/sounds/Magical Fountain/volume_changed.ogg new file mode 100644 index 00000000..f9cc0082 Binary files /dev/null and b/srcantiguo/sounds/Magical Fountain/volume_changed.ogg differ diff --git a/srcantiguo/sounds/Qwitter/audio.ogg b/srcantiguo/sounds/Qwitter/audio.ogg new file mode 100644 index 00000000..b923eadf Binary files /dev/null and b/srcantiguo/sounds/Qwitter/audio.ogg differ diff --git a/srcantiguo/sounds/Qwitter/create_timeline.ogg b/srcantiguo/sounds/Qwitter/create_timeline.ogg new file mode 100644 index 00000000..6b6a725f Binary files /dev/null and b/srcantiguo/sounds/Qwitter/create_timeline.ogg differ diff --git a/srcantiguo/sounds/Qwitter/delete_timeline.ogg b/srcantiguo/sounds/Qwitter/delete_timeline.ogg new file mode 100644 index 00000000..85ad1e7f Binary files /dev/null and b/srcantiguo/sounds/Qwitter/delete_timeline.ogg differ diff --git a/srcantiguo/sounds/Qwitter/dm_received.ogg b/srcantiguo/sounds/Qwitter/dm_received.ogg new file mode 100644 index 00000000..7b8cef06 Binary files /dev/null and b/srcantiguo/sounds/Qwitter/dm_received.ogg differ diff --git a/srcantiguo/sounds/Qwitter/dm_sent.ogg b/srcantiguo/sounds/Qwitter/dm_sent.ogg new file mode 100644 index 00000000..0f9c6e2c Binary files /dev/null and b/srcantiguo/sounds/Qwitter/dm_sent.ogg differ diff --git a/srcantiguo/sounds/Qwitter/error.ogg b/srcantiguo/sounds/Qwitter/error.ogg new file mode 100644 index 00000000..67b83f68 Binary files /dev/null and b/srcantiguo/sounds/Qwitter/error.ogg differ diff --git a/srcantiguo/sounds/Qwitter/favourite.ogg b/srcantiguo/sounds/Qwitter/favourite.ogg new file mode 100644 index 00000000..72a4627b Binary files /dev/null and b/srcantiguo/sounds/Qwitter/favourite.ogg differ diff --git a/srcantiguo/sounds/Qwitter/favourites_timeline_updated.ogg b/srcantiguo/sounds/Qwitter/favourites_timeline_updated.ogg new file mode 100644 index 00000000..20d92b1a Binary files /dev/null and b/srcantiguo/sounds/Qwitter/favourites_timeline_updated.ogg differ diff --git a/srcantiguo/sounds/Qwitter/geo.ogg b/srcantiguo/sounds/Qwitter/geo.ogg new file mode 100644 index 00000000..a06f4e5e Binary files /dev/null and b/srcantiguo/sounds/Qwitter/geo.ogg differ diff --git a/srcantiguo/sounds/Qwitter/image.ogg b/srcantiguo/sounds/Qwitter/image.ogg new file mode 100644 index 00000000..e43df52f Binary files /dev/null and b/srcantiguo/sounds/Qwitter/image.ogg differ diff --git a/srcantiguo/sounds/Qwitter/limit.ogg b/srcantiguo/sounds/Qwitter/limit.ogg new file mode 100644 index 00000000..58523387 Binary files /dev/null and b/srcantiguo/sounds/Qwitter/limit.ogg differ diff --git a/srcantiguo/sounds/Qwitter/list_tweet.ogg b/srcantiguo/sounds/Qwitter/list_tweet.ogg new file mode 100644 index 00000000..b043a957 Binary files /dev/null and b/srcantiguo/sounds/Qwitter/list_tweet.ogg differ diff --git a/srcantiguo/sounds/Qwitter/max_length.ogg b/srcantiguo/sounds/Qwitter/max_length.ogg new file mode 100644 index 00000000..f1f11864 Binary files /dev/null and b/srcantiguo/sounds/Qwitter/max_length.ogg differ diff --git a/srcantiguo/sounds/Qwitter/mention_received.ogg b/srcantiguo/sounds/Qwitter/mention_received.ogg new file mode 100644 index 00000000..9439517c Binary files /dev/null and b/srcantiguo/sounds/Qwitter/mention_received.ogg differ diff --git a/srcantiguo/sounds/Qwitter/new_event.ogg b/srcantiguo/sounds/Qwitter/new_event.ogg new file mode 100644 index 00000000..2481d8f1 Binary files /dev/null and b/srcantiguo/sounds/Qwitter/new_event.ogg differ diff --git a/srcantiguo/sounds/Qwitter/ready.ogg b/srcantiguo/sounds/Qwitter/ready.ogg new file mode 100644 index 00000000..62c892ae Binary files /dev/null and b/srcantiguo/sounds/Qwitter/ready.ogg differ diff --git a/srcantiguo/sounds/Qwitter/reply_send.ogg b/srcantiguo/sounds/Qwitter/reply_send.ogg new file mode 100644 index 00000000..6ea99f85 Binary files /dev/null and b/srcantiguo/sounds/Qwitter/reply_send.ogg differ diff --git a/srcantiguo/sounds/Qwitter/retweet_send.ogg b/srcantiguo/sounds/Qwitter/retweet_send.ogg new file mode 100644 index 00000000..9b0ef156 Binary files /dev/null and b/srcantiguo/sounds/Qwitter/retweet_send.ogg differ diff --git a/srcantiguo/sounds/Qwitter/search_updated.ogg b/srcantiguo/sounds/Qwitter/search_updated.ogg new file mode 100644 index 00000000..b0f91df1 Binary files /dev/null and b/srcantiguo/sounds/Qwitter/search_updated.ogg differ diff --git a/srcantiguo/sounds/Qwitter/sound notes.txt b/srcantiguo/sounds/Qwitter/sound notes.txt new file mode 100644 index 00000000..74189097 --- /dev/null +++ b/srcantiguo/sounds/Qwitter/sound notes.txt @@ -0,0 +1,2 @@ +These sounds do not belong to us; they are the property of their original creators. +This soundpack was adapted for TWBlue by Bill Dengler (@codeofdusk on Twitter). \ No newline at end of file diff --git a/srcantiguo/sounds/Qwitter/trends_updated.ogg b/srcantiguo/sounds/Qwitter/trends_updated.ogg new file mode 100644 index 00000000..2bf8fa12 Binary files /dev/null and b/srcantiguo/sounds/Qwitter/trends_updated.ogg differ diff --git a/srcantiguo/sounds/Qwitter/tweet_received.ogg b/srcantiguo/sounds/Qwitter/tweet_received.ogg new file mode 100644 index 00000000..7efdbdc8 Binary files /dev/null and b/srcantiguo/sounds/Qwitter/tweet_received.ogg differ diff --git a/srcantiguo/sounds/Qwitter/tweet_send.ogg b/srcantiguo/sounds/Qwitter/tweet_send.ogg new file mode 100644 index 00000000..9e1d973b Binary files /dev/null and b/srcantiguo/sounds/Qwitter/tweet_send.ogg differ diff --git a/srcantiguo/sounds/Qwitter/tweet_timeline.ogg b/srcantiguo/sounds/Qwitter/tweet_timeline.ogg new file mode 100644 index 00000000..c9735e54 Binary files /dev/null and b/srcantiguo/sounds/Qwitter/tweet_timeline.ogg differ diff --git a/srcantiguo/sounds/Qwitter/update_followers.ogg b/srcantiguo/sounds/Qwitter/update_followers.ogg new file mode 100644 index 00000000..88edd428 Binary files /dev/null and b/srcantiguo/sounds/Qwitter/update_followers.ogg differ diff --git a/srcantiguo/sounds/Qwitter/volume_changed.ogg b/srcantiguo/sounds/Qwitter/volume_changed.ogg new file mode 100644 index 00000000..bf9716e7 Binary files /dev/null and b/srcantiguo/sounds/Qwitter/volume_changed.ogg differ diff --git a/srcantiguo/sounds/classic/audio.ogg b/srcantiguo/sounds/classic/audio.ogg new file mode 100644 index 00000000..d3c30dd9 Binary files /dev/null and b/srcantiguo/sounds/classic/audio.ogg differ diff --git a/srcantiguo/sounds/classic/create_timeline.ogg b/srcantiguo/sounds/classic/create_timeline.ogg new file mode 100644 index 00000000..a7a972c3 Binary files /dev/null and b/srcantiguo/sounds/classic/create_timeline.ogg differ diff --git a/srcantiguo/sounds/classic/delete_timeline.ogg b/srcantiguo/sounds/classic/delete_timeline.ogg new file mode 100644 index 00000000..437a1fd5 Binary files /dev/null and b/srcantiguo/sounds/classic/delete_timeline.ogg differ diff --git a/srcantiguo/sounds/classic/dm_received.ogg b/srcantiguo/sounds/classic/dm_received.ogg new file mode 100644 index 00000000..01062fb1 Binary files /dev/null and b/srcantiguo/sounds/classic/dm_received.ogg differ diff --git a/srcantiguo/sounds/classic/dm_sent.ogg b/srcantiguo/sounds/classic/dm_sent.ogg new file mode 100644 index 00000000..8d8ffd71 Binary files /dev/null and b/srcantiguo/sounds/classic/dm_sent.ogg differ diff --git a/srcantiguo/sounds/classic/error.ogg b/srcantiguo/sounds/classic/error.ogg new file mode 100644 index 00000000..91c83304 Binary files /dev/null and b/srcantiguo/sounds/classic/error.ogg differ diff --git a/srcantiguo/sounds/classic/favourite.ogg b/srcantiguo/sounds/classic/favourite.ogg new file mode 100644 index 00000000..cd370a42 Binary files /dev/null and b/srcantiguo/sounds/classic/favourite.ogg differ diff --git a/srcantiguo/sounds/classic/favourites_timeline_updated.ogg b/srcantiguo/sounds/classic/favourites_timeline_updated.ogg new file mode 100644 index 00000000..99073b5f Binary files /dev/null and b/srcantiguo/sounds/classic/favourites_timeline_updated.ogg differ diff --git a/srcantiguo/sounds/classic/geo.ogg b/srcantiguo/sounds/classic/geo.ogg new file mode 100644 index 00000000..a06f4e5e Binary files /dev/null and b/srcantiguo/sounds/classic/geo.ogg differ diff --git a/srcantiguo/sounds/classic/image.ogg b/srcantiguo/sounds/classic/image.ogg new file mode 100644 index 00000000..39a32f98 Binary files /dev/null and b/srcantiguo/sounds/classic/image.ogg differ diff --git a/srcantiguo/sounds/classic/limit.ogg b/srcantiguo/sounds/classic/limit.ogg new file mode 100644 index 00000000..379af099 Binary files /dev/null and b/srcantiguo/sounds/classic/limit.ogg differ diff --git a/srcantiguo/sounds/classic/list_tweet.ogg b/srcantiguo/sounds/classic/list_tweet.ogg new file mode 100644 index 00000000..27472f13 Binary files /dev/null and b/srcantiguo/sounds/classic/list_tweet.ogg differ diff --git a/srcantiguo/sounds/classic/max_length.ogg b/srcantiguo/sounds/classic/max_length.ogg new file mode 100644 index 00000000..f5179a55 Binary files /dev/null and b/srcantiguo/sounds/classic/max_length.ogg differ diff --git a/srcantiguo/sounds/classic/mention_received.ogg b/srcantiguo/sounds/classic/mention_received.ogg new file mode 100644 index 00000000..c976eaa5 Binary files /dev/null and b/srcantiguo/sounds/classic/mention_received.ogg differ diff --git a/srcantiguo/sounds/classic/new_event.ogg b/srcantiguo/sounds/classic/new_event.ogg new file mode 100644 index 00000000..e526f925 Binary files /dev/null and b/srcantiguo/sounds/classic/new_event.ogg differ diff --git a/srcantiguo/sounds/classic/ready.ogg b/srcantiguo/sounds/classic/ready.ogg new file mode 100644 index 00000000..aa707789 Binary files /dev/null and b/srcantiguo/sounds/classic/ready.ogg differ diff --git a/srcantiguo/sounds/classic/reply_send.ogg b/srcantiguo/sounds/classic/reply_send.ogg new file mode 100644 index 00000000..34bcfa7e Binary files /dev/null and b/srcantiguo/sounds/classic/reply_send.ogg differ diff --git a/srcantiguo/sounds/classic/retweet_send.ogg b/srcantiguo/sounds/classic/retweet_send.ogg new file mode 100644 index 00000000..37212c9c Binary files /dev/null and b/srcantiguo/sounds/classic/retweet_send.ogg differ diff --git a/srcantiguo/sounds/classic/search_updated.ogg b/srcantiguo/sounds/classic/search_updated.ogg new file mode 100644 index 00000000..1497de5d Binary files /dev/null and b/srcantiguo/sounds/classic/search_updated.ogg differ diff --git a/srcantiguo/sounds/classic/trends_updated.ogg b/srcantiguo/sounds/classic/trends_updated.ogg new file mode 100644 index 00000000..2bf8fa12 Binary files /dev/null and b/srcantiguo/sounds/classic/trends_updated.ogg differ diff --git a/srcantiguo/sounds/classic/tweet_received.ogg b/srcantiguo/sounds/classic/tweet_received.ogg new file mode 100644 index 00000000..acf9a721 Binary files /dev/null and b/srcantiguo/sounds/classic/tweet_received.ogg differ diff --git a/srcantiguo/sounds/classic/tweet_send.ogg b/srcantiguo/sounds/classic/tweet_send.ogg new file mode 100644 index 00000000..d1860162 Binary files /dev/null and b/srcantiguo/sounds/classic/tweet_send.ogg differ diff --git a/srcantiguo/sounds/classic/tweet_timeline.ogg b/srcantiguo/sounds/classic/tweet_timeline.ogg new file mode 100644 index 00000000..1bd6d953 Binary files /dev/null and b/srcantiguo/sounds/classic/tweet_timeline.ogg differ diff --git a/srcantiguo/sounds/classic/update_followers.ogg b/srcantiguo/sounds/classic/update_followers.ogg new file mode 100644 index 00000000..90eae1f3 Binary files /dev/null and b/srcantiguo/sounds/classic/update_followers.ogg differ diff --git a/srcantiguo/sounds/classic/volume_changed.ogg b/srcantiguo/sounds/classic/volume_changed.ogg new file mode 100644 index 00000000..76d855f9 Binary files /dev/null and b/srcantiguo/sounds/classic/volume_changed.ogg differ diff --git a/srcantiguo/sounds/default/audio.ogg b/srcantiguo/sounds/default/audio.ogg new file mode 100644 index 00000000..a97e5908 Binary files /dev/null and b/srcantiguo/sounds/default/audio.ogg differ diff --git a/srcantiguo/sounds/default/create_timeline.ogg b/srcantiguo/sounds/default/create_timeline.ogg new file mode 100644 index 00000000..1dba5059 Binary files /dev/null and b/srcantiguo/sounds/default/create_timeline.ogg differ diff --git a/srcantiguo/sounds/default/delete_timeline.ogg b/srcantiguo/sounds/default/delete_timeline.ogg new file mode 100644 index 00000000..ed41ddf4 Binary files /dev/null and b/srcantiguo/sounds/default/delete_timeline.ogg differ diff --git a/srcantiguo/sounds/default/dm_received.ogg b/srcantiguo/sounds/default/dm_received.ogg new file mode 100644 index 00000000..f7270768 Binary files /dev/null and b/srcantiguo/sounds/default/dm_received.ogg differ diff --git a/srcantiguo/sounds/default/dm_sent.ogg b/srcantiguo/sounds/default/dm_sent.ogg new file mode 100644 index 00000000..11433dde Binary files /dev/null and b/srcantiguo/sounds/default/dm_sent.ogg differ diff --git a/srcantiguo/sounds/default/error.ogg b/srcantiguo/sounds/default/error.ogg new file mode 100644 index 00000000..98361463 Binary files /dev/null and b/srcantiguo/sounds/default/error.ogg differ diff --git a/srcantiguo/sounds/default/favourite.ogg b/srcantiguo/sounds/default/favourite.ogg new file mode 100644 index 00000000..7072adff Binary files /dev/null and b/srcantiguo/sounds/default/favourite.ogg differ diff --git a/srcantiguo/sounds/default/favourites_timeline_updated.ogg b/srcantiguo/sounds/default/favourites_timeline_updated.ogg new file mode 100644 index 00000000..fef34968 Binary files /dev/null and b/srcantiguo/sounds/default/favourites_timeline_updated.ogg differ diff --git a/srcantiguo/sounds/default/geo.ogg b/srcantiguo/sounds/default/geo.ogg new file mode 100644 index 00000000..b452746d Binary files /dev/null and b/srcantiguo/sounds/default/geo.ogg differ diff --git a/srcantiguo/sounds/default/image.ogg b/srcantiguo/sounds/default/image.ogg new file mode 100644 index 00000000..39a32f98 Binary files /dev/null and b/srcantiguo/sounds/default/image.ogg differ diff --git a/srcantiguo/sounds/default/limit.ogg b/srcantiguo/sounds/default/limit.ogg new file mode 100644 index 00000000..be490ae7 Binary files /dev/null and b/srcantiguo/sounds/default/limit.ogg differ diff --git a/srcantiguo/sounds/default/list_tweet.ogg b/srcantiguo/sounds/default/list_tweet.ogg new file mode 100644 index 00000000..cf4bdbbb Binary files /dev/null and b/srcantiguo/sounds/default/list_tweet.ogg differ diff --git a/srcantiguo/sounds/default/max_length.ogg b/srcantiguo/sounds/default/max_length.ogg new file mode 100644 index 00000000..25cc8ec4 Binary files /dev/null and b/srcantiguo/sounds/default/max_length.ogg differ diff --git a/srcantiguo/sounds/default/mention_received.ogg b/srcantiguo/sounds/default/mention_received.ogg new file mode 100644 index 00000000..a3444277 Binary files /dev/null and b/srcantiguo/sounds/default/mention_received.ogg differ diff --git a/srcantiguo/sounds/default/new_event.ogg b/srcantiguo/sounds/default/new_event.ogg new file mode 100644 index 00000000..f9ddb3a3 Binary files /dev/null and b/srcantiguo/sounds/default/new_event.ogg differ diff --git a/srcantiguo/sounds/default/ready.ogg b/srcantiguo/sounds/default/ready.ogg new file mode 100644 index 00000000..6accf28b Binary files /dev/null and b/srcantiguo/sounds/default/ready.ogg differ diff --git a/srcantiguo/sounds/default/reply_send.ogg b/srcantiguo/sounds/default/reply_send.ogg new file mode 100644 index 00000000..6c088404 Binary files /dev/null and b/srcantiguo/sounds/default/reply_send.ogg differ diff --git a/srcantiguo/sounds/default/retweet_send.ogg b/srcantiguo/sounds/default/retweet_send.ogg new file mode 100644 index 00000000..a5332c90 Binary files /dev/null and b/srcantiguo/sounds/default/retweet_send.ogg differ diff --git a/srcantiguo/sounds/default/search_updated.ogg b/srcantiguo/sounds/default/search_updated.ogg new file mode 100644 index 00000000..5000d00c Binary files /dev/null and b/srcantiguo/sounds/default/search_updated.ogg differ diff --git a/srcantiguo/sounds/default/trends_updated.ogg b/srcantiguo/sounds/default/trends_updated.ogg new file mode 100644 index 00000000..3153cda9 Binary files /dev/null and b/srcantiguo/sounds/default/trends_updated.ogg differ diff --git a/srcantiguo/sounds/default/tweet_received.ogg b/srcantiguo/sounds/default/tweet_received.ogg new file mode 100644 index 00000000..099dfff5 Binary files /dev/null and b/srcantiguo/sounds/default/tweet_received.ogg differ diff --git a/srcantiguo/sounds/default/tweet_send.ogg b/srcantiguo/sounds/default/tweet_send.ogg new file mode 100644 index 00000000..b188a6a5 Binary files /dev/null and b/srcantiguo/sounds/default/tweet_send.ogg differ diff --git a/srcantiguo/sounds/default/tweet_timeline.ogg b/srcantiguo/sounds/default/tweet_timeline.ogg new file mode 100644 index 00000000..faf043c5 Binary files /dev/null and b/srcantiguo/sounds/default/tweet_timeline.ogg differ diff --git a/srcantiguo/sounds/default/update_followers.ogg b/srcantiguo/sounds/default/update_followers.ogg new file mode 100644 index 00000000..1196862e Binary files /dev/null and b/srcantiguo/sounds/default/update_followers.ogg differ diff --git a/srcantiguo/sounds/default/volume_changed.ogg b/srcantiguo/sounds/default/volume_changed.ogg new file mode 100644 index 00000000..bf9716e7 Binary files /dev/null and b/srcantiguo/sounds/default/volume_changed.ogg differ diff --git a/srcantiguo/test/__init__.py b/srcantiguo/test/__init__.py new file mode 100644 index 00000000..40a96afc --- /dev/null +++ b/srcantiguo/test/__init__.py @@ -0,0 +1 @@ +# -*- coding: utf-8 -*- diff --git a/srcantiguo/test/sessions/__init__.py b/srcantiguo/test/sessions/__init__.py new file mode 100644 index 00000000..40a96afc --- /dev/null +++ b/srcantiguo/test/sessions/__init__.py @@ -0,0 +1 @@ +# -*- coding: utf-8 -*- diff --git a/srcantiguo/test/sessions/test_base_session.py b/srcantiguo/test/sessions/test_base_session.py new file mode 100644 index 00000000..45756f49 --- /dev/null +++ b/srcantiguo/test/sessions/test_base_session.py @@ -0,0 +1,201 @@ +# -*- coding: utf-8 -*- +import sys +import types +import pytest +import os +import sqlitedict +import shutil +from unittest import mock + +# Mock sound module, so LibVLc won't complain. +sound_module = types.ModuleType("sound") +sys.modules["sound"] = sound_module +sound_module.soundManager = mock.MagicMock(name="sound.soundManager") +from sessions import base + +# path where we will save our test config, as we can't rely on paths module due to pytest's paths being different. +session_path = os.path.join(os.getcwd(), "config", "testing") + +@pytest.fixture +def session(): + """ Configures a fake base session from where we can test things. """ + global session_path + s = base.baseSession("testing") + if os.path.exists(session_path) == False: + os.mkdir(session_path) + # Patches paths.app_path and paths.config_path, so we will not have issues during session configuration. + with mock.patch("paths.app_path", return_value=os.getcwd()) as app_path: + with mock.patch("paths.config_path", return_value=os.path.join(os.getcwd(), "config")) as config_path: + s.get_configuration() + yield s + # Session's cleanup code. + if os.path.exists(session_path): + shutil.rmtree(session_path) + del s + +@pytest.fixture +def dataset(): + """ Generates a sample dataset""" + dataset = dict(home_timeline=["message" for i in range(10000)], mentions_timeline=["mention" for i in range(20000)]) + yield dataset + +### Testing database being read from disk. +def test_cache_in_disk_unlimited_size(session, dataset): + """ Tests cache database being read from disk, storing the whole datasets. """ + session.settings["general"]["load_cache_in_memory"] = False + session.settings["general"]["persist_size"] = -1 + session.load_persistent_data() + session.db["home_timeline"] = dataset["home_timeline"] + session.db["mentions_timeline"] = dataset["mentions_timeline"] + session.save_persistent_data() + assert isinstance(session.db, sqlitedict.SqliteDict) + assert session.db.get("home_timeline") != None + assert session.db.get("mentions_timeline") != None + assert len(session.db.get("home_timeline")) == 10000 + assert len(session.db.get("mentions_timeline")) == 20000 + session.db.close() + +def test_cache_in_disk_limited_dataset(session, dataset): + """ Tests wether the cache stores only the amount of items we ask it to store. """ + session.settings["general"]["load_cache_in_memory"] = False + session.settings["general"]["persist_size"] = 100 + session.load_persistent_data() + session.db["home_timeline"] = dataset["home_timeline"] + session.db["mentions_timeline"] = dataset["mentions_timeline"] + # We need to save and load the db again because we cannot modify buffers' size while the database is opened. + # As TWBlue reads directly from db when reading from disk, an attempt to modify buffers size while Blue is reading the db + # Might cause an out of sync error between the GUI lists and the database. + # So we perform the changes to buffer size when loading data during app startup if the DB is read from disk. + session.save_persistent_data() + session.db = dict() + session.load_persistent_data() + assert isinstance(session.db, sqlitedict.SqliteDict) + assert session.db.get("home_timeline") != None + assert session.db.get("mentions_timeline") != None + assert len(session.db.get("home_timeline")) == 100 + assert len(session.db.get("mentions_timeline")) == 100 + session.db.close() + +def test_cache_in_disk_limited_dataset_unreversed(session): + """Test if the cache is saved properly in unreversed buffers, when newest items are at the end of the list. """ + dataset = dict(home_timeline=[i for i in range(20)], mentions_timeline=[i for i in range(20)]) + session.settings["general"]["load_cache_in_memory"] = False + session.settings["general"]["persist_size"] = 10 + session.load_persistent_data() + session.db["home_timeline"] = dataset["home_timeline"] + session.db["mentions_timeline"] = dataset["mentions_timeline"] + # We need to save and load the db again because we cannot modify buffers' size while the database is opened. + # As TWBlue reads directly from db when reading from disk, an attempt to modify buffers size while Blue is reading the db + # Might cause an out of sync error between the GUI lists and the database. + # So we perform the changes to buffer size when loading data during app startup if the DB is read from disk. + session.save_persistent_data() + session.db = dict() + session.load_persistent_data() + assert isinstance(session.db, sqlitedict.SqliteDict) + assert session.db.get("home_timeline") != None + assert session.db.get("mentions_timeline") != None + assert session.db.get("home_timeline")[0] == 10 + assert session.db.get("mentions_timeline")[0] == 10 + assert session.db.get("home_timeline")[-1] == 19 + assert session.db.get("mentions_timeline")[-1] == 19 + session.db.close() + +def test_cache_in_disk_limited_dataset_reversed(session): + """Test if the cache is saved properly in reversed buffers, when newest items are at the start of the list. """ + dataset = dict(home_timeline=[i for i in range(19, -1, -1)], mentions_timeline=[i for i in range(19, -1, -1)]) + session.settings["general"]["load_cache_in_memory"] = False + session.settings["general"]["persist_size"] = 10 + session.settings["general"]["reverse_timelines"] = True + session.load_persistent_data() + session.db["home_timeline"] = dataset["home_timeline"] + session.db["mentions_timeline"] = dataset["mentions_timeline"] + # We need to save and load the db again because we cannot modify buffers' size while the database is opened. + # As TWBlue reads directly from db when reading from disk, an attempt to modify buffers size while Blue is reading the db + # Might cause an out of sync error between the GUI lists and the database. + # So we perform the changes to buffer size when loading data during app startup if the DB is read from disk. + session.save_persistent_data() + session.db = dict() + session.load_persistent_data() + assert isinstance(session.db, sqlitedict.SqliteDict) + assert session.db.get("home_timeline") != None + assert session.db.get("mentions_timeline") != None + assert session.db.get("home_timeline")[0] == 19 + assert session.db.get("mentions_timeline")[0] == 19 + assert session.db.get("home_timeline")[-1] == 10 + assert session.db.get("mentions_timeline")[-1] == 10 + session.db.close() + +### Testing database being loaded into memory. Those tests should give the same results than before +### but as we have different code depending whether we load db into memory or read it from disk, +### We need to test this anyways. +def test_cache_in_memory_unlimited_size(session, dataset): + """ Tests cache database being loaded in memory, storing the whole datasets. """ + session.settings["general"]["load_cache_in_memory"] = True + session.settings["general"]["persist_size"] = -1 + session.load_persistent_data() + session.db["home_timeline"] = dataset["home_timeline"] + session.db["mentions_timeline"] = dataset["mentions_timeline"] + session.save_persistent_data() + session.db = dict() + session.load_persistent_data() + assert isinstance(session.db, dict) + assert session.db.get("home_timeline") != None + assert session.db.get("mentions_timeline") != None + assert len(session.db.get("home_timeline")) == 10000 + assert len(session.db.get("mentions_timeline")) == 20000 + +def test_cache_in_memory_limited_dataset(session, dataset): + """ Tests wether the cache stores only the amount of items we ask it to store, when loaded in memory. """ + session.settings["general"]["load_cache_in_memory"] = True + session.settings["general"]["persist_size"] = 100 + session.load_persistent_data() + session.db["home_timeline"] = dataset["home_timeline"] + session.db["mentions_timeline"] = dataset["mentions_timeline"] + session.save_persistent_data() + session.db = dict() + session.load_persistent_data() + assert isinstance(session.db, dict) + assert session.db.get("home_timeline") != None + assert session.db.get("mentions_timeline") != None + assert len(session.db.get("home_timeline")) == 100 + assert len(session.db.get("mentions_timeline")) == 100 + +def test_cache_in_memory_limited_dataset_unreversed(session): + """Test if the cache is saved properly when loaded in memory in unreversed buffers, when newest items are at the end of the list. """ + dataset = dict(home_timeline=[i for i in range(20)], mentions_timeline=[i for i in range(20)]) + session.settings["general"]["load_cache_in_memory"] = True + session.settings["general"]["persist_size"] = 10 + session.load_persistent_data() + assert len(session.db)==1 + session.db["home_timeline"] = dataset["home_timeline"] + session.db["mentions_timeline"] = dataset["mentions_timeline"] + session.save_persistent_data() + session.db = dict() + session.load_persistent_data() + assert isinstance(session.db, dict) + assert session.db.get("home_timeline") != None + assert session.db.get("mentions_timeline") != None + assert session.db.get("home_timeline")[0] == 10 + assert session.db.get("mentions_timeline")[0] == 10 + assert session.db.get("home_timeline")[-1] == 19 + assert session.db.get("mentions_timeline")[-1] == 19 + +def test_cache_in_memory_limited_dataset_reversed(session): + """Test if the cache is saved properly in reversed buffers, when newest items are at the start of the list. This test if for db read into memory. """ + dataset = dict(home_timeline=[i for i in range(19, -1, -1)], mentions_timeline=[i for i in range(19, -1, -1)]) + session.settings["general"]["load_cache_in_memory"] = True + session.settings["general"]["persist_size"] = 10 + session.settings["general"]["reverse_timelines"] = True + session.load_persistent_data() + session.db["home_timeline"] = dataset["home_timeline"] + session.db["mentions_timeline"] = dataset["mentions_timeline"] + session.save_persistent_data() + session.db = dict() + session.load_persistent_data() + assert isinstance(session.db, dict) + assert session.db.get("home_timeline") != None + assert session.db.get("mentions_timeline") != None + assert session.db.get("home_timeline")[0] == 19 + assert session.db.get("mentions_timeline")[0] == 19 + assert session.db.get("home_timeline")[-1] == 10 + assert session.db.get("mentions_timeline")[-1] == 10 diff --git a/srcantiguo/test/sessions/twitter/__init__.py b/srcantiguo/test/sessions/twitter/__init__.py new file mode 100644 index 00000000..40a96afc --- /dev/null +++ b/srcantiguo/test/sessions/twitter/__init__.py @@ -0,0 +1 @@ +# -*- coding: utf-8 -*- diff --git a/srcantiguo/test/sessions/twitter/conftest.py b/srcantiguo/test/sessions/twitter/conftest.py new file mode 100644 index 00000000..14abe1d5 --- /dev/null +++ b/srcantiguo/test/sessions/twitter/conftest.py @@ -0,0 +1,13 @@ +# -*- coding: utf-8 -*- +import pytest +from tweepy.models import Status + +@pytest.fixture +def basic_tweet(): + data = {'created_at': 'Mon Jan 03 15:03:36 +0000 2022', 'id': 1478019218884857856, 'id_str': '1478019218884857856', 'full_text': 'Changes in projects for next year https://t.co/nW3GS9RmHd', 'truncated': False, 'display_text_range': [0, 57], 'entities': {'hashtags': [], 'symbols': [], 'user_mentions': [], 'urls': [{'url': 'https://t.co/nW3GS9RmHd', 'expanded_url': 'https://manuelcortez.net/blog/changes-in-projects-for-next-year/#.YdMQQU6t1FI.twitter', 'display_url': 'manuelcortez.net/blog/changes-i…', 'indices': [34, 57]}]}, 'source': 'Twitter Web App', 'in_reply_to_status_id': None, 'in_reply_to_status_id_str': None, 'in_reply_to_user_id': None, 'in_reply_to_user_id_str': None, 'in_reply_to_screen_name': None, 'user': {'id': 258677951, 'id_str': '258677951', 'name': 'Manuel Cortez', 'screen_name': 'manuelcortez00', 'location': 'Nuevo León, México', 'description': 'Python developer, , interested in reading, accessibility, astronomy, physics and science. Я учу русский.', 'url': 'https://t.co/JFRKRA73ZV', 'entities': {'url': {'urls': [{'url': 'https://t.co/JFRKRA73ZV', 'expanded_url': 'https://manuelcortez.net', 'display_url': 'manuelcortez.net', 'indices': [0, 23]}]}, 'description': {'urls': []}}, 'protected': False, 'followers_count': 1453, 'friends_count': 568, 'listed_count': 45, 'created_at': 'Mon Feb 28 06:52:48 +0000 2011', 'favourites_count': 283, 'utc_offset': None, 'time_zone': None, 'geo_enabled': True, 'verified': False, 'statuses_count': 43371, 'lang': None, 'contributors_enabled': False, 'is_translator': False, 'is_translation_enabled': False, 'profile_background_color': 'C0DEED', 'profile_background_image_url': 'http://abs.twimg.com/images/themes/theme1/bg.png', 'profile_background_image_url_https': 'https://abs.twimg.com/images/themes/theme1/bg.png', 'profile_background_tile': False, 'profile_image_url': 'http://pbs.twimg.com/profile_images/442466677645508608/3EBBC-OX_normal.jpeg', 'profile_image_url_https': 'https://pbs.twimg.com/profile_images/442466677645508608/3EBBC-OX_normal.jpeg', 'profile_image_extensions_alt_text': None, 'profile_link_color': '1DA1F2', 'profile_sidebar_border_color': 'C0DEED', 'profile_sidebar_fill_color': 'DDEEF6', 'profile_text_color': '333333', 'profile_use_background_image': True, 'has_extended_profile': False, 'default_profile': True, 'default_profile_image': False, 'following': False, 'follow_request_sent': False, 'notifications': False, 'translator_type': 'regular', 'withheld_in_countries': []}, 'geo': None, 'coordinates': None, 'place': None, 'contributors': None, 'is_quote_status': False, 'retweet_count': 6, 'favorite_count': 2, 'favorited': False, 'retweeted': False, 'possibly_sensitive': False, 'possibly_sensitive_appealable': False, 'lang': 'en'} + yield Status().parse(api=None, json=data) + +@pytest.fixture +def basic_tweet_multiple_mentions(): + data = {'created_at': 'Mon Dec 27 21:21:25 +0000 2021', 'id': 1475577584947707909, 'id_str': '1475577584947707909', 'full_text': '@tamaranatalia9 @Darkstrings @Chris88171572 @manuelcortez00 Well done, thanks Tamara', 'truncated': False, 'display_text_range': [60, 84], 'entities': {'hashtags': [], 'symbols': [], 'user_mentions': [{'screen_name': 'tamaranatalia9', 'name': 'Tamara', 'id': 914114584591597568, 'id_str': '914114584591597568', 'indices': [0, 15]}, {'screen_name': 'Darkstrings', 'name': 'Luc', 'id': 1374154151115042823, 'id_str': '1374154151115042823', 'indices': [16, 28]}, {'screen_name': 'Chris88171572', 'name': 'Chris', 'id': 1323980014799495168, 'id_str': '1323980014799495168', 'indices': [29, 43]}, {'screen_name': 'manuelcortez00', 'name': 'Manuel Cortez', 'id': 258677951, 'id_str': '258677951', 'indices': [44, 59]}], 'urls': []}, 'source': 'Twitter for Android', 'in_reply_to_status_id': 1475550502083563526, 'in_reply_to_status_id_str': '1475550502083563526', 'in_reply_to_user_id': 914114584591597568, 'in_reply_to_user_id_str': '914114584591597568', 'in_reply_to_screen_name': 'tamaranatalia9', 'user': {'id': 784837522157436929, 'id_str': '784837522157436929', 'name': 'Paulus', 'screen_name': 'PauloPer01', 'location': '', 'description': '', 'url': None, 'entities': {'description': {'urls': []}}, 'protected': False, 'followers_count': 1082, 'friends_count': 3029, 'listed_count': 2, 'created_at': 'Sat Oct 08 19:27:01 +0000 2016', 'favourites_count': 78862, 'utc_offset': None, 'time_zone': None, 'geo_enabled': False, 'verified': False, 'statuses_count': 4976, 'lang': None, 'contributors_enabled': False, 'is_translator': False, 'is_translation_enabled': False, 'profile_background_color': 'F5F8FA', 'profile_background_image_url': None, 'profile_background_image_url_https': None, 'profile_background_tile': False, 'profile_image_url': 'http://pbs.twimg.com/profile_images/1464572633014587395/246oPPLa_normal.jpg', 'profile_image_url_https': 'https://pbs.twimg.com/profile_images/1464572633014587395/246oPPLa_normal.jpg', 'profile_image_extensions_alt_text': None, 'profile_link_color': '1DA1F2', 'profile_sidebar_border_color': 'C0DEED', 'profile_sidebar_fill_color': 'DDEEF6', 'profile_text_color': '333333', 'profile_use_background_image': True, 'has_extended_profile': True, 'default_profile': True, 'default_profile_image': False, 'following': False, 'follow_request_sent': False, 'notifications': False, 'translator_type': 'none', 'withheld_in_countries': []}, 'geo': None, 'coordinates': None, 'place': None, 'contributors': None, 'is_quote_status': False, 'retweet_count': 1, 'favorite_count': 2, 'favorited': False, 'retweeted': False, 'lang': 'en'} + yield Status().parse(api=None, json=data) \ No newline at end of file diff --git a/srcantiguo/test/sessions/twitter/test_twitter_templates.py b/srcantiguo/test/sessions/twitter/test_twitter_templates.py new file mode 100644 index 00000000..4b66c8d5 --- /dev/null +++ b/srcantiguo/test/sessions/twitter/test_twitter_templates.py @@ -0,0 +1,52 @@ +# -*- coding: utf-8 -*- +import pytest +import gettext +import datetime +gettext.install("test") +from unittest import mock +from sessions.twitter import templates + +def test_default_values(): + """ Tests wheter default values are the expected ones. + This might be useful so we will have this failing when we update anything from those values. + As TWBlue might be using those from other dialogs. + """ + assert templates.tweet_variables == ["date", "display_name", "screen_name", "source", "lang", "text", "image_descriptions"] + assert templates.dm_variables == ["date", "sender_display_name", "sender_screen_name", "recipient_display_name", "recipient_display_name", "text"] + assert templates.person_variables == ["display_name", "screen_name", "location", "description", "followers", "following", "listed", "likes", "tweets", "created_at"] + +@pytest.mark.parametrize("offset, language, expected_result", [ + (0, "en_US", "Wednesday, October 10, 2018 20:19:24"), + (-21600, "en_US", "Wednesday, October 10, 2018 14:19:24"), + (7200, "en_US", "Wednesday, October 10, 2018 22:19:24"), + (0, "es_ES", "miércoles, octubre 10, 2018 20:19:24"), + (-21600, "es_ES", "miércoles, octubre 10, 2018 14:19:24"), + (7200, "es_ES", "miércoles, octubre 10, 2018 22:19:24"), + (18000, "es_ES", "jueves, octubre 11, 2018 1:19:24"), +]) +def test_process_date_absolute_time(offset, language, expected_result): + """ Tests date processing function for tweets, when relative_times is set to False. """ + # Date representation used by twitter, converted to datetime object, as tweepy already does this. + # Original date was Wed Oct 10 20:19:24 +0000 2018 + date_field = datetime.datetime(2018, 10, 10, 20, 19, 24) + with mock.patch("languageHandler.curLang", new=language): + processed_date = templates.process_date(date_field, relative_times=False, offset_seconds=offset) + assert processed_date == expected_result + +def test_process_date_relative_time(): + date_field = datetime.datetime(2018, 10, 10, 20, 19, 24) + with mock.patch("languageHandler.curLang", new="es_ES"): + processed_date = templates.process_date(date_field, relative_times=True, offset_seconds=7200) + # As this depends in relative times and this is subject to change, let's do some light checks here and hope the string is going to be valid. + assert isinstance(processed_date, str) + assert "hace" in processed_date and "años" in processed_date + +def test_process_text_basic_tweet(basic_tweet): + expected_result = "Changes in projects for next year https://manuelcortez.net/blog/changes-in-projects-for-next-year/#.YdMQQU6t1FI.twitter" + text = templates.process_text(basic_tweet) + assert text == expected_result + +def test_process_text_basic_tweet_multiple_mentions(basic_tweet_multiple_mentions): + expected_result = "@tamaranatalia9, @Darkstrings and 2 more: Well done, thanks Tamara" + text = templates.process_text(basic_tweet_multiple_mentions) + assert text == expected_result \ No newline at end of file diff --git a/srcantiguo/update/__init__.py b/srcantiguo/update/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/srcantiguo/update/update.py b/srcantiguo/update/update.py new file mode 100644 index 00000000..d6b47f5c --- /dev/null +++ b/srcantiguo/update/update.py @@ -0,0 +1,126 @@ +from logging import getLogger +logger = getLogger('update') + +import contextlib +import io +import os +import platform +import requests +import tempfile +from wxUI import commonMessageDialogs +import widgetUtils +import webbrowser +try: + import czipfile as zipfile +except ImportError: + import zipfile + +from platform_utils import paths + +def perform_update(endpoint, current_version, app_name='', password=None, update_available_callback=None, progress_callback=None, update_complete_callback=None): + requests_session = create_requests_session(app_name=app_name, version=current_version) + available_update = find_update(endpoint, requests_session=requests_session) + if not available_update: + logger.debug("No update available") + return False + available_version = available_update['current_version'] + if available_version == current_version or platform.system()+platform.architecture()[0][:2] not in available_update['downloads']: + logger.debug("No update for this architecture") + return False + available_description = available_update.get('description', None) + available_date = available_update.get('date', None) + update_url = available_update ['downloads'][platform.system()+platform.architecture()[0][:2]] + logger.info("A new update is available. Version %s" % available_version) + donation() + if callable(update_available_callback) and not update_available_callback(version=available_version, description=available_description, date=available_date): #update_available_callback should return a falsy value to stop the process + logger.info("User canceled update.") + return + base_path = tempfile.mkdtemp() + download_path = os.path.join(base_path, 'update.zip') + update_path = os.path.join(base_path, 'update') + downloaded = download_update(update_url, download_path, requests_session=requests_session, progress_callback=progress_callback) + extracted = extract_update(downloaded, update_path, password=password) + bootstrap_path = move_bootstrap(extracted) + if callable(update_complete_callback): + update_complete_callback() + execute_bootstrap(bootstrap_path, extracted) + logger.info("Update prepared for installation.") + +def create_requests_session(app_name=None, version=None): + user_agent = '' + session = requests.session() + if app_name: + user_agent = ' %s/%r' % (app_name, version) + session.headers['User-Agent'] = session.headers['User-Agent'] + user_agent + return session + +def find_update(endpoint, requests_session): + response = requests_session.get(endpoint) + response.raise_for_status() + content = response.json() + return content + +def download_update(update_url, update_destination, requests_session, progress_callback=None, chunk_size=io.DEFAULT_BUFFER_SIZE): + total_downloaded = total_size = 0 + with io.open(update_destination, 'w+b') as outfile: + download = requests_session.get(update_url, stream=True) + total_size = int(download.headers.get('content-length', 0)) + logger.debug("Total update size: %d" % total_size) + download.raise_for_status() + for chunk in download.iter_content(chunk_size): + outfile.write(chunk) + total_downloaded += len(chunk) + if callable(progress_callback): + call_callback(progress_callback, total_downloaded, total_size) + logger.debug("Update downloaded") + return update_destination + +def extract_update(update_archive, destination, password=None): + """Given an update archive, extracts it. Returns the directory to which it has been extracted""" + with contextlib.closing(zipfile.ZipFile(update_archive)) as archive: + if password: + archive.setpassword(password) + archive.extractall(path=destination) + logger.debug("Update extracted") + return destination + +def move_bootstrap(extracted_path): + working_path = os.path.abspath(os.path.join(extracted_path, '..')) + if platform.system() == 'Darwin': + extracted_path = os.path.join(extracted_path, 'Contents', 'Resources') + downloaded_bootstrap = os.path.join(extracted_path, bootstrap_name()) + new_bootstrap_path = os.path.join(working_path, bootstrap_name()) + os.rename(downloaded_bootstrap, new_bootstrap_path) + return new_bootstrap_path + +def execute_bootstrap(bootstrap_path, source_path): + arguments = r'"%s" "%s" "%s" "%s"' % (os.getpid(), source_path, paths.app_path(), paths.get_executable()) + if platform.system() == 'Windows': + import win32api + win32api.ShellExecute(0, 'open', bootstrap_path, arguments, '', 5) + else: + import subprocess + make_executable(bootstrap_path) + subprocess.Popen(['%s %s' % (bootstrap_path, arguments)], shell=True) + logger.info("Bootstrap executed") + +def bootstrap_name(): + if platform.system() == 'Windows': return 'bootstrap.exe' + if platform.system() == 'Darwin': return 'bootstrap-mac.sh' + return 'bootstrap-lin.sh' + +def make_executable(path): + import stat + st = os.stat(path) + os.chmod(path, st.st_mode | stat.S_IEXEC) + +def call_callback(callback, *args, **kwargs): + # try: + callback(*args, **kwargs) +# except: +# logger.exception("Failed calling callback %r with args %r and kwargs %r" % (callback, args, kwargs)) + +def donation(): + dlg = commonMessageDialogs.donation() + if dlg == widgetUtils.YES: + webbrowser.open_new_tab("http://twblue.es/?q=donate") diff --git a/srcantiguo/update/updater.py b/srcantiguo/update/updater.py new file mode 100644 index 00000000..473b20a3 --- /dev/null +++ b/srcantiguo/update/updater.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +import application +from . import update +import logging +import output +from requests.exceptions import ConnectionError +from .wxUpdater import * +logger = logging.getLogger("updater") + +def do_update(endpoint=application.update_url): + if not getattr(sys, 'frozen', False): + logger.debug("Running from source, aborting update check") + return False + try: + result = update.perform_update(endpoint=endpoint, current_version=application.version, app_name=application.name, update_available_callback=available_update_dialog, progress_callback=progress_callback, update_complete_callback=update_finished) + return result + except: + logger.exception("Update failed.") + output.speak("An exception occurred while attempting to update " + application.name + ". If this message persists, contact the " + application.name + " developers. More information about the exception has been written to the error log.",True) + return None diff --git a/srcantiguo/update/utils.py b/srcantiguo/update/utils.py new file mode 100644 index 00000000..c9bbdc9a --- /dev/null +++ b/srcantiguo/update/utils.py @@ -0,0 +1,44 @@ +# -*- coding: utf-8 -*- + +from __future__ import unicode_literals +from builtins import str +def convert_bytes(n): + K, M, G, T, P = 1 << 10, 1 << 20, 1 << 30, 1 << 40, 1 << 50 + if n >= P: + return '%.2fPb' % (float(n) / T) + elif n >= T: + return '%.2fTb' % (float(n) / T) + elif n >= G: + return '%.2fGb' % (float(n) / G) + elif n >= M: + return '%.2fMb' % (float(n) / M) + elif n >= K: + return '%.2fKb' % (float(n) / K) + else: + return '%d' % n + +def seconds_to_string(seconds, precision=0): + day = seconds // 86400 + hour = seconds // 3600 + min = (seconds // 60) % 60 + sec = seconds - (hour * 3600) - (min * 60) + sec_spec = "." + str(precision) + "f" + sec_string = sec.__format__(sec_spec) + string = "" + if day == 1: + string += _(u"%d day, ") % day + elif day >= 2: + string += _(u"%d days, ") % day + if (hour == 1): + string += _(u"%d hour, ") % hour + elif (hour >= 2): + string += _("%d hours, ") % hour + if (min == 1): + string += _(u"%d minute, ") % min + elif (min >= 2): + string += _(u"%d minutes, ") % min + if sec >= 0 and sec <= 2: + string += _(u"%s second") % sec_string + else: + string += _(u"%s seconds") % sec_string + return string diff --git a/srcantiguo/update/wxUpdater.py b/srcantiguo/update/wxUpdater.py new file mode 100644 index 00000000..6ba989a4 --- /dev/null +++ b/srcantiguo/update/wxUpdater.py @@ -0,0 +1,36 @@ +# -*- coding: utf-8 -*- +import wx +import sys +import application +from . import utils + +progress_dialog = None + +def available_update_dialog(version, description, date): + if "3.7" not in sys.version: # Modern operating systems + update_msg = _("There's a new %s version available, released on %s. Would you like to download it now?\n\n %s version: %s\n\nChanges:\n%s") % (application.name, date, application.name, version, description) + styles = wx.YES|wx.NO|wx.ICON_WARNING + else: + update_msg = _("There's a new %s version available, released on %s. Updates are not automatic in Windows 7, so you would need to visit TWBlue's download website to get the latest version.\n\n %s version: %s\n\nChanges:\n%s") % (application.name, date, application.name, version, description) + styles = wx.OK|wx.ICON_WARNING + dialog = wx.MessageDialog(None, update_msg, _("New version for %s") % application.name, style=styles) + if dialog.ShowModal() == wx.ID_YES: + return True + else: + return False + +def create_progress_dialog(): + return wx.ProgressDialog(_(u"Download in Progress"), _(u"Downloading the new version..."), parent=None, maximum=100) + +def progress_callback(total_downloaded, total_size): + global progress_dialog + if progress_dialog == None: + progress_dialog = create_progress_dialog() + progress_dialog.Show() + if total_downloaded == total_size: + progress_dialog.Destroy() + else: + progress_dialog.Update(int((total_downloaded*100)/total_size), _(u"Updating... %s of %s") % (str(utils.convert_bytes(total_downloaded)), str(utils.convert_bytes(total_size)))) + +def update_finished(): + ms = wx.MessageDialog(None, _(u"The update has been downloaded and installed successfully. Press OK to continue."), _(u"Done!")).ShowModal() diff --git a/srcantiguo/widgetUtils/__init__.py b/srcantiguo/widgetUtils/__init__.py new file mode 100644 index 00000000..8c88f5ee --- /dev/null +++ b/srcantiguo/widgetUtils/__init__.py @@ -0,0 +1,7 @@ +from __future__ import absolute_import +from __future__ import unicode_literals +import platform +if platform.system() == "Windows": + from .wxUtils import * +#elif platform.system() == "Linux": +# from gtkUtils import * diff --git a/srcantiguo/widgetUtils/gtkUtils.py b/srcantiguo/widgetUtils/gtkUtils.py new file mode 100644 index 00000000..6902d324 --- /dev/null +++ b/srcantiguo/widgetUtils/gtkUtils.py @@ -0,0 +1,146 @@ +from __future__ import unicode_literals +from builtins import range +from builtins import object +from gi.repository import Gtk, Gdk +from gi.repository import GObject + +toolkit = "gtk" +# Code responses for GTK +3 dialogs. +# this is when an user presses OK on a dialogue. +OK = Gtk.ResponseType.OK +# This is when an user presses cancel on a dialogue. +CANCEL = Gtk.ResponseType.CANCEL +# This is when an user closes the dialogue or an id to create the close button. +CLOSE = Gtk.ResponseType.CLOSE +# The response for a "yes" Button pressed on a dialogue. +YES = Gtk.ResponseType.YES +# This is when the user presses No on a default dialogue. +NO = Gtk.ResponseType.NO + +#events +# This is raised when the application must be closed. +CLOSE_EVENT = "delete-event" +# This is activated when a button is pressed. +BUTTON_PRESSED = "clicked" +# This is activated when an user enter text on an edit box. +ENTERED_TEXT = "changed" +MENU = "activate" + +#KEYPRESS = wx.EVT_CHAR_HOOK +#NOTEBOOK_PAGE_CHANGED = wx.EVT_NOTEBOOK_PAGE_CHANGED +CHECKBOX = "toggled" + +def exit_application(): + """ Closes the current window cleanly. """ + Gtk.main_quit() + +def connect_event(parent, event, func, menuitem=None, *args, **kwargs): + """ Connects an event to a function. + parent Gtk.widget: The widget that will listen for the event. + event widgetUtils.event: The event that will be listened for the parent. The event should be one of the widgetUtils events. + function func: The function that will be connected to the event.""" + if menuitem == None: + return getattr(parent, "connect")(event, func, *args, **kwargs) + else: + return getattr(menuitem, "connect")(event, func, *args, **kwargs) + +class list(object): + def __init__(self, *columns, **listArguments): + self.columns = columns + self.list_arguments = listArguments + self.create_list() + + def create_list(self): + columns = [] + [columns.append(str) for i in self.columns] + self.store = Gtk.ListStore(*columns) + self.list = Gtk.TreeView(model=self.store) + renderer = Gtk.CellRendererText() + for i in range(0, len(self.columns)): + column = Gtk.TreeViewColumn(self.columns[i], renderer, text=i) +# column.set_sort_column_id(i) + self.list.append_column(column) + + def insert_item(self, reversed=False, *item): + if reversed == False: + self.store.append(row=item) + else: + self.store.insert(position=0, row=item) + + def get_selected(self): + tree_selection = self.list.get_selection() + (model, pathlist) = tree_selection.get_selected_rows() + return int(pathlist[0].to_string() ) + + def select_item(self, item): + tree_selection = self.list.get_selection() + tree_selection.select_path(item) + + def remove_item(self, item): + self.store.remove(self.store.get_iter(item)) + + def get_count(self): + return len(self.store) + +class baseDialog(Gtk.Dialog): + def __init__(self, *args, **kwargs): + super(baseDialog, self).__init__(*args, **kwargs) + self.box = self.get_content_area() + + def get_response(self): + answer = self.run() + return answer + +class buffer(GObject.GObject): + name = GObject.property(type=str) + + def __init__(self, obj): + super(buffer, self).__init__() + self.buffer = obj + +class notebook(object): + + def __init__(self): + self.store = Gtk.TreeStore(buffer.__gtype__) + self.view = Gtk.TreeView() + self.view.set_model(self.store) + + column = Gtk.TreeViewColumn("Buffer") + cell = Gtk.CellRendererText() + column.pack_start(cell, True) + column.set_cell_data_func(cell, self.get_buffer) + self.view.append_column(column) + + def get_current_page(self): + tree_selection = self.view.get_selection() + (model, pathlist) = tree_selection.get_selected_rows() + iter = pathlist[0] + return self.store[iter][0].buffer + + def get_buffer(self, column, cell, model, iter, data): + cell.set_property('text', self.store.get_value(iter, 0).name) + + def match_func(self, row, name_, account): + name = name_ + account = account + iter = self.store.get_iter(row.path) + if self.store[iter][0].buffer.name == name and self.store[iter][0].buffer.account == account: + return (row.path, iter) + else: + return (None, None) + + def search(self, rows, name_, account): + if not rows: return None + for row in rows: + (path, iter) = self.match_func(row, name_, account) + if iter != None: + return (path, iter) + (result_path, result_iter) = self.search(row.iterchildren(), name_, account) + if result_path: return (result_path, result_iter) + return (None, None) + +class mainLoopObject(object): + + def run(self): + GObject.type_register(buffer) + Gtk.main() diff --git a/srcantiguo/widgetUtils/wxUtils.py b/srcantiguo/widgetUtils/wxUtils.py new file mode 100644 index 00000000..9eb453ec --- /dev/null +++ b/srcantiguo/widgetUtils/wxUtils.py @@ -0,0 +1,129 @@ +from __future__ import unicode_literals +import wx +import wx.adv +import paths +import languageHandler +import sys +import os + +toolkit = "wx" + +### Code responses for WX dialogs. + +# this is when an user presses OK on a dialogue. +OK = wx.ID_OK + +# This is when an user presses cancel on a dialogue. +CANCEL = wx.ID_CANCEL + +# This is when an user closes the dialogue or an id to create the close button. +CLOSE = wx.ID_CLOSE + +# The response for a "yes" Button pressed on a dialogue. +YES = wx.ID_YES + +# This is when the user presses No on a default dialogue. +NO = wx.ID_NO + +###events + +# This is raised when the application must be closed. +CLOSE_EVENT = wx.EVT_CLOSE + +# This is activated when a button is pressed. +BUTTON_PRESSED = wx.EVT_BUTTON + +# This is raised when a checkbox changes its status. +CHECKBOX = wx.EVT_CHECKBOX + +# This is activated when an user enter text on an edit box. +ENTERED_TEXT = wx.EVT_TEXT + +# This is raised when a user activates a menu. +MENU = wx.EVT_MENU + +# This is raised when a user presses any key in the control. +KEYPRESS = wx.EVT_CHAR_HOOK + +# This is raised when a user releases a key in the control. +KEYUP = wx.EVT_KEY_UP + +# This happens when a notebook tab is changed, It is used in Treebooks too. +NOTEBOOK_PAGE_CHANGED = wx.EVT_TREEBOOK_PAGE_CHANGED + +# This happens when a radiobutton group changes its status. +RADIOBUTTON = wx.EVT_RADIOBUTTON + +# Taskbar mouse clicks. +TASKBAR_RIGHT_CLICK = wx.adv.EVT_TASKBAR_RIGHT_DOWN +TASKBAR_LEFT_CLICK = wx.adv.EVT_TASKBAR_LEFT_DOWN + +def exit_application(): + """ Closes the current window cleanly. """ + wx.GetApp().ExitMainLoop() + +def connect_event(parent, event, func, menuitem=None, *args, **kwargs): + """ Connects an event to a function. + parent wx.window: The widget that will listen for the event. + event widgetUtils.event: The event that will be listened for the parent. The event should be one of the widgetUtils events. + function func: The function that will be connected to the event.""" + if menuitem == None: + return getattr(parent, "Bind")(event, func, *args, **kwargs) + else: + return getattr(parent, "Bind")(event, func, menuitem, *args, **kwargs) + +def connectExitFunction(exitFunction): + """ This connect the events in WX when an user is turning off the machine.""" + wx.GetApp().Bind(wx.EVT_QUERY_END_SESSION, exitFunction) + wx.GetApp().Bind(wx.EVT_END_SESSION, exitFunction) + +class BaseDialog(wx.Dialog): + def __init__(self, *args, **kwargs): + super(BaseDialog, self).__init__(*args, **kwargs) + + def get_response(self): + return self.ShowModal() + + def get(self, control): + if hasattr(self, control): + control = getattr(self, control) + if hasattr(control, "GetValue"): return getattr(control, "GetValue")() + elif hasattr(control, "GetLabel"): return getattr(control, "GetLabel")() + else: return -1 + else: return 0 + + def set(self, control, text): + if hasattr(self, control): + control = getattr(self, control) + if hasattr(control, "SetValue"): return getattr(control, "SetValue")(text) + elif hasattr(control, "SetLabel"): return getattr(control, "SetLabel")(text) + elif hasattr(control, "ChangeValue"): return getattr(control, "ChangeValue")(text) + else: return -1 + else: return 0 + + def destroy(self): + self.Destroy() + + def set_title(self, title): + self.SetTitle(title) + + def get_title(self): + return self.GetTitle() + +class mainLoopObject(wx.App): + + def __init__(self): + self.app = wx.App() + self.lc = wx.Locale() + lang=languageHandler.getLanguage() + wxLang=self.lc.FindLanguageInfo(lang) + if not wxLang and '_' in lang: + wxLang=self.lc.FindLanguageInfo(lang.split('_')[0]) + if hasattr(sys,'frozen'): + self.lc.AddCatalogLookupPathPrefix(os.path.join(paths.app_path(), "locales")) + if wxLang: + self.lc.Init(wxLang.Language) + + def run(self): + self.app.MainLoop() + diff --git a/srcantiguo/write_version_data.py b/srcantiguo/write_version_data.py new file mode 100644 index 00000000..6ee512b2 --- /dev/null +++ b/srcantiguo/write_version_data.py @@ -0,0 +1,26 @@ +#! /usr/bin/env python# -*- coding: iso-8859-1 -*- +""" Write version info (taken from the last commit) to application.py. This method has been implemented this way for running updates. +This file is not intended to be called by the user. It will be used only by the Gitlab CI runner.""" +import os +from codecs import open + +print("Writing version data for update...") +new_version = os.environ.get("GITHUB_REF_NAME")[1:] +file = open("application.py", "r", encoding="utf-8") +lines = file.readlines() +lines[-1] = 'version = "{}"'.format(new_version) +file.close() +file2 = open("application.py", "w", encoding="utf-8") +file2.writelines(lines) +file2.close() +print("Wrote application.py with the new version info.") + +print("Updating next version on installer setup...") +file = open("..\\scripts\\twblue.nsi", "r", encoding="utf-8") +contents = file.read() +contents = contents.replace("0.95", new_version) +file.close() +file2 = open("..\\scripts\\twblue.nsi", "w", encoding="utf-8") +file2.write(contents) +file2.close() +print("done") diff --git a/srcantiguo/wxUI/__init__.py b/srcantiguo/wxUI/__init__.py new file mode 100644 index 00000000..40a96afc --- /dev/null +++ b/srcantiguo/wxUI/__init__.py @@ -0,0 +1 @@ +# -*- coding: utf-8 -*- diff --git a/srcantiguo/wxUI/buffers/__init__.py b/srcantiguo/wxUI/buffers/__init__.py new file mode 100644 index 00000000..876a6c01 --- /dev/null +++ b/srcantiguo/wxUI/buffers/__init__.py @@ -0,0 +1,3 @@ +# -*- coding: utf-8 -*- +from . import mastodon +from .panels import accountPanel, emptyPanel diff --git a/srcantiguo/wxUI/buffers/mastodon/__init__.py b/srcantiguo/wxUI/buffers/mastodon/__init__.py new file mode 100644 index 00000000..32791133 --- /dev/null +++ b/srcantiguo/wxUI/buffers/mastodon/__init__.py @@ -0,0 +1,5 @@ +# -*- coding: utf-8 -*- +from .base import basePanel +from .conversationList import conversationListPanel +from .notifications import notificationsPanel +from .user import userPanel \ No newline at end of file diff --git a/srcantiguo/wxUI/buffers/mastodon/base.py b/srcantiguo/wxUI/buffers/mastodon/base.py new file mode 100644 index 00000000..9352a57a --- /dev/null +++ b/srcantiguo/wxUI/buffers/mastodon/base.py @@ -0,0 +1,49 @@ +# -*- coding: utf-8 -*- +import wx +from multiplatform_widgets import widgets + +class basePanel(wx.Panel): + + def set_focus_function(self, f): + self.list.list.Bind(wx.EVT_LIST_ITEM_FOCUSED, f) + + def create_list(self): + self.list = widgets.list(self, _(u"User"), _(u"Text"), _(u"Date"), _(u"Client"), style=wx.LC_REPORT|wx.LC_SINGLE_SEL|wx.LC_VRULES) + self.list.set_windows_size(0, 200) + self.list.set_windows_size(1, 600) + self.list.set_windows_size(2, 200) + self.list.set_windows_size(3, 200) + self.list.set_size() + + def __init__(self, parent, name): + super(basePanel, self).__init__(parent) + self.name = name + self.type = "baseBuffer" + self.sizer = wx.BoxSizer(wx.VERTICAL) + self.create_list() + self.post = wx.Button(self, -1, _("Post")) + self.boost = wx.Button(self, -1, _("Boost")) + self.reply = wx.Button(self, -1, _(u"Reply")) + self.fav = wx.Button(self, wx.ID_ANY, _("Favorite")) + self.bookmark = wx.Button(self, wx.ID_ANY, _("Bookmark")) + self.dm = wx.Button(self, -1, _(u"Direct message")) + btnSizer = wx.BoxSizer(wx.HORIZONTAL) + btnSizer.Add(self.post, 0, wx.ALL, 5) + btnSizer.Add(self.boost, 0, wx.ALL, 5) + btnSizer.Add(self.reply, 0, wx.ALL, 5) + btnSizer.Add(self.fav, 0, wx.ALL, 5) + btnSizer.Add(self.bookmark, 0, wx.ALL, 5) + btnSizer.Add(self.dm, 0, wx.ALL, 5) + self.sizer.Add(btnSizer, 0, wx.ALL, 5) + self.sizer.Add(self.list.list, 1, wx.ALL|wx.EXPAND, 5) + self.SetSizer(self.sizer) + self.SetClientSize(self.sizer.CalcMin()) + + def set_position(self, reversed=False): + if reversed == False: + self.list.select_item(self.list.get_count()-1) + else: + self.list.select_item(0) + + def set_focus_in_list(self): + self.list.list.SetFocus() diff --git a/srcantiguo/wxUI/buffers/mastodon/conversationList.py b/srcantiguo/wxUI/buffers/mastodon/conversationList.py new file mode 100644 index 00000000..2405bf29 --- /dev/null +++ b/srcantiguo/wxUI/buffers/mastodon/conversationList.py @@ -0,0 +1,41 @@ +# -*- coding: utf-8 -*- +import wx +from multiplatform_widgets import widgets + +class conversationListPanel(wx.Panel): + + def set_focus_function(self, f): + self.list.list.Bind(wx.EVT_LIST_ITEM_FOCUSED, f) + + def create_list(self): + self.list = widgets.list(self, _(u"User"), _(u"Text"), _(u"Date"), _(u"Client"), style=wx.LC_REPORT|wx.LC_SINGLE_SEL|wx.LC_VRULES) + self.list.set_windows_size(0, 200) + self.list.set_windows_size(1, 600) + self.list.set_windows_size(2, 200) + self.list.set_windows_size(3, 200) + self.list.set_size() + + def __init__(self, parent, name): + super(conversationListPanel, self).__init__(parent) + self.name = name + self.type = "baseBuffer" + self.sizer = wx.BoxSizer(wx.VERTICAL) + self.create_list() + self.post = wx.Button(self, -1, _("Post")) + self.reply = wx.Button(self, -1, _(u"Reply")) + btnSizer = wx.BoxSizer(wx.HORIZONTAL) + btnSizer.Add(self.post, 0, wx.ALL, 5) + btnSizer.Add(self.reply, 0, wx.ALL, 5) + self.sizer.Add(btnSizer, 0, wx.ALL, 5) + self.sizer.Add(self.list.list, 1, wx.ALL|wx.EXPAND, 5) + self.SetSizer(self.sizer) + self.SetClientSize(self.sizer.CalcMin()) + + def set_position(self, reversed=False): + if reversed == False: + self.list.select_item(self.list.get_count()-1) + else: + self.list.select_item(0) + + def set_focus_in_list(self): + self.list.list.SetFocus() diff --git a/srcantiguo/wxUI/buffers/mastodon/notifications.py b/srcantiguo/wxUI/buffers/mastodon/notifications.py new file mode 100644 index 00000000..f19e211a --- /dev/null +++ b/srcantiguo/wxUI/buffers/mastodon/notifications.py @@ -0,0 +1,39 @@ +# -*- coding: utf-8 -*- +import wx +from multiplatform_widgets import widgets + +class notificationsPanel(wx.Panel): + + def set_focus_function(self, f): + self.list.list.Bind(wx.EVT_LIST_ITEM_FOCUSED, f) + + def create_list(self): + self.list = widgets.list(self, _("Text"), _("Date"), style=wx.LC_REPORT|wx.LC_SINGLE_SEL|wx.LC_VRULES) + self.list.set_windows_size(0, 600) + self.list.set_windows_size(1, 200) + self.list.set_size() + + def __init__(self, parent, name): + super(notificationsPanel, self).__init__(parent) + self.name = name + self.type = "baseBuffer" + self.sizer = wx.BoxSizer(wx.VERTICAL) + self.create_list() + self.post = wx.Button(self, -1, _("Post")) + self.dismiss = wx.Button(self, -1, _("Dismiss")) + btnSizer = wx.BoxSizer(wx.HORIZONTAL) + btnSizer.Add(self.post, 0, wx.ALL, 5) + btnSizer.Add(self.dismiss, 0, wx.ALL, 5) + self.sizer.Add(btnSizer, 0, wx.ALL, 5) + self.sizer.Add(self.list.list, 1, wx.ALL|wx.EXPAND, 5) + self.SetSizer(self.sizer) + self.SetClientSize(self.sizer.CalcMin()) + + def set_position(self, reversed=False): + if reversed == False: + self.list.select_item(self.list.get_count()-1) + else: + self.list.select_item(0) + + def set_focus_in_list(self): + self.list.list.SetFocus() diff --git a/srcantiguo/wxUI/buffers/mastodon/user.py b/srcantiguo/wxUI/buffers/mastodon/user.py new file mode 100644 index 00000000..86958c65 --- /dev/null +++ b/srcantiguo/wxUI/buffers/mastodon/user.py @@ -0,0 +1,37 @@ +# -*- coding: utf-8 -*- +import wx +from multiplatform_widgets import widgets + +class userPanel(wx.Panel): + + def create_list(self): + self.list = widgets.list(self, _("User"), style=wx.LC_REPORT|wx.LC_SINGLE_SEL|wx.LC_VRULES) + self.list.set_windows_size(0, 600) + self.list.set_size() + + def __init__(self, parent, name): + super(userPanel, self).__init__(parent) + self.name = name + self.type = "user" + self.sizer = wx.BoxSizer(wx.VERTICAL) + self.create_list() + self.post = wx.Button(self, -1, _("Post")) + self.actions = wx.Button(self, -1, _("Actions")) + self.message = wx.Button(self, -1, _("Message")) + btnSizer = wx.BoxSizer(wx.HORIZONTAL) + btnSizer.Add(self.post, 0, wx.ALL, 5) + btnSizer.Add(self.actions, 0, wx.ALL, 5) + btnSizer.Add(self.message, 0, wx.ALL, 5) + self.sizer.Add(btnSizer, 0, wx.ALL, 5) + self.sizer.Add(self.list.list, 1, wx.ALL|wx.EXPAND, 5) + self.SetSizer(self.sizer) + self.SetClientSize(self.sizer.CalcMin()) + + def set_position(self, reversed=False): + if reversed == False: + self.list.select_item(self.list.get_count()-1) + else: + self.list.select_item(0) + + def set_focus_in_list(self): + self.list.list.SetFocus() diff --git a/srcantiguo/wxUI/buffers/panels.py b/srcantiguo/wxUI/buffers/panels.py new file mode 100644 index 00000000..f0ccfd4f --- /dev/null +++ b/srcantiguo/wxUI/buffers/panels.py @@ -0,0 +1,36 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals +import wx +from multiplatform_widgets import widgets + +class accountPanel(wx.Panel): + def __init__(self, parent, name=None): + super(accountPanel, self).__init__(parent=parent) + self.name = name + self.type = "account" + sizer = wx.BoxSizer(wx.VERTICAL) + self.login = wx.Button(self, -1, _(u"Login")) + sizer.Add(self.login, 0, wx.ALL, 5) + self.autostart_account = wx.CheckBox(self, -1, _(u"Log in automatically")) + sizer.Add(self.autostart_account, 0, wx.ALL, 5) + self.SetSizer(sizer) + + def change_login(self, login=True): + if login == True: + self.login.SetLabel(_(u"Login")) + else: + self.login.SetLabel(_(u"Logout")) + + def change_autostart(self, autostart=True): + self.autostart_account.SetValue(autostart) + + def get_autostart(self): + return self.autostart_account.GetValue() + +class emptyPanel(wx.Panel): + def __init__(self, parent, name): + super(emptyPanel, self).__init__(parent=parent, name=name) + self.name = name + self.type = "account" + sizer = wx.BoxSizer(wx.VERTICAL) + self.SetSizer(sizer) diff --git a/srcantiguo/wxUI/commonMessageDialogs.py b/srcantiguo/wxUI/commonMessageDialogs.py new file mode 100644 index 00000000..401ba8a4 --- /dev/null +++ b/srcantiguo/wxUI/commonMessageDialogs.py @@ -0,0 +1,61 @@ +# -*- coding: utf-8 -*- +import wx +import application + +def exit_dialog(parent): + dlg = wx.MessageDialog(parent, _(u"Do you really want to close {0}?").format(application.name,), _(u"Exit"), wx.YES_NO|wx.ICON_QUESTION) + return dlg.ShowModal() + +def needs_restart(): + wx.MessageDialog(None, _(u" {0} must be restarted for these changes to take effect.").format(application.name,), _("Restart {0} ").format(application.name,), wx.OK).ShowModal() + +def delete_user_from_db(): + return wx.MessageDialog(None, _(u"Are you sure you want to delete this user from the database? This user will not appear in autocomplete results anymore."), _(u"Confirm"), wx.YES_NO|wx.ICON_QUESTION).ShowModal() + +def clear_list(): + dlg = wx.MessageDialog(None, _(u"Do you really want to empty this buffer? It's items will be removed from the list but not from Twitter"), _(u"Empty buffer"), wx.ICON_QUESTION|wx.YES_NO) + return dlg.ShowModal() + +def remove_buffer(): + return wx.MessageDialog(None, _(u"Do you really want to destroy this buffer?"), _(u"Attention"), style=wx.ICON_QUESTION|wx.YES_NO).ShowModal() + +def user_not_exist(): + return wx.MessageDialog(None, _(u"That user does not exist"), _(u"Error"), wx.ICON_ERROR).ShowModal() + +def timeline_exist(): + return wx.MessageDialog(None, _(u"A timeline for this user already exists. You can't open another"), _(u"Existing timeline"), wx.ICON_ERROR).ShowModal() + +def donation(): + dlg = wx.MessageDialog(None, _(u"If you like {0} we need your help to keep it going. Help us by donating to the project. This will help us pay for the server, the domain and some other things to ensure that {0} will be actively maintained. Your donation will give us the means to continue the development of {0}, and to keep {0} free. Would you like to donate now?").format(application.name), _(u"We need your help"), wx.ICON_QUESTION|wx.YES_NO) + return dlg.ShowModal() + +def changed_keymap(system, keystroke_editor_shortcut): + return wx.MessageDialog(None, _(f"TWBlue has detected that you're running {system} and has changed the default keymap to the {system} keymap. It means that some keyboard shorcuts could be different. Please check the keystroke editor by pressing {keystroke_editor_shortcut} to see all available keystrokes for this keymap."), _(u"Information"), wx.OK).ShowModal() + +def invalid_configuration(): + return wx.MessageDialog(None, _("The configuration file is invalid."), _("Error"), wx.ICON_ERROR).ShowModal() + +def dead_pid(): + return wx.MessageDialog(None, _(u"{0} quit unexpectedly the last time it was run. If the problem persists, please report it to the {0} developers.").format(application.name), _(u"Warning"), wx.OK).ShowModal() + +def cant_update_source() -> wx.MessageDialog: + """Shows a dialog telling a user he /she can't update because he / she is + running from source + """ + dlg = wx.MessageDialog(None, _("Sorry, you can't update while running {} from source.").format(application.name), _("Error"), wx.OK) + return dlg.ShowModal() + +def invalid_instance(): + return wx.MessageDialog(None, _("the provided instance is invalid. Please try again."), _("Invalid instance"), wx.ICON_ERROR).ShowModal() + +def error_adding_filter(): + return wx.MessageDialog(None, _("TWBlue was unable to add or update the filter with the specified settings. Please try again."), _("Error"), wx.ICON_ERROR).ShowModal() + +def error_loading_filters(): + return wx.MessageDialog(None, _("TWBlue was unable to load your filters from the instance. Please try again."), _("Error"), wx.ICON_ERROR).ShowModal() + +def remove_filter(): + dlg = wx.MessageDialog(None, _("Do you really want to delete this filter ?"), _("Delete filter"), wx.ICON_QUESTION|wx.YES_NO) + return dlg.ShowModal() +def error_removing_filters(): + return wx.MessageDialog(None, _("TWBlue was unable to remove the filter you specified. Please try again."), _("Error"), wx.ICON_ERROR).ShowModal() diff --git a/srcantiguo/wxUI/dialogs/__init__.py b/srcantiguo/wxUI/dialogs/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/srcantiguo/wxUI/dialogs/baseDialog.py b/srcantiguo/wxUI/dialogs/baseDialog.py new file mode 100644 index 00000000..ec124d1a --- /dev/null +++ b/srcantiguo/wxUI/dialogs/baseDialog.py @@ -0,0 +1,29 @@ +# -*- coding: utf-8 -*- +import wx + +class BaseWXDialog(wx.Dialog): + def __init__(self, *args, **kwargs): + super(BaseWXDialog, self).__init__(*args, **kwargs) + + def get_response(self): + return self.ShowModal() + + def get(self, control): + if hasattr(self, control): + control = getattr(self, control) + if hasattr(control, "GetValue"): return getattr(control, "GetValue")() + elif hasattr(control, "GetLabel"): return getattr(control, "GetLabel")() + else: return -1 + else: return 0 + + def set(self, control, text): + if hasattr(self, control): + control = getattr(self, control) + if hasattr(control, "SetValue"): return getattr(control, "SetValue")(text) + elif hasattr(control, "SetLabel"): return getattr(control, "SetLabel")(text) + elif hasattr(control, "ChangeValue"): return getattr(control, "ChangeValue")(text) + else: return -1 + else: return 0 + + def set_title(self, title): + self.SetTitle(title) diff --git a/srcantiguo/wxUI/dialogs/configuration.py b/srcantiguo/wxUI/dialogs/configuration.py new file mode 100644 index 00000000..74162c50 --- /dev/null +++ b/srcantiguo/wxUI/dialogs/configuration.py @@ -0,0 +1,269 @@ +# -*- coding: utf-8 -*- +import logging as original_logger +import wx +import application +import output +import config +import widgetUtils +from . import baseDialog +from multiplatform_widgets import widgets + +class general(wx.Panel, baseDialog.BaseWXDialog): + def __init__(self, parent, languages,keymaps): + super(general, self).__init__(parent) + sizer = wx.BoxSizer(wx.VERTICAL) + language = wx.StaticText(self, -1, _(u"&Language")) + self.language = wx.ListBox(self, -1, choices=languages) + self.language.SetSize(self.language.GetBestSize()) + langBox = wx.BoxSizer(wx.HORIZONTAL) + langBox.Add(language, 0, wx.ALL, 5) + langBox.Add(self.language, 0, wx.ALL, 5) + sizer.Add(langBox, 0, wx.ALL, 5) + self.ask_at_exit = wx.CheckBox(self, -1, _(U"&Ask before exiting {0}").format(application.name,)) + sizer.Add(self.ask_at_exit, 0, wx.ALL, 5) + self.no_streaming = wx.CheckBox(self, -1, _(U"&Disable Streaming functions")) + sizer.Add(self.no_streaming, 0, wx.ALL, 5) + updatePeriodBox = wx.BoxSizer(wx.HORIZONTAL) + updatePeriodBox.Add(wx.StaticText(self, -1, _(u"&Buffer update interval, in minutes")), 0, wx.ALL, 5) + self.update_period = wx.SpinCtrl(self, wx.ID_ANY) + self.update_period.SetRange(1, 30) + self.update_period.SetSize(self.update_period.GetBestSize()) + updatePeriodBox.Add(self.update_period, 0, wx.ALL, 5) + sizer.Add(updatePeriodBox, 0, wx.ALL, 5) + self.play_ready_sound = wx.CheckBox(self, -1, _(U"Pla&y a sound when {0} launches").format(application.name,)) + sizer.Add(self.play_ready_sound, 0, wx.ALL, 5) + self.speak_ready_msg = wx.CheckBox(self, -1, _(U"Sp&eak a message when {0} launches").format(application.name,)) + sizer.Add(self.speak_ready_msg, 0, wx.ALL, 5) + self.use_invisible_shorcuts = wx.CheckBox(self, -1, _(u"&Use invisible interface's keyboard shortcuts while GUI is visible")) + sizer.Add(self.use_invisible_shorcuts, 0, wx.ALL, 5) + self.disable_sapi5 = wx.CheckBox(self, -1, _(u"A&ctivate Sapi5 when any other screen reader is not being run")) + sizer.Add(self.disable_sapi5, 0, wx.ALL, 5) + self.hide_gui = wx.CheckBox(self, -1, _(u"&Hide GUI on launch")) + sizer.Add(self.hide_gui, 0, wx.ALL, 5) + self.read_long_posts_in_gui = wx.CheckBox(self, wx.ID_ANY, _("&Read long posts in GUI")) + sizer.Add(self.read_long_posts_in_gui, 0, wx.ALL, 5) + kmbox = wx.BoxSizer(wx.VERTICAL) + km_label = wx.StaticText(self, -1, _(u"&Keymap")) + self.km = wx.ComboBox(self, -1, choices=keymaps, style=wx.CB_READONLY) + self.km.SetSize(self.km.GetBestSize()) + kmbox.Add(km_label, 0, wx.ALL, 5) + kmbox.Add(self.km, 0, wx.ALL, 5) + self.check_for_updates = wx.CheckBox(self, -1, _(U"Check for u&pdates when {0} launches").format(application.name,)) + sizer.Add(self.check_for_updates, 0, wx.ALL, 5) + sizer.Add(kmbox, 0, wx.ALL, 5) + self.SetSizer(sizer) + +class proxy(wx.Panel, baseDialog.BaseWXDialog): + + def __init__(self, parent, proxyTypes): + super(proxy, self).__init__(parent) + sizer = wx.BoxSizer(wx.VERTICAL) + type=wx.StaticText(self, wx.ID_ANY, _(u"Proxy &type: ")) + self.type=wx.ComboBox(self, -1, choices=proxyTypes, style=wx.CB_READONLY) + self.type.SetSize(self.type.GetBestSize()) + typeBox = wx.BoxSizer(wx.HORIZONTAL) + typeBox.Add(type, 0, wx.ALL, 5) + typeBox.Add(self.type, 0, wx.ALL, 5) + sizer.Add(typeBox, 0, wx.ALL, 5) + lbl = wx.StaticText(self, wx.ID_ANY, _(u"Proxy s&erver: ")) + self.server = wx.TextCtrl(self, -1) + serverBox = wx.BoxSizer(wx.HORIZONTAL) + serverBox.Add(lbl, 0, wx.ALL, 5) + serverBox.Add(self.server, 0, wx.ALL, 5) + sizer.Add(serverBox, 0, wx.ALL, 5) + lbl = wx.StaticText(self, wx.ID_ANY, _(u"&Port: ")) + self.port = wx.SpinCtrl(self, wx.ID_ANY, min=1, max=65535) + portBox = wx.BoxSizer(wx.HORIZONTAL) + portBox.Add(lbl, 0, wx.ALL, 5) + portBox.Add(self.port, 0, wx.ALL, 5) + sizer.Add(portBox, 0, wx.ALL, 5) + lbl = wx.StaticText(self, wx.ID_ANY, _(u"&User: ")) + self.user = wx.TextCtrl(self, wx.ID_ANY) + userBox = wx.BoxSizer(wx.HORIZONTAL) + userBox.Add(lbl, 0, wx.ALL, 5) + userBox.Add(self.user, 0, wx.ALL, 5) + sizer.Add(userBox, 0, wx.ALL, 5) + lbl = wx.StaticText(self, wx.ID_ANY, _(u"P&assword: ")) + self.password = wx.TextCtrl(self, wx.ID_ANY, style=wx.TE_PASSWORD) + passwordBox = wx.BoxSizer(wx.HORIZONTAL) + passwordBox.Add(lbl, 0, wx.ALL, 5) + passwordBox.Add(self.password, 0, wx.ALL, 5) + sizer.Add(serverBox, 0, wx.ALL, 5) + self.SetSizer(sizer) + +class reporting(wx.Panel, baseDialog.BaseWXDialog): + def __init__(self, parent): + super(reporting, self).__init__(parent) + sizer = wx.BoxSizer(wx.VERTICAL) + self.speech_reporting = wx.CheckBox(self, wx.ID_ANY, _(U"Enable automatic s&peech feedback")) + sizer.Add(self.speech_reporting, 0, wx.ALL, 5) + self.braille_reporting = wx.CheckBox(self, wx.ID_ANY, _(U"Enable automatic &Braille feedback")) + sizer.Add(self.braille_reporting, 0, wx.ALL, 5) + self.SetSizer(sizer) + +class other_buffers(wx.Panel): + def __init__(self, parent): + super(other_buffers, self).__init__(parent) + sizer = wx.BoxSizer(wx.VERTICAL) + self.buffers = widgets.list(self, _(u"Buffer"), _(u"Name"), _(u"Status"), style=wx.LC_SINGLE_SEL|wx.LC_REPORT) + sizer.Add(self.buffers.list, 0, wx.ALL, 5) + btnSizer = wx.BoxSizer(wx.HORIZONTAL) + self.toggle_state = wx.Button(self, -1, _(u"S&how/hide")) + self.up = wx.Button(self, -1, _(u"Move &up")) + self.down = wx.Button(self, -1, _(u"Move &down")) + btnSizer.Add(self.toggle_state, 0, wx.ALL, 5) + btnSizer.Add(self.up, 0, wx.ALL, 5) + btnSizer.Add(self.down, 0, wx.ALL, 5) + sizer.Add(btnSizer, 0, wx.ALL, 5) + self.SetSizer(sizer) + + def insert_buffers(self, buffers): + for i in buffers: + if i[2] == True: + self.buffers.insert_item(False, *[i[0], i[1], _(u"Show")]) + else: + self.buffers.insert_item(False, *[i[0], i[1], _(u"Hide")]) + + def connect_hook_func(self, func): + self.buffers.list.Bind(wx.EVT_CHAR_HOOK, func) + + def move_up(self, *args, **kwargs): + current = self.buffers.get_selected() + if current == -1: + output.speak(_(u"Select a buffer first."), True) + return False + if self.buffers.get_text_column(current, 2) == _(u"Hide"): + output.speak(_(u"The buffer is hidden, show it first."), True) + return False + if current <= 0: + output.speak(_(u"The buffer is already at the top of the list."), True) + return False + current_text = self.buffers.get_text_column(self.buffers.get_selected(), 0) + current_name = self.buffers.get_text_column(self.buffers.get_selected(), 1) + current_text_state = self.buffers.get_text_column(self.buffers.get_selected(), 2) + text_above = self.buffers.get_text_column(self.buffers.get_selected()-1, 0) + name_above = self.buffers.get_text_column(self.buffers.get_selected()-1, 1) + text_above_state = self.buffers.get_text_column(self.buffers.get_selected()-1, 2) + self.buffers.set_text_column(self.buffers.get_selected()-1, 0, current_text) + self.buffers.set_text_column(self.buffers.get_selected()-1, 1, current_name) + self.buffers.set_text_column(self.buffers.get_selected()-1, 2, current_text_state) + self.buffers.set_text_column(self.buffers.get_selected(), 0, text_above) + self.buffers.set_text_column(self.buffers.get_selected(), 1, name_above) + self.buffers.set_text_column(self.buffers.get_selected(), 2, text_above_state) + + def move_down(self, *args, **kwargs): + current = self.buffers.get_selected() + if current == -1: + output.speak(_(u"Select a buffer first."), True) + return False + if self.buffers.get_text_column(current, 2) == _(u"Hide"): + output.speak(_(u"The buffer is hidden, show it first."), True) + return False + if current+1 >= self.buffers.get_count(): + output.speak(_(u"The buffer is already at the bottom of the list."), True) + return False + current_text = self.buffers.get_text_column(self.buffers.get_selected(), 0) + current_name = self.buffers.get_text_column(self.buffers.get_selected(), 1) + current_text_state = self.buffers.get_text_column(self.buffers.get_selected(), 2) + text_below = self.buffers.get_text_column(self.buffers.get_selected()+1, 0) + name_below = self.buffers.get_text_column(self.buffers.get_selected()+1, 1) + text_below_state = self.buffers.get_text_column(self.buffers.get_selected()+1, 2) + self.buffers.set_text_column(self.buffers.get_selected()+1, 0, current_text) + self.buffers.set_text_column(self.buffers.get_selected()+1, 1, current_name) + self.buffers.set_text_column(self.buffers.get_selected()+1, 2, current_text_state) + self.buffers.set_text_column(self.buffers.get_selected(), 0, text_below) + self.buffers.set_text_column(self.buffers.get_selected(), 1, name_below) + self.buffers.set_text_column(self.buffers.get_selected(), 2, text_below_state) + + def get_event(self, ev): + if ev.GetKeyCode() == wx.WXK_SPACE: + return True + else: + ev.Skip() + return False + + def change_selected_item(self): + current = self.buffers.get_selected() + text = self.buffers.get_text_column(current, 2) + if text == _(u"Show"): + self.buffers.set_text_column(current, 2, _(u"Hide")) + else: + self.buffers.set_text_column(current, 2, _(u"Show")) + output.speak(self.buffers.get_text_column(current, 2),True) + def get_list(self): + buffers_list = [] + for i in range(0, self.buffers.get_count()): + if self.buffers.get_text_column(i, 2) == _(u"Show"): + buffers_list.append(self.buffers.get_text_column(i, 0)) + return buffers_list + +class TranslatorPanel(wx.Panel, baseDialog.BaseWXDialog): + def __init__(self, parent): + super(TranslatorPanel, self).__init__(parent) + + sizer = wx.BoxSizer(wx.VERTICAL) + lbl_libre_url = wx.StaticText(self, wx.ID_ANY, _(u"&LibreTranslate API URL: ")) + self.libre_api_url = wx.TextCtrl(self, wx.ID_ANY) + libreUrlBox = wx.BoxSizer(wx.HORIZONTAL) + libreUrlBox.Add(lbl_libre_url, 0, wx.ALL, 5) + libreUrlBox.Add(self.libre_api_url, 1, wx.ALL | wx.EXPAND, 5) + sizer.Add(libreUrlBox, 0, wx.ALL | wx.EXPAND, 5) + lbl_libre_api_key = wx.StaticText(self, wx.ID_ANY, _(u"LibreTranslate API &Key (optional): ")) + self.libre_api_key = wx.TextCtrl(self, wx.ID_ANY) + libreApiKeyBox = wx.BoxSizer(wx.HORIZONTAL) + libreApiKeyBox.Add(lbl_libre_api_key, 0, wx.ALL, 5) + libreApiKeyBox.Add(self.libre_api_key, 1, wx.ALL | wx.EXPAND, 5) + sizer.Add(libreApiKeyBox, 0, wx.ALL | wx.EXPAND, 5) + lbl_deepL_api_key = wx.StaticText(self, wx.ID_ANY, _(u"&DeepL API Key: ")) + self.deepL_api_key = wx.TextCtrl(self, wx.ID_ANY) + deepLApiKeyBox = wx.BoxSizer(wx.HORIZONTAL) + deepLApiKeyBox.Add(lbl_deepL_api_key, 0, wx.ALL, 5) + deepLApiKeyBox.Add(self.deepL_api_key, 1, wx.ALL | wx.EXPAND, 5) + sizer.Add(deepLApiKeyBox, 0, wx.ALL | wx.EXPAND, 5) + self.SetSizer(sizer) +class configurationDialog(baseDialog.BaseWXDialog): + def set_title(self, title): + self.SetTitle(title) + + def __init__(self): + super(configurationDialog, self).__init__(None, -1) + self.panel = wx.Panel(self) + self.SetTitle(_(u"{0} preferences").format(application.name,)) + self.sizer = wx.BoxSizer(wx.VERTICAL) + self.notebook = wx.Notebook(self.panel) + + def create_general(self, languageList,keymaps): + self.general = general(self.notebook, languageList,keymaps) + self.notebook.AddPage(self.general, _(u"General")) + self.general.SetFocus() + + def create_proxy(self, proxyTypes): + self.proxy = proxy(self.notebook, proxyTypes) + self.notebook.AddPage(self.proxy, _(u"Proxy")) + + def create_translator_panel(self): + self.translator_panel= TranslatorPanel(self.notebook) + self.notebook.AddPage(self.translator_panel, _("Translation services")) + + def realize(self): + self.sizer.Add(self.notebook, 0, wx.ALL, 5) + ok_cancel_box = wx.BoxSizer(wx.HORIZONTAL) + ok = wx.Button(self.panel, wx.ID_OK, _(u"&Save")) + ok.SetDefault() + cancel = wx.Button(self.panel, wx.ID_CANCEL, _(u"&Close")) + self.SetEscapeId(cancel.GetId()) + ok_cancel_box.Add(ok, 0, wx.ALL, 5) + ok_cancel_box.Add(cancel, 0, wx.ALL, 5) + self.sizer.Add(ok_cancel_box, 0, wx.ALL, 5) + self.panel.SetSizer(self.sizer) + self.SetClientSize(self.sizer.CalcMin()) + + def get_value(self, panel, key): + p = getattr(self, panel) + return getattr(p, key).GetValue() + + def set_value(self, panel, key, value): + p = getattr(self, panel) + control = getattr(p, key) + getattr(control, "SetValue")(value) + diff --git a/srcantiguo/wxUI/dialogs/find.py b/srcantiguo/wxUI/dialogs/find.py new file mode 100644 index 00000000..c6176fc4 --- /dev/null +++ b/srcantiguo/wxUI/dialogs/find.py @@ -0,0 +1,29 @@ +# -*- coding: utf-8 -*- +from __future__ import absolute_import +from __future__ import unicode_literals +# -*- coding: utf-8 -*- +from . import baseDialog +import wx + +class findDialog(baseDialog.BaseWXDialog): + def __init__(self, value=""): + super(findDialog, self).__init__(None, -1) + panel = wx.Panel(self) + sizer = wx.BoxSizer(wx.VERTICAL) + self.SetTitle(_(u"Find in current buffer")) + label = wx.StaticText(panel, -1, _(u"String")) + self.string = wx.TextCtrl(panel, -1, value) + dc = wx.WindowDC(self.string) + dc.SetFont(self.string.GetFont()) + self.string.SetSize(dc.GetTextExtent("0"*40)) + sizer.Add(label, 0, wx.ALL, 5) + sizer.Add(self.string, 0, wx.ALL, 5) + ok = wx.Button(panel, wx.ID_OK, _(u"OK")) + ok.SetDefault() + cancel = wx.Button(panel, wx.ID_CANCEL, _(u"Cancel")) + btnsizer = wx.BoxSizer() + btnsizer.Add(ok, 0, wx.ALL, 5) + btnsizer.Add(cancel, 0, wx.ALL, 5) + sizer.Add(btnsizer, 0, wx.ALL, 5) + panel.SetSizer(sizer) + self.SetClientSize(sizer.CalcMin()) diff --git a/srcantiguo/wxUI/dialogs/mastodon/__init__.py b/srcantiguo/wxUI/dialogs/mastodon/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/srcantiguo/wxUI/dialogs/mastodon/communityTimeline.py b/srcantiguo/wxUI/dialogs/mastodon/communityTimeline.py new file mode 100644 index 00000000..6f29f0c5 --- /dev/null +++ b/srcantiguo/wxUI/dialogs/mastodon/communityTimeline.py @@ -0,0 +1,38 @@ +# -*- coding: utf-8 -*- +import wx + +class CommunityTimeline(wx.Dialog): + def __init__(self, *args, **kwargs): + super(CommunityTimeline, self).__init__(parent=None, *args, **kwargs) + panel = wx.Panel(self) + communitySizer = wx.BoxSizer() + self.SetTitle(_("Create community timeline")) + communityLabel = wx.StaticText(panel, -1, _("Community URL")) + self.url = wx.TextCtrl(panel, -1) + self.url.SetFocus() + communitySizer.Add(communityLabel, 0, wx.ALL, 5) + communitySizer.Add(self.url, 0, wx.ALL, 5) + actionSizer = wx.BoxSizer(wx.VERTICAL) + label2 = wx.StaticText(panel, -1, _(u"Buffer type")) + self.local= wx.RadioButton(panel, -1, _("&Local timeline"), style=wx.RB_GROUP) + self.federated= wx.RadioButton(panel, -1, _("&Federated Timeline")) + hSizer = wx.BoxSizer(wx.HORIZONTAL) + hSizer.Add(label2, 0, wx.ALL, 5) + actionSizer.Add(self.local, 0, wx.ALL, 5) + actionSizer.Add(self.federated, 0, wx.ALL, 5) + hSizer.Add(actionSizer, 0, wx.ALL, 5) + sizer = wx.BoxSizer(wx.VERTICAL) + ok = wx.Button(panel, wx.ID_OK, _(u"&OK")) + ok.SetDefault() + cancel = wx.Button(panel, wx.ID_CANCEL, _(u"&Close")) + btnsizer = wx.BoxSizer() + btnsizer.Add(ok) + btnsizer.Add(cancel) + sizer.Add(communitySizer) + sizer.Add(hSizer, 0, wx.ALL, 5) + sizer.Add(btnsizer) + panel.SetSizer(sizer) + + def get_action(self): + if self.local.GetValue() == True: return "local" + elif self.federated.GetValue() == True: return "federated" diff --git a/srcantiguo/wxUI/dialogs/mastodon/configuration.py b/srcantiguo/wxUI/dialogs/mastodon/configuration.py new file mode 100644 index 00000000..9138ea63 --- /dev/null +++ b/srcantiguo/wxUI/dialogs/mastodon/configuration.py @@ -0,0 +1,188 @@ +# -*- coding: utf-8 -*- +import wx +import widgetUtils +from wxUI.dialogs import baseDialog +# As some panels are the same than those used in Twitter sessions, let's import them directly. +from wxUI.dialogs.configuration import reporting, other_buffers +from multiplatform_widgets import widgets + +class generalAccount(wx.Panel, baseDialog.BaseWXDialog): + + def __init__(self, parent): + super(generalAccount, self).__init__(parent) + sizer = wx.BoxSizer(wx.VERTICAL) + userAutocompletionBox = wx.StaticBox(self, label=_("User autocompletion settings")) + self.userAutocompletionScan = wx.Button(self, wx.ID_ANY, _("Scan acc&ount and add followers and following users to the user autocompletion database")) + self.userAutocompletionManage = wx.Button(self, wx.ID_ANY, _("&Manage autocompletion database")) + autocompletionSizer = wx.StaticBoxSizer(userAutocompletionBox, wx.HORIZONTAL) + autocompletionSizer.Add(self.userAutocompletionScan, 0, wx.ALL, 5) + autocompletionSizer.Add(self.userAutocompletionManage, 0, wx.ALL, 5) + sizer.Add(autocompletionSizer, 0, wx.ALL, 5) + self.disable_streaming = wx.CheckBox(self, wx.ID_ANY, _("&Disable Streaming API endpoints")) + sizer.Add(self.disable_streaming, 0, wx.ALL, 5) + self.relative_time = wx.CheckBox(self, wx.ID_ANY, _("&Relative timestamps")) + sizer.Add(self.relative_time, 0, wx.ALL, 5) + self.read_preferences_from_instance = wx.CheckBox(self, wx.ID_ANY, _("R&ead preferences from instance (default visibility when publishing and displaying sensitive content)")) + sizer.Add(self.read_preferences_from_instance, 0, wx.ALL, 5) + itemsPerCallBox = wx.BoxSizer(wx.HORIZONTAL) + itemsPerCallBox.Add(wx.StaticText(self, -1, _("&Items on each API call")), 0, wx.ALL, 5) + self.itemsPerApiCall = wx.SpinCtrl(self, wx.ID_ANY) + self.itemsPerApiCall.SetRange(0, 40) + self.itemsPerApiCall.SetSize(self.itemsPerApiCall.GetBestSize()) + itemsPerCallBox.Add(self.itemsPerApiCall, 0, wx.ALL, 5) + sizer.Add(itemsPerCallBox, 0, wx.ALL, 5) + self.reverse_timelines = wx.CheckBox(self, wx.ID_ANY, _("I&nverted buffers: The newest items will be shown at the beginning while the oldest at the end")) + sizer.Add(self.reverse_timelines, 0, wx.ALL, 5) + self.ask_before_boost = wx.CheckBox(self, wx.ID_ANY, _("&Ask confirmation before boosting a post")) + sizer.Add(self.ask_before_boost, 0, wx.ALL, 5) + self.show_screen_names = wx.CheckBox(self, wx.ID_ANY, _("S&how screen names instead of full names")) + sizer.Add(self.show_screen_names, 0, wx.ALL, 5) + self.hide_emojis = wx.CheckBox(self, wx.ID_ANY, _("Hide e&mojis in usernames")) + sizer.Add(self.hide_emojis, 0, wx.ALL, 5) + PersistSizeLabel = wx.StaticText(self, -1, _("&Number of items per buffer to cache in database (0 to disable caching, blank for unlimited)")) + self.persist_size = wx.TextCtrl(self, -1) + sizer.Add(PersistSizeLabel, 0, wx.ALL, 5) + sizer.Add(self.persist_size, 0, wx.ALL, 5) + self.load_cache_in_memory = wx.CheckBox(self, wx.NewId(), _("&Load cache for items in memory (much faster in big datasets but requires more RAM)")) + self.SetSizer(sizer) + +class templates(wx.Panel, baseDialog.BaseWXDialog): + def __init__(self, parent, post_template, conversation_template, person_template): + super(templates, self).__init__(parent) + sizer = wx.BoxSizer(wx.VERTICAL) + self.post = wx.Button(self, wx.ID_ANY, _("Edit template for &posts. Current template: {}").format(post_template)) + sizer.Add(self.post, 0, wx.ALL, 5) + self.conversation = wx.Button(self, wx.ID_ANY, _("Edit template for c&onversations. Current template: {}").format(conversation_template)) + sizer.Add(self.conversation, 0, wx.ALL, 5) + self.person = wx.Button(self, wx.ID_ANY, _("Edit template for p&ersons. Current template: {}").format(person_template)) + sizer.Add(self.person, 0, wx.ALL, 5) + self.SetSizer(sizer) + +class sound(wx.Panel): + def __init__(self, parent, input_devices, output_devices, soundpacks): + wx.Panel.__init__(self, parent) + sizer = wx.BoxSizer(wx.VERTICAL) + volume = wx.StaticText(self, -1, _(u"&Volume")) + self.volumeCtrl = wx.Slider(self) + # Connect a key handler here to handle volume slider being inverted when moving with up and down arrows. + # see https://github.com/manuelcortez/TWBlue/issues/261 + widgetUtils.connect_event(self.volumeCtrl, widgetUtils.KEYPRESS, self.on_keypress) + self.volumeCtrl.SetRange(0, 100) + self.volumeCtrl.SetSize(self.volumeCtrl.GetBestSize()) + volumeBox = wx.BoxSizer(wx.HORIZONTAL) + volumeBox.Add(volume, 0, wx.ALL, 5) + volumeBox.Add(self.volumeCtrl, 0, wx.ALL, 5) + sizer.Add(volumeBox, 0, wx.ALL, 5) + self.session_mute = wx.CheckBox(self, -1, _(u"S&ession mute")) + sizer.Add(self.session_mute, 0, wx.ALL, 5) + output_label = wx.StaticText(self, -1, _(u"&Output device")) + self.output = wx.ComboBox(self, -1, choices=output_devices, style=wx.CB_READONLY) + self.output.SetSize(self.output.GetBestSize()) + outputBox = wx.BoxSizer(wx.HORIZONTAL) + outputBox.Add(output_label, 0, wx.ALL, 5) + outputBox.Add(self.output, 0, wx.ALL, 5) + sizer.Add(outputBox, 0, wx.ALL, 5) + input_label = wx.StaticText(self, -1, _(u"&Input device")) + self.input = wx.ComboBox(self, -1, choices=input_devices, style=wx.CB_READONLY) + self.input.SetSize(self.input.GetBestSize()) + inputBox = wx.BoxSizer(wx.HORIZONTAL) + inputBox.Add(input_label, 0, wx.ALL, 5) + inputBox.Add(self.input, 0, wx.ALL, 5) + sizer.Add(inputBox, 0, wx.ALL, 5) + soundBox = wx.BoxSizer(wx.VERTICAL) + soundpack_label = wx.StaticText(self, -1, _(u"Sound &pack")) + self.soundpack = wx.ComboBox(self, -1, choices=soundpacks, style=wx.CB_READONLY) + self.soundpack.SetSize(self.soundpack.GetBestSize()) + soundBox.Add(soundpack_label, 0, wx.ALL, 5) + soundBox.Add(self.soundpack, 0, wx.ALL, 5) + sizer.Add(soundBox, 0, wx.ALL, 5) + self.indicate_audio = wx.CheckBox(self, -1, _("Indicate &audio or video in posts with sound")) + sizer.Add(self.indicate_audio, 0, wx.ALL, 5) + self.indicate_img = wx.CheckBox(self, -1, _("Indicate posts containing i&mages with sound")) + sizer.Add(self.indicate_img, 0, wx.ALL, 5) + self.SetSizer(sizer) + + def on_keypress(self, event, *args, **kwargs): + """ Invert movement of up and down arrow keys when dealing with a wX Slider. + See https://github.com/manuelcortez/TWBlue/issues/261 + and http://trac.wxwidgets.org/ticket/2068 + """ + keycode = event.GetKeyCode() + if keycode == wx.WXK_UP: + return self.volumeCtrl.SetValue(self.volumeCtrl.GetValue()+1) + elif keycode == wx.WXK_DOWN: + return self.volumeCtrl.SetValue(self.volumeCtrl.GetValue()-1) + event.Skip() + + def get(self, control): + return getattr(self, control).GetStringSelection() + +class extrasPanel(wx.Panel): + def __init__(self, parent, ocr_languages=[], translation_languages=[]): + super(extrasPanel, self).__init__(parent) + mainSizer = wx.BoxSizer(wx.VERTICAL) + OCRBox = wx.StaticBox(self, label=_(u"&Language for OCR")) + self.ocr_lang = wx.ListBox(self, -1, choices=ocr_languages) + self.ocr_lang.SetSize(self.ocr_lang.GetBestSize()) + ocrLanguageSizer = wx.StaticBoxSizer(OCRBox, wx.HORIZONTAL) + ocrLanguageSizer.Add(self.ocr_lang, 0, wx.ALL, 5) + mainSizer.Add(ocrLanguageSizer, 0, wx.ALL, 5) + self.SetSizer(mainSizer) + +class configurationDialog(baseDialog.BaseWXDialog): + def set_title(self, title): + self.SetTitle(title) + + def __init__(self): + super(configurationDialog, self).__init__(None, -1) + self.panel = wx.Panel(self) + self.sizer = wx.BoxSizer(wx.VERTICAL) + self.notebook = wx.Notebook(self.panel) + + def create_general_account(self): + self.general = generalAccount(self.notebook) + self.notebook.AddPage(self.general, _(u"General")) + self.general.SetFocus() + + def create_reporting(self): + self.reporting = reporting(self.notebook) + self.notebook.AddPage(self.reporting, _(u"Feedback")) + + def create_other_buffers(self): + self.buffers = other_buffers(self.notebook) + self.notebook.AddPage(self.buffers, _(u"Buffers")) + + def create_templates(self, post_template, conversation_template, person_template): + self.templates = templates(self.notebook, post_template=post_template, conversation_template=conversation_template, person_template=person_template) + self.notebook.AddPage(self.templates, _("Templates")) + + def create_sound(self, output_devices, input_devices, soundpacks): + self.sound = sound(self.notebook, output_devices, input_devices, soundpacks) + self.notebook.AddPage(self.sound, _(u"Sound")) + + def create_extras(self, ocr_languages=[], translator_languages=[]): + self.extras = extrasPanel(self.notebook, ocr_languages, translator_languages) + self.notebook.AddPage(self.extras, _(u"Extras")) + + def realize(self): + self.sizer.Add(self.notebook, 0, wx.ALL, 5) + ok_cancel_box = wx.BoxSizer(wx.HORIZONTAL) + ok = wx.Button(self.panel, wx.ID_OK, _(u"&Save")) + ok.SetDefault() + cancel = wx.Button(self.panel, wx.ID_CANCEL, _(u"&Close")) + self.SetEscapeId(cancel.GetId()) + ok_cancel_box.Add(ok, 0, wx.ALL, 5) + ok_cancel_box.Add(cancel, 0, wx.ALL, 5) + self.sizer.Add(ok_cancel_box, 0, wx.ALL, 5) + self.panel.SetSizer(self.sizer) + self.SetClientSize(self.sizer.CalcMin()) + + def get_value(self, panel, key): + p = getattr(self, panel) + return getattr(p, key).GetValue() + + def set_value(self, panel, key, value): + p = getattr(self, panel) + control = getattr(p, key) + getattr(control, "SetValue")(value) + diff --git a/srcantiguo/wxUI/dialogs/mastodon/dialogs.py b/srcantiguo/wxUI/dialogs/mastodon/dialogs.py new file mode 100644 index 00000000..1f945d82 --- /dev/null +++ b/srcantiguo/wxUI/dialogs/mastodon/dialogs.py @@ -0,0 +1,62 @@ +# -*- coding: utf-8 -*- +import wx +import application + +def boost_question(): + result = False + dlg = wx.MessageDialog(None, _("Would you like to share this post?"), _("Boost"), wx.YES_NO|wx.ICON_QUESTION) + if dlg.ShowModal() == wx.ID_YES: + result = True + dlg.Destroy() + return result + +def delete_post_dialog(): + result = False + dlg = wx.MessageDialog(None, _("Do you really want to delete this post? It will be deleted from the instance as well."), _("Delete"), wx.ICON_QUESTION|wx.YES_NO) + if dlg.ShowModal() == wx.ID_YES: + result = True + dlg.Destroy() + return result + +def delete_notification_dialog(): + result = False + dlg = wx.MessageDialog(None, _("Are you sure you want to dismiss this notification? If you dismiss a mention notification, it also disappears from your mentions buffer. The post is not going to be deleted from the instance, though."), _("Dismiss"), wx.ICON_QUESTION|wx.YES_NO) + if dlg.ShowModal() == wx.ID_YES: + result = True + dlg.Destroy() + return result + +def clear_list(): + result = False + dlg = wx.MessageDialog(None, _("Do you really want to empty this buffer? It's items will be removed from the list but not from the instance"), _(u"Empty buffer"), wx.ICON_QUESTION|wx.YES_NO) + if dlg.ShowModal() == wx.ID_YES: + result = True + dlg.Destroy() + return result + +def no_posts(): + dlg = wx.MessageDialog(None, _("This user has no posts. {0} can't create a timeline.").format(application.name), _(u"Error"), wx.ICON_ERROR) + dlg.ShowModal() + dlg.Destroy() + +def no_favs(): + dlg = wx.MessageDialog(None, _(u"This user has no favorited posts. {0} can't create a timeline.").format(application.name), _(u"Error"), wx.ICON_ERROR) + dlg.ShowModal() + dlg.Destroy() + +def no_followers(): + dlg = wx.MessageDialog(None, _(u"This user has no followers yet. {0} can't create a timeline.").format(application.name), _(u"Error"), wx.ICON_ERROR) + dlg.ShowModal() + dlg.Destroy() + +def no_following(): + dlg = wx.MessageDialog(None, _("This user is not following anyone. {0} can't create a timeline.").format(application.name), _(u"Error"), wx.ICON_ERROR) + dlg.ShowModal() + dlg.Destroy() + + dlg.Destroy() + +def no_user(): + dlg = wx.MessageDialog(None, _("The focused item has no user in it. {} ca't open a user profile").format(application.name), _(u"Error"), wx.ICON_ERROR) + dlg.ShowModal() + dlg.Destroy() diff --git a/srcantiguo/wxUI/dialogs/mastodon/filters/__init__.py b/srcantiguo/wxUI/dialogs/mastodon/filters/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/srcantiguo/wxUI/dialogs/mastodon/filters/create_filter.py b/srcantiguo/wxUI/dialogs/mastodon/filters/create_filter.py new file mode 100644 index 00000000..a0d770b5 --- /dev/null +++ b/srcantiguo/wxUI/dialogs/mastodon/filters/create_filter.py @@ -0,0 +1,146 @@ +# -*- coding: utf-8 -*- +import wx + +class FilterKeywordPanel(wx.Panel): + """panel to handle filter's keywords. """ + def __init__(self, parent): + super(FilterKeywordPanel, self).__init__(parent) + self.keywords = [] + # Add widgets + list_panel = wx.Panel(self) + self.keyword_list = wx.ListCtrl(list_panel, wx.ID_ANY, style=wx.LC_REPORT | wx.LC_SINGLE_SEL) + self.keyword_list.InsertColumn(0, _("Keyword")) + self.keyword_list.InsertColumn(1, _("Whole word")) + self.keyword_list.SetColumnWidth(0, wx.LIST_AUTOSIZE_USEHEADER) + self.keyword_list.SetColumnWidth(1, wx.LIST_AUTOSIZE_USEHEADER) + list_sizer = wx.BoxSizer(wx.VERTICAL) + list_sizer.Add(self.keyword_list, 1, wx.EXPAND) + list_panel.SetSizer(list_sizer) + keyword_label = wx.StaticText(self, wx.ID_ANY, label=_("Keyword:")) + self.keyword_text = wx.TextCtrl(self, wx.ID_ANY) + keyword_sizer = wx.BoxSizer(wx.VERTICAL) + keyword_sizer.Add(keyword_label, 0, wx.RIGHT, 5) + keyword_sizer.Add(self.keyword_text, 0, wx.EXPAND) + self.whole_word_checkbox = wx.CheckBox(self, wx.ID_ANY, label=_("Whole word")) + self.add_button = wx.Button(self, wx.ID_ANY, label=_("Add")) + self.remove_button = wx.Button(self, wx.ID_ANY, label=_("Remove")) + input_sizer = wx.BoxSizer(wx.HORIZONTAL) + input_sizer.Add(keyword_sizer, 1, wx.RIGHT, 5) + input_sizer.Add(self.whole_word_checkbox, 0) + button_sizer = wx.BoxSizer(wx.HORIZONTAL) + button_sizer.Add(self.add_button, 0, wx.RIGHT, 5) + button_sizer.Add(self.remove_button, 0) + main_sizer = wx.BoxSizer(wx.VERTICAL) + main_sizer.Add(wx.StaticText(self, label=_("Keywords to filter:")), 0, wx.BOTTOM, 5) + main_sizer.Add(list_panel, 1, wx.EXPAND | wx.BOTTOM, 5) + main_sizer.Add(input_sizer, 0, wx.EXPAND | wx.BOTTOM, 5) + main_sizer.Add(button_sizer, 0, wx.ALIGN_RIGHT) + self.SetSizer(main_sizer) + + def add_keyword(self, keyword, whole_word=False): + """ Adds a keyword to the list. """ + index = self.keyword_list.InsertItem(self.keyword_list.GetItemCount(), keyword) + self.keyword_list.SetItem(index, 1, _("Yes") if whole_word else _("No")) + self.keyword_list.SetColumnWidth(0, wx.LIST_AUTOSIZE) + self.keyword_list.SetColumnWidth(1, wx.LIST_AUTOSIZE_USEHEADER) + self.keyword_text.Clear() + self.whole_word_checkbox.SetValue(False) + + def remove_keyword(self): + """ Remove a keyword from the list. """ + selection = self.keyword_list.GetFirstSelected() + if selection != -1: + self.keyword_list.DeleteItem(selection) + return selection + + def set_keywords(self, keywords): + """ Set the list of keyword. """ + self.keyword_list.DeleteAllItems() + for keyword_data in keywords: + if isinstance(keyword_data, dict): + kw = keyword_data.get('keyword', '') + whole_word = keyword_data.get('whole_word', False) + self.keywords.append({'keyword': kw, 'whole_word': whole_word}) + index = self.keyword_list.InsertItem(self.keyword_list.GetItemCount(), kw) + self.keyword_list.SetItem(index, 1, _("Yes") if whole_word else _("No")) + else: + self.keywords.append({'keyword': keyword_data, 'whole_word': False}) + index = self.keyword_list.InsertItem(self.keyword_list.GetItemCount(), keyword_data) + self.keyword_list.SetItem(index, 1, _("No")) + self.keyword_list.SetColumnWidth(0, wx.LIST_AUTOSIZE) + self.keyword_list.SetColumnWidth(1, wx.LIST_AUTOSIZE_USEHEADER) + +class CreateFilterDialog(wx.Dialog): + def __init__(self, parent, title=_("New filter")): + super(CreateFilterDialog, self).__init__(parent, title=title, style=wx.DEFAULT_DIALOG_STYLE | wx.RESIZE_BORDER) + self.contexts = ["home", "public", "notifications", "thread", "account"] + self.context_labels = { + "home": _("Home timeline"), + "public": _("Public statuses"), + "notifications": _("Notifications"), + "thread": _("Threads"), + "account": _("Profiles") + } + self.actions = ["hide", "warn"] + self.action_labels = { + "hide": _("Hide posts"), + "warn": _("Set a content warning to posts") + } + self.expiration_options = [ + ("never", _("Never")), + ("hours", _("Hours")), + ("days", _("Days")), + ("weeks", _("Weeks")), + ("months", _("months")) + ] + main_sizer = wx.BoxSizer(wx.VERTICAL) + name_label = wx.StaticText(self, wx.ID_ANY, label=_("Title:")) + self.name_ctrl = wx.TextCtrl(self, wx.ID_ANY) + + name_sizer = wx.BoxSizer(wx.HORIZONTAL) + name_sizer.Add(name_label, 0, wx.ALIGN_CENTER_VERTICAL | wx.RIGHT, 5) + name_sizer.Add(self.name_ctrl, 1, wx.EXPAND) + main_sizer.Add(name_sizer, 0, wx.EXPAND | wx.ALL, 10) + static_box = wx.StaticBox(self, wx.ID_ANY, label=_("Apply to:")) + context_sizer = wx.StaticBoxSizer(static_box, wx.VERTICAL) + self.context_checkboxes = {} + context_grid = wx.FlexGridSizer(rows=3, cols=2, vgap=5, hgap=10) + for context in self.contexts: + checkbox = wx.CheckBox(static_box, wx.ID_ANY, label=self.context_labels[context]) + self.context_checkboxes[context] = checkbox + context_grid.Add(checkbox) + context_sizer.Add(context_grid, 0, wx.ALL, 10) + main_sizer.Add(context_sizer, 0, wx.EXPAND | wx.ALL, 10) + action_label = wx.StaticText(self, wx.ID_ANY, label=_("Action:")) + self.action_choice = wx.Choice(self, wx.ID_ANY) + for action in self.actions: + self.action_choice.Append(self.action_labels[action]) + action_sizer = wx.BoxSizer(wx.HORIZONTAL) + action_sizer.Add(action_label, 0, wx.ALIGN_CENTER_VERTICAL | wx.RIGHT, 5) + action_sizer.Add(self.action_choice, 1) + main_sizer.Add(action_sizer, 0, wx.EXPAND | wx.ALL, 10) + expiration_label = wx.StaticText(self, wx.ID_ANY, label=_("Expires in:")) + self.expiration_choice = wx.Choice(self, wx.ID_ANY) + for e, label in self.expiration_options: + self.expiration_choice.Append(label) + self.expiration_value = wx.SpinCtrl(self, wx.ID_ANY, min=1, max=9999, initial=1) + self.expiration_value.Enable(False) + self.expiration_choice.Bind(wx.EVT_CHOICE, self.on_expiration_changed) + expiration_sizer = wx.BoxSizer(wx.HORIZONTAL) + expiration_sizer.Add(expiration_label, 0, wx.ALIGN_CENTER_VERTICAL | wx.RIGHT, 5) + expiration_sizer.Add(self.expiration_choice, 1, wx.RIGHT, 5) + expiration_sizer.Add(self.expiration_value, 0) + main_sizer.Add(expiration_sizer, 0, wx.EXPAND | wx.ALL, 10) + self.keyword_panel = FilterKeywordPanel(self) + main_sizer.Add(self.keyword_panel, 1, wx.EXPAND | wx.ALL, 10) + button_sizer = self.CreateButtonSizer(wx.OK | wx.CANCEL) + main_sizer.Add(button_sizer, 0, wx.EXPAND | wx.ALL, 10) + self.SetSizer(main_sizer) + self.SetSize((450, 550)) + self.action_choice.SetSelection(0) + self.expiration_choice.SetSelection(0) + wx.CallAfter(self.name_ctrl.SetFocus) + + def on_expiration_changed(self, event): + selection = self.expiration_choice.GetSelection() + self.expiration_value.Enable(selection != 0) diff --git a/srcantiguo/wxUI/dialogs/mastodon/filters/manage_filters.py b/srcantiguo/wxUI/dialogs/mastodon/filters/manage_filters.py new file mode 100644 index 00000000..1710afab --- /dev/null +++ b/srcantiguo/wxUI/dialogs/mastodon/filters/manage_filters.py @@ -0,0 +1,35 @@ +# -*- coding: utf-8 -*- +import wx + +class ManageFiltersDialog(wx.Dialog): + """ + A dialog that displays a list of Mastodon filters and provides controls + to add, edit and remove them. + """ + + def __init__(self, parent, title=_("Filters"), *args, **kwargs): + """Initialize the filters view dialog. """ + super(ManageFiltersDialog, self).__init__(parent, title=title, *args, **kwargs) + main_sizer = wx.BoxSizer(wx.VERTICAL) + self.filter_list = wx.ListCtrl(self, style=wx.LC_REPORT | wx.LC_SINGLE_SEL | wx.BORDER_SUNKEN) + self.filter_list.InsertColumn(0, _("Title"), width=150) + self.filter_list.InsertColumn(1, _("Keywords"), width=80) + self.filter_list.InsertColumn(2, _("Contexts"), width=150) + self.filter_list.InsertColumn(3, _("Action"), width=100) + self.filter_list.InsertColumn(4, _("Expires"), width=150) + main_sizer.Add(self.filter_list, 1, wx.EXPAND | wx.ALL, 10) + button_sizer = wx.BoxSizer(wx.HORIZONTAL) + self.add_button = wx.Button(self, label=_("Add")) + self.edit_button = wx.Button(self, label=_("Edit")) + self.remove_button = wx.Button(self, label=_("Remove")) + close_button = wx.Button(self, wx.ID_CLOSE) + self.edit_button.Disable() + self.remove_button.Disable() + button_sizer.Add(self.add_button, 0, wx.RIGHT, 5) + button_sizer.Add(self.edit_button, 0, wx.RIGHT, 5) + button_sizer.Add(self.remove_button, 0, wx.RIGHT, 5) + button_sizer.Add((0, 0), 1, wx.EXPAND) # Spacer to push close button to right + button_sizer.Add(close_button, 0) + self.SetEscapeId(close_button.GetId()) + main_sizer.Add(button_sizer, 0, wx.EXPAND | wx.LEFT | wx.RIGHT | wx.BOTTOM, 10) + self.SetSizer(main_sizer) diff --git a/srcantiguo/wxUI/dialogs/mastodon/menus.py b/srcantiguo/wxUI/dialogs/mastodon/menus.py new file mode 100644 index 00000000..62dd3407 --- /dev/null +++ b/srcantiguo/wxUI/dialogs/mastodon/menus.py @@ -0,0 +1,62 @@ +# -*- coding: utf-8 -*- +import wx + +class base(wx.Menu): + def __init__(self): + super(base, self).__init__() + self.boost = wx.MenuItem(self, wx.ID_ANY, _("&Boost")) + self.Append(self.boost) + self.reply = wx.MenuItem(self, wx.ID_ANY, _(u"Re&ply")) + self.Append(self.reply) + self.edit = wx.MenuItem(self, wx.ID_ANY, _(u"&Edit")) + self.Append(self.edit) + self.fav = wx.MenuItem(self, wx.ID_ANY, _(u"&Add to favorites")) + self.Append(self.fav) + self.unfav = wx.MenuItem(self, wx.ID_ANY, _(u"R&emove from favorites")) + self.Append(self.unfav) + self.mute = wx.MenuItem(self, wx.ID_ANY, _(u"Mute/Unmute conversation")) + self.Append(self.mute) + self.openUrl = wx.MenuItem(self, wx.ID_ANY, _("&Open URL")) + self.Append(self.openUrl) + self.openInBrowser = wx.MenuItem(self, wx.ID_ANY, _(u"&Open in instance")) + self.Append(self.openInBrowser) + self.play = wx.MenuItem(self, wx.ID_ANY, _(u"&Play audio")) + self.Append(self.play) + self.view = wx.MenuItem(self, wx.ID_ANY, _(u"&Show post")) + self.Append(self.view) + self.copy = wx.MenuItem(self, wx.ID_ANY, _(u"&Copy to clipboard")) + self.Append(self.copy) + self.remove = wx.MenuItem(self, wx.ID_ANY, _(u"&Delete")) + self.Append(self.remove) + self.userActions = wx.MenuItem(self, wx.ID_ANY, _(u"&User actions...")) + self.Append(self.userActions) + +class notification(wx.Menu): + def __init__(self, item="status"): + super(notification, self).__init__() + valid_types = ["status", "mention", "reblog", "favourite", "update", "poll"] + if item in valid_types: + self.boost = wx.MenuItem(self, wx.ID_ANY, _("&Boost")) + self.Append(self.boost) + self.reply = wx.MenuItem(self, wx.ID_ANY, _(u"Re&ply")) + self.Append(self.reply) + self.edit = wx.MenuItem(self, wx.ID_ANY, _(u"&Edit")) + self.Append(self.edit) + self.fav = wx.MenuItem(self, wx.ID_ANY, _(u"&Add to favorites")) + self.Append(self.fav) + self.unfav = wx.MenuItem(self, wx.ID_ANY, _(u"R&emove from favorites")) + self.Append(self.unfav) + self.openUrl = wx.MenuItem(self, wx.ID_ANY, _("&Open URL")) + self.Append(self.openUrl) + self.play = wx.MenuItem(self, wx.ID_ANY, _(u"&Play audio")) + self.Append(self.play) + self.openInBrowser = wx.MenuItem(self, wx.ID_ANY, _(u"&Open in instance")) + self.Append(self.openInBrowser) + self.view = wx.MenuItem(self, wx.ID_ANY, _(u"&Show post")) + self.Append(self.view) + self.copy = wx.MenuItem(self, wx.ID_ANY, _(u"&Copy to clipboard")) + self.Append(self.copy) + self.remove = wx.MenuItem(self, wx.ID_ANY, _(u"&Dismiss")) + self.Append(self.remove) + self.userActions = wx.MenuItem(self, wx.ID_ANY, _(u"&User actions...")) + self.Append(self.userActions) diff --git a/srcantiguo/wxUI/dialogs/mastodon/postDialogs.py b/srcantiguo/wxUI/dialogs/mastodon/postDialogs.py new file mode 100644 index 00000000..c3532ec1 --- /dev/null +++ b/srcantiguo/wxUI/dialogs/mastodon/postDialogs.py @@ -0,0 +1,465 @@ +# -*- coding: utf-8 -*- +import wx +import wx.adv +import datetime + +class Post(wx.Dialog): + def __init__(self, caption=_("Post"), text="", languages=[], *args, **kwds): + super(Post, self).__init__(parent=None, id=wx.ID_ANY, *args, **kwds) + main_sizer = wx.BoxSizer(wx.VERTICAL) + post_sizer = wx.WrapSizer(wx.VERTICAL) + main_sizer.Add(post_sizer, 1, wx.EXPAND, 0) + post_label = wx.StaticText(self, wx.ID_ANY, caption) + post_sizer.Add(post_label, 0, 0, 0) + self.text = wx.TextCtrl(self, wx.ID_ANY, text, style=wx.TE_MULTILINE) + self.Bind(wx.EVT_CHAR_HOOK, self.handle_keys, self.text) + self.text.SetMinSize((350, -1)) + post_sizer.Add(self.text, 0, 0, 0) + lists_sizer = wx.BoxSizer(wx.HORIZONTAL) + main_sizer.Add(lists_sizer, 1, wx.EXPAND, 0) + attachments_sizer = wx.WrapSizer(wx.VERTICAL) + lists_sizer.Add(attachments_sizer, 1, wx.EXPAND, 0) + attachments_label = wx.StaticText(self, wx.ID_ANY, _("Attachments")) + attachments_sizer.Add(attachments_label, 0, 0, 0) + self.attachments = wx.ListCtrl(self, wx.ID_ANY, style=wx.LC_HRULES | wx.LC_REPORT | wx.LC_SINGLE_SEL | wx.LC_VRULES) + self.attachments.Enable(False) + self.attachments.AppendColumn(_("File"), format=wx.LIST_FORMAT_LEFT, width=-1) + self.attachments.AppendColumn(_("Type"), format=wx.LIST_FORMAT_LEFT, width=-1) + self.attachments.AppendColumn(_("Description"), format=wx.LIST_FORMAT_LEFT, width=-1) + attachments_sizer.Add(self.attachments, 1, wx.EXPAND, 0) + self.remove_attachment = wx.Button(self, wx.ID_ANY, _("Remove Attachment")) + self.remove_attachment.Enable(False) + attachments_sizer.Add(self.remove_attachment, 0, 0, 0) + posts_sizer = wx.WrapSizer(wx.VERTICAL) + lists_sizer.Add(posts_sizer, 1, wx.EXPAND, 0) + posts_label = wx.StaticText(self, wx.ID_ANY, _("Post in the thread")) + posts_sizer.Add(posts_label, 0, 0, 0) + self.posts = wx.ListCtrl(self, wx.ID_ANY, style=wx.LC_HRULES | wx.LC_REPORT | wx.LC_SINGLE_SEL | wx.LC_VRULES) + self.posts.Enable(False) + self.posts.AppendColumn(_("Text"), format=wx.LIST_FORMAT_LEFT, width=-1) + self.posts.AppendColumn(_("Attachments"), format=wx.LIST_FORMAT_LEFT, width=-1) + posts_sizer.Add(self.posts, 1, wx.EXPAND, 0) + self.remove_post = wx.Button(self, wx.ID_ANY, _("Remove post")) + self.remove_post.Enable(False) + posts_sizer.Add(self.remove_post, 0, 0, 0) + post_actions_sizer = wx.BoxSizer(wx.HORIZONTAL) + main_sizer.Add(post_actions_sizer, 1, wx.EXPAND, 0) + visibility_sizer = wx.BoxSizer(wx.HORIZONTAL) + post_actions_sizer.Add(visibility_sizer, 1, wx.EXPAND, 0) + label_1 = wx.StaticText(self, wx.ID_ANY, _("&Visibility")) + visibility_sizer.Add(label_1, 0, 0, 0) + self.visibility = wx.ComboBox(self, wx.ID_ANY, choices=[_("Public"), _("Not listed"), _("Followers only"), _("Direct")], style=wx.CB_DROPDOWN | wx.CB_READONLY | wx.CB_SIMPLE) + self.visibility.SetSelection(0) + visibility_sizer.Add(self.visibility, 0, 0, 0) + language_sizer = wx.BoxSizer(wx.HORIZONTAL) + post_actions_sizer.Add(language_sizer, 0, wx.RIGHT, 20) + lang_label = wx.StaticText(self, wx.ID_ANY, _("&Language")) + language_sizer.Add(lang_label, 0, wx.ALIGN_CENTER_VERTICAL | wx.RIGHT, 5) + self.language = wx.ComboBox(self, wx.ID_ANY, choices=languages, style=wx.CB_DROPDOWN | wx.CB_READONLY) + language_sizer.Add(self.language, 0, wx.ALIGN_CENTER_VERTICAL, 0) + self.add = wx.Button(self, wx.ID_ANY, _("A&dd")) + self.sensitive = wx.CheckBox(self, wx.ID_ANY, _("S&ensitive content")) + self.sensitive.SetValue(False) + self.sensitive.Bind(wx.EVT_CHECKBOX, self.on_sensitivity_changed) + main_sizer.Add(self.sensitive, 0, wx.ALL, 5) + + # Scheduled post section + scheduled_box = wx.BoxSizer(wx.HORIZONTAL) + self.scheduled = wx.CheckBox(self, wx.ID_ANY, _("Schedule &post")) + self.scheduled.SetValue(False) + self.scheduled.Bind(wx.EVT_CHECKBOX, self.on_schedule_changed) + scheduled_box.Add(self.scheduled, 0, wx.ALL, 5) + + # Default to now + 6 minutes to be safe for the 5 minute minimum + future_dt = wx.DateTime.Now() + future_dt.Add(wx.TimeSpan(0, 6, 0, 0)) + + self.date_picker = wx.adv.DatePickerCtrl(self, wx.ID_ANY, dt=future_dt, style=wx.adv.DP_DROPDOWN | wx.adv.DP_SHOWCENTURY) + self.date_picker.Enable(False) + scheduled_box.Add(self.date_picker, 0, wx.ALL, 5) + + self.time_picker = wx.adv.TimePickerCtrl(self, wx.ID_ANY, dt=future_dt) + self.time_picker.Enable(False) + scheduled_box.Add(self.time_picker, 0, wx.ALL, 5) + + main_sizer.Add(scheduled_box, 0, wx.ALL, 5) + + spoiler_box = wx.BoxSizer(wx.HORIZONTAL) + spoiler_label = wx.StaticText(self, wx.ID_ANY, _("Content warning")) + self.spoiler = wx.TextCtrl(self, wx.ID_ANY) + self.spoiler.Enable(False) + spoiler_box.Add(spoiler_label, 0, wx.ALL, 5) + spoiler_box.Add(self.spoiler, 0, wx.ALL, 10) + main_sizer.Add(spoiler_box, 0, wx.ALL, 5) + post_actions_sizer.Add(self.add, 0, 0, 0) + self.add_post = wx.Button(self, wx.ID_ANY, _("Add p&ost")) + post_actions_sizer.Add(self.add_post, 0, 0, 0) + text_actions_sizer = wx.BoxSizer(wx.HORIZONTAL) + main_sizer.Add(text_actions_sizer, 1, wx.EXPAND, 0) + self.autocomplete_users = wx.Button(self, wx.ID_ANY, _("Auto&complete users")) + text_actions_sizer.Add(self.autocomplete_users, 0, 0, 0) + self.spellcheck = wx.Button(self, wx.ID_ANY, _("Check &spelling")) + text_actions_sizer.Add(self.spellcheck, 0, 0, 0) + self.translate = wx.Button(self, wx.ID_ANY, _("&Translate")) + text_actions_sizer.Add(self.translate, 0, 0, 0) + btn_sizer = wx.StdDialogButtonSizer() + main_sizer.Add(btn_sizer, 0, wx.ALIGN_RIGHT | wx.ALL, 4) + self.send = wx.Button(self, wx.ID_ANY, _("&Send")) + self.send.SetDefault() + self.send.Bind(wx.EVT_BUTTON, self.validate_and_send) + btn_sizer.AddButton(self.send) + self.close = wx.Button(self, wx.ID_CLOSE, "") + btn_sizer.AddButton(self.close) + btn_sizer.Realize() + self.SetSizer(main_sizer) + main_sizer.Fit(self) + self.SetEscapeId(self.close.GetId()) + self.Layout() + + def handle_keys(self, event: wx.Event, *args, **kwargs) -> None: + """ Allows to react to certain keyboard events from the text control. """ + shift=event.ShiftDown() + if event.GetKeyCode() == wx.WXK_RETURN and shift==False and hasattr(self,'send'): + self.validate_and_send() + else: + event.Skip() + + def validate_and_send(self, event=None): + scheduled_at = self.get_scheduled_at() + if scheduled_at: + min_time = datetime.datetime.now() + datetime.timedelta(minutes=5) + if scheduled_at < min_time: + wx.MessageDialog(self, + _("Scheduled posts must be set at least 5 minutes in the future. Please adjust the time."), + _("Invalid scheduled time"), + wx.ICON_ERROR | wx.OK).ShowModal() + return + self.EndModal(wx.ID_OK) + + def on_sensitivity_changed(self, *args, **kwargs): + self.spoiler.Enable(self.sensitive.GetValue()) + + def on_schedule_changed(self, *args, **kwargs): + enabled = self.scheduled.GetValue() + self.date_picker.Enable(enabled) + self.time_picker.Enable(enabled) + + def get_scheduled_at(self): + if not self.scheduled.GetValue(): + return None + + # Get date from date picker + wx_date = self.date_picker.GetValue() + # Get time from time picker + wx_time = self.time_picker.GetValue() + + # Combine into a python datetime object + dt = datetime.datetime( + wx_date.GetYear(), + wx_date.GetMonth() + 1, # wx.DateTime months are 0-11 + wx_date.GetDay(), + wx_time.GetHour(), + wx_time.GetMinute(), + wx_time.GetSecond() + ) + return dt + + def set_title(self, chars): + self.SetTitle(_("Post - {} characters").format(chars)) + + def reset_controls(self): + self.text.ChangeValue("") + self.attachments.DeleteAllItems() + + def add_item(self, list_type="attachment", item=[]): + if list_type == "attachment": + self.attachments.Append(item) + else: + self.posts.Append(item) + + def remove_item(self, list_type="attachment"): + if list_type == "attachment": + item = self.attachments.GetFocusedItem() + if item > -1: + self.attachments.DeleteItem(item) + else: + item = self.posts.GetFocusedItem() + if item > -1: + self.posts.DeleteItem(item) + + def attach_menu(self, event=None, enabled=True, *args, **kwargs): + menu = wx.Menu() + self.add_image = menu.Append(wx.ID_ANY, _("Image")) + self.add_image.Enable(enabled) + self.add_video = menu.Append(wx.ID_ANY, _("Video")) + self.add_video.Enable(enabled) + self.add_audio = menu.Append(wx.ID_ANY, _("Audio")) + self.add_audio.Enable(enabled) + self.add_poll = menu.Append(wx.ID_ANY, _("Poll")) + self.add_poll.Enable(enabled) + return menu + + def ask_description(self): + dlg = wx.TextEntryDialog(self, _(u"please provide a description"), _(u"Description")) + dlg.ShowModal() + result = dlg.GetValue() + dlg.Destroy() + return result + + def get_image(self): + openFileDialog = wx.FileDialog(self, _(u"Select the picture to be uploaded"), "", "", _("Image files (*.png, *.jpg, *.gif)|*.png; *.jpg; *.gif"), wx.FD_OPEN | wx.FD_FILE_MUST_EXIST) + if openFileDialog.ShowModal() == wx.ID_CANCEL: + return (None, None) + dsc = self.ask_description() + return (openFileDialog.GetPath(), dsc) + + def get_video(self): + openFileDialog = wx.FileDialog(self, _("Select the video to be uploaded"), "", "", _("Video files (*.mp4, *.mov, *.m4v, *.webm)| *.mp4; *.m4v; *.mov; *.webm"), wx.FD_OPEN | wx.FD_FILE_MUST_EXIST) + if openFileDialog.ShowModal() == wx.ID_CANCEL: + return (None, None) + dsc = self.ask_description() + return (openFileDialog.GetPath(), dsc) + + def get_audio(self): + openFileDialog = wx.FileDialog(self, _("Select the audio file to be uploaded"), "", "", _("Audio files (*.mp3, *.ogg, *.wav, *.flac, *.opus, *.aac, *.m4a, *.3gp)|*.mp3; *.ogg; *.wav; *.flac; *.opus; *.aac; *.m4a; *.3gp"), wx.FD_OPEN | wx.FD_FILE_MUST_EXIST) + if openFileDialog.ShowModal() == wx.ID_CANCEL: + return (None, None) + dsc = self.ask_description() + return (openFileDialog.GetPath(), dsc) + + def unable_to_attach_file(self, *args, **kwargs): + return wx.MessageDialog(self, _("It is not possible to add more attachments. Please take into account that You can add only a maximum of 4 images, or one audio, video or poll per post. Please remove other attachments before continuing."), _("Error adding attachment"), wx.ICON_ERROR).ShowModal() + + def unable_to_attach_poll(self, *args, **kwargs): + return wx.MessageDialog(self, _("You can add a poll or media files. In order to add your poll, please remove other attachments first."), _("Error adding poll"), wx.ICON_ERROR).ShowModal() + + +class viewPost(wx.Dialog): + def set_title(self, length): + self.SetTitle(_("Post - %i characters ") % length) + + def __init__(self, text="", boosts_count=0, favs_count=0, source="", date="", privacy="", *args, **kwargs): + super(viewPost, self).__init__(parent=None, id=wx.ID_ANY, size=(850, 850)) + self.init_ui(text, boosts_count, favs_count, source, date, privacy) + + def init_ui(self, text, boosts_count, favs_count, source, date, privacy): + panel = wx.Panel(self) + main_sizer = wx.BoxSizer(wx.VERTICAL) + main_sizer.Add(self.create_text_section(panel, text), 1, wx.EXPAND | wx.ALL, 5) + main_sizer.Add(self.create_image_description_section(panel), 1, wx.EXPAND | wx.ALL, 5) + main_sizer.Add(self.create_info_section(panel, privacy, boosts_count, favs_count, source, date), 0, wx.EXPAND | wx.ALL, 5) + main_sizer.Add(self.create_buttons_section(panel), 0, wx.ALIGN_RIGHT | wx.ALL, 5) + panel.SetSizer(main_sizer) + self.SetClientSize(main_sizer.CalcMin()) + + def create_text_section(self, panel, text): + sizer = wx.StaticBoxSizer(wx.StaticBox(panel, wx.ID_ANY, _("Post")), wx.VERTICAL) + self.text = wx.TextCtrl(panel, -1, text, style=wx.TE_READONLY | wx.TE_MULTILINE) + sizer.Add(self.text, 1, wx.EXPAND | wx.ALL, 5) + return sizer + + def create_image_description_section(self, panel): + sizer = wx.StaticBoxSizer(wx.StaticBox(panel, wx.ID_ANY, _("Image description")), wx.VERTICAL) + self.image_description = wx.TextCtrl(panel, -1, style=wx.TE_READONLY | wx.TE_MULTILINE) + self.image_description.Enable(False) + sizer.Add(self.image_description, 1, wx.EXPAND | wx.ALL, 5) + return sizer + + def create_info_section(self, panel, privacy, boosts_count, favs_count, source, date): + sizer = wx.StaticBoxSizer(wx.StaticBox(panel, wx.ID_ANY, _("Information")), wx.VERTICAL) + flex_sizer = wx.FlexGridSizer(cols=3, hgap=10, vgap=10) + flex_sizer.AddGrowableCol(1) + flex_sizer.Add(wx.StaticText(panel, -1, _("Privacy")), 0, wx.ALIGN_CENTER_VERTICAL) + flex_sizer.Add(wx.TextCtrl(panel, -1, privacy, style=wx.TE_READONLY | wx.TE_MULTILINE), 1, wx.EXPAND) + flex_sizer.Add(self.create_boosts_section(panel, boosts_count), 1, wx.EXPAND | wx.ALL, 5) + flex_sizer.Add(self.create_favorites_section(panel, favs_count), 1, wx.EXPAND | wx.ALL, 5) + flex_sizer.Add(wx.StaticText(panel, -1, _("Source")), 0, wx.ALIGN_CENTER_VERTICAL) + flex_sizer.Add(wx.TextCtrl(panel, -1, source, style=wx.TE_READONLY | wx.TE_MULTILINE), 1, wx.EXPAND) + flex_sizer.Add(wx.StaticText(panel, -1, _("Date")), 0, wx.ALIGN_CENTER_VERTICAL) + flex_sizer.Add(wx.TextCtrl(panel, -1, date, style=wx.TE_READONLY | wx.TE_MULTILINE), 1, wx.EXPAND) + sizer.Add(flex_sizer, 1, wx.EXPAND | wx.ALL, 5) + return sizer + + def create_boosts_section(self, panel, boosts_count): + sizer = wx.StaticBoxSizer(wx.StaticBox(panel, wx.ID_ANY, _("Boosts")), wx.VERTICAL) + self.boosts_button = wx.Button(panel, -1, str(boosts_count)) + self.boosts_button.SetToolTip(_("View users who boosted this post")) + sizer.Add(self.boosts_button, 1, wx.EXPAND | wx.ALL, 5) + return sizer + + def create_favorites_section(self, panel, favs_count): + sizer = wx.StaticBoxSizer(wx.StaticBox(panel, wx.ID_ANY, _("Favorites")), wx.VERTICAL) + self.favorites_button = wx.Button(panel, -1, str(favs_count)) + self.favorites_button.SetToolTip(_("View users who favorited this post")) + sizer.Add(self.favorites_button, 1, wx.EXPAND | wx.ALL, 5) + return sizer + + def create_buttons_section(self, panel): + sizer = wx.BoxSizer(wx.HORIZONTAL) + self.mute = wx.Button(panel, wx.ID_ANY, _("&Mute conversation")) + self.mute.Enable(False) + self.share = wx.Button(panel, wx.ID_ANY, _("&Copy link to clipboard")) + self.share.Enable(False) + self.spellcheck = wx.Button(panel, wx.ID_ANY, _("Check &spelling...")) + self.translateButton = wx.Button(panel, wx.ID_ANY, _("&Translate...")) + cancelButton = wx.Button(panel, wx.ID_CANCEL, _("C&lose")) + cancelButton.SetDefault() + sizer.Add(self.mute, 0, wx.ALL, 5) + sizer.Add(self.share, 0, wx.ALL, 5) + sizer.Add(self.spellcheck, 0, wx.ALL, 5) + sizer.Add(self.translateButton, 0, wx.ALL, 5) + sizer.Add(cancelButton, 0, wx.ALL, 5) + return sizer + + def set_text(self, text): + self.text.ChangeValue(text) + + def get_text(self): + return self.text.GetValue() + + def text_focus(self): + self.text.SetFocus() + + def onSelect(self, ev): + self.text.SelectAll() + + def enable_button(self, buttonName): + if hasattr(self, buttonName): + return getattr(self, buttonName).Enable() + +class viewText(wx.Dialog): + def __init__(self, title="", text="", *args, **kwargs): + super(viewText, self).__init__(parent=None, id=wx.ID_ANY, size=(850,850), title=title) + panel = wx.Panel(self) + label = wx.StaticText(panel, -1, _("Text")) + self.text = wx.TextCtrl(panel, -1, text, style=wx.TE_READONLY|wx.TE_MULTILINE, size=(250, 180)) + self.text.SetFocus() + textBox = wx.BoxSizer(wx.HORIZONTAL) + textBox.Add(label, 0, wx.ALL, 5) + textBox.Add(self.text, 1, wx.EXPAND, 5) + mainBox = wx.BoxSizer(wx.VERTICAL) + mainBox.Add(textBox, 0, wx.ALL, 5) + self.spellcheck = wx.Button(panel, -1, _("Check &spelling..."), size=wx.DefaultSize) + self.translateButton = wx.Button(panel, -1, _(u"&Translate..."), size=wx.DefaultSize) + cancelButton = wx.Button(panel, wx.ID_CANCEL, _(u"C&lose"), size=wx.DefaultSize) + cancelButton.SetDefault() + buttonsBox = wx.BoxSizer(wx.HORIZONTAL) + buttonsBox.Add(self.spellcheck, 0, wx.ALL, 5) + buttonsBox.Add(self.translateButton, 0, wx.ALL, 5) + buttonsBox.Add(cancelButton, 0, wx.ALL, 5) + mainBox.Add(buttonsBox, 0, wx.ALL, 5) + panel.SetSizer(mainBox) + self.SetClientSize(mainBox.CalcMin()) + +class poll(wx.Dialog): + def __init__(self, *args, **kwds): + super(poll, self).__init__(parent=None, id=wx.NewId(), title=_("Add a poll")) + sizer_1 = wx.BoxSizer(wx.VERTICAL) + period_sizer = wx.BoxSizer(wx.HORIZONTAL) + sizer_1.Add(period_sizer, 1, wx.EXPAND, 0) + label_period = wx.StaticText(self, wx.ID_ANY, _("&Participation time")) + period_sizer.Add(label_period, 0, 0, 0) + self.period = wx.ComboBox(self, wx.ID_ANY, choices=[_("5 minutes"), _("30 minutes"), _("1 hour"), _("6 hours"), _("1 day"), _("2 days"), _("3 days"), _("4 days"), _("5 days"), _("6 days"), _("7 days")], style=wx.CB_DROPDOWN | wx.CB_READONLY | wx.CB_SIMPLE) + self.period.SetFocus() + self.period.SetSelection(0) + period_sizer.Add(self.period, 0, 0, 0) + sizer_2 = wx.StaticBoxSizer(wx.StaticBox(self, wx.ID_ANY, _("Choices")), wx.VERTICAL) + sizer_1.Add(sizer_2, 1, wx.EXPAND, 0) + option1_sizer = wx.BoxSizer(wx.HORIZONTAL) + sizer_2.Add(option1_sizer, 1, wx.EXPAND, 0) + label_2 = wx.StaticText(self, wx.ID_ANY, _("Option &1")) + option1_sizer.Add(label_2, 0, 0, 0) + self.option1 = wx.TextCtrl(self, wx.ID_ANY, "") + self.option1.SetMaxLength(25) + option1_sizer.Add(self.option1, 0, 0, 0) + option2_sizer = wx.BoxSizer(wx.HORIZONTAL) + sizer_2.Add(option2_sizer, 1, wx.EXPAND, 0) + label_3 = wx.StaticText(self, wx.ID_ANY, _("Option &2")) + option2_sizer.Add(label_3, 0, 0, 0) + self.option2 = wx.TextCtrl(self, wx.ID_ANY, "") + self.option2.SetMaxLength(25) + option2_sizer.Add(self.option2, 0, 0, 0) + option3_sizer = wx.BoxSizer(wx.HORIZONTAL) + sizer_2.Add(option3_sizer, 1, wx.EXPAND, 0) + label_4 = wx.StaticText(self, wx.ID_ANY, _("Option &3")) + option3_sizer.Add(label_4, 0, 0, 0) + self.option3 = wx.TextCtrl(self, wx.ID_ANY, "") + self.option3.SetMaxLength(25) + option3_sizer.Add(self.option3, 0, 0, 0) + option4_sizer = wx.BoxSizer(wx.HORIZONTAL) + sizer_2.Add(option4_sizer, 1, wx.EXPAND, 0) + label_5 = wx.StaticText(self, wx.ID_ANY, _("Option &4")) + option4_sizer.Add(label_5, 0, 0, 0) + self.option4 = wx.TextCtrl(self, wx.ID_ANY, "") + self.option4.SetMaxLength(25) + option4_sizer.Add(self.option4, 0, 0, 0) + self.multiple = wx.CheckBox(self, wx.ID_ANY, _("&Allow multiple choices per user")) + self.multiple.SetValue(False) + sizer_1.Add(self.multiple, 0, wx.ALL, 5) + self.hide_votes = wx.CheckBox(self, wx.ID_ANY, _("&Hide votes count until the poll expires")) + self.hide_votes.SetValue(False) + sizer_1.Add(self.hide_votes, 0, wx.ALL, 5) + btn_sizer = wx.StdDialogButtonSizer() + sizer_1.Add(btn_sizer, 0, wx.ALIGN_RIGHT | wx.ALL, 4) + self.button_OK = wx.Button(self, wx.ID_OK) + self.button_OK.SetDefault() + self.button_OK.Bind(wx.EVT_BUTTON, self.validate_data) + btn_sizer.AddButton(self.button_OK) + self.button_CANCEL = wx.Button(self, wx.ID_CANCEL, "") + btn_sizer.AddButton(self.button_CANCEL) + btn_sizer.Realize() + self.SetSizer(sizer_1) + sizer_1.Fit(self) + self.SetAffirmativeId(self.button_OK.GetId()) + self.SetEscapeId(self.button_CANCEL.GetId()) + self.Layout() + + def get_options(self): + controls = [self.option1, self.option2, self.option3, self.option4] + options = [option.GetValue() for option in controls if option.GetValue() != ""] + return options + + def validate_data(self, *args, **kwargs): + options = self.get_options() + if len(options) < 2: + return wx.MessageDialog(self, _("Please make sure you have provided at least two options for the poll."), _("Not enough information"), wx.ICON_ERROR).ShowModal() + self.EndModal(wx.ID_OK) + +class attachedPoll(wx.Dialog): + def __init__(self, poll_options, multiple=False, *args, **kwds): + super(attachedPoll, self).__init__(parent=None, id=wx.NewId(), title=_("Vote in this poll")) + self.poll_options = poll_options + sizer_1 = wx.BoxSizer(wx.VERTICAL) + sizer_2 = wx.StaticBoxSizer(wx.StaticBox(self, wx.ID_ANY, _("Options")), wx.VERTICAL) + sizer_1.Add(sizer_2, 1, wx.EXPAND, 0) + if multiple == False: + for option in range(len(self.poll_options)): + if option == 0: + setattr(self, "option{}".format(option), wx.RadioButton(self, wx.ID_ANY, poll_options[option], style=wx.RB_GROUP)) + else: + setattr(self, "option{}".format(option), wx.RadioButton(self, wx.ID_ANY, poll_options[option])) + else: + for option in range(len(self.poll_options)): + setattr(self, "option{}".format(option), wx.CheckBox(self, wx.ID_ANY, poll_options[option])) + sizer_2.Add(getattr(self, "option{}".format(option)), 1, wx.EXPAND, 0) + btn_sizer = wx.StdDialogButtonSizer() + sizer_1.Add(btn_sizer, 0, wx.ALIGN_RIGHT | wx.ALL, 4) + self.button_OK = wx.Button(self, wx.ID_OK) + self.button_OK.SetDefault() + btn_sizer.AddButton(self.button_OK) + self.button_CANCEL = wx.Button(self, wx.ID_CANCEL, "") + btn_sizer.AddButton(self.button_CANCEL) + btn_sizer.Realize() + self.SetSizer(sizer_1) + sizer_1.Fit(self) + self.SetAffirmativeId(self.button_OK.GetId()) + self.SetEscapeId(self.button_CANCEL.GetId()) + self.Layout() + + def get_selected(self): + options = [] + for option in range(len(self.poll_options)): + if getattr(self, "option{}".format(option)).GetValue() == True: + options.append(option) + return options + diff --git a/srcantiguo/wxUI/dialogs/mastodon/search.py b/srcantiguo/wxUI/dialogs/mastodon/search.py new file mode 100644 index 00000000..0cb75a5a --- /dev/null +++ b/srcantiguo/wxUI/dialogs/mastodon/search.py @@ -0,0 +1,33 @@ +# -*- coding: utf-8 -*- +import wx + +class searchDialog(wx.Dialog): + def __init__(self, value=""): + super(searchDialog, self).__init__(parent=None, id=wx.ID_ANY) + panel = wx.Panel(self) + sizer = wx.BoxSizer(wx.VERTICAL) + self.SetTitle(_("Search")) + label = wx.StaticText(panel, wx.ID_ANY, _("&Search")) + self.term = wx.TextCtrl(panel, wx.ID_ANY, value) + self.term.SetFocus() + dc = wx.WindowDC(self.term) + dc.SetFont(self.term.GetFont()) + self.term.SetSize(dc.GetTextExtent("0"*40)) + sizer.Add(label, 0, wx.ALL, 5) + sizer.Add(self.term, 0, wx.ALL, 5) + self.posts = wx.RadioButton(panel, wx.ID_ANY, _("Posts"), style=wx.RB_GROUP) + self.users = wx.RadioButton(panel, wx.ID_ANY, _("Users")) + radioSizer = wx.BoxSizer(wx.HORIZONTAL) + radioSizer.Add(self.posts, 0, wx.ALL, 5) + radioSizer.Add(self.users, 0, wx.ALL, 5) + sizer.Add(radioSizer, 0, wx.ALL, 5) + ok = wx.Button(panel, wx.ID_OK, _(u"&OK")) + ok.SetDefault() + cancel = wx.Button(panel, wx.ID_CANCEL, _("&Close")) + self.SetEscapeId(cancel.GetId()) + btnsizer = wx.BoxSizer() + btnsizer.Add(ok, 0, wx.ALL, 5) + btnsizer.Add(cancel, 0, wx.ALL, 5) + sizer.Add(btnsizer, 0, wx.ALL, 5) + panel.SetSizer(sizer) + self.SetClientSize(sizer.CalcMin()) \ No newline at end of file diff --git a/srcantiguo/wxUI/dialogs/mastodon/showUserProfile.py b/srcantiguo/wxUI/dialogs/mastodon/showUserProfile.py new file mode 100644 index 00000000..b79887c8 --- /dev/null +++ b/srcantiguo/wxUI/dialogs/mastodon/showUserProfile.py @@ -0,0 +1,239 @@ +# -*- coding: utf-8 -*- +"""Wx dialogs for showing a user's profile.""" + +from io import BytesIO +from pubsub import pub +from typing import Tuple +import requests +import wx +from logging import getLogger +from threading import Thread + +from sessions.mastodon.utils import html_filter + + +log = getLogger(__name__) + + +def selectUserDialog(users: list) -> tuple: + """Choose a user from a possible list of users""" + if len(users) == 1: + return users[0] + dlg = wx.Dialog(None, title=_("Select user")) + label = wx.StaticText(dlg, label="Select a user: ") + choiceList = [] + for user in users: + if len(user) == 3: # (display_name, username, id) + choiceList.append(f"{user[0]}: @{user[1]}") + else: # (acct, id) + choiceList.append(f"{user[0]}") + choice = wx.Choice(dlg, choices=choiceList) + ok = wx.Button(dlg, wx.ID_OK, _("OK")) + ok.SetDefault() + cancel = wx.Button(dlg, wx.ID_CANCEL, _("Cancel")) + dlg.SetEscapeId(cancel.GetId()) + + #sizers + sizer = wx.GridSizer(2, 2, 5, 5) + sizer.Add(label, wx.SizerFlags().Center()) + sizer.Add(choice, wx.SizerFlags().Center()) + sizer.Add(ok, wx.SizerFlags().Center()) + sizer.Add(cancel, wx.SizerFlags().Center()) + + if dlg.ShowModal() == wx.ID_CANCEL: + return () + # return the selected user + return users[choice.GetSelection()] + + +def returnTrue(): + return True + + +class ShowUserProfile(wx.Dialog): + """ + A dialog for Showing user profile + layout is: + ``` + header + avatar + name + bio + meta data + ``` + """ + + def __init__(self, user): + """Initialize update profile dialog + Parameters: + - user: user dictionary + """ + super().__init__(parent=None) + self.user = user + self.SetTitle(_("{}'s Profile").format(user.display_name)) + self.panel = wx.Panel(self) + wrapperSizer = wx.BoxSizer(wx.VERTICAL) + mainSizer = wx.GridSizer(2, 5, 5) + + # create widgets + nameLabel = wx.StaticText(self.panel, label=_("&Name: ")) + name = self.createTextCtrl(user.display_name, size=(200, 30)) + mainSizer.Add(nameLabel, wx.SizerFlags().Center()) + mainSizer.Add(name, wx.SizerFlags().Center()) + + urlLabel = wx.StaticText(self.panel, label=_("&URL: ")) + url = self.createTextCtrl(user.url, size=(200, 30)) + mainSizer.Add(urlLabel, wx.SizerFlags().Center()) + mainSizer.Add(url, wx.SizerFlags().Center()) + + bioLabel = wx.StaticText(self.panel, label=_("&Bio: ")) + bio = self.createTextCtrl(html_filter(user.note), (400, 60)) + mainSizer.Add(bioLabel, wx.SizerFlags().Center()) + mainSizer.Add(bio, wx.SizerFlags().Center()) + + joinLabel = wx.StaticText(self.panel, label=_("&Joined at: ")) + joinText = self.createTextCtrl(user.created_at.strftime('%d %B, %Y'), (80, 30)) + mainSizer.Add(joinLabel, wx.SizerFlags().Center()) + mainSizer.Add(joinText, wx.SizerFlags().Center()) + + actions = wx.Button(self.panel, label=_("&Actions")) + actions.Bind(wx.EVT_BUTTON, self.onAction) + mainSizer.Add(actions, wx.SizerFlags().Center()) + + # header + headerLabel = wx.StaticText(self.panel, label=_("Header: ")) + # Create empty image + self.headerImage = wx.StaticBitmap(self.panel) + self.headerImage.AcceptsFocusFromKeyboard = returnTrue + mainSizer.Add(headerLabel, wx.SizerFlags().Center()) + mainSizer.Add(self.headerImage, wx.SizerFlags().Center()) + + # avatar + avatarLabel = wx.StaticText(self.panel, label=_("Avatar: ")) + # Create empty image + self.avatarImage = wx.StaticBitmap(self.panel) + self.avatarImage.AcceptsFocusFromKeyboard = returnTrue + mainSizer.Add(avatarLabel, wx.SizerFlags().Center()) + mainSizer.Add(self.avatarImage, wx.SizerFlags().Center()) + + self.fields = [] + for num, field in enumerate(user.fields): + labelSizer = wx.BoxSizer(wx.HORIZONTAL) + labelLabel = wx.StaticText(self.panel, label=_("Field &{} - Label: ").format(num + 1)) + labelSizer.Add(labelLabel, wx.SizerFlags().Center().Border(wx.ALL, 5)) + labelText = self.createTextCtrl(html_filter(field.name), (230, 30), True) + labelSizer.Add(labelText, wx.SizerFlags().Expand().Border(wx.ALL, 5)) + mainSizer.Add(labelSizer, 0, wx.CENTER) + + contentSizer = wx.BoxSizer(wx.HORIZONTAL) + contentLabel = wx.StaticText(self.panel, label=_("Content: ")) + contentSizer.Add(contentLabel, wx.SizerFlags().Center()) + contentText = self.createTextCtrl(html_filter(field.value), (400, 60), True) + contentSizer.Add(contentText, wx.SizerFlags().Center()) + mainSizer.Add(contentSizer, 0, wx.CENTER | wx.LEFT, 10) + + bullSwitch = {True: _('Yes'), False: _('No'), None: _('No')} + privateSizer = wx.BoxSizer(wx.HORIZONTAL) + privateLabel = wx.StaticText(self.panel, label=_("&Private account: ")) + private = self.createTextCtrl(bullSwitch[user.locked], (30, 30)) + privateSizer.Add(privateLabel, wx.SizerFlags().Center()) + privateSizer.Add(private, wx.SizerFlags().Center()) + mainSizer.Add(privateSizer, 0, wx.ALL | wx.CENTER) + + botSizer = wx.BoxSizer(wx.HORIZONTAL) + botLabel = wx.StaticText(self.panel, label=_("B&ot account: ")) + botText = self.createTextCtrl(bullSwitch[user.bot], (30, 30)) + botSizer.Add(botLabel, wx.SizerFlags().Center()) + botSizer.Add(botText, wx.SizerFlags().Center()) + mainSizer.Add(botSizer, 0, wx.ALL | wx.CENTER) + + discoverSizer = wx.BoxSizer(wx.HORIZONTAL) + discoverLabel = wx.StaticText(self.panel, label=_("&Discoverable account: ")) + discoverText = self.createTextCtrl(bullSwitch[user.discoverable], (30, 30)) + discoverSizer.Add(discoverLabel, wx.SizerFlags().Center()) + discoverSizer.Add(discoverText, wx.SizerFlags().Center()) + mainSizer.Add(discoverSizer, 0, wx.ALL | wx.CENTER) + + posts = wx.Button(self.panel, label=_("{} pos&ts. Click to open posts timeline").format(user.statuses_count)) + # posts.SetToolTip(_("Click to open {}'s posts").format(user.display_name)) + posts.Bind(wx.EVT_BUTTON, self.onPost) + mainSizer.Add(posts, wx.SizerFlags().Center()) + + following = wx.Button(self.panel, label=_("{} &following. Click to open Following timeline").format(user.following_count)) + mainSizer.Add(following, wx.SizerFlags().Center()) + following.Bind(wx.EVT_BUTTON, self.onFollowing) + + followers = wx.Button(self.panel, label=_("{} fo&llowers. Click to open followers timeline").format(user.followers_count)) + mainSizer.Add(followers, wx.SizerFlags().Center()) + followers.Bind(wx.EVT_BUTTON, self.onFollowers) + + close = wx.Button(self.panel, wx.ID_CLOSE, _("&Close")) + self.SetEscapeId(close.GetId()) + close.SetDefault() + wrapperSizer.Add(mainSizer, 0, wx.CENTER) + wrapperSizer.Add(close, wx.SizerFlags().Center()) + self.panel.SetSizer(wrapperSizer) + wrapperSizer.Fit(self.panel) + self.panel.Center() + mainSizer.Fit(self) + self.Center() + imageDownloaderThread = Thread(target=self._getImages) + imageDownloaderThread.start() + + + def createTextCtrl(self, text: str, size: Tuple[int, int], multiline: bool = False) -> wx.TextCtrl: + """Creates a wx.TextCtrl and returns it + Parameters: + text: The value of the wx.TextCtrl + size: The size of the wx.TextCtrl + Returns: the created wx.TextCtrl object + """ + if not multiline: + style= wx.TE_PROCESS_ENTER | wx.TE_PROCESS_TAB | wx.TE_READONLY + else: + style= wx.TE_PROCESS_ENTER | wx.TE_PROCESS_TAB | wx.TE_READONLY | wx.TE_MULTILINE + textCtrl = wx.TextCtrl(self.panel, value=text, size=size, style=style) + textCtrl.AcceptsFocusFromKeyboard = returnTrue + return textCtrl + + def onAction(self, *args): + """Opens the Open timeline dialog""" + pub.sendMessage('execute-action', action='follow') + + def onPost(self, *args): + """Open this user's timeline""" + pub.sendMessage('execute-action', action='openPostTimeline', kwargs=dict(user=self.user)) + + def onFollowing(self, *args): + """Open following timeline for this user""" + pub.sendMessage('execute-action', action='openFollowingTimeline', kwargs=dict(user=self.user)) + + def onFollowers(self, *args): + """Open followers timeline for this user""" + pub.sendMessage('execute-action', action='openFollowersTimeline', kwargs=dict(user=self.user)) + + def _getImages(self): + """Downloads image from mastodon server + This method should run on a separate thread + """ + log.debug("Downloading user's header and avatar images...") + try: + header = requests.get(self.user.header) + avatar = requests.get(self.user.avatar) + except requests.exceptions.RequestException as mess: + log.exception("An exception was raised while downloading images:", mess) + return + wx.CallAfter(self._drawImages, header.content, avatar.content) + + def _drawImages(self, headerImageBytes, avatarImageBytes): + """Draws images on the bitmap ui""" + # log.debug("Drawing images...") + # Header + headerImage = wx.Image(BytesIO(headerImageBytes), wx.BITMAP_TYPE_ANY) + headerImage.Rescale(300, 100, wx.IMAGE_QUALITY_HIGH) + self.headerImage.SetBitmap(headerImage.ConvertToBitmap()) + + # Avatar + avatarImage = wx.Image(BytesIO(avatarImageBytes), wx.BITMAP_TYPE_ANY) + avatarImage.Rescale(150, 150, wx.IMAGE_QUALITY_HIGH) + self.avatarImage.SetBitmap(avatarImage.ConvertToBitmap()) diff --git a/srcantiguo/wxUI/dialogs/mastodon/updateProfile.py b/srcantiguo/wxUI/dialogs/mastodon/updateProfile.py new file mode 100644 index 00000000..9bbd46ef --- /dev/null +++ b/srcantiguo/wxUI/dialogs/mastodon/updateProfile.py @@ -0,0 +1,205 @@ +# -*- coding: utf-8 -*- +import os +import requests +from io import BytesIO + +import wx + + +def return_true(): + return True + + +class UpdateProfileDialog(wx.Dialog): + """ + A dialog for user to update his / her profile details. + layout is: + ``` + header + avatar + name + bio + meta data + ``` + """ + + def __init__(self, display_name: str, note: str, header: str, avatar: str, fields: list, locked: bool, bot: bool, discoverable: bool): + """Initialize update profile dialog + Parameters: + - display_name: The user's display name to show in the display name field + - note: The users bio to show in the bio field + - header: the users header pic link + - avatar: The users avatar pic link + """ + super().__init__(parent=None) + self.SetTitle(_("Update Profile")) + self.header = header + self.avatar = avatar + + panel = wx.Panel(self) + sizer = wx.BoxSizer(wx.VERTICAL) + + # create widgets + display_name_label = wx.StaticText(panel, label=_("&Display Name")) + self.display_name = wx.TextCtrl(panel, value=display_name, style= wx.TE_PROCESS_ENTER, size=(200, 30)) + name_sizer = wx.BoxSizer(wx.HORIZONTAL) + name_sizer.Add(display_name_label, wx.SizerFlags().Center()) + name_sizer.Add(self.display_name, wx.SizerFlags().Center()) + sizer.Add(name_sizer, wx.CENTER) + + bio_label = wx.StaticText(panel, label=_("&Bio")) + self.bio = wx.TextCtrl(panel, value=note, style=wx.TE_PROCESS_ENTER | wx.TE_MULTILINE, size=(400, 60)) + bio_sizer = wx.BoxSizer(wx.HORIZONTAL) + bio_sizer.Add(bio_label, wx.SizerFlags().Center()) + bio_sizer.Add(self.bio, wx.SizerFlags().Center()) + sizer.Add(bio_sizer, wx.CENTER) + + # header + header_label = wx.StaticText(panel, label=_("Header")) + try: + response = requests.get(self.header) + except requests.exceptions.RequestException: + # Create empty image + self.header_image = wx.StaticBitmap() + else: + image_bytes = BytesIO(response.content) + image = wx.Image(image_bytes, wx.BITMAP_TYPE_ANY) + image.Rescale(300, 100, wx.IMAGE_QUALITY_HIGH) + self.header_image = wx.StaticBitmap(panel, bitmap=image.ConvertToBitmap()) + + self.header_image.AcceptsFocusFromKeyboard = return_true + self.change_header = wx.Button(panel, label=_("Change &header")) + header_sizer = wx.BoxSizer(wx.HORIZONTAL) + header_sizer.Add(header_label, wx.SizerFlags().Center()) + header_sizer.Add(self.header_image, wx.SizerFlags().Center()) + header_sizer.Add(self.change_header, wx.SizerFlags().Center()) + sizer.Add(header_sizer, wx.CENTER) + + # avatar + avatar_label = wx.StaticText(panel, label=_("Avatar")) + try: + response = requests.get(self.avatar) + except requests.exceptions.RequestException: + # Create empty image + self.avatar_image = wx.StaticBitmap() + else: + image_bytes = BytesIO(response.content) + image = wx.Image(image_bytes, wx.BITMAP_TYPE_ANY) + image.Rescale(150, 150, wx.IMAGE_QUALITY_HIGH) + self.avatar_image = wx.StaticBitmap(panel, bitmap=image.ConvertToBitmap()) + + self.avatar_image.AcceptsFocusFromKeyboard = return_true + self.change_avatar = wx.Button(panel, label=_("Change &avatar")) + avatar_sizer = wx.BoxSizer(wx.HORIZONTAL) + avatar_sizer.Add(avatar_label, wx.SizerFlags().Center()) + avatar_sizer.Add(self.avatar_image, wx.SizerFlags().Center()) + avatar_sizer.Add(self.change_avatar, wx.SizerFlags().Center()) + sizer.Add(avatar_sizer, wx.CENTER) + + self.fields = [] + for i in range(1, 5): + field_sizer = wx.BoxSizer(wx.HORIZONTAL) + field_label = wx.StaticText(panel, label=_("Field &{}: Label").format(i)) + field_sizer.Add(field_label, wx.SizerFlags().Center().Border(wx.ALL, 5)) + + label_textctrl = wx.TextCtrl(panel, style=wx.TE_PROCESS_ENTER | wx.TE_MULTILINE, size=(200, 30)) + if i <= len(fields): + label_textctrl.SetValue(fields[i-1][0]) + field_sizer.Add(label_textctrl, wx.SizerFlags().Expand().Border(wx.ALL, 5)) + + content_label = wx.StaticText(panel, label=_("Content")) + field_sizer.Add(content_label, wx.SizerFlags().Center().Border(wx.ALL, 5)) + + content_textctrl = wx.TextCtrl(panel, style=wx.TE_PROCESS_ENTER | wx.TE_MULTILINE, size=(400, 60)) + if i <= len(fields): + content_textctrl.SetValue(fields[i-1][1]) + field_sizer.Add(content_textctrl, wx.SizerFlags().Expand().Border(wx.ALL, 5)) + sizer.Add(field_sizer, 0, wx.CENTER) + self.fields.append((label_textctrl, content_textctrl)) + + self.locked = wx.CheckBox(panel, label=_("&Private account")) + self.locked.SetValue(locked) + self.bot = wx.CheckBox(panel, label=_("B&ot account")) + self.bot.SetValue(bot) + self.discoverable = wx.CheckBox(panel, label=_("&Discoverable account")) + self.discoverable.SetValue(discoverable) + sizer.Add(self.locked, wx.SizerFlags().Expand().Border(wx.ALL, 5)) + sizer.Add(self.bot, wx.SizerFlags().Expand().Border(wx.ALL, 5)) + sizer.Add(self.discoverable, wx.SizerFlags().Expand().Border(wx.ALL, 5)) + + ok = wx.Button(panel, wx.ID_OK, _(u"&OK")) + ok.SetDefault() + cancel = wx.Button(panel, wx.ID_CANCEL, _("&Close")) + self.SetEscapeId(cancel.GetId()) + action_sizer = wx.BoxSizer(wx.HORIZONTAL) + action_sizer.Add(ok, wx.SizerFlags().Center()) + action_sizer.Add(cancel, wx.SizerFlags().Center()) + sizer.Add(action_sizer, wx.CENTER) + panel.SetSizer(sizer) + sizer.Fit(self) + self.Center() + + # manage events + ok.Bind(wx.EVT_BUTTON, self.on_ok) + self.change_header.Bind(wx.EVT_BUTTON, self.on_change_header) + self.change_avatar.Bind(wx.EVT_BUTTON, self.on_change_avatar) + + self.AutoLayout = True + + def on_ok(self, *args): + """Method called when user clicks ok in dialog""" + self.data = { + 'display_name': self.display_name.GetValue(), + 'note': self.bio.GetValue(), + 'header': self.header, + 'avatar': self.avatar, + 'fields': [(label.GetValue(), content.GetValue()) for label, content in self.fields if label.GetValue() and content.GetValue()], + 'locked': self.locked.GetValue(), + 'bot': self.bot.GetValue(), + 'discoverable': self.discoverable.GetValue(), + } + self.EndModal(wx.ID_OK) + + def on_change_header(self, *args): + """Display a dialog for the user to choose a picture and update the + appropriate attribute""" + wildcard = "Images (*.png;*.jpg;*.gif)|*.png;*.jpg;*.gif" + dlg = wx.FileDialog(self, _("Select header image - max 2MB"), wildcard=wildcard) + if dlg.ShowModal() == wx.CLOSE: + return + if os.path.getsize(dlg.GetPath()) > 2097152: + # File size exceeds the limit + message = _("The selected file is larger than 2MB. Do you want to select another file?") + caption = _("File more than 2MB") + style = wx.YES_NO | wx.ICON_WARNING + + # Display the message box + result = wx.MessageBox(message, caption, style) + return self.on_change_header() if result == wx.YES else None + + self.header = dlg.GetPath() + image = wx.Image(self.header, wx.BITMAP_TYPE_ANY) + image.Rescale(150, 150, wx.IMAGE_QUALITY_HIGH) + self.header_image.SetBitmap(image.ConvertToBitmap()) + + def on_change_avatar(self, *args): + """Display a dialog for the user to choose a picture and update the + appropriate attribute""" + wildcard = "Images (*.png;*.jpg;*.gif)|*.png;*.jpg;*.gif" + dlg = wx.FileDialog(self, _("Select avatar image - max 2MB"), wildcard=wildcard) + if dlg.ShowModal() == wx.CLOSE: + return + if os.path.getsize(dlg.GetPath()) > 2097152: + # File size exceeds the limit + message = _("The selected file is larger than 2MB. Do you want to select another file?") + caption = _("File more than 2MB") + style = wx.YES_NO | wx.ICON_WARNING + + # Display the message box + result = wx.MessageBox(message, caption, style) + return self.on_change_avatar() if result == wx.YES else None + + self.avatar = dlg.GetPath() + image = wx.Image(self.avatar, wx.BITMAP_TYPE_ANY) + image.Rescale(150, 150, wx.IMAGE_QUALITY_HIGH) + self.avatar_image.SetBitmap(image.ConvertToBitmap()) diff --git a/srcantiguo/wxUI/dialogs/mastodon/userActions.py b/srcantiguo/wxUI/dialogs/mastodon/userActions.py new file mode 100644 index 00000000..2469bc5b --- /dev/null +++ b/srcantiguo/wxUI/dialogs/mastodon/userActions.py @@ -0,0 +1,79 @@ +# -*- coding: utf-8 -*- +import wx + +class UserActionsDialog(wx.Dialog): + def __init__(self, users=[], default="follow", *args, **kwargs): + super(UserActionsDialog, self).__init__(parent=None, *args, **kwargs) + panel = wx.Panel(self) + userSizer = wx.BoxSizer() + self.SetTitle(_(u"Action")) + userLabel = wx.StaticText(panel, -1, _(u"&User")) + self.cb = wx.ComboBox(panel, -1, choices=users, value=users[0]) + self.cb.SetFocus() + self.autocompletion = wx.Button(panel, -1, _(u"&Autocomplete users")) + userSizer.Add(userLabel, 0, wx.ALL, 5) + userSizer.Add(self.cb, 0, wx.ALL, 5) + userSizer.Add(self.autocompletion, 0, wx.ALL, 5) + actionSizer = wx.BoxSizer(wx.VERTICAL) + label2 = wx.StaticText(panel, -1, _(u"Action")) + self.follow = wx.RadioButton(panel, -1, _(u"&Follow"), name=_(u"Action"), style=wx.RB_GROUP) + self.unfollow = wx.RadioButton(panel, -1, _(u"U&nfollow")) + self.mute = wx.RadioButton(panel, -1, _(u"&Mute")) + self.unmute = wx.RadioButton(panel, -1, _(u"Unmu&te")) + self.block = wx.RadioButton(panel, -1, _(u"&Block")) + self.unblock = wx.RadioButton(panel, -1, _(u"Unbl&ock")) + self.setup_default(default) + hSizer = wx.BoxSizer(wx.HORIZONTAL) + hSizer.Add(label2, 0, wx.ALL, 5) + actionSizer.Add(self.follow, 0, wx.ALL, 5) + actionSizer.Add(self.unfollow, 0, wx.ALL, 5) + actionSizer.Add(self.mute, 0, wx.ALL, 5) + actionSizer.Add(self.unmute, 0, wx.ALL, 5) + actionSizer.Add(self.block, 0, wx.ALL, 5) + actionSizer.Add(self.unblock, 0, wx.ALL, 5) + hSizer.Add(actionSizer, 0, wx.ALL, 5) + sizer = wx.BoxSizer(wx.VERTICAL) + ok = wx.Button(panel, wx.ID_OK, _(u"&OK")) + ok.SetDefault() + cancel = wx.Button(panel, wx.ID_CANCEL, _(u"&Close")) + btnsizer = wx.BoxSizer() + btnsizer.Add(ok) + btnsizer.Add(cancel) + sizer.Add(userSizer) + sizer.Add(hSizer, 0, wx.ALL, 5) + sizer.Add(btnsizer) + panel.SetSizer(sizer) + + def get_action(self): + if self.follow.GetValue() == True: return "follow" + elif self.unfollow.GetValue() == True: return "unfollow" + elif self.mute.GetValue() == True: return "mute" + elif self.unmute.GetValue() == True: return "unmute" + elif self.block.GetValue() == True: return "block" + elif self.unblock.GetValue() == True: return "unblock" + + def setup_default(self, default): + if default == "follow": + self.follow.SetValue(True) + elif default == "unfollow": + self.unfollow.SetValue(True) + elif default == "mute": + self.mute.SetValue(True) + elif default == "unmute": + self.unmute.SetValue(True) + elif default == "block": + self.block.SetValue(True) + elif default == "unblock": + self.unblock.SetValue(True) + + def get_response(self): + return self.ShowModal() + + def get_user(self): + return self.cb.GetValue() + + def get_position(self): + return self.cb.GetPosition() + + def popup_menu(self, menu): + self.PopupMenu(menu, self.cb.GetPosition()) diff --git a/srcantiguo/wxUI/dialogs/mastodon/userTimeline.py b/srcantiguo/wxUI/dialogs/mastodon/userTimeline.py new file mode 100644 index 00000000..e713662b --- /dev/null +++ b/srcantiguo/wxUI/dialogs/mastodon/userTimeline.py @@ -0,0 +1,57 @@ +# -*- coding: utf-8 -*- +import wx + +class UserTimeline(wx.Dialog): + def __init__(self, users=[], default="posts", *args, **kwargs): + super(UserTimeline, self).__init__(parent=None, *args, **kwargs) + panel = wx.Panel(self) + userSizer = wx.BoxSizer() + self.SetTitle(_("Timeline for %s") % (users[0])) + userLabel = wx.StaticText(panel, -1, _(u"User")) + self.cb = wx.ComboBox(panel, -1, choices=users, value=users[0]) + self.cb.SetFocus() + self.autocompletion = wx.Button(panel, -1, _(u"&Autocomplete users")) + userSizer.Add(userLabel, 0, wx.ALL, 5) + userSizer.Add(self.cb, 0, wx.ALL, 5) + userSizer.Add(self.autocompletion, 0, wx.ALL, 5) + actionSizer = wx.BoxSizer(wx.VERTICAL) + label2 = wx.StaticText(panel, -1, _(u"Buffer type")) + self.posts = wx.RadioButton(panel, -1, _(u"&Posts"), style=wx.RB_GROUP) + self.followers = wx.RadioButton(panel, -1, _(u"&Followers")) + self.following = wx.RadioButton(panel, -1, _("Fo&llowing")) + self.setup_default(default) + hSizer = wx.BoxSizer(wx.HORIZONTAL) + hSizer.Add(label2, 0, wx.ALL, 5) + actionSizer.Add(self.posts, 0, wx.ALL, 5) + actionSizer.Add(self.followers, 0, wx.ALL, 5) + actionSizer.Add(self.following, 0, wx.ALL, 5) + hSizer.Add(actionSizer, 0, wx.ALL, 5) + sizer = wx.BoxSizer(wx.VERTICAL) + ok = wx.Button(panel, wx.ID_OK, _(u"&OK")) + ok.SetDefault() + cancel = wx.Button(panel, wx.ID_CANCEL, _(u"&Close")) + btnsizer = wx.BoxSizer() + btnsizer.Add(ok) + btnsizer.Add(cancel) + sizer.Add(userSizer) + sizer.Add(hSizer, 0, wx.ALL, 5) + sizer.Add(btnsizer) + panel.SetSizer(sizer) + + def get_action(self): + if self.posts.GetValue() == True: return "posts" + elif self.followers.GetValue() == True: return "followers" + elif self.following.GetValue() == True: return "following" + + def setup_default(self, default): + if default == "posts": + self.posts.SetValue(True) + + def get_user(self): + return self.cb.GetValue() + + def get_position(self): + return self.cb.GetPosition() + + def popup_menu(self, menu): + self.PopupMenu(menu, self.cb.GetPosition()) diff --git a/srcantiguo/wxUI/dialogs/templateDialogs.py b/srcantiguo/wxUI/dialogs/templateDialogs.py new file mode 100644 index 00000000..af1c708b --- /dev/null +++ b/srcantiguo/wxUI/dialogs/templateDialogs.py @@ -0,0 +1,52 @@ +# -*- coding: UTF-8 -*- +import wx +import output +from typing import List + +class EditTemplateDialog(wx.Dialog): + def __init__(self, template: str, variables: List[str] = [], default_template: str = "", *args, **kwds) -> None: + super(EditTemplateDialog, self).__init__(parent=None, title=_("Edit Template"), *args, **kwds) + self.default_template = default_template + mainSizer = wx.BoxSizer(wx.VERTICAL) + sizer_1 = wx.BoxSizer(wx.HORIZONTAL) + mainSizer.Add(sizer_1, 1, wx.EXPAND, 0) + label_1 = wx.StaticText(self, wx.ID_ANY, _("Edit template")) + sizer_1.Add(label_1, 0, 0, 0) + self.template = wx.TextCtrl(self, wx.ID_ANY, template) + sizer_1.Add(self.template, 0, 0, 0) + sizer_2 = wx.StaticBoxSizer(wx.StaticBox(self, wx.ID_ANY, _("Available variables")), wx.HORIZONTAL) + mainSizer.Add(sizer_2, 1, wx.EXPAND, 0) + self.variables = wx.ListBox(self, wx.ID_ANY, choices=["$"+v for v in variables]) + self.variables.Bind(wx.EVT_CHAR_HOOK, self.on_keypress) + sizer_2.Add(self.variables, 0, 0, 0) + sizer_3 = wx.StdDialogButtonSizer() + mainSizer.Add(sizer_3, 0, wx.ALIGN_RIGHT | wx.ALL, 4) + self.button_SAVE = wx.Button(self, wx.ID_SAVE) + self.button_SAVE.SetDefault() + sizer_3.AddButton(self.button_SAVE) + self.button_CANCEL = wx.Button(self, wx.ID_CANCEL) + sizer_3.AddButton(self.button_CANCEL) + self.button_RESTORE = wx.Button(self, wx.ID_ANY, _("&Restore template")) + self.button_RESTORE.Bind(wx.EVT_BUTTON, self.on_restore) + sizer_3.AddButton(self.button_CANCEL) + sizer_3.Realize() + self.SetSizer(mainSizer) + mainSizer.Fit(self) + self.SetAffirmativeId(self.button_SAVE.GetId()) + self.SetEscapeId(self.button_CANCEL.GetId()) + self.Layout() + + def on_keypress(self, event, *args, **kwargs): + if event.GetKeyCode() == wx.WXK_RETURN: + self.template.ChangeValue(self.template.GetValue()+self.variables.GetStringSelection()+", ") + output.speak(self.template.GetValue()+self.variables.GetStringSelection()+", ") + return + event.Skip() + + def on_restore(self, *args, **kwargs) -> None: + self.template.ChangeValue(self.default_template) + output.speak(_("Restored template to {}.").format(self.default_template)) + self.template.SetFocus() + +def invalid_template() -> None: + wx.MessageDialog(None, _("the template you have specified include variables that do not exists for the object. Please fix the template and try again. For your reference, you can see a list of all available variables in the variables list while editing your template."), _("Invalid template"), wx.ICON_ERROR).ShowModal() \ No newline at end of file diff --git a/srcantiguo/wxUI/dialogs/urlList.py b/srcantiguo/wxUI/dialogs/urlList.py new file mode 100644 index 00000000..f8bdd7da --- /dev/null +++ b/srcantiguo/wxUI/dialogs/urlList.py @@ -0,0 +1,36 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals +import wx + +class urlList(wx.Dialog): + def __init__(self, title=_(u"Select URL")): + super(urlList, self).__init__(parent=None, title=title) + panel = wx.Panel(self) + self.lista = wx.ListBox(panel, -1) + self.lista.SetFocus() + self.lista.SetSize(self.lista.GetBestSize()) + sizer = wx.BoxSizer(wx.VERTICAL) + sizer.Add(self.lista, 0, wx.ALL, 5) + goBtn = wx.Button(panel, wx.ID_OK) + goBtn.SetDefault() + cancelBtn = wx.Button(panel, wx.ID_CANCEL) + btnSizer = wx.BoxSizer() + btnSizer.Add(goBtn, 0, wx.ALL, 5) + btnSizer.Add(cancelBtn, 0, wx.ALL, 5) + sizer.Add(btnSizer, 0, wx.ALL, 5) + panel.SetSizer(sizer) + self.SetClientSize(sizer.CalcMin()) + + def populate_list(self, urls): + for i in urls: + self.lista.Append(i) + self.lista.SetSelection(0) + + def get_string(self): + return self.lista.GetStringSelection() + + def get_item(self): + return self.lista.GetSelection() + + def get_response(self): + return self.ShowModal() diff --git a/srcantiguo/wxUI/dialogs/userAliasDialogs.py b/srcantiguo/wxUI/dialogs/userAliasDialogs.py new file mode 100644 index 00000000..9156c0b5 --- /dev/null +++ b/srcantiguo/wxUI/dialogs/userAliasDialogs.py @@ -0,0 +1,95 @@ +# -*- coding: utf-8 -*- +import wx +import gettext +from . import baseDialog + +class addAliasDialog(baseDialog.BaseWXDialog): + def __init__(self, title, users): + super(addAliasDialog, self).__init__(parent=None, id=wx.ID_ANY, title=title) + panel = wx.Panel(self) + userSizer = wx.BoxSizer() + self.cb = wx.ComboBox(panel, -1, choices=users, value=users[0], size=wx.DefaultSize) + self.cb.SetFocus() + self.autocompletion = wx.Button(panel, -1, _(u"&Autocomplete users")) + userSizer.Add(wx.StaticText(panel, -1, _(u"User")), 0, wx.ALL, 5) + userSizer.Add(self.cb, 0, wx.ALL, 5) + userSizer.Add(self.autocompletion, 0, wx.ALL, 5) + aliasSizer = wx.BoxSizer(wx.HORIZONTAL) + aliasLabel = wx.StaticText(panel, wx.ID_ANY, _("Alias")) + self.alias = wx.TextCtrl(panel, wx.ID_ANY) + aliasSizer.Add(aliasLabel, 0, wx.ALL, 5) + aliasSizer.Add(self.alias, 0, wx.ALL, 5) + sizer = wx.BoxSizer(wx.VERTICAL) + ok = wx.Button(panel, wx.ID_OK, _(u"OK")) + ok.SetDefault() + cancel = wx.Button(panel, wx.ID_CANCEL, _(u"Close")) + btnsizer = wx.BoxSizer() + btnsizer.Add(ok, 0, wx.ALL, 5) + btnsizer.Add(cancel, 0, wx.ALL, 5) + sizer.Add(userSizer, 0, wx.ALL, 5) + sizer.Add(aliasSizer, 0, wx.ALL, 5) + sizer.Add(btnsizer, 0, wx.ALL, 5) + panel.SetSizer(sizer) + self.SetClientSize(sizer.CalcMin()) + + def get_user(self): + return (self.cb.GetValue(), self.alias.GetValue()) + +class userAliasEditorDialog(wx.Dialog): + def __init__(self, *args, **kwds): + super(userAliasEditorDialog, self).__init__(parent=None) + self.SetTitle(_("Edit user aliases")) + main_sizer = wx.BoxSizer(wx.VERTICAL) + userListSizer = wx.StaticBoxSizer(wx.StaticBox(self, wx.ID_ANY, _("Users")), wx.VERTICAL) + main_sizer.Add(userListSizer, 1, wx.EXPAND, 0) + self.users = wx.ListBox(self, wx.ID_ANY, choices=[]) + self.users.Bind(wx.EVT_LISTBOX, self.on_selection_changes) + userListSizer.Add(self.users, 0, 0, 0) + actionsSizer = wx.StaticBoxSizer(wx.StaticBox(self, wx.ID_ANY, _("Actions")), wx.HORIZONTAL) + main_sizer.Add(actionsSizer, 1, wx.EXPAND, 0) + self.add = wx.Button(self, wx.ID_ANY, _("Add alias")) + self.add.SetToolTip(_("Adds a new user alias")) + actionsSizer.Add(self.add, 0, 0, 0) + self.edit = wx.Button(self, wx.ID_ANY, _("Edit")) + self.edit.SetToolTip(_("Edit the currently focused user Alias.")) + self.edit.Enable(False) + actionsSizer.Add(self.edit, 0, 0, 0) + self.remove = wx.Button(self, wx.ID_ANY, _("Remove")) + self.remove.SetToolTip(_("Remove the currently focused user alias.")) + self.remove.Enable(False) + actionsSizer.Add(self.remove, 0, 0, 0) + btnSizer = wx.StdDialogButtonSizer() + main_sizer.Add(btnSizer, 0, wx.ALIGN_RIGHT | wx.ALL, 4) + self.button_CLOSE = wx.Button(self, wx.ID_CLOSE, "") + btnSizer.AddButton(self.button_CLOSE) + btnSizer.Realize() + self.SetSizer(main_sizer) + main_sizer.Fit(self) + self.SetEscapeId(self.button_CLOSE.GetId()) + self.Layout() + + def on_selection_changes(self, *args, **kwargs): + selection = self.users.GetSelection() + if selection == -1: + self.enable_action_buttons(False) + else: + self.enable_action_buttons(True) + + def get_selected_user(self): + return self.users.GetStringSelection() + + def remove_alias_dialog(self, *args, **kwargs): + dlg = wx.MessageDialog(self, _("Are you sure you want to delete this user alias?"), _("Remove user alias"), wx.YES_NO) + if dlg.ShowModal() == wx.ID_YES: + return True + else: + return False + + def enable_action_buttons(self, enabled=True): + self.edit.Enable(enabled) + self.remove.Enable(enabled) + + def edit_alias_dialog(self, title): + dlg = wx.TextEntryDialog(self, title, _("User alias")) + if dlg.ShowModal() == wx.ID_OK: + return dlg.GetValue() \ No newline at end of file diff --git a/srcantiguo/wxUI/dialogs/userList.py b/srcantiguo/wxUI/dialogs/userList.py new file mode 100644 index 00000000..ff037068 --- /dev/null +++ b/srcantiguo/wxUI/dialogs/userList.py @@ -0,0 +1,33 @@ +# -*- coding: utf-8 -*- +import wx + +class UserListDialog(wx.Dialog): + def __init__(self, parent=None, title="", users=[]): + super(UserListDialog, self).__init__(parent=parent, title=title, size=(400, 300)) + self.users = users + self.init_ui() + + def init_ui(self): + panel = wx.Panel(self) + main_sizer = wx.BoxSizer(wx.VERTICAL) + title_text = wx.StaticText(panel, label=self.GetTitle()) + title_font = title_text.GetFont() + title_font.PointSize += 2 + title_font = title_font.Bold() + title_text.SetFont(title_font) + main_sizer.Add(title_text, 0, wx.ALIGN_CENTER | wx.TOP, 10) + user_list_box = wx.StaticBox(panel, wx.ID_ANY, "Users") + user_list_sizer = wx.StaticBoxSizer(user_list_box, wx.VERTICAL) + self.user_list = wx.ListBox(panel, wx.ID_ANY, choices=self.users, style=wx.LB_SINGLE) + user_list_sizer.Add(self.user_list, 1, wx.EXPAND | wx.ALL, 10) + main_sizer.Add(user_list_sizer, 1, wx.EXPAND | wx.ALL, 15) + buttons_sizer = wx.BoxSizer(wx.HORIZONTAL) + self.actions_button = wx.Button(panel, wx.ID_ANY, "&Actions") + buttons_sizer.Add(self.actions_button, 0, wx.RIGHT, 10) + self.details_button = wx.Button(panel, wx.ID_ANY, _("&View profile")) + buttons_sizer.Add(self.details_button, 0, wx.RIGHT, 10) + close_button = wx.Button(panel, wx.ID_CANCEL, "&Close") + buttons_sizer.Add(close_button, 0) + main_sizer.Add(buttons_sizer, 0, wx.ALIGN_CENTER | wx.BOTTOM, 15) + panel.SetSizer(main_sizer) +# self.SetSizerAndFit(main_sizer) diff --git a/srcantiguo/wxUI/sysTrayIcon.py b/srcantiguo/wxUI/sysTrayIcon.py new file mode 100644 index 00000000..31bea0a0 --- /dev/null +++ b/srcantiguo/wxUI/sysTrayIcon.py @@ -0,0 +1,49 @@ +# -*- coding: utf-8 -*- +""" A systray for TW Blue """ +from __future__ import unicode_literals +############################################################ +# Copyright (c) 2014 José Manuel Delicado Alcolea +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# +############################################################ + +import wx +import wx.adv +import application +import paths +import os + +class SysTrayIcon(wx.adv.TaskBarIcon): + + def __init__(self): + super(SysTrayIcon, self).__init__() + icon=wx.Icon(os.path.join(paths.app_path(), "icon.ico"), wx.BITMAP_TYPE_ICO) + self.SetIcon(icon, application.name) + self.menu=wx.Menu() + self.post = self.menu.Append(wx.ID_ANY, _(u"Post")) + self.global_settings = self.menu.Append(wx.ID_ANY, _(u"&Global settings")) + self.account_settings = self.menu.Append(wx.ID_ANY, _(u"Account se&ttings")) +# self.update_profile = self.menu.Append(wx.ID_ANY, _(u"Update &profile")) + self.show_hide = self.menu.Append(wx.ID_ANY, _(u"&Show / hide")) + self.doc = self.menu.Append(wx.ID_ANY, _(u"&Documentation")) + self.check_for_updates = self.menu.Append(wx.ID_ANY, _(u"Check for &updates")) + self.exit = self.menu.Append(wx.ID_ANY, _(u"&Exit")) + + def show_menu(self): + self.PopupMenu(self.menu) + + def Destroy(self): + self.menu.Destroy() + super(SysTrayIcon, self).Destroy() diff --git a/srcantiguo/wxUI/view.py b/srcantiguo/wxUI/view.py new file mode 100644 index 00000000..693bfe9b --- /dev/null +++ b/srcantiguo/wxUI/view.py @@ -0,0 +1,206 @@ +# -*- coding: utf-8 -*- +import wx +import wx.adv +import application + +class mainFrame(wx.Frame): + """ Main class of the Frame. This is the Main Window.""" + + ### MENU + def makeMenus(self): + """ Creates, bind and returns the menu bar for the application. Also in this function, the accel table is created.""" + self.menubar = wx.MenuBar() + + # Application menu + self.menubar_application = wx.Menu() + self.manage_accounts = self.menubar_application.Append(wx.ID_ANY, _(u"&Manage accounts")) + self.updateProfile = self.menubar_application.Append(wx.ID_ANY, _("&Update profile")) + self.show_hide = self.menubar_application.Append(wx.ID_ANY, _(u"&Hide window")) + self.menuitem_search = self.menubar_application.Append(wx.ID_ANY, _(u"&Search")) + self.lists = self.menubar_application.Append(wx.ID_ANY, _(u"&Lists manager")) + self.lists.Enable(False) + self.manageAliases = self.menubar_application.Append(wx.ID_ANY, _("M&anage user aliases")) + self.keystroke_editor = self.menubar_application.Append(wx.ID_ANY, _(u"&Edit keystrokes")) + self.account_settings = self.menubar_application.Append(wx.ID_ANY, _(u"Account se&ttings")) + self.prefs = self.menubar_application.Append(wx.ID_PREFERENCES, _(u"&Global settings")) + self.close = self.menubar_application.Append(wx.ID_EXIT, _(u"E&xit")) + + # Compose menu + self.menubar_item = wx.Menu() + self.compose = self.menubar_item.Append(wx.ID_ANY, _(u"&Post")) + self.reply = self.menubar_item.Append(wx.ID_ANY, _(u"Re&ply")) + self.share = self.menubar_item.Append(wx.ID_ANY, _(u"&Boost")) + self.fav = self.menubar_item.Append(wx.ID_ANY, _(u"&Add to favorites")) + self.unfav = self.menubar_item.Append(wx.ID_ANY, _(u"&Remove from favorites")) + self.view = self.menubar_item.Append(wx.ID_ANY, _(u"&Show post")) + self.view_conversation = self.menubar_item.Append(wx.ID_ANY, _(u"View conversa&tion")) + self.ocr = self.menubar_item.Append(wx.ID_ANY, _(u"Read text in picture")) + self.ocr.Enable(False) + self.delete = self.menubar_item.Append(wx.ID_ANY, _(u"&Delete")) + + # User menu + self.menubar_user = wx.Menu() + self.follow = self.menubar_user.Append(wx.ID_ANY, _(u"&Actions...")) + self.timeline = self.menubar_user.Append(wx.ID_ANY, _(u"&View timeline...")) + self.dm = self.menubar_user.Append(wx.ID_ANY, _(u"Direct me&ssage")) + self.addAlias = self.menubar_user.Append(wx.ID_ANY, _("Add a&lias")) + self.addToList = self.menubar_user.Append(wx.ID_ANY, _(u"&Add to list")) + self.removeFromList = self.menubar_user.Append(wx.ID_ANY, _(u"R&emove from list")) + self.details = self.menubar_user.Append(wx.ID_ANY, _(u"Show user &profile")) + self.favs = self.menubar_user.Append(wx.ID_ANY, _(u"V&iew likes")) + + # buffer menu + self.menubar_buffer = wx.Menu() + self.update_buffer = self.menubar_buffer.Append(wx.ID_ANY, _(u"&Update buffer")) + self.community_timeline = self.menubar_buffer.Append(wx.ID_ANY, _("Create community timeline")) + self.trends = self.menubar_buffer.Append(wx.ID_ANY, _(u"New &trending topics buffer...")) + self.filter = self.menubar_buffer.Append(wx.ID_ANY, _(u"Create a &filter")) + self.manage_filters = self.menubar_buffer.Append(wx.ID_ANY, _(u"&Manage filters")) + self.find = self.menubar_buffer.Append(wx.ID_ANY, _(u"F&ind a string in the currently focused buffer...")) + self.load_previous_items = self.menubar_buffer.Append(wx.ID_ANY, _(u"&Load previous items")) + self.menubar_buffer.AppendSeparator() + self.mute_buffer = self.menubar_buffer.AppendCheckItem(wx.ID_ANY, _(u"&Mute")) + self.autoread = self.menubar_buffer.AppendCheckItem(wx.ID_ANY, _(u"&Autoread")) + self.clear = self.menubar_buffer.Append(wx.ID_ANY, _(u"&Clear buffer")) + self.deleteTl = self.menubar_buffer.Append(wx.ID_ANY, _(u"&Destroy")) + + # audio menu + self.menubar_audio = wx.Menu() + self.seekLeft = self.menubar_audio.Append(wx.ID_ANY, _(u"Seek &back 5 seconds")) + self.seekRight = self.menubar_audio.Append(wx.ID_ANY, _(u"Seek &forward 5 seconds")) + + # Help Menu + self.menubar_help = wx.Menu() + self.doc = self.menubar_help.Append(-1, _(u"&Documentation")) + self.sounds_tutorial = self.menubar_help.Append(wx.ID_ANY, _(u"Sounds &tutorial")) + self.changelog = self.menubar_help.Append(wx.ID_ANY, _(u"&What's new in this version?")) + self.check_for_updates = self.menubar_help.Append(wx.ID_ANY, _(u"&Check for updates")) + self.reportError = self.menubar_help.Append(wx.ID_ANY, _(u"&Report an error")) + self.visit_website = self.menubar_help.Append(-1, _(u"{0}'s &website").format(application.name,)) + self.get_soundpacks = self.menubar_help.Append(-1, _(u"Get soundpacks for TWBlue")) + self.about = self.menubar_help.Append(-1, _(u"About &{0}").format(application.name,)) + + # Add all to the menu Bar + self.menubar.Append(self.menubar_application, _(u"&Application")) + self.menubar.Append(self.menubar_item, _("&Tweet")) + self.menubar.Append(self.menubar_user, _(u"&User")) + self.menubar.Append(self.menubar_buffer, _(u"&Buffer")) + self.menubar.Append(self.menubar_audio, _(u"&Audio")) + self.menubar.Append(self.menubar_help, _(u"&Help")) + + self.accel_tbl = wx.AcceleratorTable([ + (wx.ACCEL_CTRL, ord('N'), self.compose.GetId()), + (wx.ACCEL_CTRL, ord('R'), self.reply.GetId()), + (wx.ACCEL_CTRL|wx.ACCEL_SHIFT, ord('R'), self.share.GetId()), + (wx.ACCEL_CTRL, ord('F'), self.fav.GetId()), + (wx.ACCEL_CTRL|wx.ACCEL_SHIFT, ord('F'), self.unfav.GetId()), + (wx.ACCEL_CTRL|wx.ACCEL_SHIFT, ord('V'), self.view.GetId()), + (wx.ACCEL_CTRL, ord('D'), self.dm.GetId()), + + (wx.ACCEL_CTRL, ord('Q'), self.close.GetId()), + (wx.ACCEL_CTRL, ord('S'), self.follow.GetId()), + (wx.ACCEL_CTRL, ord('I'), self.timeline.GetId()), + (wx.ACCEL_CTRL|wx.ACCEL_SHIFT, ord('I'), self.deleteTl.GetId()), + (wx.ACCEL_CTRL, ord('M'), self.show_hide.GetId()), + (wx.ACCEL_CTRL, wx.WXK_LEFT, self.seekLeft.GetId()), + (wx.ACCEL_CTRL, ord('P'), self.updateProfile.GetId()), + (wx.ACCEL_CTRL, wx.WXK_RIGHT, self.seekRight.GetId()), + (wx.ACCEL_CTRL, ord(' '), self.seekLeft.GetId()), + ]) + + self.SetAcceleratorTable(self.accel_tbl) + + ### MAIN + def __init__(self): + """ Main function of this class.""" + super(mainFrame, self).__init__(None, -1, application.name, size=(1600, 1600)) + self.panel = wx.Panel(self) + self.sizer = wx.BoxSizer(wx.VERTICAL) + self.SetTitle(application.name) + self.makeMenus() + self.SetMenuBar(self.menubar) + self.nb = wx.Treebook(self.panel, wx.ID_ANY) + self.buffers = {} + + def get_buffer_count(self): + return self.nb.GetPageCount() + + def add_buffer(self, buffer, name): + self.nb.AddPage(buffer, name) + self.buffers[name] = buffer.GetId() + + def insert_buffer(self, buffer, name, pos): + self.nb.InsertSubPage(pos, buffer, name) + self.buffers[name] = buffer.GetId() + + def prepare(self): + self.sizer.Add(self.nb, 1, wx.ALL | wx.EXPAND, 5) + self.panel.SetSizer(self.sizer) + self.Maximize() + self.sizer.Layout() + self.SetClientSize(self.sizer.CalcMin()) +# print self.GetSize() + + def get_buffers(self): + return [self.nb.GetPage(i) for i in range(0, self.nb.GetPageCount())] + + def search(self, name_, account): + for i in range(0, self.nb.GetPageCount()): + if self.nb.GetPage(i).name == name_ and self.nb.GetPage(i).account == account: return i + + def get_current_buffer(self): + return self.nb.GetCurrentPage() + + def get_current_buffer_pos(self): + return self.nb.GetSelection() + + def get_buffer(self, pos): + return self.GetPage(pos) + + def change_buffer(self, position): + self.nb.ChangeSelection(position) + + def get_buffer_text(self): + return self.nb.GetPageText(self.nb.GetSelection()) + + def get_buffer_by_id(self, id): + return self.nb.FindWindowById(id) + def advance_selection(self, forward): + self.nb.AdvanceSelection(forward) + + def show(self): + self.Show() + + def show_address(self, address): + wx.MessageDialog(self, address, _(u"Address"), wx.OK).ShowModal() + + def delete_buffer(self, pos): + self.nb.DeletePage(pos) + + def about_dialog(self): + info = wx.adv.AboutDialogInfo() + info.SetName(application.name) + info.SetVersion(application.version) + info.SetDescription(application.description) + info.SetCopyright(application.copyright) + info.SetTranslators(application.translators) +# info.SetLicence(application.licence) + for i in application.authors: + info.AddDeveloper(i) + wx.adv.AboutBox(info) + + def set_focus(self): + self.SetFocus() + + def check_menuitem(self, menuitem, check=True): + if hasattr(self, menuitem): + getattr(self, menuitem).Check(check) + + def set_page_title(self, page, title): + return self.nb.SetPageText(page, title) + + def get_page_title(self, page): + return self.nb.GetPageText(page) + +def no_update_available(): + wx.MessageDialog(None, _(u"Your {0} version is up to date").format(application.name,), _(u"Update"), style=wx.OK).ShowModal() diff --git a/test_atproto_session.py b/test_atproto_session.py deleted file mode 100644 index 789ab93a..00000000 --- a/test_atproto_session.py +++ /dev/null @@ -1,186 +0,0 @@ -# -*- coding: utf-8 -*- -"""Test script for Blueski session functionality. - -This script demonstrates how to use the Blueski session implementation. -It can be used to verify that the authentication flow works correctly. - -Usage: - python test_atproto_session.py -""" - -import sys -import os - -# Add src to path -sys.path.insert(0, os.path.join(os.path.dirname(__file__), 'src')) - -# Import required modules -from sessions.blueski import session -import paths -import logging - -# Setup logging -logging.basicConfig( - level=logging.DEBUG, - format='%(asctime)s - %(name)s - %(levelname)s - %(message)s' -) - -def test_authorization(): - """Test the authorization flow.""" - print("\n" + "="*60) - print("Blueski Session Authorization Test") - print("="*60) - print("\nThis test will:") - print("1. Create a new Blueski session") - print("2. Walk you through the authorization process") - print("3. Verify the session was created correctly") - print("\nNOTE: You'll need:") - print(" - Your Blueski handle (e.g., user.bsky.social)") - print(" - An app password (NOT your main password)") - print("\n" + "="*60 + "\n") - - # Create a test session - test_session_id = "test_blueski_001" - print(f"Creating session with ID: {test_session_id}") - - s = session.Session(session_id=test_session_id) - - try: - # Try to login first (should fail for new session) - print("\nAttempting to login with existing credentials...") - s.get_configuration() - s.login() - print("✓ Login successful! Session already exists.") - print(f" Session name: {s.get_name()}") - print(f" Logged in: {s.logged}") - - except Exception as e: - # Expected for first run - print(f"✗ Login failed (expected): {type(e).__name__}") - print("\nStarting authorization process...") - print("(GUI dialogs will open for handle and password)") - - try: - result = s.authorise() - - if result: - print("\n✓ Authorization successful!") - print(f" Session name: {s.get_name()}") - print(f" Logged in: {s.logged}") - print(f" User DID: {s.settings['blueski']['did']}") - print(f" Handle: {s.settings['blueski']['handle']}") - - # Check that session_string was saved - if s.settings['blueski']['session_string']: - print(" ✓ Session string saved") - else: - print(" ✗ WARNING: Session string not saved!") - - # Check that app_password was cleared - if not s.settings['blueski']['app_password']: - print(" ✓ App password cleared (secure)") - else: - print(" ✗ WARNING: App password still in config!") - - print(f"\nSession configuration saved to:") - print(f" {os.path.join(paths.config_path(), test_session_id, 'session.conf')}") - - return s - else: - print("\n✗ Authorization cancelled or failed") - return None - - except Exception as e: - print(f"\n✗ Authorization error: {e}") - import traceback - traceback.print_exc() - return None - -def test_logout(s): - """Test the logout functionality.""" - if not s: - print("\nSkipping logout test (no active session)") - return - - print("\n" + "="*60) - print("Testing logout functionality") - print("="*60) - - print(f"\nCurrent state: logged={s.logged}") - - s.logout() - - print(f"After logout: logged={s.logged}") - - # Check that session_string was cleared - if not s.settings['blueski']['session_string']: - print("✓ Session string cleared") - else: - print("✗ WARNING: Session string not cleared!") - - print("\nLogout test complete") - -def test_session_restoration(): - """Test restoring a session from saved credentials.""" - print("\n" + "="*60) - print("Testing session restoration") - print("="*60) - - test_session_id = "test_blueski_001" - print(f"\nCreating new session object with ID: {test_session_id}") - - s = session.Session(session_id=test_session_id) - - try: - s.get_configuration() - s.login() - print("✓ Session restored successfully!") - print(f" Session name: {s.get_name()}") - print(f" Logged in: {s.logged}") - return s - except Exception as e: - print(f"✗ Failed to restore session: {e}") - import traceback - traceback.print_exc() - return None - -def main(): - """Main test function.""" - print("\nBlueski Session Test Suite") - print("Ensure you have wxPython installed for GUI dialogs\n") - - # Test 1: Authorization - session_obj = test_authorization() - - if not session_obj: - print("\nTests aborted (authorization failed)") - return - - input("\nPress Enter to test session restoration...") - - # Test 2: Logout - test_logout(session_obj) - - input("\nPress Enter to test session restoration after logout...") - - # Test 3: Try to restore (should fail after logout) - restored_session = test_session_restoration() - - if not restored_session: - print("\n✓ Session restoration correctly failed after logout") - else: - print("\n✗ WARNING: Session was restored after logout (unexpected)") - - print("\n" + "="*60) - print("All tests complete!") - print("="*60) - -if __name__ == "__main__": - try: - main() - except KeyboardInterrupt: - print("\n\nTest interrupted by user") - except Exception as e: - print(f"\n\nUnexpected error: {e}") - import traceback - traceback.print_exc() diff --git a/test_config_dir/test_session/session.conf b/test_config_dir/test_session/session.conf deleted file mode 100644 index 4081a2f1..00000000 --- a/test_config_dir/test_session/session.conf +++ /dev/null @@ -1,40 +0,0 @@ -[atproto] -handle = test_user.bsky.social -app_password = "" -service_url = https://bsky.social -session_string = fake_session_string_12345 -access_jwt = "" -refresh_jwt = "" -did = "" - -[general] -relative_times = True -max_posts_per_call = 40 -reverse_timelines = False -persist_size = 0 -load_cache_in_memory = True -show_screen_names = False -buffer_order = home, notifications - -[sound] -volume = 1.0 -input_device = Default -output_device = Default -session_mute = False -current_soundpack = FreakyBlue -indicate_audio = True -indicate_img = True - -[other_buffers] -timelines = , - -[mysc] -spelling_language = "" - -[reporting] -braille_reporting = True -speech_reporting = True - -[filters] - -[user-aliases]