i18n_feedback 0.8.2 → 0.8.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +6 -319
  3. data/lib/i18n_feedback.rb +12 -35
  4. metadata +14 -62
  5. data/CHANGELOG.md +0 -191
  6. data/MIT-LICENSE +0 -21
  7. data/Rakefile +0 -14
  8. data/app/controllers/i18n_feedback/application_controller.rb +0 -32
  9. data/app/controllers/i18n_feedback/suggestions_controller.rb +0 -92
  10. data/app/helpers/i18n_feedback/tag_helper.rb +0 -19
  11. data/app/models/i18n_feedback/application_record.rb +0 -7
  12. data/app/models/i18n_feedback/suggestion.rb +0 -27
  13. data/app/views/i18n_feedback/suggestions/index.html.erb +0 -77
  14. data/app/views/layouts/i18n_feedback/application.html.erb +0 -96
  15. data/config/locales/i18n_feedback.ar.yml +0 -16
  16. data/config/locales/i18n_feedback.bg.yml +0 -16
  17. data/config/locales/i18n_feedback.bn.yml +0 -16
  18. data/config/locales/i18n_feedback.de.yml +0 -16
  19. data/config/locales/i18n_feedback.el.yml +0 -16
  20. data/config/locales/i18n_feedback.en.yml +0 -35
  21. data/config/locales/i18n_feedback.es.yml +0 -16
  22. data/config/locales/i18n_feedback.fr.yml +0 -16
  23. data/config/locales/i18n_feedback.hi.yml +0 -16
  24. data/config/locales/i18n_feedback.hr.yml +0 -16
  25. data/config/locales/i18n_feedback.id.yml +0 -16
  26. data/config/locales/i18n_feedback.it.yml +0 -16
  27. data/config/locales/i18n_feedback.ja.yml +0 -16
  28. data/config/locales/i18n_feedback.ko.yml +0 -16
  29. data/config/locales/i18n_feedback.lb.yml +0 -16
  30. data/config/locales/i18n_feedback.nl.yml +0 -16
  31. data/config/locales/i18n_feedback.pl.yml +0 -16
  32. data/config/locales/i18n_feedback.pt.yml +0 -16
  33. data/config/locales/i18n_feedback.ro.yml +0 -16
  34. data/config/locales/i18n_feedback.ru.yml +0 -16
  35. data/config/locales/i18n_feedback.th.yml +0 -16
  36. data/config/locales/i18n_feedback.tr.yml +0 -16
  37. data/config/locales/i18n_feedback.uk.yml +0 -16
  38. data/config/locales/i18n_feedback.ur.yml +0 -16
  39. data/config/locales/i18n_feedback.vi.yml +0 -16
  40. data/config/locales/i18n_feedback.zh-CN.yml +0 -16
  41. data/config/routes.rb +0 -13
  42. data/lib/generators/i18n_feedback/install/install_generator.rb +0 -40
  43. data/lib/generators/i18n_feedback/install/templates/create_i18n_feedback_suggestions.rb.tt +0 -22
  44. data/lib/generators/i18n_feedback/install/templates/initializer.rb +0 -56
  45. data/lib/i18n_feedback/configuration.rb +0 -91
  46. data/lib/i18n_feedback/engine.rb +0 -26
  47. data/lib/i18n_feedback/marking.rb +0 -46
  48. data/lib/i18n_feedback/middleware.rb +0 -145
  49. data/lib/i18n_feedback/version.rb +0 -5
  50. data/lib/i18n_feedback/widget.js +0 -443
  51. data/lib/i18n_feedback/widget.rb +0 -96
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 46eee60f6c5765728de028eb4cc020adf87c05fbfa1250a2b3bb9eccc5d66ad2
4
- data.tar.gz: d7732101bdf49c68868f4f3580309ac0cb9e040024bdbd33e4c9598cb7a1dd0a
3
+ metadata.gz: 0d466682f391a59b8b4751f604ff96350c6b8303a039935d8d7f74a0624e8f65
4
+ data.tar.gz: 056cd9b86d9eacb2e68fbb1f56369f3cff265c46034f23f51c046c9eb3cc9bfa
5
5
  SHA512:
