diff --git a/app/javascript/mastodon/components/dropdown_menu.js b/app/javascript/mastodon/components/dropdown_menu.js index 3a3ebf4873d..43dc0d6e3e6 100644 --- a/app/javascript/mastodon/components/dropdown_menu.js +++ b/app/javascript/mastodon/components/dropdown_menu.js @@ -110,7 +110,7 @@ export default class Dropdown extends React.PureComponent { icon: PropTypes.string.isRequired, items: PropTypes.array.isRequired, size: PropTypes.number.isRequired, - ariaLabel: PropTypes.string, + title: PropTypes.string, disabled: PropTypes.bool, status: ImmutablePropTypes.map, isUserTouching: PropTypes.func, @@ -120,7 +120,7 @@ export default class Dropdown extends React.PureComponent { }; static defaultProps = { - ariaLabel: 'Menu', + title: 'Menu', }; state = { @@ -186,14 +186,14 @@ export default class Dropdown extends React.PureComponent { } render () { - const { icon, items, size, ariaLabel, disabled } = this.props; + const { icon, items, size, title, disabled } = this.props; const { expanded } = this.state; return (
- +
); diff --git a/app/javascript/mastodon/features/status/components/action_bar.js b/app/javascript/mastodon/features/status/components/action_bar.js index 7b65420d046..99834df6cdb 100644 --- a/app/javascript/mastodon/features/status/components/action_bar.js +++ b/app/javascript/mastodon/features/status/components/action_bar.js @@ -120,7 +120,7 @@ export default class ActionBar extends React.PureComponent { {shareButton}
- +
); diff --git a/app/javascript/mastodon/features/status/components/card.js b/app/javascript/mastodon/features/status/components/card.js index bb83374b9b3..680bf63ab73 100644 --- a/app/javascript/mastodon/features/status/components/card.js +++ b/app/javascript/mastodon/features/status/components/card.js @@ -1,5 +1,6 @@ import React from 'react'; import PropTypes from 'prop-types'; +import Immutable from 'immutable'; import ImmutablePropTypes from 'react-immutable-proptypes'; import punycode from 'punycode'; import classnames from 'classnames'; @@ -24,6 +25,7 @@ export default class Card extends React.PureComponent { static propTypes = { card: ImmutablePropTypes.map, maxDescription: PropTypes.number, + onOpenMedia: PropTypes.func.isRequired, }; static defaultProps = { @@ -34,6 +36,27 @@ export default class Card extends React.PureComponent { width: 0, }; + handlePhotoClick = () => { + const { card, onOpenMedia } = this.props; + + onOpenMedia( + Immutable.fromJS([ + { + type: 'image', + url: card.get('url'), + description: card.get('title'), + meta: { + original: { + width: card.get('width'), + height: card.get('height'), + }, + }, + }, + ]), + 0 + ); + }; + renderLink () { const { card, maxDescription } = this.props; @@ -73,9 +96,16 @@ export default class Card extends React.PureComponent { const { card } = this.props; return ( - - {card.get('title')} - + {card.get('title')} ); } diff --git a/app/javascript/mastodon/features/status/components/detailed_status.js b/app/javascript/mastodon/features/status/components/detailed_status.js index 81f71749b11..abdb9a3f685 100644 --- a/app/javascript/mastodon/features/status/components/detailed_status.js +++ b/app/javascript/mastodon/features/status/components/detailed_status.js @@ -73,7 +73,7 @@ export default class DetailedStatus extends ImmutablePureComponent { ); } } else if (status.get('spoiler_text').length === 0) { - media = ; + media = ; } if (status.get('application')) { diff --git a/app/javascript/mastodon/features/ui/components/image_loader.js b/app/javascript/mastodon/features/ui/components/image_loader.js index aad594380e8..e3e7197c541 100644 --- a/app/javascript/mastodon/features/ui/components/image_loader.js +++ b/app/javascript/mastodon/features/ui/components/image_loader.js @@ -7,7 +7,7 @@ export default class ImageLoader extends React.PureComponent { static propTypes = { alt: PropTypes.string, src: PropTypes.string.isRequired, - previewSrc: PropTypes.string.isRequired, + previewSrc: PropTypes.string, width: PropTypes.number, height: PropTypes.number, } @@ -47,7 +47,7 @@ export default class ImageLoader extends React.PureComponent { this.removeEventListeners(); this.setState({ loading: true, error: false }); Promise.all([ - this.loadPreviewCanvas(props), + props.previewSrc && this.loadPreviewCanvas(props), this.hasSize() && this.loadOriginalImage(props), ].filter(Boolean)) .then(() => { diff --git a/app/javascript/mastodon/features/ui/components/media_modal.js b/app/javascript/mastodon/features/ui/components/media_modal.js index f41a830891e..02591a51f4c 100644 --- a/app/javascript/mastodon/features/ui/components/media_modal.js +++ b/app/javascript/mastodon/features/ui/components/media_modal.js @@ -92,7 +92,7 @@ export default class MediaModal extends ImmutablePureComponent { const height = image.getIn(['meta', 'original', 'height']) || null; if (image.get('type') === 'image') { - return ; + return ; } else if (image.get('type') === 'gifv') { return ; } diff --git a/app/javascript/mastodon/locales/ca.json b/app/javascript/mastodon/locales/ca.json index d8c2cc3e56e..7ffdbfe5aaf 100644 --- a/app/javascript/mastodon/locales/ca.json +++ b/app/javascript/mastodon/locales/ca.json @@ -9,18 +9,18 @@ "account.follows_you": "et segueix", "account.media": "Media", "account.mention": "Esmentar @{name}", - "account.moved_to": "{name} has moved to:", + "account.moved_to": "{name} s'ha mogut a:", "account.mute": "Silenciar @{name}", - "account.mute_notifications": "Mute notifications from @{name}", + "account.mute_notifications": "Notificacions desactivades de @{name}", "account.posts": "Publicacions", "account.report": "Informe @{name}", - "account.requested": "Esperant aprovació", + "account.requested": "Esperant aprovació. Clic per a cancel·lar la petició de seguiment", "account.share": "Compartir el perfil de @{name}", "account.unblock": "Desbloquejar @{name}", "account.unblock_domain": "Mostra {domain}", "account.unfollow": "Deixar de seguir", "account.unmute": "Treure silenci de @{name}", - "account.unmute_notifications": "Unmute notifications from @{name}", + "account.unmute_notifications": "Activar notificacions de @{name}", "account.view_full_profile": "Veure el perfil complet", "boost_modal.combo": "Pots premer {combo} per saltar-te això el proper cop", "bundle_column_error.body": "S'ha produït un error en carregar aquest component.", @@ -54,7 +54,7 @@ "compose_form.publish_loud": "{publish}!", "compose_form.sensitive": "Marcar multimèdia com a sensible", "compose_form.spoiler": "Amagar text darrera l'advertència", - "compose_form.spoiler_placeholder": "Advertència de contingut", + "compose_form.spoiler_placeholder": "Escriu l'advertència aquí", "confirmation_modal.cancel": "Cancel·lar", "confirmations.block.confirm": "Bloquejar", "confirmations.block.message": "Estàs segur que vols bloquejar {name}?", @@ -67,7 +67,7 @@ "confirmations.unfollow.confirm": "Deixar de seguir", "confirmations.unfollow.message": "Estàs segur que vols deixar de seguir {name}?", "embed.instructions": "Incrusta aquest estat al lloc web copiant el codi a continuació.", - "embed.preview": "A continuació s'explica com:", + "embed.preview": "Aquí tenim quin aspecte tindrá:", "emoji_button.activity": "Activitat", "emoji_button.custom": "Personalitzat", "emoji_button.flags": "Flags", @@ -99,7 +99,7 @@ "home.column_settings.advanced": "Avançat", "home.column_settings.basic": "Bàsic", "home.column_settings.filter_regex": "Filtrar per expressió regular", - "home.column_settings.show_reblogs": "Mostrar 'boosts'", + "home.column_settings.show_reblogs": "Mostrar impulsos", "home.column_settings.show_replies": "Mostrar respostes", "home.settings": "Ajustos de columna", "lightbox.close": "Tancar", @@ -108,7 +108,7 @@ "loading_indicator.label": "Carregant...", "media_gallery.toggle_visible": "Alternar visibilitat", "missing_indicator.label": "No trobat", - "mute_modal.hide_notifications": "Hide notifications from this user?", + "mute_modal.hide_notifications": "Amagar notificacions d'aquest usuari?", "navigation_bar.blocks": "Usuaris bloquejats", "navigation_bar.community_timeline": "Línia de temps Local", "navigation_bar.edit_profile": "Editar perfil", @@ -132,7 +132,7 @@ "notifications.column_settings.mention": "Mencions:", "notifications.column_settings.push": "Push notificacions", "notifications.column_settings.push_meta": "Aquest dispositiu", - "notifications.column_settings.reblog": "Boosts:", + "notifications.column_settings.reblog": "Impulsos:", "notifications.column_settings.show": "Mostrar en la columna", "notifications.column_settings.sound": "Reproduïr so", "onboarding.done": "Fet", @@ -164,11 +164,11 @@ "privacy.public.short": "Públic", "privacy.unlisted.long": "No publicar en línies de temps públiques", "privacy.unlisted.short": "No llistat", - "relative_time.days": "fa {number} jorns", + "relative_time.days": "fa {number} dies", "relative_time.hours": "fa {number} hores", "relative_time.just_now": "ara", - "relative_time.minutes": "fa {number} minutes", - "relative_time.seconds": "fa {number} segondes", + "relative_time.minutes": "fa {number} minuts", + "relative_time.seconds": "fa {number} segons", "reply_indicator.cancel": "Cancel·lar", "report.placeholder": "Comentaris addicionals", "report.submit": "Enviar", @@ -192,7 +192,7 @@ "status.mute_conversation": "Silenciar conversació", "status.open": "Ampliar aquest estat", "status.pin": "Fixat en el perfil", - "status.reblog": "Boost", + "status.reblog": "Impuls", "status.reblogged_by": "{name} ha retootejat", "status.reply": "Respondre", "status.replyAll": "Respondre al tema", @@ -209,7 +209,7 @@ "tabs_bar.home": "Inici", "tabs_bar.local_timeline": "Local", "tabs_bar.notifications": "Notificacions", - "ui.beforeunload": "Your draft will be lost if you leave Mastodon.", + "ui.beforeunload": "El vostre esborrany es perdrà si sortiu de Mastodon.", "upload_area.title": "Arrossega i deixa anar per carregar", "upload_button.label": "Afegir multimèdia", "upload_form.description": "Descriure els problemes visuals", diff --git a/app/javascript/mastodon/locales/zh-CN.json b/app/javascript/mastodon/locales/zh-CN.json index a820b9790f4..1c2c9706708 100644 --- a/app/javascript/mastodon/locales/zh-CN.json +++ b/app/javascript/mastodon/locales/zh-CN.json @@ -9,7 +9,7 @@ "account.follows_you": "关注了你", "account.media": "媒体", "account.mention": "提及 @{name}", - "account.moved_to": "{name} has moved to:", + "account.moved_to": "{name} 已经迁移到:", "account.mute": "隐藏 @{name}", "account.mute_notifications": "隐藏来自 @{name} 的通知", "account.posts": "嘟文", @@ -86,7 +86,7 @@ "empty_column.hashtag": "这个话题标签下暂时没有内容。", "empty_column.home": "你还没有关注任何用户。快看看{public},向其他用户搭讪吧。", "empty_column.home.public_timeline": "公共时间轴", - "empty_column.list": "There is nothing in this list yet.", + "empty_column.list": "这个列表中暂时没有内容。", "empty_column.notifications": "你还没有收到过通知信息,快向其他用户搭讪吧。", "empty_column.public": "这里神马都没有!写一些公开的嘟文,或者关注其他实例的用户,这里就会有嘟文出现了哦!", "follow_request.authorize": "同意", diff --git a/app/javascript/mastodon/reducers/contexts.js b/app/javascript/mastodon/reducers/contexts.js index 64d584a019c..fe8308d0c10 100644 --- a/app/javascript/mastodon/reducers/contexts.js +++ b/app/javascript/mastodon/reducers/contexts.js @@ -1,3 +1,7 @@ +import { + ACCOUNT_BLOCK_SUCCESS, + ACCOUNT_MUTE_SUCCESS, +} from '../actions/accounts'; import { CONTEXT_FETCH_SUCCESS } from '../actions/statuses'; import { TIMELINE_DELETE, TIMELINE_CONTEXT_UPDATE } from '../actions/timelines'; import { Map as ImmutableMap, List as ImmutableList } from 'immutable'; @@ -31,6 +35,12 @@ const deleteFromContexts = (state, id) => { return state; }; +const filterContexts = (state, relationship) => { + return state.map( + statuses => statuses.filter( + status => status.get('account') !== relationship.id)); +}; + const updateContext = (state, status, references) => { return state.update('descendants', map => { references.forEach(parentId => { @@ -49,6 +59,9 @@ const updateContext = (state, status, references) => { export default function contexts(state = initialState, action) { switch(action.type) { + case ACCOUNT_BLOCK_SUCCESS: + case ACCOUNT_MUTE_SUCCESS: + return filterContexts(state, action.relationship); case CONTEXT_FETCH_SUCCESS: return normalizeContext(state, action.id, action.ancestors, action.descendants); case TIMELINE_DELETE: diff --git a/app/javascript/mastodon/reducers/statuses.js b/app/javascript/mastodon/reducers/statuses.js index b1fb4c5da34..5120b2b67da 100644 --- a/app/javascript/mastodon/reducers/statuses.js +++ b/app/javascript/mastodon/reducers/statuses.js @@ -22,10 +22,6 @@ import { TIMELINE_DELETE, TIMELINE_EXPAND_SUCCESS, } from '../actions/timelines'; -import { - ACCOUNT_BLOCK_SUCCESS, - ACCOUNT_MUTE_SUCCESS, -} from '../actions/accounts'; import { NOTIFICATIONS_UPDATE, NOTIFICATIONS_REFRESH_SUCCESS, @@ -88,18 +84,6 @@ const deleteStatus = (state, id, references) => { return state.delete(id); }; -const filterStatuses = (state, relationship) => { - state.forEach(status => { - if (status.get('account') !== relationship.id) { - return; - } - - state = deleteStatus(state, status.get('id'), state.filter(item => item.get('reblog') === status.get('id'))); - }); - - return state; -}; - const initialState = ImmutableMap(); export default function statuses(state = initialState, action) { @@ -139,9 +123,6 @@ export default function statuses(state = initialState, action) { return normalizeStatuses(state, action.statuses); case TIMELINE_DELETE: return deleteStatus(state, action.id, action.references); - case ACCOUNT_BLOCK_SUCCESS: - case ACCOUNT_MUTE_SUCCESS: - return filterStatuses(state, action.relationship); default: return state; } diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss index b70769e18b7..f4ad6627166 100644 --- a/app/javascript/styles/mastodon/components.scss +++ b/app/javascript/styles/mastodon/components.scss @@ -2182,15 +2182,12 @@ button.icon-button.active i.fa-retweet { } .status-card-photo { + cursor: zoom-in; display: block; text-decoration: none; - - img { - display: block; - width: 100%; - height: auto; - margin: 0; - } + width: 100%; + height: auto; + margin: 0; } .status-card-video { diff --git a/app/views/stream_entries/show.html.haml b/app/views/stream_entries/show.html.haml index 42806993139..786a4c0a821 100644 --- a/app/views/stream_entries/show.html.haml +++ b/app/views/stream_entries/show.html.haml @@ -8,7 +8,7 @@ = opengraph 'og:site_name', site_title = opengraph 'og:type', 'article' - = opengraph 'og:title', "#{@account.username} on #{site_hostname}" + = opengraph 'og:title', "#{@account.display_name} on #{site_hostname}" = opengraph 'og:url', account_stream_entry_url(@account, @stream_entry) = render 'stream_entries/og_description', activity: @stream_entry.activity diff --git a/config/locales/ca.yml b/config/locales/ca.yml index f32c8b44b75..fa8cf49f01b 100644 --- a/config/locales/ca.yml +++ b/config/locales/ca.yml @@ -1,6 +1,7 @@ --- ca: about: + about_hashtag_html: Aquests són toots públics etiquetats amb #%{hashtag}. Pots interactuar amb ells si tens un compte a qualsevol lloc del fediverse. about_mastodon_html: Mastodon és un servidor de xarxa social lliure i de codi obert. Una alternativa descentralitzada a plataformes comercials, que evita el risc que una única companyia monopolitzi la teva comunicació. Qualsevol pot executar Mastodon i participar sense problemes en la xarxa social. about_this: Quant a aquesta instància closed_registrations: Els registres estan actualment tancats en aquesta instància. @@ -37,38 +38,62 @@ ca: follow: Segueix followers: Seguidors following: Seguint + media: Mèdia + moved_html: "%{name} s'ha mogut a %{new_profile_link}:" nothing_here: No hi ha res aquí! people_followed_by: Usuaris a qui %{name} segueix people_who_follow: Usuaris que segueixen %{name} posts: Toots - remote_follow: Segueix + posts_with_replies: Toots i respostes + remote_follow: Seguiment remot reserved_username: El nom d'usuari està reservat - unfollow: Deixa de seguir + roles: + admin: Admin + moderator: Mod + unfollow: Deixar de seguir admin: + account_moderation_notes: + account: Moderador + create: Crear + created_at: Data + created_msg: La nota de moderació s'ha creat correctament. + delete: Suprimeix + destroyed_msg: S'ha destruït la nota de moderació. accounts: are_you_sure: Estàs segur? + by_domain: Domini confirm: Confirma confirmed: Confirmat - disable_two_factor_authentication: Desactiva 2FA + demote: Degrada + disable: Inhabilita + disable_two_factor_authentication: Desactivar 2FA + disabled: Inhabilita display_name: Nom de visualització domain: Domini - edit: Edita - email: Correu-e - feed_url: URL del canal + edit: Editar + email: E-mail + enable: Habilitar + enabled: Habilitat + feed_url: URL del feed followers: Seguidors + followers_url: URL dels seguidors follows: Segueix + inbox_url: URL de la safata d'entrada ip: IP location: all: Tot local: Local remote: Remot - title: Ubicació + title: Localització + login_status: Estat d'accés media_attachments: Adjunts multimèdia + memorialize: Es converteix en memoriam moderation: all: Tot silenced: Silenciat suspended: Suspès title: Moderació + moderation_notes: Notes de moderació most_recent_activity: Activitat més recent most_recent_ip: IP més recent not_subscribed: No subscrit @@ -76,16 +101,25 @@ ca: alphabetic: Alfabètic most_recent: Més recent title: Ordre - perform_full_suspension: Aplica la suspensió completa + outbox_url: URL de la bústia de sortida + perform_full_suspension: Aplicar suspensió completa profile_url: URL del perfil + promote: Promociona + protocol: Protocol public: Públic push_subscription_expires: La subscripció PuSH expira - redownload: Actualitza l'avatar - reset: Reajusta - reset_password: Restableix la contrasenya - resubscribe: Torna a subscriure + redownload: Refrescar avatar + reset: Reajustar + reset_password: Restablir la contrasenya + resubscribe: Resubscribir + role: Permisos + roles: + admin: Administrador + moderator: Moderador + user: Usuari salmon_url: URL Salmon search: Cerca + shared_inbox_url: URL de la safata d'entrada compartida show: created_reports: Informes creats per aquest compte report: informe @@ -99,6 +133,30 @@ ca: unsubscribe: Donar-se de baixa username: Nom d'usuari web: Web + custom_emojis: + copied_msg: S'ha creat correctament la còpia local del emoji + copy: Copia + copy_failed_msg: No s'ha pogut fer una còpia local d'aquest emoji + created_msg: Emoji creat amb èxit! + delete: Suprimeix + destroyed_msg: Emojo s'ha destruït amb èxit! + disable: Inhabilita + disabled_msg: S'ha inhabilitat l'emoji amb èxit + emoji: Emoji + enable: Habilita + enabled_msg: S'ha habilitat amb èxit emoji + image_hint: PNG de fins a 50 KB + listed: Enumerat + new: + title: Afegeix nou emoji personalitzat + overwrite: Sobreescriure + shortcode: Codi curt + shortcode_hint: Com a mínim 2 caràcters, només caràcters alfanumèrics i guions baixos + title: Emojis personatlitzats + unlisted: Sense classificar + update_failed_msg: No s'ha pogut actualitzar aquest emoji + updated_msg: Emoji s'ha actualitzat correctament. + upload: Carrega domain_blocks: add_new: Afegeix created_msg: El bloqueig de domini ara s'està processant @@ -130,10 +188,22 @@ ca: title: Desfés el bloqueig de domini de %{domain} undo: Desfés title: Bloquejos de domini - undo: Desfés + undo: Desfer + email_domain_blocks: + add_new: Afegir nou + created_msg: S'ha creat el bloc de domini de correu electrònic + delete: Suprimeix + destroyed_msg: S'ha eliminat correctament el bloc del domini de correu + domain: Domini + new: + create: Crear bloc + title: Nou bloc de domini de correu electrònic + title: Bloc de domini de correu electrònic instances: account_count: Comptes coneguts domain_name: Domini + reset: Restablir + search: Cerca title: Instàncies conegudes reports: action_taken_by: Mesures adoptades per @@ -141,12 +211,12 @@ ca: comment: label: Comentari none: Cap - delete: Esborra + delete: Suprimeix id: ID mark_as_resolved: Marca com a resolt nsfw: - 'false': APTE - 'true': NO APTE (NSFW) + 'false': Mostra els fitxers multimèdia adjunts + 'true': Amaga els fitxers multimèdia adjunts report: 'Informe #%{id}' report_contents: Continguts reported_account: Compte reportat @@ -160,6 +230,9 @@ ca: unresolved: No resolt view: Visualització settings: + bootstrap_timeline_accounts: + desc_html: Separa diversos noms d'usuari amb comes. Només funcionaran els comptes locals i desbloquejats. El valor predeterminat quan està buit és tots els administradors locals.. + title: El seguiment per defecte per als nous usuaris contact_information: email: Introdueix una adreça de correu electrònic pùblica username: Introdueix un nom d'usuari @@ -173,6 +246,9 @@ ca: open: desc_html: Permet que qualsevol pugui crear un compte title: Registre obert + show_staff_badge: + desc_html: Mostra una insígnia de personal en una pàgina d'usuari + title: Mostra insígnia de personal site_description: desc_html: Es mostra com un paràgraf a la pàgina principal i s'utilitza com una etiqueta meta.
Pots utilitzar etiquetes HTML, en particular <a> i <em>. title: Descripció del lloc @@ -183,6 +259,9 @@ ca: desc_html: Pots escriure la teva pròpia política de privadesa, els termes del servei o d'altres normes legals. Pots utilitzar etiquetes HTML title: Termes del servei personalitzats site_title: Títol del lloc + thumbnail: + desc_html: S'utilitza per obtenir visualitzacions prèvies a través d'OpenGraph i API. Es recomana 1200x630px + title: Miniatura de la Instància timeline_preview: desc_html: Mostra la línia de temps pública a la pàgina inicial title: Vista prèvia de la línia de temps @@ -190,9 +269,9 @@ ca: statuses: back_to_account: Torna a la pàgina del compte batch: - delete: Esborra - nsfw_off: APTE - nsfw_on: NO APTE (NSFW) + delete: Suprimeix + nsfw_off: NSFW OFF + nsfw_on: NSFW ON execute: Executa failed_to_execute: No s'ha pogut executar media: @@ -220,7 +299,13 @@ ca: signature: Notificacions de Mastodon des de %{instance} view: 'Vista:' applications: - invalid_url: L'URL proporcionat no és correcte + created: L'aplicació s'ha creat correctament + destroyed: L'aplicació s'ha suprimit correctament + invalid_url: La URL proporcionada es incorrecte + regenerate_token: Regenerar token d'accés + token_regenerated: Token d'accés s'ha generat correctament + warning: Aneu amb compte amb aquestes dades. No ho compartiu mai amb ningú! + your_token: El token d'accés auth: agreement_html: En inscriure't, acceptes els nostres termes del servei i la nostra política de privadesa. change_password: Canvia la contrasenya @@ -263,9 +348,9 @@ ca: bad_password_msg: Bon intent hackers! La contrasenya no és correcta confirm_password: Introdueix la contrasenya actual per a verificar la teva identitat description_html: Això eliminarà de forma irreversible i permanent el contingut del teu compte i el desactivarà. El teu nom d'usuari romandrà reservat per evitar que algú volgués fer-se passar per tu. - proceed: Esborra el compte - success_msg: El compte s'ha eliminat correctament - warning_html: Només està garantida l'eliminació en aquesta instància en particular. El contingut que ha estat àmpliament compartit que deixi petjades. Els servidors fora de línia i els que ja no estan subscrits no actualitzaran les seves bases de dades. + proceed: Suprimir el compte + success_msg: El teu compte s'ha eliminat correctament + warning_html: Només està garantida l'eliminació d'aquesta particular instància. El contingut que ha estat àmpliament compartit que deixi petjades. Els servidors fora de línia i els que ja no estan subscrits no actualitzaran les seves bases de dades. warning_title: Disponibilitat de contingut disseminat errors: '403': No tens permís per a veure aquesta pàgina. @@ -275,7 +360,10 @@ ca: content: La verificació de seguretat ha fallat. Bloques les galetes? title: La verificació de seguretat ha fallat '429': Estrangulat - noscript_html: Activa JavaScript per a utilitzar Mastodon. + '500': + content: We're sorry, but something went wrong on our end. + title: This page is not correct + noscript_html: Per utilitzar Mastodon si us plau activa JavaScript. També podeu provar una de les aplicacions natives per Mastodon per a la vostra plataforma. exports: blocks: Persones que has bloquejat csv: CSV @@ -307,9 +395,10 @@ ca: types: blocking: Llista de blocats following: Llista de seguits - muting: Llista de silenciats - upload: Carrega - landing_strip_html: "%{name} és un usuari/a de %{link_to_root_path}. Pots seguir-lo o interactuar amb ell si tens un compte a qualsevol node del fediverse." + muting: Llista d'apagats + upload: Carregar + in_memoriam_html: En Memòria. + landing_strip_html: "%{name} és un usuari/a de %{link_to_root_path}. Pots seguir-lo/la o interactuar amb ell/a si tens un compte a qualsevol node del fediverse." landing_strip_signup_html: Si no en tens, pots registrar-te aquí. media_attachments: validations: @@ -355,6 +444,11 @@ ca: next: Següent prev: Enrere truncate: "…" + preferences: + languages: Idiomes + other: Altre + publishing: Publicació + web: Web push_notifications: favourite: title: "%{name} ha marcat com a preferit el teu estat" @@ -417,17 +511,25 @@ ca: authorized_apps: Aplicacions autoritzades back: Torna a l'inici delete: Eliminació del compte - edit_profile: Edita el perfil - export: Exporta la informació + development: Desenvolupament + edit_profile: Editar perfil + export: Exportar informació followers: Seguidors autoritzats - import: Importa + import: Importar + notifications: Notificacions preferences: Preferències settings: Configuració two_factor_authentication: Autenticació de dos factors + your_apps: Les teves aplicacions statuses: open_in_web: Obre en la web over_character_limit: Límit de caràcters de %{max} superat - show_more: Mostra'n més + pin_errors: + limit: S'han fixat massa toots + ownership: El toot d'algú altre no es pot fixar + private: No es pot fixar el toot no públic + reblog: No es pot fixar un impuls + show_more: Mostrar més visibilities: private: Només seguidors private_long: Mostra només als seguidors @@ -436,11 +538,79 @@ ca: unlisted: No llistat unlisted_long: Tothom ho pot veure, però no es mostra en la història federada stream_entries: - click_to_show: Clic per a mostrar - reblogged: retootejat + click_to_show: Clic per mostrar + pinned: Toot fixat + reblogged: impulsat sensitive_content: Contingut sensible terms: - body_html: "

Política de privacitat

\n\n

Quina informació recollim?

\n\n

Recopilem informació teva quan et registres en aquesta instància i recopilem dades quan participes en el fòrum llegint, escrivint i avaluant el contingut aquí compartit.

\n\n

En registrar-te en aquesta instància, se't pot demanar que introduexisu el teu nom i l'adreça de correu electrònic. També pots visitar el nostre lloc sense registrar-te. La teva adreça de correu electrònic es verificarà mitjançant un correu electrònic que conté un enllaç únic. Si es visita aquest enllaç, sabem que controles l'adreça de correu electrònic.

\n\n

Quan es registra i publica, registrem l'adreça IP de la qual es va originar la publicació. També podrem conservar els registres del servidor que inclouen l'adreça IP de cada sol·licitud al nostre servidor.

\n\n

Per a què utilitzem la teva informació?

\n\n

Qualsevol de la informació que recopilem de tu pot utilitzar-se d'una de les maneres següents:

\n\n
    \n
  • Per a personalitzar la teva experiència — la teva informació ens ajuda a respondre millor a les teves necessitats individuals.
  • \n
  • Per millorar el nostre lloc — ens esforcem contínuament per millorar les nostres ofertes de llocs basats en la informació i els comentaris que rebem de tu.
  • \n
  • Per millorar el servei al client — la teva informació ens ajuda a respondre més eficaçment a les teves sol·licituds de servei al client i a les necessitats de suport.
  • \n
  • Per enviar correus electrònics periòdics — l'adreça electrònica que proporcionis es pot utilitzar per enviar-te informació, notificacions que sol·licitis sobre canvis en temes o en resposta al teu nom d'usuari, respondre a les consultes i/o altres sol·licituds o preguntes.
  • \n
\n\n

Com protegim la teva informació?

\n\n

Implementem diverses mesures de seguretat per mantenir la seguretat de la teva informació personal quan introdueixes, envies o accedeixes a la teva informació personal.

\n\n

Quina és la nostre política de retenció de dades?

\n\n

Farem un esforç de bona fe per a:

\n\n
    \n
  • Conserva els registres de servidor que continguin l'adreça IP de totes les sol·licituds a aquest servidor no més de 90 dies.
  • \n
  • Conserva les adreces IP associades als usuaris registrats i les seves publicacions no més de 5 anys.
  • \n
\n\n

Utilitzem galetes?

\n\n

Sí. Les cookies són fitxers petits que un lloc o el proveïdor de serveis transfereix al disc dur del vostre ordinador a través del navegador web (si ho permet). Aquestes galetes permeten al lloc reconèixer el vostre navegador i, si teniu un compte registrat, associar-lo al vostre compte registrat.

\n\n

Utilitzem cookies per comprendre i desar les vostres preferències per a futures visites i compilar dades agregades sobre el trànsit del lloc i la interacció del lloc, de manera que podrem oferir millors experiències i eines del lloc en el futur. Podem contractar amb proveïdors de serveis de tercers per ajudar-nos a comprendre millor els visitants del nostre lloc. Aquests proveïdors de serveis no estan autoritzats a utilitzar la informació recollida en nom nostre, excepte per ajudar-nos a dur a terme i millorar el nostre negoci.

\n\n

Publiquem informació al exterior?

\n\n

No venem, comercialitzem ni transmetem a tercers la vostra informació d'identificació personal. Això no inclou tercers de confiança que ens ajudin a operar el nostre lloc, a dur a terme el nostre negoci o a fer-ho, sempre que aquestes parts acceptin mantenir confidencial aquesta informació. També podem publicar la vostra informació quan creiem que l'alliberament és apropiat per complir amb la llei, fer complir les polítiques del nostre lloc o protegir els nostres drets o altres drets, propietat o seguretat. No obstant això, la informació de visitant que no sigui personalment identificable es pot proporcionar a altres parts per a la comercialització, la publicitat o altres usos.

\n\n

Vincles de tercers

\n\n

De tant en tant, segons el nostre criteri, podem incloure o oferir productes o serveis de tercers al nostre lloc. Aquests llocs de tercers tenen polítiques de privadesa separades i independents. Per tant, no tenim responsabilitat ni responsabilitat civil pel contingut i les activitats d'aquests llocs enllaçats. No obstant això, busquem protegir la integritat del nostre lloc i donem la benvinguda a qualsevol comentari sobre aquests llocs.

\n\n

Compliment de la Llei de protecció de la privacitat en línia dels nens

\n\n

El nostre lloc, productes i serveis estan dirigits a persones que tenen almenys 13 anys. Si aquest servidor es troba als EUA, i teniu menys de 13 anys, segons els requisits de COPPA (Children's Online Privacy Protection Act) no feu servir aquest lloc.

\n\n

Només la política de privacitat en línia

\n\n

Aquesta política de privacitat en línia només s'aplica a la informació recopilada a través del nostre lloc i no a la informació recopilada fora de línia.

\n\n

El vostre consentiment

\n\n

En utilitzar el nostre lloc, accepta la política de privadesa del nostre lloc web.

\n\n

Canvis a la nostra política de privacitat

\n\n

Si decidim canviar la nostra política de privadesa, publicarem aquests canvis en aquesta pàgina.

\n\n

Aquest document és CC-BY-SA. Es va actualitzar per última vegada el 31 de maig de 2013.

\n\n

Originalment adaptat a la política de privadesa del Discurs.

\n" + body_html: | +

Política de privacitat

+ +

Quina informació recollim?

+ +

Recopilem informació teva quan et registres en aquesta instància i recopilem dades quan participes en el fòrum llegint, escrivint i avaluant el contingut aquí compartit.

+ +

En registrar-te en aquesta instància, se't pot demanar que introduexisu el teu nom i l'adreça de correu electrònic. També pots visitar el nostre lloc sense registrar-te. La teva adreça de correu electrònic es verificarà mitjançant un correu electrònic que conté un enllaç únic. Si es visita aquest enllaç, sabem que controles l'adreça de correu electrònic.

+ +

Quan es registra i publica, registrem l'adreça IP de la qual es va originar la publicació. També podrem conservar els registres del servidor que inclouen l'adreça IP de cada sol·licitud al nostre servidor.

+ +

Per a què utilitzem la teva informació?

+ +

Qualsevol de la informació que recopilem de tu pot utilitzar-se d'una de les maneres següents:

+ +
    +
  • Per a personalitzar la teva experiència — la teva informació ens ajuda a respondre millor a les teves necessitats individuals.
  • +
  • Per millorar el nostre lloc — ens esforcem contínuament per millorar les nostres ofertes de llocs basats en la informació i els comentaris que rebem de tu.
  • +
  • Per millorar el servei al client — la teva informació ens ajuda a respondre més eficaçment a les teves sol·licituds de servei al client i a les necessitats de suport.
  • +
  • Per enviar correus electrònics periòdics — l'adreça electrònica que proporcionis es pot utilitzar per enviar-te informació, notificacions que sol·licitis sobre canvis en temes o en resposta al teu nom d'usuari, respondre a les consultes i/o altres sol·licituds o preguntes.
  • +
+ +

Com protegim la teva informació?

+ +

Implementem diverses mesures de seguretat per mantenir la seguretat de la teva informació personal quan introdueixes, envies o accedeixes a la teva informació personal.

+ +

Quina és la nostre política de retenció de dades?

+ +

Farem un esforç de bona fe per a:

+ +
    +
  • Conserva els registres de servidor que continguin l'adreça IP de totes les sol·licituds a aquest servidor no més de 90 dies.
  • +
  • Conserva les adreces IP associades als usuaris registrats i les seves publicacions no més de 5 anys.
  • +
+ +

Utilitzem galetes?

+ +

Sí. Les cookies són fitxers petits que un lloc o el proveïdor de serveis transfereix al disc dur del vostre ordinador a través del navegador web (si ho permet). Aquestes galetes permeten al lloc reconèixer el vostre navegador i, si teniu un compte registrat, associar-lo al vostre compte registrat.

+ +

Utilitzem cookies per comprendre i desar les vostres preferències per a futures visites i compilar dades agregades sobre el trànsit del lloc i la interacció del lloc, de manera que podrem oferir millors experiències i eines del lloc en el futur. Podem contractar amb proveïdors de serveis de tercers per ajudar-nos a comprendre millor els visitants del nostre lloc. Aquests proveïdors de serveis no estan autoritzats a utilitzar la informació recollida en nom nostre, excepte per ajudar-nos a dur a terme i millorar el nostre negoci.

+ +

Publiquem informació al exterior?

+ +

No venem, comercialitzem ni transmetem a tercers la vostra informació d'identificació personal. Això no inclou tercers de confiança que ens ajudin a operar el nostre lloc, a dur a terme el nostre negoci o a fer-ho, sempre que aquestes parts acceptin mantenir confidencial aquesta informació. També podem publicar la vostra informació quan creiem que l'alliberament és apropiat per complir amb la llei, fer complir les polítiques del nostre lloc o protegir els nostres drets o altres drets, propietat o seguretat. No obstant això, la informació de visitant que no sigui personalment identificable es pot proporcionar a altres parts per a la comercialització, la publicitat o altres usos.

+ +

Vincles de tercers

+ +

De tant en tant, segons el nostre criteri, podem incloure o oferir productes o serveis de tercers al nostre lloc. Aquests llocs de tercers tenen polítiques de privadesa separades i independents. Per tant, no tenim responsabilitat ni responsabilitat civil pel contingut i les activitats d'aquests llocs enllaçats. No obstant això, busquem protegir la integritat del nostre lloc i donem la benvinguda a qualsevol comentari sobre aquests llocs.

+ +

Compliment de la Llei de protecció de la privacitat en línia dels nens

+ +

El nostre lloc, productes i serveis estan dirigits a persones que tenen almenys 13 anys. Si aquest servidor es troba als EUA, i teniu menys de 13 anys, segons els requisits de COPPA (Children's Online Privacy Protection Act) no feu servir aquest lloc.

+ +

Només la política de privacitat en línia

+ +

Aquesta política de privacitat en línia només s'aplica a la informació recopilada a través del nostre lloc i no a la informació recopilada fora de línia.

+ + + +

En utilitzar el nostre lloc, accepta la política de privadesa del nostre lloc web.

+ +

Canvis a la nostra política de privacitat

+ +

Si decidim canviar la nostra política de privadesa, publicarem aquests canvis en aquesta pàgina.

+ +

Aquest document és CC-BY-SA. Es va actualitzar per última vegada el 31 de maig de 2013.

+ +

Originalment adaptat a la política de privadesa del Discurs.

title: "%{instance} Condicions del servei i política de privadesa" time: formats: diff --git a/config/locales/simple_form.ca.yml b/config/locales/simple_form.ca.yml index 22902ba24e8..f8402af21d1 100644 --- a/config/locales/simple_form.ca.yml +++ b/config/locales/simple_form.ca.yml @@ -4,53 +4,64 @@ ca: hints: defaults: avatar: PNG, GIF o JPG. Màxim 2MB. Serà escalat a 120x120px + digest: S'envia després d'un llarg període d'inactivitat amb un resum de les mencions que has rebut en la teva absència display_name: - one: Queda 1 caràcter - other: Queden %{count} caràcters + one: 1 càracter + other: %{count} càracters header: PNG, GIF o JPG. Màxim 2MB. Serà escalat a 700x335px - locked: Cal que aprovis manualment els seguidors i les publicacions es mostraran només als teus seguidors + locked: Requereix que aprovis manualment seguidors i les publicacions seran mostrades només als teus seguidors note: - one: Queda 1 caràcgter - other: Queden %{count} caràcters + one: 1 càracter left + other: %{count} càracters + setting_noindex: Afecta el teu perfil públic i les pàgines d'estat + setting_theme: Afecta la manera en què Mastodon es veu quan està connectat des de qualsevol dispositiu. imports: - data: Fitxers CSV exportat des d'una altra instància de Mastodon + data: Arxiu CSV exportat desde una altra instància de Mastodon sessions: - otp: Introdueix el codi de dos factors des del telèfon o utilitza un dels teus codis de recuperació. + otp: Introdueix el codi de dos factors des del teu telèfon o utilitza un dels teus codis de recuperació. user: - filtered_languages: Els missatges en les llengües seleccionades s'eliminaran de les línies de temps públiques. + filtered_languages: Els idiomes seleccionats seran eliminats de les línies de temps públiques. labels: defaults: avatar: Avatar - confirm_new_password: Confirma la contrasenya nova - confirm_password: Confirma la contrasenya + confirm_new_password: Confirmar nova contrasenya + confirm_password: Confirmar contrasenya current_password: Contrasenya actual data: Informació - display_name: Nom visibile - email: Adreça de correu electrònic - header: Imgatge de capçalera - locale: Llengua - locked: Fes privat aquest compte - new_password: Contrasenya nova + display_name: Mostrar nom + email: Direcció de correu electrònic + filtered_languages: Idiomes filtrats + header: Img. capçalera + locale: Idioma + locked: Fer privat aquest compte + new_password: Nova contrasenya note: Biografia otp_attempt: Codi de dos factors password: Contrasenya - setting_auto_play_gif: Reprodueix automàticament els GIF animats - setting_boost_modal: Mostra la finestra de confirmació abans d'un retoot - setting_default_privacy: Privacitat de les publicacions - setting_delete_modal: Mostra la finestra de confirmació abans d'esborrar un toot + setting_auto_play_gif: Auto-reproducció de GIFs animats + setting_boost_modal: Mostrar finestra de confirmació abans d'un Retoot + setting_default_privacy: Privacitat de publicacions + setting_default_sensitive: Marca sempre els multimèdia com a sensibles + setting_delete_modal: Mostrar finestra de confirmació abans d'esborrar un toot + setting_noindex: Desactivació de la indexació del motor de cerca + setting_reduce_motion: Redueix el moviment en animacions + setting_system_font_ui: Utilitzeu el tipus de lletra predeterminat del sistema + setting_theme: Tema del lloc + setting_unfollow_modal: Mostra el diàleg de confirmació abans de deixar de seguir a algú severity: Severitat - type: Importa tipus + type: Importar tipus username: Nom d´usuari interactions: - must_be_follower: Blocar les notificacions de persones que no et segueixen - must_be_following: Blocar les notificacions de persones que no segueixes + must_be_follower: Bloquejar notificacions de persones que no et segueixen + must_be_following: Bloquejar notificacions de persones que no segueixes + must_be_following_dm: Bloqueja missatges directes de persones que no segueixes notification_emails: - digest: Envia un resum de correus electrònics - favourite: Envia un correu electrònic quan algú marqui com a preferit en la teva publicació - follow: Envia un correu electrònic quan algú et segueixi - follow_request: Envia un correu electrònic quan algú sol·liciti seguir-te - mention: Envia un correu electrònic quan algú et mencioni - reblog: Envia un correu electrònic quan algú comparteixi la teva publicació + digest: Enviar resum de correus electrònics + favourite: Enviar correu electrònic quan algú marqui com a favorit en la teva publicació + follow: Enviar correu electrònic quan algú et segueixi + follow_request: Enviar correu electrònic quan algú sol·liciti seguir-te + mention: Enviar correu electrònic quan algú et mencioni + reblog: Enviar correu electrònic quan algú comparteixi la seva publicació 'no': 'No' required: mark: "*"