From cadda2f9571873f0fb245399de7e20901efb5e72 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Wed, 5 Mar 2025 10:01:33 +0100 Subject: [PATCH] Add effective date to terms of service (#33993) --- .../terms_of_service/drafts_controller.rb | 4 +- .../admin/terms_of_service_controller.rb | 2 +- .../instances/terms_of_services_controller.rb | 10 ++- app/javascript/mastodon/api/instance.ts | 8 +- app/javascript/mastodon/api_types/instance.ts | 4 +- .../features/terms_of_service/index.tsx | 80 ++++++++++++++----- app/javascript/mastodon/features/ui/index.jsx | 2 +- app/javascript/mastodon/locales/en.json | 2 + app/javascript/styles/mastodon/admin.scss | 5 ++ app/javascript/styles/mastodon/forms.scss | 15 +++- app/models/terms_of_service.rb | 27 ++++++- .../rest/terms_of_service_serializer.rb | 27 +++++++ .../terms_of_service/drafts/show.html.haml | 3 + .../terms_of_service/histories/show.html.haml | 6 +- .../admin/terms_of_service/index.html.haml | 6 +- .../terms_of_service_changed.html.haml | 2 +- .../terms_of_service_changed.text.erb | 4 +- config/locales/activerecord.en.yml | 4 + config/locales/bg.yml | 2 - config/locales/cs.yml | 2 - config/locales/cy.yml | 2 - config/locales/da.yml | 2 - config/locales/de.yml | 2 - config/locales/el.yml | 2 - config/locales/en-GB.yml | 2 - config/locales/en.yml | 5 +- config/locales/eo.yml | 2 - config/locales/es-AR.yml | 2 - config/locales/es-MX.yml | 2 - config/locales/es.yml | 2 - config/locales/fa.yml | 2 - config/locales/fi.yml | 2 - config/locales/fo.yml | 2 - config/locales/fr-CA.yml | 2 - config/locales/fr.yml | 2 - config/locales/fy.yml | 2 - config/locales/ga.yml | 2 - config/locales/gl.yml | 2 - config/locales/he.yml | 2 - config/locales/hu.yml | 2 - config/locales/ia.yml | 2 - config/locales/is.yml | 2 - config/locales/it.yml | 2 - config/locales/ja.yml | 2 - config/locales/ko.yml | 2 - config/locales/lt.yml | 2 - config/locales/lv.yml | 2 - config/locales/nl.yml | 2 - config/locales/nn.yml | 2 - config/locales/pl.yml | 2 - config/locales/pt-BR.yml | 2 - config/locales/pt-PT.yml | 2 - config/locales/ru.yml | 2 - config/locales/simple_form.en.yml | 2 + config/locales/sq.yml | 2 - config/locales/sv.yml | 2 - config/locales/tr.yml | 2 - config/locales/uk.yml | 2 - config/locales/vi.yml | 2 - config/locales/zh-CN.yml | 2 - config/locales/zh-TW.yml | 2 - config/routes.rb | 3 +- config/routes/api.rb | 2 + ...add_effective_date_to_terms_of_services.rb | 7 ++ ...fective_date_index_to_terms_of_services.rb | 9 +++ db/schema.rb | 5 +- .../terms_of_service_fabricator.rb | 1 + 67 files changed, 201 insertions(+), 126 deletions(-) create mode 100644 app/serializers/rest/terms_of_service_serializer.rb create mode 100644 db/migrate/20250224144617_add_effective_date_to_terms_of_services.rb create mode 100644 db/migrate/20250305074104_add_effective_date_index_to_terms_of_services.rb diff --git a/app/controllers/admin/terms_of_service/drafts_controller.rb b/app/controllers/admin/terms_of_service/drafts_controller.rb index 02cb05946f..0c67eb9df8 100644 --- a/app/controllers/admin/terms_of_service/drafts_controller.rb +++ b/app/controllers/admin/terms_of_service/drafts_controller.rb @@ -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 diff --git a/app/controllers/admin/terms_of_service_controller.rb b/app/controllers/admin/terms_of_service_controller.rb index f70bfd2071..10aa5c66ca 100644 --- a/app/controllers/admin/terms_of_service_controller.rb +++ b/app/controllers/admin/terms_of_service_controller.rb @@ -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 diff --git a/app/controllers/api/v1/instances/terms_of_services_controller.rb b/app/controllers/api/v1/instances/terms_of_services_controller.rb index e9e8e8ef55..0a861dd7bb 100644 --- a/app/controllers/api/v1/instances/terms_of_services_controller.rb +++ b/app/controllers/api/v1/instances/terms_of_services_controller.rb @@ -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 diff --git a/app/javascript/mastodon/api/instance.ts b/app/javascript/mastodon/api/instance.ts index ec9146fb34..764e8daab2 100644 --- a/app/javascript/mastodon/api/instance.ts +++ b/app/javascript/mastodon/api/instance.ts @@ -4,8 +4,12 @@ import type { ApiPrivacyPolicyJSON, } from 'mastodon/api_types/instance'; -export const apiGetTermsOfService = () => - apiRequestGet('v1/instance/terms_of_service'); +export const apiGetTermsOfService = (version?: string) => + apiRequestGet( + version + ? `v1/instance/terms_of_service/${version}` + : 'v1/instance/terms_of_service', + ); export const apiGetPrivacyPolicy = () => apiRequestGet('v1/instance/privacy_policy'); diff --git a/app/javascript/mastodon/api_types/instance.ts b/app/javascript/mastodon/api_types/instance.ts index ead9774515..3a29684b70 100644 --- a/app/javascript/mastodon/api_types/instance.ts +++ b/app/javascript/mastodon/api_types/instance.ts @@ -1,5 +1,7 @@ export interface ApiTermsOfServiceJSON { - updated_at: string; + effective_date: string; + effective: boolean; + succeeded_by: string | null; content: string; } diff --git a/app/javascript/mastodon/features/terms_of_service/index.tsx b/app/javascript/mastodon/features/terms_of_service/index.tsx index 05033bffec..8ef64fc515 100644 --- a/app/javascript/mastodon/features/terms_of_service/index.tsx +++ b/app/javascript/mastodon/features/terms_of_service/index.tsx @@ -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(); const [response, setResponse] = useState(); 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 ; @@ -55,23 +60,60 @@ const TermsOfService: React.FC<{ defaultMessage='Terms of Service' /> -

- - ) : ( - + {response?.effective ? ( + + ), + }} + /> + ) : ( + + ), + }} + /> + )} + + {response?.succeeded_by && ( + <> + {' · '} + + + ), + }} /> - ), - }} - /> + + + )}