6
- metadata.gz: 93b6367c3e3b3479333152301dd6ab44e39d2fe734b10374fef7193d32652d18d1a13042820fa484d0e187061a6f0bda4a15ce3830f97ed409eeea25dfc02137
7
- data.tar.gz: 9eb009039394424338293e77e1b5d684e75528508a5889856b710935ea34029300347218563a033025783fe46ffc100f5dd4e86cf5a62c3f788858474ad14a90
6
+ metadata.gz: 3b6976dd2c6fa4e64aa5678d7572b7684d3d1b66d7c37d8fabcceab47220a0e2f92bf512eeffdbcd490b456e800df4c8cfdc86ad5f7592325fee02589c3957fe
7
+ data.tar.gz: 2d139080e8f3e9fbf5be9b2c842c4bf63e99897f1eb1b3d1836aa0ab5b8624b874d5309690478399a4bf4af44c6441c1f790b225fcc3455c09c4fd1410137c9c
data/README.md CHANGED
@@ -1,325 +1,12 @@
1
- # i18n_feedback
1
+ # i18n_feedback (renamed)
2
2
 
3
- [![Gem Version](https://img.shields.io/gem/v/i18n_feedback)](https://rubygems.org/gems/i18n_feedback)
4
- [![Downloads](https://img.shields.io/gem/dt/i18n_feedback)](https://rubygems.org/gems/i18n_feedback)
5
- [![CI](https://github.com/yshmarov/i18n-feedback/actions/workflows/ci.yml/badge.svg)](https://github.com/yshmarov/i18n-feedback/actions/workflows/ci.yml)
6
- [![License: MIT](https://img.shields.io/badge/license-MIT-blue)](MIT-LICENSE)
7
-
8
- In-context translation proofreading for Rails.
9
-
10
- `i18n_feedback` renders every translated string alongside its i18n key in the
11
- environments you choose, lets a reviewer click any string in the running app and
12
- suggest a better wording, and stores those suggestions for a developer to apply.
13
- It is meant for development and staging, never production.
14
-
15
- ![Click any string in your running app and suggest a better wording](i18n-feedback-demo.gif)
16
-
17
- <video src="https://github.com/yshmarov/i18n-feedback/raw/main/i18n-feedback-demo-640-high.mp4" controls muted playsinline width="640">
18
- Your browser can't play this video —
19
- <a href="https://github.com/yshmarov/i18n-feedback/raw/main/i18n-feedback-demo-640-high.mp4">download it here</a>.
20
- </video>
21
-
22
- - **Zero UI dependencies.** The widget is plain JavaScript and styles itself. No
23
- Tailwind, no daisyUI, no Stimulus, no importmap, no build step.
24
- - **Zero layout changes.** The widget is injected into HTML responses
25
- automatically (opt out and place it yourself if you prefer).
26
- - **Trigger it your way.** Use the built-in floating pill, or hide it and switch
27
- suggest mode on from your own link (a nav item, a menu, anywhere).
28
- - **Pluggable gating and attribution.** You decide which environments and which
29
- users see the tool, and how a suggestion is attributed.
30
-
31
- ## How it works
32
-
33
- 1. In an enabled environment, the I18n backend appends a hidden `⟦some.key⟧`
34
- marker to each translated string. Markers are only emitted while a reviewer
35
- has the tool switched on (a cookie), so pages are clean by default.
36
- 2. The browser widget strips every marker out of the DOM on load and remembers
37
- which key produced each piece of text.
38
- 3. Clicking a string opens a popover showing the current text, any pending
39
- suggestions, and a field to propose a new wording.
40
- 4. Suggestions are `POST`ed to the mounted engine and stored in the
41
- `i18n_feedback_suggestions` table for you to review and apply.
42
-
43
- ## Turbo
44
-
45
- Works with Turbo Drive out of the box. Turbo replaces `<body>` on every visit,
46
- which would take the pill and the active-mode highlighting with it, so the
47
- widget registers its document-level listeners once and re-renders on
48
- `turbo:load`. The pill survives navigation without a full reload.
49
-
50
- ## Requirements
51
-
52
- - Ruby >= 3.2
53
- - Rails >= 7.1
54
-
55
- ## Installation
56
-
57
- Add the gem:
3
+ This gem has been **renamed to [`i18n_proofreading`](https://rubygems.org/gems/i18n_proofreading)**.
58
4
 
59
5
  ```ruby
60
6
  # Gemfile
61
- gem "i18n_feedback"
62
- ```
63
-
64
- ```bash
65
- bundle install
66
- bin/rails generate i18n_feedback:install
67
- bin/rails db:migrate
68
- ```
69
-
70
- The generator:
71
-
72
- - writes `config/initializers/i18n_feedback.rb`,
73
- - creates the `i18n_feedback_suggestions` migration,
74
- - mounts the engine in `config/routes.rb`:
75
-
76
- ```ruby
77
- mount I18nFeedback::Engine => "/i18n_feedback"
78
- ```
79
-
80
- Boot the app in development and look for the **“Suggest edits”** pill in the
81
- bottom-left corner. Click it to turn on suggest mode, then click any text to
82
- propose a fix. Press `Esc` (or the pill) to exit.
83
-
84
- > The widget reads the CSRF token from `<meta name="csrf-token">`, which
85
- > `csrf_meta_tags` in your layout already provides in a standard Rails app.
86
-
87
- ## Configuration
88
-
89
- Everything is optional; the defaults work out of the box in development.
90
-
91
- ```ruby
92
- # config/initializers/i18n_feedback.rb
93
- I18nFeedback.configure do |config|
94
- # Environments the tool is active in.
95
- config.enabled_environments = %w[development staging]
96
-
97
- # Extra per-request gate. Return false to hide the tool. Receives the request.
98
- config.enabled = ->(request) { true }
99
-
100
- # Who may open the triage dashboard. Independent of the gates above; defaults
101
- # to development only. Wire it to your own admin check to open it elsewhere.
102
- config.authorize_admin = ->(request) { Rails.env.development? }
103
-
104
- # Attribute a suggestion to a user (optional). Return an object responding to
105
- # #id, or nil. Receives the request.
106
- config.current_user = ->(request) { nil }
107
-
108
- # Label shown for the author in the "already suggested" list.
109
- config.author_label = ->(user) { user.try(:email) }
110
-
111
- # Inject the widget automatically. Set false to place it yourself.
112
- config.auto_inject = true
113
-
114
- # Show the floating "Suggest edits" pill. Set false to drive suggest mode from
115
- # your own link instead (see below).
116
- config.show_pill = true
117
-
118
- # Query parameter that toggles suggest mode.
119
- config.toggle_param = "i18n_feedback"
120
-
121
- # Keep in sync with the `mount` in config/routes.rb.
122
- config.mount_path = "/i18n_feedback"
123
-
124
- # Per-IP throttle on the submission endpoint, passed to Rails' built-in rate
125
- # limiter (Rails 7.2+; ignored on 7.1). Set nil to disable.
126
- config.rate_limit = { to: 30, within: 60 }
127
- end
128
- ```
129
-
130
- ### Toggling suggest mode from your own link
131
-
132
- Prefer a menu item over the floating pill? You can drive suggest mode from any
133
- link in your own UI — a nav item, a sidebar entry, a footer — and optionally hide
134
- the pill (the two can also coexist):
135
-
136
- ```ruby
137
- config.show_pill = false # optional
138
- ```
139
-
140
- A one-way "turn it on" link is just the toggle parameter:
141
-
142
- ```erb
143
- <%= link_to t("i18n_feedback.start"), "?i18n_feedback=true" %>
144
- ```
145
-
146
- For a single control that flips both ways, read the current state from the
147
- `i18n_feedback` cookie and point at the opposite state. The gem ships `start`
148
- and `stop` labels under the `i18n_feedback.*` scope in every bundled language,
149
- so a localized toggle needs no keys of your own:
150
-
151
- ```erb
152
- <% if I18nFeedback.available?(request) %>
153
- <% suggesting = cookies[:i18n_feedback].present? %>
154
- <%= link_to (suggesting ? t("i18n_feedback.stop") : t("i18n_feedback.start")),
155
- "?#{I18nFeedback.config.toggle_param}=#{!suggesting}" %>
156
- <% end %>
157
- ```
158
-
159
- Good to know:
160
-
161
- - `?i18n_feedback=true` turns suggest mode on, `false` turns it off. The state is
162
- stored in the `i18n_feedback` cookie, and the middleware then redirects to the
163
- same URL without the parameter — so it never sticks in the address bar and the
164
- cookie stays the single source of truth. `Esc` (or the pill) also exits.
165
- - These links keep working **while suggest mode is active**. The widget freezes
166
- ordinary navigation during proofreading (so a stray click can't leave the page
167
- mid-edit), but any link carrying the toggle parameter is exempt — so a "Disable"
168
- item in your nav always gets you out.
169
- - The `i18n_feedback.*` keys are **safe to run through `I18n.t`** — that scope is
170
- exempt from key-marking, so the tool never flags its own controls as editable.
171
- Use the bundled `i18n_feedback.start` / `i18n_feedback.stop` labels (or your own
172
- keys); either way, no plain-literal workaround is needed.
173
-
174
- ### Gating examples
175
-
176
- ```ruby
177
- # Only signed-in staff (however your app resolves that):
178
- config.enabled = ->(request) { request.env["warden"]&.user&.staff? }
179
-
180
- # Behind a feature flag:
181
- config.enabled = ->(request) { Flipper.enabled?(:i18n_feedback) }
182
- ```
183
-
184
- ### Placing the widget yourself
185
-
186
- Set `config.auto_inject = false` and drop the helper at the end of your layout:
187
-
188
- ```erb
189
- <%= i18n_feedback_tag %>
190
- ```
191
-
192
- It renders nothing unless the tool is available for the request.
193
-
194
- ### Localizing the widget UI
195
-
196
- The pill and the suggestion popover speak the app's language: every string
197
- resolves through Rails I18n under the `i18n_feedback.*` scope and follows the
198
- language the page was rendered in (its `<html lang>`, falling back to
199
- `I18n.locale`). Translations ship out of the box for English plus 25 more
200
- languages — Arabic, Bengali, Bulgarian, Chinese (Simplified), Croatian, Dutch,
201
- French, German, Greek, Hindi, Indonesian, Italian, Japanese, Korean,
202
- Luxembourgish, Polish, Portuguese, Romanian, Russian, Spanish, Thai, Turkish,
203
- Ukrainian, Urdu and Vietnamese — so the tool is already localized for most apps.
204
- RTL locales (Arabic, Urdu, …) render the popover right-to-left automatically.
205
-
206
- Any key you haven't translated falls back to English, so a partially translated
207
- locale never leaves a control blank. To add a language, or reword the bundled
208
- copy, define the keys in your own locale files (yours win over the gem's):
209
-
210
- ```yaml
211
- # config/locales/fr.yml
212
- fr:
213
- i18n_feedback:
214
- pill: "Proposer des corrections"
215
- pill_active: "En cours — appuyez pour quitter (Échap)"
216
- title: "Proposer une correction de traduction"
217
- current_text: "Texte actuel"
218
- suggested_text: "Texte proposé"
219
- comment: "Commentaire"
220
- comment_placeholder: "Note facultative pour le développeur"
221
- prior_title: "Déjà proposé (en attente)"
222
- cancel: "Annuler"
223
- save: "Envoyer la suggestion"
224
- error_blank: "Veuillez saisir une suggestion."
225
- error_save: "Impossible d'enregistrer la suggestion."
226
- ```
227
-
228
- `config.pill_label` still overrides the pill text with a fixed string if you set
229
- it; leave it `nil` (the default) to use the localized `i18n_feedback.pill` key.
230
-
231
- ### Light / dark / system appearance
232
-
233
- The widget follows the reviewer's operating-system appearance via
234
- `prefers-color-scheme` — no configuration needed. The pill and popover render on a
235
- dark surface when the system is in dark mode and a light surface otherwise; the
236
- blue accent stays the same in both.
237
-
238
- ## Reviewing suggestions
239
-
240
- ### Review dashboard
241
-
242
- Mounted at your `mount_path` (default `/i18n_feedback`), the engine root is a
243
- built-in **read-only** review board: pending / applied / rejected tabs with
244
- counts, a per-locale filter, and each suggestion shown as current-vs-proposed
245
- with its comment and author. It's plain server-rendered HTML with its own
246
- styling — no host assets or JS framework needed.
247
-
248
- It is deliberately read-only. The gem never writes to your locale files, so it
249
- doesn't pretend to: you review the suggestions here, then make the edits in your
250
- own `config/locales/*.yml`. (A suggestion's `status` still exists on the model
251
- for your own tracking — set it from the console — and is the groundwork for a
252
- future "apply to locale file" feature.)
253
-
254
- It has its own gate, `config.authorize_admin`, **defaulting to development
255
- only** — so a fresh install never exposes it in production. Point it at your own
256
- admin check to open it elsewhere:
257
-
258
- ```ruby
259
- config.authorize_admin = ->(request) { request.env["warden"]&.user&.admin? }
260
- ```
261
-
262
- The gate is independent of `enabled` / `enabled_environments`: the widget can be
263
- dev/staging-only while a maintainer still triages from production.
264
-
265
- ### From the console
266
-
267
- Suggestions are also ordinary records:
268
-
269
- ```ruby
270
- I18nFeedback::Suggestion.where(status: "pending").newest_first.each do |s|
271
- puts "#{s.locale} #{s.translation_key}: #{s.old_value.inspect} -> #{s.proposed_value.inspect}"
272
- end
273
- ```
274
-
275
- Each row stores `translation_key`, `locale`, `old_value`, `proposed_value`,
276
- `comment`, `page_url`, `status`, and optional `author_id` / `author_label`.
277
-
278
- Every suggestion has a `status` — one of `pending`, `applied`, or `rejected`
279
- (`I18nFeedback::Suggestion::STATUSES`), backed by an Active Record enum. New
280
- suggestions start `pending`; once you apply a wording to your locale files or
281
- decide against it, set the status accordingly so the popover stops offering it
282
- as pending context:
283
-
284
- ```ruby
285
- suggestion.status_applied! # bang setter
286
- suggestion.status_applied? # => true
287
- I18nFeedback::Suggestion.status_pending.newest_first # scope per status
7
+ gem "i18n_proofreading"
288
8
  ```
289
9
 
290
- ### Getting notified
291
-
292
- To be pinged when a suggestion comes in, set `on_submit`. It's called with the
293
- saved `Suggestion` right after it's stored — notify Slack, send an email, open a
294
- ticket. It runs inline in the request, so keep it fast or hand off to a job:
295
-
296
- ```ruby
297
- config.on_submit = ->(suggestion) { SuggestionMailer.with(suggestion:).created.deliver_later }
298
- ```
299
-
300
- ## Security
301
-
302
- - The tool is gated **on the server** for every marker, endpoint, and injection.
303
- Setting the cookie by hand does nothing outside an enabled environment where
304
- `config.enabled` returns true.
305
- - Format and lookup namespaces (`number.*`, `date.*`, `*_html` formats, etc.) are
306
- never marked, so currency and date formatting are unaffected.
307
- - The injected widget code carries the request's Content-Security-Policy nonce
308
- (the same one `ActionDispatch` emits), so it runs under a nonce-based
309
- `script-src` policy — including `strict-dynamic` — with no configuration. It is
310
- a no-op when the app sets no CSP nonce. The runtime config is shipped as a
311
- `<script type="application/json">` block (data, not code), so it needs no nonce
312
- and stays correct across Turbo visits.
313
-
314
- ## Development
315
-
316
- ```bash
317
- bin/setup # or: bundle install
318
- bundle exec rspec
319
- ```
320
-
321
- Tests run against a dummy Rails app under `spec/dummy`.
322
-
323
- ## License
324
-
325
- Released under the [MIT License](MIT-LICENSE).
10
+ Installing `i18n_feedback` now just pulls in `i18n_proofreading` and prints a
11
+ deprecation notice. Migration guide:
12
+ https://github.com/yshmarov/i18n_proofreading
data/lib/i18n_feedback.rb CHANGED
@@ -1,37 +1,14 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'i18n_feedback/version'
4
- require 'i18n_feedback/configuration'
5
- require 'i18n_feedback/marking'
6
- require 'i18n_feedback/widget'
7
- require 'i18n_feedback/middleware'
8
- require 'i18n_feedback/engine'
9
-
10
- # In-context translation proofreading for Rails. Renders each i18n key alongside
11
- # its text in the chosen environments, lets a proofreader click any string and
12
- # suggest a better wording, and stores the suggestions for a developer to apply.
13
- module I18nFeedback
14
- class << self
15
- def config
16
- @config ||= Configuration.new
17
- end
18
-
19
- def configure
20
- yield config
21
- end
22
-
23
- # Is the tool available for this request? True only in an enabled environment
24
- # and when the host's `enabled` predicate passes. Checked on the server for
25
- # every marker, endpoint, and injection, so the client can never turn it on.
26
- def available?(request)
27
- config.environment_enabled? && !!config.enabled.call(request)
28
- end
29
-
30
- # May this request browse and triage the dashboard? Independent of
31
- # `available?` — the dashboard has its own gate so maintainers can review
32
- # suggestions from production even where the widget itself is off.
33
- def admin?(request)
34
- !!config.authorize_admin.call(request)
35
- end
36
- end
37
- end
3
+ # i18n_feedback was renamed to i18n_proofreading. This gem is a thin pointer:
4
+ # it loads the new gem and aliases the constant so an existing app still boots,
5
+ # while nudging you to migrate. See https://github.com/yshmarov/i18n_proofreading
6
+ require "i18n_proofreading"
7
+
8
+ I18nFeedback = I18nProofreading unless defined?(I18nFeedback)
9
+
10
+ warn "[i18n_feedback] This gem has been renamed to `i18n_proofreading`. " \
11
+ "Update your Gemfile to `gem \"i18n_proofreading\"` and follow the migration " \
12
+ "notes (module, mount path, locale scope, cookie, and the " \
13
+ "`i18n_feedback_suggestions` -> `i18n_proofreading_suggestions` table): " \
14
+ "https://github.com/yshmarov/i18n_proofreading"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: i18n_feedback
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.2
4
+ version: 0.8.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yaroslav Shmarov
@@ -10,86 +10,39 @@ cert_chain: []
10
10
  date: 1980-01-02 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
- name: rails
13
+ name: i18n_proofreading
14
14
  requirement: !ruby/object:Gem::Requirement
15
15
  requirements:
16
16
  - - ">="
17
17
  - !ruby/object:Gem::Version
18
- version: '7.1'
18
+ version: '0.9'
19
19
  type: :runtime
20
20
  prerelease: false
21
21
  version_requirements: !ruby/object:Gem::Requirement
22
22
  requirements:
23
23
  - - ">="
24
24
  - !ruby/object:Gem::Version
25
- version: '7.1'
26
- description: |
27
- A mountable Rails engine that renders each translation alongside its i18n key
28
- in development and staging, lets reviewers click any string in the running app
29
- and propose a better wording, and stores those suggestions for a developer to
30
- apply. Framework-agnostic: no CSS or JS framework required.
25
+ version: '0.9'
26
+ description: i18n_feedback has been renamed to i18n_proofreading. This release is
27
+ a deprecation pointer that loads i18n_proofreading.
31
28
  email:
32
29
  - yaroslav.shmarov@clickfunnels.com
33
30
  executables: []
34
31
  extensions: []
35
32
  extra_rdoc_files: []
36
33
  files:
37
- - CHANGELOG.md
38
- - MIT-LICENSE
39
34
  - README.md
40
- - Rakefile
41
- - app/controllers/i18n_feedback/application_controller.rb
42
- - app/controllers/i18n_feedback/suggestions_controller.rb
43
- - app/helpers/i18n_feedback/tag_helper.rb
44
- - app/models/i18n_feedback/application_record.rb
45
- - app/models/i18n_feedback/suggestion.rb
46
- - app/views/i18n_feedback/suggestions/index.html.erb
47
- - app/views/layouts/i18n_feedback/application.html.erb
48
- - config/locales/i18n_feedback.ar.yml
49
- - config/locales/i18n_feedback.bg.yml
50
- - config/locales/i18n_feedback.bn.yml
51
- - config/locales/i18n_feedback.de.yml
52
- - config/locales/i18n_feedback.el.yml
53
- - config/locales/i18n_feedback.en.yml
54
- - config/locales/i18n_feedback.es.yml
55
- - config/locales/i18n_feedback.fr.yml
56
- - config/locales/i18n_feedback.hi.yml
57
- - config/locales/i18n_feedback.hr.yml
58
- - config/locales/i18n_feedback.id.yml
59
- - config/locales/i18n_feedback.it.yml
60
- - config/locales/i18n_feedback.ja.yml
61
- - config/locales/i18n_feedback.ko.yml
62
- - config/locales/i18n_feedback.lb.yml
63
- - config/locales/i18n_feedback.nl.yml
64
- - config/locales/i18n_feedback.pl.yml
65
- - config/locales/i18n_feedback.pt.yml
66
- - config/locales/i18n_feedback.ro.yml
67
- - config/locales/i18n_feedback.ru.yml
68
- - config/locales/i18n_feedback.th.yml
69
- - config/locales/i18n_feedback.tr.yml
70
- - config/locales/i18n_feedback.uk.yml
71
- - config/locales/i18n_feedback.ur.yml
72
- - config/locales/i18n_feedback.vi.yml
73
- - config/locales/i18n_feedback.zh-CN.yml
74
- - config/routes.rb
75
- - lib/generators/i18n_feedback/install/install_generator.rb
76
- - lib/generators/i18n_feedback/install/templates/create_i18n_feedback_suggestions.rb.tt
77
- - lib/generators/i18n_feedback/install/templates/initializer.rb
78
35
  - lib/i18n_feedback.rb
79
- - lib/i18n_feedback/configuration.rb
80
- - lib/i18n_feedback/engine.rb
81
- - lib/i18n_feedback/marking.rb
82
- - lib/i18n_feedback/middleware.rb
83
- - lib/i18n_feedback/version.rb
84
- - lib/i18n_feedback/widget.js
85
- - lib/i18n_feedback/widget.rb
86
- homepage: https://github.com/yshmarov/i18n-feedback
36
+ homepage: https://github.com/yshmarov/i18n_proofreading
87
37
  licenses:
88
38
  - MIT
89
39
  metadata:
90
- source_code_uri: https://github.com/yshmarov/i18n-feedback
91
- changelog_uri: https://github.com/yshmarov/i18n-feedback/blob/main/CHANGELOG.md
40
+ source_code_uri: https://github.com/yshmarov/i18n_proofreading
92
41
  rubygems_mfa_required: 'true'
42
+ post_install_message: |
43
+ i18n_feedback has been renamed to i18n_proofreading.
44
+ Update your Gemfile: gem "i18n_proofreading"
45
+ Migration notes: https://github.com/yshmarov/i18n_proofreading
93
46
  rdoc_options: []
94
47
  require_paths:
95
48
  - lib
@@ -104,8 +57,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
104
57
  - !ruby/object:Gem::Version
105
58
  version: '0'
106
59
  requirements: []
107
- rubygems_version: 3.6.9
60
+ rubygems_version: 4.0.10
108
61
  specification_version: 4
109
- summary: 'In-context i18n proofreading for Rails: click any translated string and
110
- suggest a fix.'
62
+ summary: Renamed to i18n_proofreading install that gem instead.
111
63
  test_files: []