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 02cb05946..0c67eb9df 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 f70bfd207..10aa5c66c 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 e9e8e8ef5..0a861dd7b 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 ec9146fb3..764e8daab 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 ead977451..3a29684b7 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 05033bffe..8ef64fc51 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 b239e63cc..79a6a364e 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 83699b34e..5a6e40cd8 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 611cb2884..4a2805854 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 09ec0e9e4..7df7e14b2 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 1f0832dc9..3b69a40a1 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 000000000..7f4878869 --- /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 7a9a6fd3c..e83bb47c6 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 8b7b8eb82..10921d922 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 809d56767..457ef4267 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 95cc97641..2e34eb499 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 8416572f0..ccf332ce8 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 f10a9011b..ed389c132 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 65f6696ee..1f2b3ee29 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 3ca73a3a1..9be3dd7c5 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 f64040a26..b545bb18f 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 3ed9d40db..828bcc2a7 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 17c5098e2..26b55f5c5 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 0c40ffabd..d42791a65 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 c8c3e486b..92934f50f 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 fdf73bad9..69b94efbd 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 6947d240f..c1d50f275 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 2f313da8d..53a22ea61 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 135ca6cc7..7b8e59bd9 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 7f7473f18..234a5e373 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 8a5d36e1e..12ee66819 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 772028f1f..5b06ab38f 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 93bf30e0e..969857cba 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 37c34b767..228b83732 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 0c1e24846..93ba3cbab 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 a1843a111..119d08be2 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 9945e44c0..9d3553a79 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 1db9b74b6..b007c707d 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 0a68d338f..725e8ce4f 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 722c36171..d908a5539 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 70cbd3b64..760bddb4d 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 c4172f238..e27d9eac1 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 734860f3b..456aab98c 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 77670f0ec..00e622810 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 09825046f..9656845d6 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 5f3b21072..8a85daff7 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 6e4c64527..a9c2924af 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 9f0510415..946f3912b 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 b7982e93c..bcdcf01d9 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 5770b4ce0..50f39591a 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 a8bf2d73f..89c179a34 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 4015005b2..8a45f3821 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 fe0d797ff..37b8dd5a0 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 d59235222..2499c5b26 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 0697bb0a9..82f174c8c 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 551c48f97..6e0ef9e12 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 7470f88c5..3b8cc2075 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 801d32b1a..fe11fc811 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 2f7ae6752..3f5ffc92b 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 1b4b39fb9..d7e37fc82 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 4a3ab2ba2..86be927b8 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 5adec04c7..e31fbcb06 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 ce63cda1b..c7be8c8e4 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 000000000..e46378387 --- /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 000000000..78cc809ec --- /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 6c4af6aa1..110461a5d 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 2b0cfabcf..d37206e9d 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