diff --git a/app/javascript/mastodon/features/ui/index.jsx b/app/javascript/mastodon/features/ui/index.jsx index b239e63ccd..79a6a364e1 100644 --- a/app/javascript/mastodon/features/ui/index.jsx +++ b/app/javascript/mastodon/features/ui/index.jsx @@ -205,7 +205,7 @@ class SwitchingColumnsArea extends PureComponent { - + diff --git a/app/javascript/mastodon/locales/en.json b/app/javascript/mastodon/locales/en.json index 83699b34ed..5a6e40cd8a 100644 --- a/app/javascript/mastodon/locales/en.json +++ b/app/javascript/mastodon/locales/en.json @@ -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", diff --git a/app/javascript/styles/mastodon/admin.scss b/app/javascript/styles/mastodon/admin.scss index 611cb2884a..4a28058544 100644 --- a/app/javascript/styles/mastodon/admin.scss +++ b/app/javascript/styles/mastodon/admin.scss @@ -1989,6 +1989,11 @@ a.sparkline { line-height: 20px; font-weight: 600; margin-bottom: 16px; + + a { + color: inherit; + text-decoration: none; + } } } } diff --git a/app/javascript/styles/mastodon/forms.scss b/app/javascript/styles/mastodon/forms.scss index 09ec0e9e41..7df7e14b2b 100644 --- a/app/javascript/styles/mastodon/forms.scss +++ b/app/javascript/styles/mastodon/forms.scss @@ -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 { diff --git a/app/models/terms_of_service.rb b/app/models/terms_of_service.rb index 1f0832dc9a..3b69a40a1a 100644 --- a/app/models/terms_of_service.rb +++ b/app/models/terms_of_service.rb @@ -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 diff --git a/app/serializers/rest/terms_of_service_serializer.rb b/app/serializers/rest/terms_of_service_serializer.rb new file mode 100644 index 0000000000..7f48788693 --- /dev/null +++ b/app/serializers/rest/terms_of_service_serializer.rb @@ -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 diff --git a/app/views/admin/terms_of_service/drafts/show.html.haml b/app/views/admin/terms_of_service/drafts/show.html.haml index 7a9a6fd3c4..e83bb47c6b 100644 --- a/app/views/admin/terms_of_service/drafts/show.html.haml +++ b/app/views/admin/terms_of_service/drafts/show.html.haml @@ -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 diff --git a/app/views/admin/terms_of_service/histories/show.html.haml b/app/views/admin/terms_of_service/histories/show.html.haml index 8b7b8eb82e..10921d922f 100644 --- a/app/views/admin/terms_of_service/histories/show.html.haml +++ b/app/views/admin/terms_of_service/histories/show.html.haml @@ -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) diff --git a/app/views/admin/terms_of_service/index.html.haml b/app/views/admin/terms_of_service/index.html.haml index 809d567674..457ef42670 100644 --- a/app/views/admin/terms_of_service/index.html.haml +++ b/app/views/admin/terms_of_service/index.html.haml @@ -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)) diff --git a/app/views/user_mailer/terms_of_service_changed.html.haml b/app/views/user_mailer/terms_of_service_changed.html.haml index 95cc976418..2e34eb4990 100644 --- a/app/views/user_mailer/terms_of_service_changed.html.haml +++ b/app/views/user_mailer/terms_of_service_changed.html.haml @@ -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) diff --git a/app/views/user_mailer/terms_of_service_changed.text.erb b/app/views/user_mailer/terms_of_service_changed.text.erb index 8416572f0a..ccf332ce89 100644 --- a/app/views/user_mailer/terms_of_service_changed.text.erb +++ b/app/views/user_mailer/terms_of_service_changed.text.erb @@ -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') %> diff --git a/config/locales/activerecord.en.yml b/config/locales/activerecord.en.yml index f10a9011b3..ed389c1323 100644 --- a/config/locales/activerecord.en.yml +++ b/config/locales/activerecord.en.yml @@ -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: diff --git a/config/locales/bg.yml b/config/locales/bg.yml index 65f6696ee6..1f2b3ee296 100644 --- a/config/locales/bg.yml +++ b/config/locales/bg.yml @@ -1927,8 +1927,6 @@ bg: terms_of_service_changed: agreement: Продължавайки употребата на %{domain}, съгласявате се с тези условия. Ако не сте съгласни с осъвременените условия, то може по всяко време да прекратите съгласието си с %{domain}, изтривайки акаунта си. changelog: 'Накратко, ето какво значи това обновяване за вас:' - description: 'Получавате това е-писмо, защото правим някои промени по условията ни на услугата при %{domain}. Насърчаваме ви предварително да прегледате обновените условия изцяло тук:' - description_html: Получавате това е-писмо, защото правим някои промени по условията ни на услугата при %{domain}. Насърчаваме ви предварително да прегледате обновените условия изцяло тук. sign_off: Отборът на %{domain} subject: Новости в нашите условия за ползване subtitle: Условията на услугата на %{domain} се променят diff --git a/config/locales/cs.yml b/config/locales/cs.yml index 3ca73a3a14..9be3dd7c58 100644 --- a/config/locales/cs.yml +++ b/config/locales/cs.yml @@ -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 aktualizované termíny v plném znění zde. sign_off: Tým %{domain} subject: Aktualizace našich podmínek služby subtitle: Podmínky služby %{domain} se mění diff --git a/config/locales/cy.yml b/config/locales/cy.yml index f64040a267..b545bb18f8 100644 --- a/config/locales/cy.yml +++ b/config/locales/cy.yml @@ -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 telerau diweddaraf yn llawn yma . sign_off: Tîm %{domain} subject: Diweddariadau i'n telerau gwasanaeth subtitle: Mae telerau gwasanaeth %{domain} yn newid diff --git a/config/locales/da.yml b/config/locales/da.yml index 3ed9d40db9..828bcc2a75 100644 --- a/config/locales/da.yml +++ b/config/locales/da.yml @@ -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 opdaterede vilkår fuldt ud her. sign_off: "%{domain}-teamet" subject: Opdatering af Tjenestevilkår subtitle: Tjenestevilkår for %{domain} ændres diff --git a/config/locales/de.yml b/config/locales/de.yml index 17c5098e20..26b55f5c55 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml @@ -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 vollständig aktualisierte Fassung hier zu lesen. sign_off: Das Team von %{domain} subject: Aktualisierungen unserer Nutzungsbedingungen subtitle: Die Nutzungsbedingungen von %{domain} ändern sich diff --git a/config/locales/el.yml b/config/locales/el.yml index 0c40ffabdc..d42791a65a 100644 --- a/config/locales/el.yml +++ b/config/locales/el.yml @@ -1936,8 +1936,6 @@ el: terms_of_service_changed: agreement: Συνεχίζοντας να χρησιμοποιείς το %{domain}, συμφωνείς με αυτούς τους όρους. Αν διαφωνείς με τους ενημερωμένους όρους, μπορείς να τερματίσεις τη συμφωνία σου με το %{domain} ανά πάσα στιγμή διαγράφοντας τον λογαριασμό σου. changelog: 'Με μια ματιά, αυτό σημαίνει αυτή η ενημέρωση για σένα:' - description: 'Λαμβάνεις αυτό το μήνυμα επειδή κάνουμε κάποιες αλλαγές στους όρους παροχής υπηρεσιών μας στο %{domain}. Σε ενθαρρύνουμε να εξετάσεις πλήρως τους ενημερωμένους όρους εδώ:' - description_html: Λαμβάνεις αυτό το μήνυμα επειδή κάνουμε κάποιες αλλαγές στους όρους παροχής υπηρεσιών μας στο %{domain}. Σε ενθαρρύνουμε να εξετάσεις πλήρως τους ενημερωμένους όρους εδώ. sign_off: Η ομάδα του %{domain} subject: Ενημερώσεις στους όρους παροχής υπηρεσιών μας subtitle: Οι όροι παροχής υπηρεσιών του %{domain} αλλάζουν diff --git a/config/locales/en-GB.yml b/config/locales/en-GB.yml index c8c3e486b7..92934f50f0 100644 --- a/config/locales/en-GB.yml +++ b/config/locales/en-GB.yml @@ -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 updated terms in full here. sign_off: The %{domain} team subject: Updates to our terms of service subtitle: The terms of service of %{domain} are changing diff --git a/config/locales/en.yml b/config/locales/en.yml index fdf73bad9e..69b94efbd3 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -939,6 +939,7 @@ en: chance_to_review_html: "The generated terms of service will not be published automatically. 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 updated terms in full here. + 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 %{date}. We encourage you to review the updated terms in full here. sign_off: The %{domain} team subject: Updates to our terms of service subtitle: The terms of service of %{domain} are changing diff --git a/config/locales/eo.yml b/config/locales/eo.yml index 6947d240f8..c1d50f2750 100644 --- a/config/locales/eo.yml +++ b/config/locales/eo.yml @@ -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 ĝisdatigitajn kondiĉojn plene ĉi tie. 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 diff --git a/config/locales/es-AR.yml b/config/locales/es-AR.yml index 2f313da8d4..53a22ea612 100644 --- a/config/locales/es-AR.yml +++ b/config/locales/es-AR.yml @@ -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 términos actualizados en su totalidad acá. 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 diff --git a/config/locales/es-MX.yml b/config/locales/es-MX.yml index 135ca6cc78..7b8e59bd99 100644 --- a/config/locales/es-MX.yml +++ b/config/locales/es-MX.yml @@ -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 condiciones actualizadas en su totalidad aquí. sign_off: El equipo de %{domain} subject: Actualizaciones en nuestras condiciones del servicio subtitle: Las condiciones del servicio de %{domain} han cambiado diff --git a/config/locales/es.yml b/config/locales/es.yml index 7f7473f18f..234a5e373c 100644 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -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 términos actualizados en su totalidad aquí. 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 diff --git a/config/locales/fa.yml b/config/locales/fa.yml index 8a5d36e1e3..12ee668193 100644 --- a/config/locales/fa.yml +++ b/config/locales/fa.yml @@ -1936,8 +1936,6 @@ fa: terms_of_service_changed: agreement: با ادامه استفاده از %{domain}، با این شرایط موافقت می کنید. اگر با شرایط به‌روزرسانی شده مخالف هستید، می‌توانید در هر زمان با حذف حساب خود، قرارداد خود را با %{domain} فسخ کنید. changelog: 'در یک نگاه، معنای این به‌روزرسانی برای شما چیست:' - description: 'شما این ایمیل را دریافت می کنید زیرا ما در حال ایجاد برخی تغییرات در شرایط خدمات خود در %{domain} هستیم. توصیه می کنیم شرایط به روز شده را به طور کامل در اینجا مرور کنید:' - description_html: شما این ایمیل را دریافت می کنید زیرا ما در حال ایجاد برخی تغییرات در شرایط خدمات خود در %{domain} هستیم. توصیه می کنیم شرایط به روز شده را به طور کامل در اینجا بررسی کنید. sign_off: تیم %{domain} subject: به‌روزرسانی‌های شرایط خدمات ما subtitle: شرایط خدمات %{domain} در حال تغییر است diff --git a/config/locales/fi.yml b/config/locales/fi.yml index 772028f1fa..5b06ab38f2 100644 --- a/config/locales/fi.yml +++ b/config/locales/fi.yml @@ -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 päivitettyihin ehtoihin kokonaisuudessaan täällä. sign_off: Palvelimen %{domain} tiimi subject: Käyttöehtojemme päivitykset subtitle: Palvelimen %{domain} käyttöehdot muuttuvat diff --git a/config/locales/fo.yml b/config/locales/fo.yml index 93bf30e0ef..969857cbaf 100644 --- a/config/locales/fo.yml +++ b/config/locales/fo.yml @@ -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 dagførdu og samlaðu treytirnar her. sign_off: "%{domain} toymið" subject: Dagføringar til okkara tænastutreytir subtitle: Tænastutreytirnar hjá %{domain} eru við at verða broyttar diff --git a/config/locales/fr-CA.yml b/config/locales/fr-CA.yml index 37c34b7678..228b837324 100644 --- a/config/locales/fr-CA.yml +++ b/config/locales/fr-CA.yml @@ -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 conditions mises à jour ici. sign_off: L'équipe %{domain} subject: Mises à jour de nos conditions d'utilisation subtitle: Les conditions d'utilisation de `%{domain}` changent diff --git a/config/locales/fr.yml b/config/locales/fr.yml index 0c1e248467..93ba3cbab8 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -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 conditions mises à jour ici. sign_off: L'équipe %{domain} subject: Mises à jour de nos conditions d'utilisation subtitle: Les conditions d'utilisation de `%{domain}` changent diff --git a/config/locales/fy.yml b/config/locales/fy.yml index a1843a111e..119d08be2d 100644 --- a/config/locales/fy.yml +++ b/config/locales/fy.yml @@ -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 betingsten hjir folslein te besjen. sign_off: It %{domain}-team subject: Aktualisaasje fan ús tsjinstbetingsten subtitle: De gebrûksbetingsten fan %{domain} wizigje diff --git a/config/locales/ga.yml b/config/locales/ga.yml index 9945e44c07..9d3553a795 100644 --- a/config/locales/ga.yml +++ b/config/locales/ga.yml @@ -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 téarmaí nuashonraithe ina n-iomláine anseo. sign_off: Foireann %{domain} subject: Nuashonruithe ar ár dtéarmaí seirbhíse subtitle: Tá téarmaí seirbhíse %{domain} ag athrú diff --git a/config/locales/gl.yml b/config/locales/gl.yml index 1db9b74b69..b007c707d5 100644 --- a/config/locales/gl.yml +++ b/config/locales/gl.yml @@ -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 condicións actualizadas ao completo aquí. sign_off: O equipo de %{domain} subject: Actualización dos nosos termos do servizo subtitle: Cambiaron os termos do servizo de %{domain} diff --git a/config/locales/he.yml b/config/locales/he.yml index 0a68d338f0..725e8ce4f0 100644 --- a/config/locales/he.yml +++ b/config/locales/he.yml @@ -2022,8 +2022,6 @@ he: terms_of_service_changed: agreement: עם המשך השימוש בשרת %{domain} אתן מסכימות לתנאים הללו. אם אינכם מסכימים עם עדכוני תנאי השירות, אתן יכולות להפסיק את ההסכם עם %{domain} בכל עת על ידי מחיקת החשבון. changelog: 'בקצרה, הנה משמעות העדכון עבורך:' - description: 'קיבלת הודעת דואל זו כיוון שאנו מבצעים שינויים במסמך תנאי השירות של %{domain}. אנו מעודדים אותך לעבור על השינויים במסמך המלא כאן:' - description_html: 'קיבלת הודעת דואל זו כיוון שאנו מבצעים שינויים במסמך תנאי השירות של %{domain}. אנו מעודדים אותך לעבור על השינויים במסמך המלא כאן:' sign_off: צוות %{domain} subject: עדכונים לתנאי השירות שלנו subtitle: מסמך תנאי השירות של %{domain} עוברים שינויים diff --git a/config/locales/hu.yml b/config/locales/hu.yml index 722c361710..d908a55395 100644 --- a/config/locales/hu.yml +++ b/config/locales/hu.yml @@ -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 frissített feltételeket teljes egészében itt. 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 diff --git a/config/locales/ia.yml b/config/locales/ia.yml index 70cbd3b647..760bddb4d7 100644 --- a/config/locales/ia.yml +++ b/config/locales/ia.yml @@ -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 conditiones actualisate complete. sign_off: Le equipa de %{domain} subject: Actualisationes de nostre conditiones de servicio subtitle: Le conditiones de servicio de %{domain} ha cambiate diff --git a/config/locales/is.yml b/config/locales/is.yml index c4172f238d..e27d9eac14 100644 --- a/config/locales/is.yml +++ b/config/locales/is.yml @@ -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 uppfærðu skilmálana í heild hér:. sign_off: "%{domain}-teymið" subject: Breytingar á þjónustuskilmálum okkar subtitle: Þjónustuskilmálar eru að breytast á %{domain} diff --git a/config/locales/it.yml b/config/locales/it.yml index 734860f3bb..456aab98c7 100644 --- a/config/locales/it.yml +++ b/config/locales/it.yml @@ -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 termini aggiornati per intero qui. sign_off: Il team di %{domain} subject: Aggiornamenti ai nostri termini di servizio subtitle: I termini di servizio di %{domain} stanno cambiando diff --git a/config/locales/ja.yml b/config/locales/ja.yml index 77670f0ec3..00e622810a 100644 --- a/config/locales/ja.yml +++ b/config/locales/ja.yml @@ -1893,8 +1893,6 @@ ja: terms_of_service_changed: agreement: "%{domain} を引き続き使用することで、これらの条件に同意したことになります。更新された条件に同意しない場合は、アカウントを削除することでいつでも %{domain} との契約を終了することができます。" changelog: 一目で分かる、この更新があなたにとって意味することは次の通りです: - description: このメールを受け取っているのは、%{domain} の利用規約にいくつかの変更を加えているためです。更新された利用規約をこちらで全てご確認いただくことをお勧めします: - description_html: このメールを受け取っているのは、%{domain} の利用規約にいくつかの変更を加えているためです。こちらで更新された利用規約を全てご確認いただくことをお勧めします。 sign_off: "%{domain} チーム" subject: 利用規約の更新 subtitle: "%{domain} の利用規約が変更されています" diff --git a/config/locales/ko.yml b/config/locales/ko.yml index 09825046fc..9656845d6d 100644 --- a/config/locales/ko.yml +++ b/config/locales/ko.yml @@ -1895,8 +1895,6 @@ ko: terms_of_service_changed: agreement: "%{domain}을 계속 사용하는 것으로 약관에 동의하는 것으로 간주합니다. 약관에 동의하지 않는 경우 계정을 삭제함으로써 언제든 동의를 철회할 수 있습니다." changelog: '이번 변경사항의 주요 내용입니다:' - description: "%{domain}의 이용 약관이 변경되었기 때문에 발송된 이메일입니다. 변경된 전체 약관을 확인하시길 권합니다:" - description_html: '%{domain}의 이용 약관이 변경되었기 때문에 발송된 이메일입니다. 변경된 전체 약관을 확인하시길 권합니다.' sign_off: "%{domain} 팀" subject: 변경된 이용 약관 subtitle: "%{domain}의 이용 약관이 변경됩니다" diff --git a/config/locales/lt.yml b/config/locales/lt.yml index 5f3b210721..8a85daff7d 100644 --- a/config/locales/lt.yml +++ b/config/locales/lt.yml @@ -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 visomis atnaujintomis sąlygomis čia. sign_off: "%{domain} komanda" subject: Paslaugų sąlygų atnaujinimai subtitle: Keičiasi %{domain} paslaugų sąlygos diff --git a/config/locales/lv.yml b/config/locales/lv.yml index 6e4c645272..a9c2924af3 100644 --- a/config/locales/lv.yml +++ b/config/locales/lv.yml @@ -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 pilnus atjauninātos noteikumus šeit. sign_off: "%{domain} komanda" subject: Mūsu pakalpojuma izmantošanas noteikumu atjauninājumi subtitle: Mainās %{domain} pakalpojuma izmantošanas noteikumi diff --git a/config/locales/nl.yml b/config/locales/nl.yml index 9f05104153..946f3912b7 100644 --- a/config/locales/nl.yml +++ b/config/locales/nl.yml @@ -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 voorwaarden hier volledig te bestuderen. sign_off: Het %{domain}-team subject: Onze bijgewerkte gebruiksvoorwaarden subtitle: De gebruiksvoorwaarden van %{domain} veranderen diff --git a/config/locales/nn.yml b/config/locales/nn.yml index b7982e93ca..bcdcf01d9a 100644 --- a/config/locales/nn.yml +++ b/config/locales/nn.yml @@ -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 dei oppdaterte bruksvilkåra her. sign_off: Folka på %{domain} subject: Endra bruksvilkår subtitle: Bruksvilkåra på %{domain} er endra diff --git a/config/locales/pl.yml b/config/locales/pl.yml index 5770b4ce0c..50f39591af 100644 --- a/config/locales/pl.yml +++ b/config/locales/pl.yml @@ -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 w całości tutaj. sign_off: Zespół %{domain} subject: Aktualizacja warunków korzystania z usług subtitle: Warunki korzystania z %{domain} zmieniają się diff --git a/config/locales/pt-BR.yml b/config/locales/pt-BR.yml index a8bf2d73fb..89c179a34b 100644 --- a/config/locales/pt-BR.yml +++ b/config/locales/pt-BR.yml @@ -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 termos atualizados na íntegra aqui. 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. diff --git a/config/locales/pt-PT.yml b/config/locales/pt-PT.yml index 4015005b2d..8a45f38210 100644 --- a/config/locales/pt-PT.yml +++ b/config/locales/pt-PT.yml @@ -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 termos atualizados na íntegra aqui. 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 diff --git a/config/locales/ru.yml b/config/locales/ru.yml index fe0d797ff8..37b8dd5a09 100644 --- a/config/locales/ru.yml +++ b/config/locales/ru.yml @@ -2022,8 +2022,6 @@ ru: terms_of_service_changed: agreement: Продолжая использовать %{domain}, вы соглашаетесь с этими условиями. Если вы не согласны с новыми условиями, вы в любой момент можете удалить вашу учётную запись на %{domain}. changelog: 'Вот что обновление условий будет значит для вас в общих чертах:' - description: 'Вы получили это сообщение, потому что мы внесли некоторые изменения в пользовательское соглашение %{domain}. Рекомендуем вам ознакомиться с обновлёнными условиями по ссылке:' - description_html: Вы получили это сообщение, потому что мы внесли некоторые изменения в пользовательское соглашение %{domain}. Рекомендуем вам ознакомиться с обновлёнными условиями. sign_off: Ваш %{domain} subject: Обновления наших условий использования subtitle: На %{domain} изменилось пользовательское соглашение diff --git a/config/locales/simple_form.en.yml b/config/locales/simple_form.en.yml index d592352222..2499c5b26b 100644 --- a/config/locales/simple_form.en.yml +++ b/config/locales/simple_form.en.yml @@ -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 diff --git a/config/locales/sq.yml b/config/locales/sq.yml index 0697bb0a99..82f174c8c2 100644 --- a/config/locales/sq.yml +++ b/config/locales/sq.yml @@ -1930,8 +1930,6 @@ sq: terms_of_service_changed: agreement: Duke vazhduar të përdorni %{domain}, pajtoheni më këto terma. Nëse s’pajtoheni 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 termat e përditësuar të plotë këtu. sign_off: Ekipi i %{domain} subject: Përditësime të termave tanë të shërbimit subtitle: Termat e shërbimit të %{domain} po ndryshojnë diff --git a/config/locales/sv.yml b/config/locales/sv.yml index 551c48f970..6e0ef9e122 100644 --- a/config/locales/sv.yml +++ b/config/locales/sv.yml @@ -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 sin helhet här. sign_off: "%{domain} teamet" subject: Uppdateringar till våra användarvillkor subtitle: Villkoren för tjänsten på %{domain} ändras diff --git a/config/locales/tr.yml b/config/locales/tr.yml index 7470f88c50..3b8cc20750 100644 --- a/config/locales/tr.yml +++ b/config/locales/tr.yml @@ -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. Tüm güncellenen şartları buraya tıklayarak incelemenizi öneririz. sign_off: "%{domain} Ekibi" subject: Şimdiki hizmet şartlarımıza güncellemeler subtitle: "%{domain} adresindeki hizmet şartları değişiyor" diff --git a/config/locales/uk.yml b/config/locales/uk.yml index 801d32b1ab..fe11fc811f 100644 --- a/config/locales/uk.yml +++ b/config/locales/uk.yml @@ -1955,8 +1955,6 @@ uk: terms_of_service_changed: agreement: Далі використовуючи %{domain}, ви погоджуєтеся з цими умовами. Якщо ви не згодні з оновленими умовами, ви можете припинити свою угоду з %{domain} будь-якої миті, видаливши ваш обліковий запис. changelog: 'Коротко, ось що це оновлення означає для вас:' - description: 'Ви отримали цього електронного листа, тому що ми впроваджуємо деякі зміни в наші умови обслуговування в %{domain}. Радимо переглянути оновлені умови повністю тут:' - description_html: Ви отримали цього електронного листа, тому що ми впроваджуємо деякі зміни до наших умов обслуговування в %{domain}. Радимо переглянути повністю оновлені умови тут. sign_off: Команда %{domain} subject: Оновлення до наших умов обслуговування subtitle: Умови використання %{domain} змінюються diff --git a/config/locales/vi.yml b/config/locales/vi.yml index 2f7ae6752c..3f5ffc92bf 100644 --- a/config/locales/vi.yml +++ b/config/locales/vi.yml @@ -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 đầy đủ các điều khoản được cập nhật ở đây. 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 diff --git a/config/locales/zh-CN.yml b/config/locales/zh-CN.yml index 1b4b39fb98..d7e37fc82a 100644 --- a/config/locales/zh-CN.yml +++ b/config/locales/zh-CN.yml @@ -1893,8 +1893,6 @@ zh-CN: terms_of_service_changed: agreement: 继续使用你在 %{domain} 的账号即表示您同意这些条款。如果你不同意更新后的条款,你可以随时删除账号以终止与 %{domain} 的协议。 changelog: 本次更新的要点如下: - description: 你收到此邮件是因为我们更新了 %{domain} 的服务条款。我们建议你在此查看变更后的服务条款: - description_html: 你收到此邮件是因为我们更新了 %{domain} 的服务条款。我们建议你在此查看变更后的服务条款。 sign_off: "%{domain} 运营团队" subject: 服务条款变更 subtitle: "%{domain} 更新了服务条款" diff --git a/config/locales/zh-TW.yml b/config/locales/zh-TW.yml index 4a3ab2ba23..86be927b89 100644 --- a/config/locales/zh-TW.yml +++ b/config/locales/zh-TW.yml @@ -1895,8 +1895,6 @@ zh-TW: terms_of_service_changed: agreement: 透過繼續使用 %{domain},您將同意這些條款。若您不同意此條款異動,您能隨時終止與 %{domain} 之協議並刪除您的帳號。 changelog: 簡而言之,此次更新對您將意味著: - description: 您收到此 e-mail 係因我們正在更新 %{domain} 之服務條款。我們鼓勵您審視此處之服務條款更新全文: - description_html: 您收到此 e-mail 係因我們正在更新 %{domain} 之服務條款。我們鼓勵您審視 此處之服務條款更新全文。 sign_off: "%{domain} 團隊" subject: 我們的服務條款更新 subtitle: "%{domain} 之服務條款正在悄悄發生變化" diff --git a/config/routes.rb b/config/routes.rb index 5adec04c7d..e31fbcb06d 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -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 diff --git a/config/routes/api.rb b/config/routes/api.rb index ce63cda1bf..c7be8c8e45 100644 --- a/config/routes/api.rb +++ b/config/routes/api.rb @@ -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 diff --git a/db/migrate/20250224144617_add_effective_date_to_terms_of_services.rb b/db/migrate/20250224144617_add_effective_date_to_terms_of_services.rb new file mode 100644 index 0000000000..e46378387d --- /dev/null +++ b/db/migrate/20250224144617_add_effective_date_to_terms_of_services.rb @@ -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 diff --git a/db/migrate/20250305074104_add_effective_date_index_to_terms_of_services.rb b/db/migrate/20250305074104_add_effective_date_index_to_terms_of_services.rb new file mode 100644 index 0000000000..78cc809ec8 --- /dev/null +++ b/db/migrate/20250305074104_add_effective_date_index_to_terms_of_services.rb @@ -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 diff --git a/db/schema.rb b/db/schema.rb index 6c4af6aa19..110461a5dd 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -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| diff --git a/spec/fabricators/terms_of_service_fabricator.rb b/spec/fabricators/terms_of_service_fabricator.rb index 2b0cfabcfb..d37206e9d3 100644 --- a/spec/fabricators/terms_of_service_fabricator.rb +++ b/spec/fabricators/terms_of_service_fabricator.rb @@ -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