Add effective date to terms of service (#33993)
Some checks are pending
Check i18n / check-i18n (push) Waiting to run
CodeQL / Analyze (javascript) (push) Waiting to run
CodeQL / Analyze (ruby) (push) Waiting to run
Crowdin / Upload translations / upload-translations (push) Waiting to run
Check formatting / lint (push) Waiting to run
CSS Linting / lint (push) Waiting to run
Haml Linting / lint (push) Waiting to run
JavaScript Linting / lint (push) Waiting to run
Ruby Linting / lint (push) Waiting to run
JavaScript Testing / test (push) Waiting to run
Historical data migration test / test (14-alpine) (push) Waiting to run
Historical data migration test / test (15-alpine) (push) Waiting to run
Historical data migration test / test (16-alpine) (push) Waiting to run
Historical data migration test / test (17-alpine) (push) Waiting to run
Ruby Testing / build (production) (push) Waiting to run
Ruby Testing / build (test) (push) Waiting to run
Ruby Testing / test (.ruby-version) (push) Blocked by required conditions
Ruby Testing / test (3.2) (push) Blocked by required conditions
Ruby Testing / test (3.3) (push) Blocked by required conditions
Ruby Testing / Libvips tests (.ruby-version) (push) Blocked by required conditions
Ruby Testing / Libvips tests (3.2) (push) Blocked by required conditions
Ruby Testing / Libvips tests (3.3) (push) Blocked by required conditions
Ruby Testing / End to End testing (.ruby-version) (push) Blocked by required conditions
Ruby Testing / End to End testing (3.2) (push) Blocked by required conditions
Ruby Testing / End to End testing (3.3) (push) Blocked by required conditions
Ruby Testing / Elastic Search integration testing (.ruby-version, docker.elastic.co/elasticsearch/elasticsearch:7.17.13) (push) Blocked by required conditions
Ruby Testing / Elastic Search integration testing (.ruby-version, docker.elastic.co/elasticsearch/elasticsearch:8.10.2) (push) Blocked by required conditions
Ruby Testing / Elastic Search integration testing (.ruby-version, opensearchproject/opensearch:2) (push) Blocked by required conditions
Ruby Testing / Elastic Search integration testing (3.2, docker.elastic.co/elasticsearch/elasticsearch:7.17.13) (push) Blocked by required conditions
Ruby Testing / Elastic Search integration testing (3.3, docker.elastic.co/elasticsearch/elasticsearch:7.17.13) (push) Blocked by required conditions

This commit is contained in:
Eugen Rochko 2025-03-05 10:01:33 +01:00 committed by GitHub
parent 84164270c6
commit cadda2f957
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
67 changed files with 201 additions and 126 deletions

View File

@ -23,7 +23,7 @@ class Admin::TermsOfService::DraftsController < Admin::BaseController
private
def set_terms_of_service
@terms_of_service = TermsOfService.draft.first || TermsOfService.new(text: current_terms_of_service&.text)
@terms_of_service = TermsOfService.draft.first || TermsOfService.new(text: current_terms_of_service&.text, effective_date: 10.days.from_now)
end
def current_terms_of_service
@ -32,6 +32,6 @@ class Admin::TermsOfService::DraftsController < Admin::BaseController
def resource_params
params
.expect(terms_of_service: [:text, :changelog])
.expect(terms_of_service: [:text, :changelog, :effective_date])
end
end

View File

@ -3,6 +3,6 @@
class Admin::TermsOfServiceController < Admin::BaseController
def index
authorize :terms_of_service, :index?
@terms_of_service = TermsOfService.live.first
@terms_of_service = TermsOfService.published.first
end
end

View File

@ -5,12 +5,18 @@ class Api::V1::Instances::TermsOfServicesController < Api::V1::Instances::BaseCo
def show
cache_even_if_authenticated!
render json: @terms_of_service, serializer: REST::PrivacyPolicySerializer
render json: @terms_of_service, serializer: REST::TermsOfServiceSerializer
end
private
def set_terms_of_service
@terms_of_service = TermsOfService.live.first!
@terms_of_service = begin
if params[:date].present?
TermsOfService.published.find_by!(effective_date: params[:date])
else
TermsOfService.live.first || TermsOfService.published.first! # For the case when none of the published terms have become effective yet
end
end
end
end

View File

@ -4,8 +4,12 @@ import type {
ApiPrivacyPolicyJSON,
} from 'mastodon/api_types/instance';
export const apiGetTermsOfService = () =>
apiRequestGet<ApiTermsOfServiceJSON>('v1/instance/terms_of_service');
export const apiGetTermsOfService = (version?: string) =>
apiRequestGet<ApiTermsOfServiceJSON>(
version
? `v1/instance/terms_of_service/${version}`
: 'v1/instance/terms_of_service',
);
export const apiGetPrivacyPolicy = () =>
apiRequestGet<ApiPrivacyPolicyJSON>('v1/instance/privacy_policy');

View File

@ -1,5 +1,7 @@
export interface ApiTermsOfServiceJSON {
updated_at: string;
effective_date: string;
effective: boolean;
succeeded_by: string | null;
content: string;
}

View File

@ -8,26 +8,31 @@ import {
} from 'react-intl';
import { Helmet } from 'react-helmet';
import { Link, useParams } from 'react-router-dom';
import { apiGetTermsOfService } from 'mastodon/api/instance';
import type { ApiTermsOfServiceJSON } from 'mastodon/api_types/instance';
import { Column } from 'mastodon/components/column';
import { Skeleton } from 'mastodon/components/skeleton';
import BundleColumnError from 'mastodon/features/ui/components/bundle_column_error';
const messages = defineMessages({
title: { id: 'terms_of_service.title', defaultMessage: 'Terms of Service' },
});
interface Params {
date?: string;
}
const TermsOfService: React.FC<{
multiColumn: boolean;
}> = ({ multiColumn }) => {
const intl = useIntl();
const { date } = useParams<Params>();
const [response, setResponse] = useState<ApiTermsOfServiceJSON>();
const [loading, setLoading] = useState(true);
useEffect(() => {
apiGetTermsOfService()
apiGetTermsOfService(date)
.then((data) => {
setResponse(data);
setLoading(false);
@ -36,7 +41,7 @@ const TermsOfService: React.FC<{
.catch(() => {
setLoading(false);
});
}, []);
}, [date]);
if (!loading && !response) {
return <BundleColumnError multiColumn={multiColumn} errorType='routing' />;
@ -55,23 +60,60 @@ const TermsOfService: React.FC<{
defaultMessage='Terms of Service'
/>
</h3>
<p>
<FormattedMessage
id='privacy_policy.last_updated'
defaultMessage='Last updated {date}'
values={{
date: loading ? (
<Skeleton width='10ch' />
) : (
<FormattedDate
value={response?.updated_at}
year='numeric'
month='short'
day='2-digit'
<p className='prose'>
{response?.effective ? (
<FormattedMessage
id='privacy_policy.last_updated'
defaultMessage='Last updated {date}'
values={{
date: (
<FormattedDate
value={response.effective_date}
year='numeric'
month='short'
day='2-digit'
/>
),
}}
/>
) : (
<FormattedMessage
id='terms_of_service.effective_as_of'
defaultMessage='Effective as of {date}'
values={{
date: (
<FormattedDate
value={response?.effective_date}
year='numeric'
month='short'
day='2-digit'
/>
),
}}
/>
)}
{response?.succeeded_by && (
<>
{' · '}
<Link to={`/terms-of-service/${response.succeeded_by}`}>
<FormattedMessage
id='terms_of_service.upcoming_changes_on'
defaultMessage='Upcoming changes on {date}'
values={{
date: (
<FormattedDate
value={response.succeeded_by}
year='numeric'
month='short'
day='2-digit'
/>
),
}}
/>
),
}}
/>
</Link>
</>
)}
</p>
</div>

View File

@ -205,7 +205,7 @@ class SwitchingColumnsArea extends PureComponent {
<WrappedRoute path='/keyboard-shortcuts' component={KeyboardShortcuts} content={children} />
<WrappedRoute path='/about' component={About} content={children} />
<WrappedRoute path='/privacy-policy' component={PrivacyPolicy} content={children} />
<WrappedRoute path='/terms-of-service' component={TermsOfService} content={children} />
<WrappedRoute path='/terms-of-service/:date?' component={TermsOfService} content={children} />
<WrappedRoute path={['/home', '/timelines/home']} component={HomeTimeline} content={children} />
<Redirect from='/timelines/public' to='/public' exact />

View File

@ -872,7 +872,9 @@
"subscribed_languages.target": "Change subscribed languages for {target}",
"tabs_bar.home": "Home",
"tabs_bar.notifications": "Notifications",
"terms_of_service.effective_as_of": "Effective as of {date}",
"terms_of_service.title": "Terms of Service",
"terms_of_service.upcoming_changes_on": "Upcoming changes on {date}",
"time_remaining.days": "{number, plural, one {# day} other {# days}} left",
"time_remaining.hours": "{number, plural, one {# hour} other {# hours}} left",
"time_remaining.minutes": "{number, plural, one {# minute} other {# minutes}} left",

View File

@ -1989,6 +1989,11 @@ a.sparkline {
line-height: 20px;
font-weight: 600;
margin-bottom: 16px;
a {
color: inherit;
text-decoration: none;
}
}
}
}

View File

@ -340,10 +340,17 @@ code {
columns: unset;
}
.input.datetime .label_input select {
display: inline-block;
width: auto;
flex: 0;
.input.datetime .label_input,
.input.date .label_input {
display: flex;
gap: 4px;
align-items: center;
select {
display: inline-block;
width: auto;
flex: 0;
}
}
.input.select.select--languages {

View File

@ -6,6 +6,7 @@
#
# id :bigint(8) not null, primary key
# changelog :text default(""), not null
# effective_date :date
# notification_sent_at :datetime
# published_at :datetime
# text :text default(""), not null
@ -13,17 +14,27 @@
# updated_at :datetime not null
#
class TermsOfService < ApplicationRecord
scope :published, -> { where.not(published_at: nil).order(published_at: :desc) }
scope :live, -> { published.limit(1) }
scope :published, -> { where.not(published_at: nil).order(Arel.sql('coalesce(effective_date, published_at) DESC')) }
scope :live, -> { published.where('effective_date IS NULL OR effective_date < now()').limit(1) }
scope :draft, -> { where(published_at: nil).order(id: :desc).limit(1) }
validates :text, presence: true
validates :changelog, presence: true, if: -> { published? }
validates :changelog, :effective_date, presence: true, if: -> { published? }
validate :effective_date_cannot_be_in_the_past
def published?
published_at.present?
end
def effective?
published? && effective_date&.past?
end
def succeeded_by
TermsOfService.published.where(effective_date: (effective_date..)).where.not(id: id).first
end
def notification_sent?
notification_sent_at.present?
end
@ -31,4 +42,14 @@ class TermsOfService < ApplicationRecord
def scope_for_notification
User.confirmed.joins(:account).merge(Account.without_suspended).where(created_at: (..published_at))
end
private
def effective_date_cannot_be_in_the_past
return if effective_date.blank?
min_date = TermsOfService.live.pick(:effective_date) || Time.zone.today
errors.add(:effective_date, :too_soon, date: min_date) if effective_date < min_date
end
end

View File

@ -0,0 +1,27 @@
# frozen_string_literal: true
class REST::TermsOfServiceSerializer < ActiveModel::Serializer
attributes :effective_date, :effective, :content, :succeeded_by
def effective_date
object.effective_date.iso8601
end
def effective
object.effective?
end
def succeeded_by
object.succeeded_by&.effective_date&.iso8601
end
def content
markdown.render(format(object.text, domain: Rails.configuration.x.local_domain))
end
private
def markdown
@markdown ||= Redcarpet::Markdown.new(Redcarpet::Render::HTML, escape_html: true, no_images: true)
end
end

View File

@ -14,6 +14,9 @@
.fields-group
= form.input :changelog, wrapper: :with_block_label, input_html: { rows: 8 }
.fields-group
= form.input :effective_date, wrapper: :with_block_label, as: :date, start_year: Time.zone.today.year
.actions
= form.button :button, t('admin.terms_of_service.save_draft'), type: :submit, name: :action_type, value: :save_draft, class: 'button button-secondary'
= form.button :button, t('admin.terms_of_service.publish'), type: :submit, name: :action_type, value: :publish

View File

@ -12,5 +12,9 @@
- @terms_of_service.each do |terms_of_service|
%li
.admin__terms-of-service__history__item
%h5= l(terms_of_service.published_at)
%h5
- if terms_of_service.effective_date.present?
= link_to l(terms_of_service.published_at), terms_of_service_version_path(date: terms_of_service.effective_date)
- else
= l(terms_of_service.published_at)
.prose= markdown(terms_of_service.changelog)

View File

@ -10,7 +10,11 @@
.admin__terms-of-service__container__header
.dot-indicator.success
.dot-indicator__indicator
%span= t('admin.terms_of_service.live')
%span
- if @terms_of_service.effective?
= t('admin.terms_of_service.live')
- else
= t('admin.terms_of_service.going_live_on_html', date: tag.time(l(@terms_of_service.effective_date), class: 'formatted', date: @terms_of_service.effective_date.iso8601))
·
%span
= t('admin.terms_of_service.published_on_html', date: tag.time(l(@terms_of_service.published_at.to_date), class: 'formatted', date: @terms_of_service.published_at.to_date.iso8601))

View File

@ -9,7 +9,7 @@
%table.email-inner-card-table{ cellspacing: 0, cellpadding: 0, border: 0, role: 'presentation' }
%tr
%td.email-inner-card-td.email-prose
%p= t('user_mailer.terms_of_service_changed.description_html', path: terms_of_service_url, domain: site_hostname)
%p= t('user_mailer.terms_of_service_changed.description_html', path: terms_of_service_version_url(date: @terms_of_service.effective_date), domain: site_hostname, date: l(@terms_of_service.effective_date || Time.zone.today))
%p
%strong= t('user_mailer.terms_of_service_changed.changelog')
= markdown(@terms_of_service.changelog)

View File

@ -2,9 +2,9 @@
===
<%= t('user_mailer.terms_of_service_changed.description', domain: site_hostname) %>
<%= t('user_mailer.terms_of_service_changed.description', domain: site_hostname, date: l(@terms_of_service.effective_date || Time.zone.today)) %>
=> <%= terms_of_service_url %>
=> <%= terms_of_service_version_url(date: @terms_of_service.effective_date) %>
<%= t('user_mailer.terms_of_service_changed.changelog') %>

View File

@ -49,6 +49,10 @@ en:
attributes:
reblog:
taken: of post already exists
terms_of_service:
attributes:
effective_date:
too_soon: is too soon, must be later than %{date}
user:
attributes:
email:

View File

@ -1927,8 +1927,6 @@ bg:
terms_of_service_changed:
agreement: Продължавайки употребата на %{domain}, съгласявате се с тези условия. Ако не сте съгласни с осъвременените условия, то може по всяко време да прекратите съгласието си с %{domain}, изтривайки акаунта си.
changelog: 'Накратко, ето какво значи това обновяване за вас:'
description: 'Получавате това е-писмо, защото правим някои промени по условията ни на услугата при %{domain}. Насърчаваме ви предварително да прегледате обновените условия изцяло тук:'
description_html: Получавате това е-писмо, защото правим някои промени по условията ни на услугата при %{domain}. Насърчаваме ви предварително да прегледате <a href="%{path}" target="_blank">обновените условия изцяло тук</a>.
sign_off: Отборът на %{domain}
subject: Новости в нашите условия за ползване
subtitle: Условията на услугата на %{domain} се променят

View File

@ -2022,8 +2022,6 @@ cs:
terms_of_service_changed:
agreement: Pokračováním v používání %{domain} souhlasíte s těmito podmínkami. Pokud nesouhlasíte s aktualizovanými podmínkami, můžete svůj souhlas s %{domain} kdykoliv ukončit odstraněním vašeho účtu.
changelog: 'Ve zkratce, zde je to, co tato změna znamená pro vás:'
description: 'Tento e-mail jste obdrželi, protože na %{domain} provádíme určité změny našich smluvních podmínek. Doporučujeme vám zkontrolovat aktualizované podmínky v plném znění zde:'
description_html: Tento e-mail jste obdrželi, protože na %{domain} provádíme určité změny našich smluvních podmínek. Doporučujeme Vám zkontrolovat <a href="%{path}" target="_blank">aktualizované termíny v plném znění zde</a>.
sign_off: Tým %{domain}
subject: Aktualizace našich podmínek služby
subtitle: Podmínky služby %{domain} se mění

View File

@ -2108,8 +2108,6 @@ cy:
terms_of_service_changed:
agreement: Drwy barhau i ddefnyddio %{domain}, rydych yn cytuno i'r telerau hyn. Os ydych yn anghytuno â'r telerau a ddiweddarwyd, gallwch derfynu eich cytundeb â %{domain} ar unrhyw adeg drwy ddileu eich cyfrif.
changelog: 'Yn fyr, dyma beth mae''r diweddariad hwn yn ei olygu i chi:'
description: 'Rydych yn derbyn yr e-bost hwn oherwydd ein bod yn gwneud rhai newidiadau i''n telerau gwasanaeth yn %{domain}. Rydym yn eich annog i adolygu''r telerau diweddaraf yn llawn yma:'
description_html: Rydych yn derbyn yr e-bost hwn oherwydd ein bod yn gwneud rhai newidiadau i'n telerau gwasanaeth yn %{domain}. Rydym yn eich annog i adolygu'r <a href="%{path}" target="_blank">telerau diweddaraf yn llawn yma</a> .
sign_off: Tîm %{domain}
subject: Diweddariadau i'n telerau gwasanaeth
subtitle: Mae telerau gwasanaeth %{domain} yn newid

View File

@ -1936,8 +1936,6 @@ da:
terms_of_service_changed:
agreement: Ved at fortsætte med at bruge %{domain}, accepteres disse vilkår. Kan du ikke acceptere de opdaterede vilkår, kan din aftale med %{domain} til enhver tid opsiges ved at slette din konto.
changelog: 'Med ét blik er her, hvad denne opdatering rent praktisk betyder:'
description: 'Man modtager denne e-mail, fordi der foretages nogle ændringer i vores Tjenestevilkår på %{domain}. Man opfordres til at gennemgå de opdaterede vilkår fuldt ud her:'
description_html: Man modtager denne e-mail, fordi der foretages nogle ændringer i vores Tjenestevilkår på %{domain}. Man opfordres til at gennemgå de <a href="%{path}" target="_blank">opdaterede vilkår fuldt ud her</a>.
sign_off: "%{domain}-teamet"
subject: Opdatering af Tjenestevilkår
subtitle: Tjenestevilkår for %{domain} ændres

View File

@ -1936,8 +1936,6 @@ de:
terms_of_service_changed:
agreement: Wenn du %{domain} weiterhin verwendest, stimmst du den neuen Nutzungsbedingungen automatisch zu. Falls du mit diesen nicht einverstanden bist, kannst du die Vereinbarung mit %{domain} jederzeit widerrufen, indem du dein Konto dort löschst.
changelog: 'Hier siehst du, was sich geändert hat:'
description: 'Du erhältst diese E-Mail, weil wir einige Änderungen an unseren Nutzungsbedingungen für %{domain} vorgenommen haben. Wir empfehlen, die vollständig aktualisierte Fassung hier zu lesen:'
description_html: Du erhältst diese E-Mail, weil wir einige Änderungen an unseren Nutzungsbedingungen für %{domain} vorgenommen haben. Wir empfehlen, die <a href="%{path}" target="_blank">vollständig aktualisierte Fassung hier zu lesen</a>.
sign_off: Das Team von %{domain}
subject: Aktualisierungen unserer Nutzungsbedingungen
subtitle: Die Nutzungsbedingungen von %{domain} ändern sich

View File

@ -1936,8 +1936,6 @@ el:
terms_of_service_changed:
agreement: Συνεχίζοντας να χρησιμοποιείς το %{domain}, συμφωνείς με αυτούς τους όρους. Αν διαφωνείς με τους ενημερωμένους όρους, μπορείς να τερματίσεις τη συμφωνία σου με το %{domain} ανά πάσα στιγμή διαγράφοντας τον λογαριασμό σου.
changelog: 'Με μια ματιά, αυτό σημαίνει αυτή η ενημέρωση για σένα:'
description: 'Λαμβάνεις αυτό το μήνυμα επειδή κάνουμε κάποιες αλλαγές στους όρους παροχής υπηρεσιών μας στο %{domain}. Σε ενθαρρύνουμε να εξετάσεις πλήρως τους ενημερωμένους όρους εδώ:'
description_html: Λαμβάνεις αυτό το μήνυμα επειδή κάνουμε κάποιες αλλαγές στους όρους παροχής υπηρεσιών μας στο %{domain}. Σε ενθαρρύνουμε να εξετάσεις <a href="%{path}" target="_blank">πλήρως τους ενημερωμένους όρους εδώ</a>.
sign_off: Η ομάδα του %{domain}
subject: Ενημερώσεις στους όρους παροχής υπηρεσιών μας
subtitle: Οι όροι παροχής υπηρεσιών του %{domain} αλλάζουν

View File

@ -1936,8 +1936,6 @@ en-GB:
terms_of_service_changed:
agreement: By continuing to use %{domain}, you are agreeing to these terms. If you disagree with the updated terms, you may terminate your agreement with %{domain} at any time by deleting your account.
changelog: 'At a glance, here is what this update means for you:'
description: 'You are receiving this e-mail because we''re making some changes to our terms of service at %{domain}. We encourage you to review the updated terms in full here:'
description_html: You are receiving this e-mail because we're making some changes to our terms of service at %{domain}. We encourage you to review the <a href="%{path}" target="_blank">updated terms in full here</a>.
sign_off: The %{domain} team
subject: Updates to our terms of service
subtitle: The terms of service of %{domain} are changing

View File

@ -939,6 +939,7 @@ en:
chance_to_review_html: "<strong>The generated terms of service will not be published automatically.</strong> You will have a chance to review the results. Please fill in the necessary details to proceed."
explanation_html: The terms of service template provided is for informational purposes only, and should not be construed as legal advice on any subject matter. Please consult with your own legal counsel on your situation and specific legal questions you have.
title: Terms of Service Setup
going_live_on_html: Live, effective %{date}
history: History
live: Live
no_history: There are no recorded changes of the terms of service yet.
@ -1937,8 +1938,8 @@ en:
terms_of_service_changed:
agreement: By continuing to use %{domain}, you are agreeing to these terms. If you disagree with the updated terms, you may terminate your agreement with %{domain} at any time by deleting your account.
changelog: 'At a glance, here is what this update means for you:'
description: 'You are receiving this e-mail because we''re making some changes to our terms of service at %{domain}. We encourage you to review the updated terms in full here:'
description_html: You are receiving this e-mail because we're making some changes to our terms of service at %{domain}. We encourage you to review the <a href="%{path}" target="_blank">updated terms in full here</a>.
description: 'You are receiving this e-mail because we''re making some changes to our terms of service at %{domain}. These updates will take effect on %{date}. We encourage you to review the updated terms in full here:'
description_html: You are receiving this e-mail because we're making some changes to our terms of service at %{domain}. These updates will take effect on <strong>%{date}</strong>. We encourage you to review the <a href="%{path}" target="_blank">updated terms in full here</a>.
sign_off: The %{domain} team
subject: Updates to our terms of service
subtitle: The terms of service of %{domain} are changing

View File

@ -1938,8 +1938,6 @@ eo:
terms_of_service_changed:
agreement: Se vi daŭrige uzos %{domain}, vi aŭtomate interkonsentos pri ĉi tiuj kondiĉoj. Se vi malkonsentas pri la novaj kondiĉoj, vi ĉiutempe rajtas nuligi la interkonsenton kun %{domain} per forigi vian konton.
changelog: 'Facile dirite, la ŝanĝoj estas la jenaj:'
description: 'Vi ricevas ĉi tiun retmesaĝon ĉar ni faras iujn ŝanĝojn al niaj servokondiĉoj ĉe %{domain}. Ni instigas vin revizii la ĝisdatigitajn kondiĉojn tute ĉi tie:'
description_html: Vi ricevas ĉi tiun retmesaĝon ĉar ni faras iujn ŝanĝojn al niaj servokondiĉoj ĉe %{domain}. Ni instigas vin revizii la <a href="%{path}" target="_blank">ĝisdatigitajn kondiĉojn plene ĉi tie</a>.
sign_off: La teamo de %{domain}
subject: Ĝisdatigoj al niaj kondiĉoj de servo
subtitle: La kondiĉoj de la servo de %{domain} ŝanĝiĝas

View File

@ -1936,8 +1936,6 @@ es-AR:
terms_of_service_changed:
agreement: Si seguís usando %{domain}, aceptás estos términos. Si no estás de acuerdo con los términos actualizados, podés cancelar tu acuerdo con %{domain} en cualquier momento, eliminando tu cuenta.
changelog: 'A modo de pantallazo general, esto es lo que esta actualización significa para vos:'
description: 'Estás recibiendo este correo electrónico porque estamos haciendo algunos cambios en nuestros términos del servicio en %{domain}. Te animamos a revisar los términos actualizados en su totalidad acá:'
description_html: Estás recibiendo este correo electrónico porque estamos haciendo algunos cambios en nuestros términos del servicio en %{domain}. Te animamos a revisar los <a href="%{path}" target="_blank">términos actualizados en su totalidad acá</a>.
sign_off: El equipo de %{domain}
subject: Actualizaciones en nuestros términos del servicio
subtitle: Los términos del servicio de %{domain} están cambiando

View File

@ -1936,8 +1936,6 @@ es-MX:
terms_of_service_changed:
agreement: Al seguir usando %{domain}, aceptas estas condiciones. Si no estás de acuerdo con las condiciones actualizadas, puedes cancelar tu acuerdo con %{domain} en cualquier momento eliminando tu cuenta.
changelog: 'En pocas palabras, esto es lo que esta actualización implica para ti:'
description: 'Estás recibiendo este correo electrónico porque estamos realizando algunos cambios en nuestras condiciones del servicio en %{domain}. Te animamos a revisar las condiciones actualizadas en su totalidad aquí:'
description_html: Estás recibiendo este correo electrónico porque estamos realizando algunos cambios en nuestras condiciones del servicio en %{domain}. Te animamos a revisar las <a href="%{path}" target="_blank">condiciones actualizadas en su totalidad aquí</a>.
sign_off: El equipo de %{domain}
subject: Actualizaciones en nuestras condiciones del servicio
subtitle: Las condiciones del servicio de %{domain} han cambiado

View File

@ -1936,8 +1936,6 @@ es:
terms_of_service_changed:
agreement: Al seguir usando %{domain}, aceptas estos términos. Si no estás de acuerdo con los términos actualizados, puedes cancelar tu acuerdo con %{domain} en cualquier momento eliminando tu cuenta.
changelog: 'En resumen, esto es lo que esta actualización significa para ti:'
description: 'Estás recibiendo este correo electrónico porque estamos haciendo algunos cambios en nuestros términos del servicio en %{domain}. Te animamos a revisar los términos actualizados en su totalidad aquí:'
description_html: Estás recibiendo este correo electrónico porque estamos haciendo algunos cambios en nuestros términos del servicio en %{domain}. Te animamos a revisar los <a href="%{path}" target="_blank">términos actualizados en su totalidad aquí</a>.
sign_off: El equipo de %{domain}
subject: Actualizaciones en nuestros términos del servicio
subtitle: Los términos del servicio de %{domain} están cambiando

View File

@ -1936,8 +1936,6 @@ fa:
terms_of_service_changed:
agreement: با ادامه استفاده از %{domain}، با این شرایط موافقت می کنید. اگر با شرایط به‌روزرسانی شده مخالف هستید، می‌توانید در هر زمان با حذف حساب خود، قرارداد خود را با %{domain} فسخ کنید.
changelog: 'در یک نگاه، معنای این به‌روزرسانی برای شما چیست:'
description: 'شما این ایمیل را دریافت می کنید زیرا ما در حال ایجاد برخی تغییرات در شرایط خدمات خود در %{domain} هستیم. توصیه می کنیم شرایط به روز شده را به طور کامل در اینجا مرور کنید:'
description_html: شما این ایمیل را دریافت می کنید زیرا ما در حال ایجاد برخی تغییرات در شرایط خدمات خود در %{domain} هستیم. توصیه می کنیم <a href="%{path}" target="_blank">شرایط به روز شده را به طور کامل در اینجا بررسی کنید</a>.
sign_off: تیم %{domain}
subject: به‌روزرسانی‌های شرایط خدمات ما
subtitle: شرایط خدمات %{domain} در حال تغییر است

View File

@ -1936,8 +1936,6 @@ fi:
terms_of_service_changed:
agreement: Jatkamalla palvelun %{domain} käyttöä hyväksyt nämä ehdot. Jos et hyväksy päivitettyjä ehtoja, voit milloin tahansa päättää sopimuksesi palvelun %{domain} kanssa poistamalla tilisi.
changelog: 'Lyhyesti, mitä tämä päivitys tarkoittaa sinulle:'
description: 'Sait tämän sähköpostiviestin, koska teemme muutoksia palvelun %{domain} käyttöehtoihin. Kehotamme sinua tutustumaan päivitettyihin ehtoihin kokonaisuudessaan täällä:'
description_html: Sait tämän sähköpostiviestin, koska teemme muutoksia palvelun %{domain} käyttöehtoihin. Kehotamme sinua tutustumaan <a href="%{path}" target="_blank">päivitettyihin ehtoihin kokonaisuudessaan täällä</a>.
sign_off: Palvelimen %{domain} tiimi
subject: Käyttöehtojemme päivitykset
subtitle: Palvelimen %{domain} käyttöehdot muuttuvat

View File

@ -1936,8 +1936,6 @@ fo:
terms_of_service_changed:
agreement: Við framhaldandi at brúka %{domain} góðtekur tú hesar treytir. Tekur tú ikki undir við dagførdu treytunum, so kanst tú til einhvørja tíð uppsiga avtaluna við %{domain} við at strika kontu tína.
changelog: 'Í stuttum merkir henda dagføringin:'
description: 'Tú móttekur hetta teldubrævið, tí at vit gera nakrar broytingar í okkara tænastutreytum á %{domain}. Vit eggja tær til at eftirhyggja dagførdu treytirnar her:'
description_html: Tú móttekur hetta teldubrævið, tí at vit gera nakrar broytingar í okkara tænastutreytum á %{domain}. Vit eggja tær til at eftirhyggja <a href="%{path}" target="_blank">dagførdu og samlaðu treytirnar her</a>.
sign_off: "%{domain} toymið"
subject: Dagføringar til okkara tænastutreytir
subtitle: Tænastutreytirnar hjá %{domain} eru við at verða broyttar

View File

@ -1939,8 +1939,6 @@ fr-CA:
terms_of_service_changed:
agreement: En continuant d'utiliser %{domain}, vous acceptez ces conditions. Si vous n'êtes pas d'accord avec les conditions mises à jour, vous pouvez résilier votre accord avec %{domain} à tout moment en supprimant votre compte.
changelog: 'En un coup d''œil, voici ce que cette mise à jour signifie pour vous :'
description: 'Vous recevez cet e-mail car nous apportons des modifications à nos conditions d''utilisation sur %{domain}. Nous vous encourageons à consulter l''intégralité des conditions mises à jour ici :'
description_html: Vous recevez cet e-mail car nous apportons des modifications à nos conditions d'utilisation sur %{domain}. Nous vous encourageons à consulter l'intégralité des <a href="%{path}" target="_blank">conditions mises à jour ici</a>.
sign_off: L'équipe %{domain}
subject: Mises à jour de nos conditions d'utilisation
subtitle: Les conditions d'utilisation de `%{domain}` changent

View File

@ -1939,8 +1939,6 @@ fr:
terms_of_service_changed:
agreement: En continuant d'utiliser %{domain}, vous acceptez ces conditions. Si vous n'êtes pas d'accord avec les conditions mises à jour, vous pouvez résilier votre accord avec %{domain} à tout moment en supprimant votre compte.
changelog: 'En un coup d''œil, voici ce que cette mise à jour signifie pour vous :'
description: 'Vous recevez cet e-mail car nous apportons des modifications à nos conditions d''utilisation sur %{domain}. Nous vous encourageons à consulter l''intégralité des conditions mises à jour ici :'
description_html: Vous recevez cet e-mail car nous apportons des modifications à nos conditions d'utilisation sur %{domain}. Nous vous encourageons à consulter l'intégralité des <a href="%{path}" target="_blank">conditions mises à jour ici</a>.
sign_off: L'équipe %{domain}
subject: Mises à jour de nos conditions d'utilisation
subtitle: Les conditions d'utilisation de `%{domain}` changent

View File

@ -1936,8 +1936,6 @@ fy:
terms_of_service_changed:
agreement: Troch %{domain} brûke te bliuwen, geane jo akkoard mei dizze betingsten. As jo it net iens binne mei de bywurke betingsten, kinne jo jo oerienkomst mei %{domain} op elk winske momint beëinigje troch jo account fuort te smiten.
changelog: 'Yn ien eachopslach betsjut dizze update foar jo:'
description: 'Jo ûntfange dit berjocht, omdat wy inkelde wizigingen oanbringe yn ús gebrûksbetingsten by %{domain}. Wy riede jo oan om de bywurke betingsten hjir folslein te besjen:'
description_html: Jo ûntfange dit berjocht, omdat wy inkelde wizigingen oanbringe yn ús gebrûksbetingsten by %{domain}. Wy riede jo oan om de bywurke <a href="%{path}" target="_blank">betingsten hjir folslein te besjen</a>.
sign_off: It %{domain}-team
subject: Aktualisaasje fan ús tsjinstbetingsten
subtitle: De gebrûksbetingsten fan %{domain} wizigje

View File

@ -2065,8 +2065,6 @@ ga:
terms_of_service_changed:
agreement: Má leanann tú ar aghaidh ag úsáid %{domain}, tá tú ag aontú leis na téarmaí seo. Mura n-aontaíonn tú leis na téarmaí nuashonraithe, is féidir leat do chomhaontú le %{domain} a fhoirceannadh am ar bith trí do chuntas a scriosadh.
changelog: 'Sracfhéachaint, seo é a chiallaíonn an nuashonrú seo duit:'
description: 'Tá an ríomhphost seo á fháil agat toisc go bhfuil roinnt athruithe á ndéanamh againn ar ár dtéarmaí seirbhíse ag %{domain}. Molaimid duit athbhreithniú iomlán a dhéanamh ar na téarmaí nuashonraithe anseo:'
description_html: Tá an ríomhphost seo á fháil agat toisc go bhfuil roinnt athruithe á ndéanamh againn ar ár dtéarmaí seirbhíse ag %{domain}. Molaimid duit athbhreithniú a dhéanamh ar na <a href="%{path}" target="_blank">téarmaí nuashonraithe ina n-iomláine anseo</a>.
sign_off: Foireann %{domain}
subject: Nuashonruithe ar ár dtéarmaí seirbhíse
subtitle: Tá téarmaí seirbhíse %{domain} ag athrú

View File

@ -1936,8 +1936,6 @@ gl:
terms_of_service_changed:
agreement: Se continúas a usar %{domain} aceptas estas condicións. Se non aceptas as condicións actualizadas podería rematar o acordo con %{domain} en calquera momento e eliminarse a túa conta.
changelog: 'Dunha ollada, aquí tes o que implican os cambios para ti:'
description: 'Recibes este correo porque fixemos cambios nos termos do servizo de %{domain}. Recomendámosche que leas as condicións actualizadas ao completo aquí:'
description_html: Recibes este correo porque fixemos cambios nos termos do servizo de %{domain}. Recomendámosche que leas as <a href="%{path}" target="_blank">condicións actualizadas ao completo aquí</a>.
sign_off: O equipo de %{domain}
subject: Actualización dos nosos termos do servizo
subtitle: Cambiaron os termos do servizo de %{domain}

View File

@ -2022,8 +2022,6 @@ he:
terms_of_service_changed:
agreement: עם המשך השימוש בשרת %{domain} אתן מסכימות לתנאים הללו. אם אינכם מסכימים עם עדכוני תנאי השירות, אתן יכולות להפסיק את ההסכם עם %{domain} בכל עת על ידי מחיקת החשבון.
changelog: 'בקצרה, הנה משמעות העדכון עבורך:'
description: 'קיבלת הודעת דואל זו כיוון שאנו מבצעים שינויים במסמך תנאי השירות של %{domain}. אנו מעודדים אותך לעבור על השינויים במסמך המלא כאן:'
description_html: 'קיבלת הודעת דואל זו כיוון שאנו מבצעים שינויים במסמך תנאי השירות של %{domain}. אנו מעודדים אותך לעבור על <a href="%{path}" target="_blank">השינויים במסמך המלא כאן</a>:'
sign_off: צוות %{domain}
subject: עדכונים לתנאי השירות שלנו
subtitle: מסמך תנאי השירות של %{domain} עוברים שינויים

View File

@ -1936,8 +1936,6 @@ hu:
terms_of_service_changed:
agreement: A(z) %{domain} használatának folytatásával beleegyezel ezekbe a feltételekbe. Ha nem értesz egyet a frissített feltételekkel, akkor a fiókod törlésével megszakíthatod a(z) %{domain} weboldallal való megállapodásodat.
changelog: 'Dióhéjban ez a frissítés ezt jelenti számodra:'
description: 'Azért kapod ezt az e-mailt, mert a %{domain} felhasználási feltételein változtatunk. Javasoljuk, hogy tekintsd át a frissített feltételeket teljes egészében itt:'
description_html: Azért kapod ezt az e-mailt, mert a %{domain} felhasználási feltételein változtatunk. Javasoljuk, hogy tekintsd át a <a href="%{path}" target="_blank">frissített feltételeket teljes egészében itt</a>.
sign_off: A(z) %{domain} csapata
subject: A felhasználási feltételei frissítései
subtitle: A(z) %{domain} felhasználási feltételei megváltoznak

View File

@ -1936,8 +1936,6 @@ ia:
terms_of_service_changed:
agreement: Si tu continua a usar %{domain}, tu accepta iste conditiones. Si tu non es de accordo con le conditiones actualisate, tu pote sempre eliminar tu conto pro terminar tu accordo con %{domain}.
changelog: 'In summario, ecce lo que iste actualisation significa pro te:'
description: 'Tu recipe iste message perque nos ha apportate alcun modificationes a nostre conditiones de servicio sur %{domain}. Nos te incoragia a revider le conditiones actualisate complete al sequente adresse:'
description_html: Tu recipe iste message perque nos ha apportate alcun modificationes a nostre conditiones de servicio sur %{domain}. Nos te incoragia a revider le <a href="%{path}" target="_blank">conditiones actualisate complete</a>.
sign_off: Le equipa de %{domain}
subject: Actualisationes de nostre conditiones de servicio
subtitle: Le conditiones de servicio de %{domain} ha cambiate

View File

@ -1940,8 +1940,6 @@ is:
terms_of_service_changed:
agreement: Með því að halda áfram að nota %{domain}, ert þú þar með að samþykkja þessa skilmála. Ef þú ert ósammála þessum uppfærðu skilmálum, geturðu hvenær sem er sagt upp samþykki þínu gagnvart %{domain} með því að eyða notandaaðgangi þínum.
changelog: 'Í stuttu máli er það þetta sem þessi uppfærsla þýðir fyrir þig:'
description: 'Þú færð þennan tölvupóst vegna þess að við erum að gera nokkrar breytingar á þjónustuskilmálum okkar á %{domain}. Við hvetjum þig til að yfirfara uppfærðu skilmálana í heild hér:'
description_html: Þú færð þennan tölvupóst vegna þess að við erum að gera nokkrar breytingar á þjónustuskilmálum okkar á %{domain}. Við hvetjum þig til að yfirfara <a href="%{path}" target="_blank">uppfærðu skilmálana í heild hér:</a>.
sign_off: "%{domain}-teymið"
subject: Breytingar á þjónustuskilmálum okkar
subtitle: Þjónustuskilmálar eru að breytast á %{domain}

View File

@ -1938,8 +1938,6 @@ it:
terms_of_service_changed:
agreement: Continuando a usare %{domain}, accetti questi termini. Se non sei d'accordo con i termini aggiornati, puoi terminare il tuo accordo con %{domain} in qualsiasi momento eliminando il tuo account.
changelog: 'Ecco, in sintesi, cosa significa per te questo aggiornamento:'
description: 'Stai ricevendo questa e-mail perché stiamo apportando alcune modifiche ai nostri termini di servizio su %{domain}. Ti invitiamo a leggere i termini aggiornati per intero qui:'
description_html: Stai ricevendo questa e-mail perché stiamo apportando alcune modifiche ai nostri termini di servizio su %{domain}. Ti invitiamo a leggere i <a href="%{path}" target="_blank">termini aggiornati per intero qui</a>.
sign_off: Il team di %{domain}
subject: Aggiornamenti ai nostri termini di servizio
subtitle: I termini di servizio di %{domain} stanno cambiando

View File

@ -1893,8 +1893,6 @@ ja:
terms_of_service_changed:
agreement: "%{domain} を引き続き使用することで、これらの条件に同意したことになります。更新された条件に同意しない場合は、アカウントを削除することでいつでも %{domain} との契約を終了することができます。"
changelog: 一目で分かる、この更新があなたにとって意味することは次の通りです:
description: このメールを受け取っているのは、%{domain} の利用規約にいくつかの変更を加えているためです。更新された利用規約をこちらで全てご確認いただくことをお勧めします:
description_html: このメールを受け取っているのは、%{domain} の利用規約にいくつかの変更を加えているためです。<a href="%{path}" target="_blank">こちらで更新された利用規約を全てご確認いただくことをお勧めします</a>。
sign_off: "%{domain} チーム"
subject: 利用規約の更新
subtitle: "%{domain} の利用規約が変更されています"

View File

@ -1895,8 +1895,6 @@ ko:
terms_of_service_changed:
agreement: "%{domain}을 계속 사용하는 것으로 약관에 동의하는 것으로 간주합니다. 약관에 동의하지 않는 경우 계정을 삭제함으로써 언제든 동의를 철회할 수 있습니다."
changelog: '이번 변경사항의 주요 내용입니다:'
description: "%{domain}의 이용 약관이 변경되었기 때문에 발송된 이메일입니다. 변경된 전체 약관을 확인하시길 권합니다:"
description_html: '%{domain}의 이용 약관이 변경되었기 때문에 발송된 이메일입니다. <a href="%{path}" target="_blank">변경된 전체 약관</a>을 확인하시길 권합니다.'
sign_off: "%{domain} 팀"
subject: 변경된 이용 약관
subtitle: "%{domain}의 이용 약관이 변경됩니다"

View File

@ -1240,8 +1240,6 @@ lt:
terms_of_service_changed:
agreement: Tęsiant naudojimąsi %{domain}, jūs sutinkate su šiomis sąlygomis. Jei nesutinkate su atnaujintomis sąlygomis, bet kuriuo metu galite nutraukti sutartį su %{domain} ištrindami savo paskyrą.
changelog: Trumpai apie tai, ką šis naujinimas reiškia jums
description: 'Šį el. laišką gaunate, nes mes keičiame savo paslaugų sąlygas serveryje %{domain}. Kviečiame susipažinti su visomis atnaujintomis sąlygomis čia:'
description_html: Šį el. laišką gaunate, nes mes keičiame savo paslaugų sąlygas serveryje %{domain}. Kviečiame susipažinti su <a href="%{path}" target="_blank">visomis atnaujintomis sąlygomis čia</a>.
sign_off: "%{domain} komanda"
subject: Paslaugų sąlygų atnaujinimai
subtitle: Keičiasi %{domain} paslaugų sąlygos

View File

@ -1867,8 +1867,6 @@ lv:
terms_of_service_changed:
agreement: Ar %{domain} izmantošanas tuprināšanu tiek piekrists šiem noteikumiem. Ja ir iebildumi pret atjauninātajiem noteikumiem, savu piekrišanu var atcelt jebkurā laikā ar sava konta izdzēšanu.
changelog: 'Šeit īsumā ir aprakstīts, ko šis atjauninājums nozīmē:'
description: 'Šis e-pasta ziņojums tika saņemts, jo mēs veicam dažas izmaiņas savos pakalpojuma izmantošanas noteikumos %{domain}. Mēs aicinām pārskatīt pilnus atjauninātos noteikumus šeit:'
description_html: Šis e-pasta ziņojums tika saņemts, jo mēs veicam dažas izmaiņas savos pakalpojuma izmantošanas noteikumos %{domain}. Mēs aicinām pārskatīt <a href="%{path}" target="_blank">pilnus atjauninātos noteikumus šeit</a>.
sign_off: "%{domain} komanda"
subject: Mūsu pakalpojuma izmantošanas noteikumu atjauninājumi
subtitle: Mainās %{domain} pakalpojuma izmantošanas noteikumi

View File

@ -1936,8 +1936,6 @@ nl:
terms_of_service_changed:
agreement: Door %{domain} te blijven gebruiken, ga je akkoord met deze voorwaarden. Als je het niet eens bent met de bijgewerkte voorwaarden, kun je je overeenkomst met %{domain} op elk gewenst moment beëindigen door je account te verwijderen.
changelog: 'In een oogopslag betekent deze update voor jou:'
description: 'Je ontvangt dit bericht omdat we enkele wijzigingen aanbrengen in onze gebruiksvoorwaarden op %{domain}. We raden je aan om de bijgewerkte voorwaarden hier volledig te bekijken:'
description_html: Je ontvangt dit bericht omdat we enkele wijzigingen aanbrengen in onze gebruiksvoorwaarden op %{domain}. We raden je aan om de bijgewerkte <a href="%{path}" target="_blank">voorwaarden hier volledig te bestuderen</a>.
sign_off: Het %{domain}-team
subject: Onze bijgewerkte gebruiksvoorwaarden
subtitle: De gebruiksvoorwaarden van %{domain} veranderen

View File

@ -1936,8 +1936,6 @@ nn:
terms_of_service_changed:
agreement: Viss du held fram å bruka %{domain}, seier du deg einig i vilkåra. Viss du er usamd i dei oppdaterte vilkåra, kan du slutta å bruka %{domain} når du vil ved å sletta brukarkontoen din.
changelog: 'Denne oppdateringa, kort fortalt:'
description: 'Du får denne eposten fordi me har endra bruksvilkåra på %{domain}. Det er fint om du ser gjennom endringane her:'
description_html: Du får denne eposten fordi me endrar bruksvilkåra på %{domain}. Me oppmodar deg til å lesa gjennom <a href="%{path}" target="_blank">dei oppdaterte bruksvilkåra her</a>.
sign_off: Folka på %{domain}
subject: Endra bruksvilkår
subtitle: Bruksvilkåra på %{domain} er endra

View File

@ -2022,8 +2022,6 @@ pl:
terms_of_service_changed:
agreement: Kontynuując używanie %{domain}, zgadzasz się na te warunki. Jeśli nie zgadzasz się ze zaktualizowanymi warunkami, możesz wypowiedzieć umowę z %{domain} w dowolnym momencie, usuwając swoje konto.
changelog: 'W skrócie oto co oznacza dla Ciebie ta aktualizacja:'
description: 'Otrzymujesz ten e-mail, ponieważ wprowadzamy pewne zmiany w naszym regulaminie usługi w %{domain}. Zachęcamy Cię do pełnego zapoznania się z aktualnymi warunkami:'
description_html: Otrzymujesz ten e-mail, ponieważ wprowadzamy pewne zmiany w naszym regulaminie usługi w %{domain}. Zachęcamy do zapoznania się z aktualnymi warunkami <a href="%{path}" target="_blank">w całości tutaj</a>.
sign_off: Zespół %{domain}
subject: Aktualizacja warunków korzystania z usług
subtitle: Warunki korzystania z %{domain} zmieniają się

View File

@ -1936,8 +1936,6 @@ pt-BR:
terms_of_service_changed:
agreement: Ao continuar a usar %{domain}, você concorda com estes termos. Se discordar dos termos atualizados, poderá encerrar seu acordo com %{domain} a qualquer momento excluindo sua conta.
changelog: 'Em resumo, veja o que essa atualização significa para você:'
description: 'Você está recebendo este e-mail porque estamos fazendo algumas alterações em nossos termos de serviço em %{domain}. Incentivamos você a revisar os termos atualizados na íntegra aqui:'
description_html: Você está recebendo este e-mail porque estamos fazendo algumas alterações em nossos termos de serviço em %{domain}. Incentivamos você a revisar os <a href="%{path}" target="_blank">termos atualizados na íntegra aqui</a>.
sign_off: A equipe do %{domain}
subject: Atualizações dos nossos termos de serviço
subtitle: Os termos de serviço do %{domain} estão mudando.

View File

@ -1936,8 +1936,6 @@ pt-PT:
terms_of_service_changed:
agreement: Ao continuar a utilizar %{domain}, concordas com estes termos. Se discordares dos termos atualizados, poderás rescindir o teu acordo com %{domain} a qualquer momento através da eliminação da tua conta.
changelog: 'Em resumo, eis o que esta atualização significa para ti:'
description: 'Estás a receber esta mensagem de correio eletrónico porque estamos a fazer algumas alterações aos nossos termos de serviço em %{domain}. Recomendamos que revejas os termos atualizados na íntegra aqui:'
description_html: Estás a receber esta mensagem de correio eletrónico porque estamos a fazer algumas alterações aos nossos termos de serviço em %{domain}. Recomendamos que revejas os <a href="%{path}" target="_blank">termos atualizados na íntegra aqui</a>.
sign_off: A equipa de %{domain}
subject: Atualizações dos nossos termos de serviço
subtitle: Os termos de serviço de %{domain} estão a mudar

View File

@ -2022,8 +2022,6 @@ ru:
terms_of_service_changed:
agreement: Продолжая использовать %{domain}, вы соглашаетесь с этими условиями. Если вы не согласны с новыми условиями, вы в любой момент можете удалить вашу учётную запись на %{domain}.
changelog: 'Вот что обновление условий будет значит для вас в общих чертах:'
description: 'Вы получили это сообщение, потому что мы внесли некоторые изменения в пользовательское соглашение %{domain}. Рекомендуем вам ознакомиться с обновлёнными условиями по ссылке:'
description_html: Вы получили это сообщение, потому что мы внесли некоторые изменения в пользовательское соглашение %{domain}. Рекомендуем вам ознакомиться с <a href="%{path}" target="_blank">обновлёнными условиями</a>.
sign_off: Ваш %{domain}
subject: Обновления наших условий использования
subtitle: На %{domain} изменилось пользовательское соглашение

View File

@ -132,6 +132,7 @@ en:
name: You can only change the casing of the letters, for example, to make it more readable
terms_of_service:
changelog: Can be structured with Markdown syntax.
effective_date: A reasonable timeframe can range anywhere from 10 to 30 days from the date you notify your users.
text: Can be structured with Markdown syntax.
terms_of_service_generator:
admin_email: Legal notices include counternotices, court orders, takedown requests, and law enforcement requests.
@ -334,6 +335,7 @@ en:
usable: Allow posts to use this hashtag locally
terms_of_service:
changelog: What's changed?
effective_date: Effective date
text: Terms of Service
terms_of_service_generator:
admin_email: Email address for legal notices

View File

@ -1930,8 +1930,6 @@ sq:
terms_of_service_changed:
agreement: Duke vazhduar të përdorni %{domain}, pajtoheni më këto terma. Nëse spajtoheni me termat e përditësuar, mund të përfundoni pajtimin tuaj me %{domain} në çfarëdo kohe, përmes fshirjes së llogarisë tuaj.
changelog: 'Me një vështrim, ja se çdo të thotë ky përditësim për ju:'
description: 'Po e merrni këtë email ngaqë po bëjmë disa ndryshime te kushtet tona të shërbimit në %{domain}. Ju nxisim të shqyrtoni termat e përditësuar të plotë këtu:'
description_html: Po e merrni këtë email ngaqë po bëjmë disa ndryshime në kushtet tona të shërbimit te %{domain}. Ju nxisim të shqyrtoni <a href="%{path}" target="_blank">termat e përditësuar të plotë këtu</a>.
sign_off: Ekipi i %{domain}
subject: Përditësime të termave tanë të shërbimit
subtitle: Termat e shërbimit të %{domain} po ndryshojnë

View File

@ -1936,8 +1936,6 @@ sv:
terms_of_service_changed:
agreement: Genom att fortsätta använda %{domain} godkänner du dessa villkor. Om du inte håller med om de uppdaterade villkoren kan du när som helst säga upp ditt avtal med %{domain} genom att radera ditt konto.
changelog: 'I korthet, här är vad denna uppdatering innebär för dig:'
description: 'Du får detta e-postmeddelande eftersom vi gör vissa ändringar i våra användarvillkor på %{domain}. Vi uppmanar dig att granska de uppdaterade villkoren i sin helhet här:'
description_html: Du får detta e-postmeddelande eftersom vi gör vissa ändringar i våra användarvillkor på %{domain}. Vi uppmanar dig att granska de uppdaterade villkoren i <a href="%{path}" target="_blank">sin helhet här</a>.
sign_off: "%{domain} teamet"
subject: Uppdateringar till våra användarvillkor
subtitle: Villkoren för tjänsten på %{domain} ändras

View File

@ -1936,8 +1936,6 @@ tr:
terms_of_service_changed:
agreement: "%{domain} sunucusunu kullanmaya devam ederek bu şartları kabul etmiş olursunuz. Güncellenen şartları kabul etmiyorsanız, %{domain} ile olan sözleşmenizi istediğiniz zaman hesabınızı silerek feshedebilirsiniz."
changelog: 'Bir bakışta, bu güncellemenin sizin için anlamı şudur:'
description: 'Bu e-postayı alıyorsunuz çünkü %{domain} adresindeki hizmet şartlarımızda bazı değişiklikler yapıyoruz. Aşağıda tümü yer alan güncellenen şartları incelemenizi öneriyoruz:'
description_html: Bu e-postayı alıyorsunuz çünkü %{domain} adresindeki hizmet şartlarımızda bazı değişiklikler yapıyoruz. <a href="%{path}" target="_blank">Tüm güncellenen şartları buraya tıklayarak</a> incelemenizi öneririz.
sign_off: "%{domain} Ekibi"
subject: Şimdiki hizmet şartlarımıza güncellemeler
subtitle: "%{domain} adresindeki hizmet şartları değişiyor"

View File

@ -1955,8 +1955,6 @@ uk:
terms_of_service_changed:
agreement: Далі використовуючи %{domain}, ви погоджуєтеся з цими умовами. Якщо ви не згодні з оновленими умовами, ви можете припинити свою угоду з %{domain} будь-якої миті, видаливши ваш обліковий запис.
changelog: 'Коротко, ось що це оновлення означає для вас:'
description: 'Ви отримали цього електронного листа, тому що ми впроваджуємо деякі зміни в наші умови обслуговування в %{domain}. Радимо переглянути оновлені умови повністю тут:'
description_html: Ви отримали цього електронного листа, тому що ми впроваджуємо деякі зміни до наших умов обслуговування в %{domain}. Радимо переглянути <a href="%{path}" target="_blank">повністю оновлені умови тут</a>.
sign_off: Команда %{domain}
subject: Оновлення до наших умов обслуговування
subtitle: Умови використання %{domain} змінюються

View File

@ -1893,8 +1893,6 @@ vi:
terms_of_service_changed:
agreement: Tiếp tục sử dụng %{domain}, đồng nghĩa bạn đồng ý điều khoản dịch vụ. Nếu bạn không đồng ý với các điều khoản đã cập nhật, hãy xóa tài khoản %{domain} của bạn.
changelog: 'Nhìn sơ qua, bản cập nhật này:'
description: 'Bạn nhận được email này vì chúng tôi đang thực hiện một số thay đổi đối với các điều khoản dịch vụ tại %{domain}. Hãy xem lại đầy đủ các điều khoản đã cập nhật tại đây:'
description_html: Bạn nhận được email này vì chúng tôi đang thực hiện một số thay đổi đối với các điều khoản dịch vụ tại %{domain}. Hãy xem lại <a href="%{path}" target="_blank">đầy đủ các điều khoản được cập nhật ở đây</a>.
sign_off: Đội ngũ %{domain}
subject: Cập nhật điều khoản dịch vụ
subtitle: Điều khoản dịch vụ tại %{domain} đã thay đổi

View File

@ -1893,8 +1893,6 @@ zh-CN:
terms_of_service_changed:
agreement: 继续使用你在 %{domain} 的账号即表示您同意这些条款。如果你不同意更新后的条款,你可以随时删除账号以终止与 %{domain} 的协议。
changelog: 本次更新的要点如下:
description: 你收到此邮件是因为我们更新了 %{domain} 的服务条款。我们建议你在此查看变更后的服务条款:
description_html: 你收到此邮件是因为我们更新了 %{domain} 的服务条款。我们建议你在此查看<a href="%{path}" target="_blank">变更后的服务条款</a>。
sign_off: "%{domain} 运营团队"
subject: 服务条款变更
subtitle: "%{domain} 更新了服务条款"

View File

@ -1895,8 +1895,6 @@ zh-TW:
terms_of_service_changed:
agreement: 透過繼續使用 %{domain},您將同意這些條款。若您不同意此條款異動,您能隨時終止與 %{domain} 之協議並刪除您的帳號。
changelog: 簡而言之,此次更新對您將意味著:
description: 您收到此 e-mail 係因我們正在更新 %{domain} 之服務條款。我們鼓勵您審視此處之服務條款更新全文:
description_html: 您收到此 e-mail 係因我們正在更新 %{domain} 之服務條款。我們鼓勵您審視 <a href="%{path}" target="_blank">此處之服務條款更新全文</a>。
sign_off: "%{domain} 團隊"
subject: 我們的服務條款更新
subtitle: "%{domain} 之服務條款正在悄悄發生變化"

View File

@ -204,7 +204,8 @@ Rails.application.routes.draw do
get '/privacy-policy', to: 'privacy#show', as: :privacy_policy
get '/terms-of-service', to: 'terms_of_service#show', as: :terms_of_service
get '/terms', to: redirect('/terms-of-service')
get '/terms-of-service/:date', to: 'terms_of_service#show', as: :terms_of_service_version
get '/terms', to: redirect('/terms-of-service')
match '/', via: [:post, :put, :patch, :delete], to: 'application#raise_not_found', format: false
match '*unmatched_route', via: :all, to: 'application#raise_not_found', format: false

View File

@ -121,6 +121,8 @@ namespace :api, format: false do
resource :translation_languages, only: [:show]
resource :languages, only: [:show]
resource :activity, only: [:show], controller: :activity
get '/terms_of_service/:date', to: 'terms_of_services#show'
end
end

View File

@ -0,0 +1,7 @@
# frozen_string_literal: true
class AddEffectiveDateToTermsOfServices < ActiveRecord::Migration[8.0]
def change
add_column :terms_of_services, :effective_date, :date
end
end

View File

@ -0,0 +1,9 @@
# frozen_string_literal: true
class AddEffectiveDateIndexToTermsOfServices < ActiveRecord::Migration[8.0]
disable_ddl_transaction!
def change
add_index :terms_of_services, :effective_date, unique: true, algorithm: :concurrently, where: 'effective_date IS NOT NULL'
end
end

View File

@ -10,7 +10,7 @@
#
# It's strongly recommended that you check this file into your version control system.
ActiveRecord::Schema[8.0].define(version: 2025_01_29_144813) do
ActiveRecord::Schema[8.0].define(version: 2025_03_05_074104) do
# These are extensions that must be enabled in order to support this database
enable_extension "pg_catalog.plpgsql"
@ -1110,6 +1110,9 @@ ActiveRecord::Schema[8.0].define(version: 2025_01_29_144813) do
t.datetime "notification_sent_at"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.date "effective_date"
t.index ["effective_date"], name: "index_terms_of_services_on_effective_dat
e", unique: true, where: "(effective_date IS NOT NULL)"
end
create_table "tombstones", force: :cascade do |t|

View File

@ -5,4 +5,5 @@ Fabricator(:terms_of_service) do
changelog { Faker::Lorem.paragraph }
published_at { Time.zone.now }
notification_sent_at { Time.zone.now }
effective_date { Faker::Date.forward }
end