shopify_app 9.0.4 → 11.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (39) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +39 -0
  3. data/README.md +31 -23
  4. data/app/assets/javascripts/shopify_app/storage_access.js +1 -1
  5. data/app/controllers/shopify_app/callback_controller.rb +1 -1
  6. data/app/controllers/shopify_app/sessions_controller.rb +26 -13
  7. data/app/views/shopify_app/sessions/enable_cookies.html.erb +1 -0
  8. data/config/locales/cs.yml +23 -0
  9. data/config/locales/da.yml +20 -0
  10. data/config/locales/de.yml +2 -2
  11. data/config/locales/es.yml +2 -2
  12. data/config/locales/fi.yml +20 -0
  13. data/config/locales/fr.yml +3 -3
  14. data/config/locales/hi.yml +23 -0
  15. data/config/locales/it.yml +2 -3
  16. data/config/locales/ja.yml +1 -1
  17. data/config/locales/ko.yml +19 -0
  18. data/config/locales/ms.yml +22 -0
  19. data/config/locales/nb.yml +21 -0
  20. data/config/locales/nl.yml +7 -7
  21. data/config/locales/pl.yml +21 -0
  22. data/config/locales/pt-BR.yml +2 -2
  23. data/config/locales/pt-PT.yml +22 -0
  24. data/config/locales/sv.yml +21 -0
  25. data/config/locales/th.yml +20 -0
  26. data/config/locales/tr.yml +22 -0
  27. data/config/locales/zh-CN.yml +2 -2
  28. data/config/locales/zh-TW.yml +1 -2
  29. data/docs/Releasing.md +0 -1
  30. data/lib/generators/shopify_app/install/install_generator.rb +10 -8
  31. data/lib/generators/shopify_app/install/templates/shopify_app.rb +5 -2
  32. data/lib/generators/shopify_app/install/templates/user_agent.rb +5 -0
  33. data/lib/shopify_app/controller_concerns/login_protection.rb +12 -3
  34. data/lib/shopify_app/utils.rb +7 -0
  35. data/lib/shopify_app/version.rb +1 -1
  36. data/package-lock.json +1144 -1164
  37. data/package.json +1 -1
  38. data/shopify_app.gemspec +5 -3
  39. metadata +54 -14
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9b0c4f236ab9c71186ed3095ed7da95a10dbaa0fd89cb7e0e848bf04257c21ac
4
- data.tar.gz: 6874836046e839e20e7e7d40f091cab488c4ac61c2fb492ab3044d05cb4c8d9d
3
+ metadata.gz: 5efea1849894001dd33e89e8beaab22dc7630f383a263b1638b2e316478c4927
4
+ data.tar.gz: f6b8fb40731e82c83ebb57548814a9ea6aa5691691606c50fa986191b00f092f
5
5
  SHA512:
6
- metadata.gz: 256797e0845484538af23db0bf1bb90fae3398a5536e99d095d235bd9d812c3e5d00030b8f3c4cd36ef27a16a282317d341413da3d9fb5854309a06cf3af77ec
7
- data.tar.gz: 4369be48e85023c76ea2a7ec05a189a17e8f7416e74e80186e4fb3b133687dd125ad7c40b0bfb808f39ac73a1cfaf5eca69d597d571b96882b0439f376d6c4ab
6
+ metadata.gz: 7d278a7a7dc385940cbfdaa832d7e05f69f31c5bb57ce007f0a776ed1d926682fb36f88de490b63d9208ccca50b39e30057c3c14d3056d80301fed95468484c4
7
+ data.tar.gz: ec1ebf4b962a4cfde1abf6d771caa0e7910ef04cbaade77961f97234799b3db4a21d799434bf20d12b3d00653b59f923871fe03d6132efa880d092d7f2ebb9be
data/CHANGELOG.md CHANGED
@@ -1,3 +1,42 @@
1
+ 11.1.0
2
+ -----
3
+
4
+ * Add Webmock and Pry as development dependencies
5
+ * Update install generator to leverage updates to ShopifyAPI::ApiVersion add in v8.0.0 of the shopify_api gem [#790](https://github.com/Shopify/shopify_app/pull/790)
6
+
7
+
8
+ 11.0.2
9
+ -----
10
+
11
+ * Lock shopify_api gem dependency to `~> 7.0` from `>= 7.0.0`.
12
+ * Remove flakey JS Tests
13
+ * bump sqlite3 development dependency to `~>1.4` from `~> 1.3.6`. [#789](https://github.com/Shopify/shopify_app/pull/789)
14
+
15
+ 11.0.1
16
+ -----
17
+
18
+ * Add dotenv-rails gem to install generator, so apps fetch credentials from `.env` by default: [#776](https://github.com/Shopify/shopify_app/pull/776)
19
+
20
+ 11.0.0
21
+ -----
22
+
23
+ * Rename `login_url` method to `login_url_with_optional_shop` to avoid ambiguity with Rails' route helper method of the
24
+ same name (see [#585](https://github.com/Shopify/shopify_app/pull/585)).
25
+
26
+ 10.0.0
27
+ -----
28
+
29
+ * Make sure OAuth-related redirects return user to originally requested URL once authenticated
30
+ * Add/update translations
31
+ * Update README to clarify nested routes
32
+ * Remove example app. Users should instead use the generators to scaffold an example app.
33
+ * Bump required Rails version to `> 5.2.1` to ensure `5.2.1.1` or greater is used. This ensures two things:
34
+ * Apps are not vulnerable to [CVE-2018-16476](https://nvd.nist.gov/vuln/detail/CVE-2018-16476)
35
+ * Webhook payloads, from Shopify for API version 2019-07, which are processed in ActiveJob background jobs (the
36
+ default behaviour of shopify_app's WebhooksController) are compatible, due to how ActiveJob versions prior to
37
+ 5.2.1.1 process GlobalIDs encoded as string in job parameters. This prevents the
38
+ [exceptions reported previously](https://github.com/Shopify/shopify_app/issues/600).
39
+
1
40
  9.0.4
2
41
  -----
3
42
 
data/README.md CHANGED
@@ -26,7 +26,6 @@ Table of Contents
26
26
  * [App Proxy Controller Generator](#app-proxy-controller-generator)
27
27
  * [Controllers, Routes and Views](#controllers-routes-and-views)
28
28
  * [**Mounting the Engine**](#mounting-the-engine)
29
- * [**Managing Api Keys**](#managing-api-keys)
30
29
  * [**WebhooksManager**](#webhooksmanager)
31
30
  * [**ScripttagsManager**](#scripttagsmanager)
32
31
  * [**AfterAuthenticate Job**](#afterauthenticate-job)
@@ -45,8 +44,6 @@ Description
45
44
  -----------
46
45
  This gem includes a Rails Engine and generators for writing Rails applications using the Shopify API. The Engine provides a SessionsController and all the required code for authenticating with a shop via Oauth (other authentication methods are not supported).
47
46
 
48
- The [example](https://github.com/Shopify/shopify_app/tree/master/example) directory contains an app that was generated with this gem. It also contains sample code demonstrating the usage of the embedded app sdk.
49
-
50
47
  *Note: It's recommended to use this on a new Rails project, so that the generator won't overwrite/delete some of your files.*
51
48
 
52
49
 
@@ -106,11 +103,22 @@ Generators
106
103
  The default generator will run the `install`, `shop`, and `home_controller` generators. This is the recommended way to start your app.
107
104
 
108
105
  ```sh
109
- $ rails generate shopify_app --api_key <your_api_key> --secret <your_app_secret>
106
+ $ rails generate shopify_app
110
107
  ```
111
108
 
112
109
  After running the generator, you will need to run `rake db:migrate` to add tables to your database. You can start your app with `bundle exec rails server` and install your app by visiting localhost.
113
110
 
111
+ ### API Keys
112
+
113
+ The default and install generators have been updated to source Shopify API key and secret from a `.env` file, which you will need to create with the following format:
114
+
115
+ ```
116
+ SHOPIFY_API_KEY=your api key
117
+ SHOPIFY_API_SECRET=your api secret
118
+ ```
119
+
120
+ These values can be found on the "App Setup" page in the [Shopify Partners Dashboard][dashboard].
121
+
114
122
  ### Install Generator
115
123
 
116
124
  ```sh
@@ -118,7 +126,7 @@ $ rails generate shopify_app:install
118
126
 
119
127
  # or optionally with arguments:
120
128
 
121
- $ rails generate shopify_app:install --api_key <your_api_key> --secret <your_app_secret>
129
+ $ rails generate shopify_app:install
122
130
  ```
123
131
 
124
132
  Other options include:
@@ -207,6 +215,19 @@ provider :shopify,
207
215
  callback_path: '/nested/auth/shopify/callback'
208
216
  ```
209
217
 
218
+ You may also need to change your `config/routes.rb` to render a view for `/nested`, since this is what will be rendered in the Shopify Admin of any shops that have installed your app. The engine itself doesn't have a view for this, so you'll need something like this:
219
+
220
+ ```ruby
221
+ # config/routes.rb
222
+ Rails.application.routes.draw do
223
+ root :to => 'something_else#index'
224
+ get "/nested", to: "home#index"
225
+ mount ShopifyApp::Engine, at: '/nested'
226
+ end
227
+ ```
228
+
229
+ Finally, note that if you do this, to add your app to a store, you must navigate to `/nested` in order to render the `Enter your shop domain to log in or install this app.` UI.
230
+
210
231
  ### Custom login URL
211
232
 
212
233
  While you can customize the login view by creating a `/app/views/shopify_app/sessions/new.html.erb` file, you may also want to customize the URL entirely. You can modify your `shopify_app.rb` initializer to provide a custom `login_url` e.g.:
@@ -233,21 +254,6 @@ The current Shopify user will be stored in the rails session at `session[:shopif
233
254
 
234
255
  This will change the type of token that Shopify returns and it will only be valid for a short time. Read more about `Online access` [here](https://help.shopify.com/api/getting-started/authentication/oauth). Note that this means you won't be able to use this token to respond to Webhooks.
235
256
 
236
- Managing Api Keys
237
- -----------------
238
-
239
- The `install` generator places your Api credentials directly into the shopify_app initializer which is convenient and fine for development but once your app goes into production **your api credentials should not be in source control**. When we develop apps we keep our keys in environment variables so a production shopify_app initializer would look like this:
240
-
241
- ```ruby
242
- ShopifyApp.configure do |config|
243
- config.application_name = 'Your app name' # Optional
244
- config.api_key = ENV['SHOPIFY_CLIENT_API_KEY']
245
- config.secret = ENV['SHOPIFY_CLIENT_API_SECRET']
246
- config.scope = 'read_customers, write_products'
247
- config.embedded_app = true
248
- end
249
- ```
250
-
251
257
 
252
258
  WebhooksManager
253
259
  ---------------
@@ -428,7 +434,7 @@ class ReviewsController < ApplicationController
428
434
  end
429
435
  ```
430
436
 
431
- Create your app proxy url in the [Shopify Partners' Dashboard](https://app.shopify.com/services/partners/api_clients), making sure to point it to `https://your_app_website.com/app_proxy`.
437
+ Create your app proxy url in the [Shopify Partners' Dashboard][dashboard], making sure to point it to `https://your_app_website.com/app_proxy`.
432
438
  ![Creating an App Proxy](/images/app-proxy-screenshot.png)
433
439
 
434
440
  Troubleshooting
@@ -465,7 +471,7 @@ config.api_version = '2019-04'
465
471
 
466
472
  ### Session storage change
467
473
 
468
- You will need to add an `api_version` method to you session storage object. The default implmentation for this is.
474
+ You will need to add an `api_version` method to you session storage object. The default implementation for this is.
469
475
  ```ruby
470
476
  def api_version
471
477
  ShopifyApp.configuration.api_version
@@ -474,7 +480,7 @@ end
474
480
 
475
481
  ### Generated file change
476
482
 
477
- `embedded_app.html.erb` the useage of `shop_session.url` needs to be changed to `shop_session.domain`
483
+ `embedded_app.html.erb` the usage of `shop_session.url` needs to be changed to `shop_session.domain`
478
484
  ```erb
479
485
  <script type="text/javascript">
480
486
  ShopifyApp.init({
@@ -504,3 +510,5 @@ is changed to
504
510
  ### ShopifyAPI changes
505
511
 
506
512
  You will need to also follow the ShopifyAPI [upgrade guide](https://github.com/Shopify/shopify_api/blob/master/README.md#-breaking-change-notice-for-version-700-) to ensure your app is ready to work with api versioning.
513
+
514
+ [dashboard]:https://partners.shopify.com
@@ -103,7 +103,7 @@
103
103
 
104
104
  /* ITP 2.0 solution: handles cookie partitioning */
105
105
  StorageAccessHelper.prototype.setUpHelper = function() {
106
- return new ITPHelper({redirectUrl: window.shopOrigin + "/admin/apps/" + window.apiKey});
106
+ return new ITPHelper({redirectUrl: window.shopOrigin + "/admin/apps/" + window.apiKey + window.returnTo});
107
107
  }
108
108
 
109
109
  StorageAccessHelper.prototype.setCookieAndRedirect = function() {
@@ -15,7 +15,7 @@ module ShopifyApp
15
15
  redirect_to return_address
16
16
  else
17
17
  flash[:error] = I18n.t('could_not_log_in')
18
- redirect_to login_url
18
+ redirect_to(login_url_with_optional_shop)
19
19
  end
20
20
  end
21
21
 
@@ -22,14 +22,14 @@ module ShopifyApp
22
22
  does_not_have_storage_access_url: top_level_interaction_path(
23
23
  shop: sanitized_shop_name
24
24
  ),
25
- has_storage_access_url: login_url(top_level: true),
25
+ has_storage_access_url: login_url_with_optional_shop(top_level: true),
26
26
  app_home_url: granted_storage_access_path(shop: sanitized_shop_name),
27
27
  current_shopify_domain: current_shopify_domain,
28
28
  })
29
29
  end
30
30
 
31
31
  def top_level_interaction
32
- @url = login_url(top_level: true)
32
+ @url = login_url_with_optional_shop(top_level: true)
33
33
  validate_shop
34
34
  end
35
35
 
@@ -45,7 +45,7 @@ module ShopifyApp
45
45
  def destroy
46
46
  reset_session
47
47
  flash[:notice] = I18n.t('.logged_out')
48
- redirect_to login_url
48
+ redirect_to(login_url_with_optional_shop)
49
49
  end
50
50
 
51
51
  private
@@ -54,6 +54,8 @@ module ShopifyApp
54
54
  return render_invalid_shop_error unless sanitized_shop_name.present?
55
55
  session['shopify.omniauth_params'] = { shop: sanitized_shop_name }
56
56
 
57
+ session[:return_to] = params[:return_to] if params[:return_to]
58
+
57
59
  if user_agent_can_partition_cookies
58
60
  authenticate_with_partitioning
59
61
  else
@@ -77,7 +79,7 @@ module ShopifyApp
77
79
  authenticate_in_context
78
80
  else
79
81
  set_top_level_oauth_cookie
80
- fullpage_redirect_to enable_cookies_path(shop: sanitized_shop_name)
82
+ enable_cookie_access
81
83
  end
82
84
  end
83
85
 
@@ -96,12 +98,19 @@ module ShopifyApp
96
98
  redirect_to return_address
97
99
  end
98
100
 
101
+ def enable_cookie_access
102
+ fullpage_redirect_to(enable_cookies_path(
103
+ shop: sanitized_shop_name,
104
+ return_to: session[:return_to]
105
+ ))
106
+ end
107
+
99
108
  def authenticate_in_context
100
109
  redirect_to "#{main_app.root_path}auth/shopify"
101
110
  end
102
111
 
103
112
  def authenticate_at_top_level
104
- fullpage_redirect_to login_url(top_level: true)
113
+ fullpage_redirect_to(login_url_with_optional_shop(top_level: true))
105
114
  end
106
115
 
107
116
  def authenticate_in_context?
@@ -119,14 +128,18 @@ module ShopifyApp
119
128
  end
120
129
 
121
130
  def redirect_to_request_storage_access
122
- render :request_storage_access, layout: false, locals: {
123
- does_not_have_storage_access_url: top_level_interaction_path(
124
- shop: sanitized_shop_name
125
- ),
126
- has_storage_access_url: login_url(top_level: true),
127
- app_home_url: granted_storage_access_path(shop: sanitized_shop_name),
128
- current_shopify_domain: current_shopify_domain
129
- }
131
+ render(
132
+ :request_storage_access,
133
+ layout: false,
134
+ locals: {
135
+ does_not_have_storage_access_url: top_level_interaction_path(
136
+ shop: sanitized_shop_name
137
+ ),
138
+ has_storage_access_url: login_url_with_optional_shop(top_level: true),
139
+ app_home_url: granted_storage_access_path(shop: sanitized_shop_name),
140
+ current_shopify_domain: current_shopify_domain,
141
+ }
142
+ )
130
143
  end
131
144
  end
132
145
  end
@@ -17,6 +17,7 @@
17
17
  <script>
18
18
  window.apiKey = "<%= ShopifyApp.configuration.api_key %>";
19
19
  window.shopOrigin = "https://<%= @shop %>";
20
+ window.returnTo = "<%= params[:return_to] %>"
20
21
  </script>
21
22
 
22
23
  <%= javascript_include_tag('shopify_app/enable_cookies', crossorigin: 'anonymous', integrity: true) %>
@@ -0,0 +1,23 @@
1
+ ---
2
+ cs:
3
+ logged_out: Odhlášení proběhlo úspěšně
4
+ could_not_log_in: Nelze se přihlásit do obchodu Shopify
5
+ invalid_shop_url: Neplatná doména obchodu
6
+ enable_cookies_heading: Zapnout soubory cookie z aplikace %{app}
7
+ enable_cookies_body: Pokud chceš v Shopify používat aplikaci %{app}, musíš soubory
8
+ cookie v tomto prohlížeči povolit ručně.
9
+ enable_cookies_footer: Soubory cookie umožňují, aby tě aplikace ověřila pomocí dočasného
10
+ uchování preferencí a osobních údajů. Jejich platnost vyprší po 30 dnech.
11
+ enable_cookies_action: Povolit soubory cookie
12
+ top_level_interaction_heading: Tvůj prohlížeč potřebuje ověřit aplikaci %{app}
13
+ top_level_interaction_body: Tvůj prohlížeč vyžaduje, aby si od tebe aplikace, jako
14
+ je %{app}, nejdřív vyžádaly přístup k souborům cookie, než je pro tebe Shopify
15
+ otevře.
16
+ top_level_interaction_action: Pokračovat
17
+ request_storage_access_heading: Aplikace %{app} potřebuje získat přístup k souborům
18
+ cookie
19
+ request_storage_access_body: Tato aplikace ti umožní ověření prostřednictvím dočasného
20
+ uchování tvých osobních údajů. Pokud chceš používat tuto aplikaci, klikni na tlačítko
21
+ Pokračovat a povol soubory cookie.
22
+ request_storage_access_footer: Platnost souborů cookie vyprší po 30 dnech.
23
+ request_storage_access_action: Pokračovat
@@ -0,0 +1,20 @@
1
+ ---
2
+ da:
3
+ logged_out: Logget ud
4
+ could_not_log_in: Kunne ikke logge ind på Shopify-butik
5
+ invalid_shop_url: Ugyldig butiksdomæne
6
+ enable_cookies_heading: Aktivér cookies fra %{app}
7
+ enable_cookies_body: Du skal manuelt aktivere cookies i denne browser for at kunne
8
+ bruge %{app} i Shopify.
9
+ enable_cookies_footer: Cookies lader appen godkende dig ved at gemme dine præferencer
10
+ og personlige oplysninger midlertidigt. De udløber efter 30 dage.
11
+ enable_cookies_action: Aktivér cookies
12
+ top_level_interaction_heading: Din browser skal godkende %{app}
13
+ top_level_interaction_body: Din browser kræver, at apps som f.eks. %{app} spørger
14
+ dig om adgang til cookies, inden Shopify kan åbne den for dig.
15
+ top_level_interaction_action: Fortsæt
16
+ request_storage_access_heading: "%{app} skal have adgang til cookies"
17
+ request_storage_access_body: Det lader appen godkende dig ved at gemme dine personlige
18
+ oplysninger midlertidigt. Klik på forsæt, og tillad cookies for at bruge appen.
19
+ request_storage_access_footer: Cookies udløber efter 30 dage.
20
+ request_storage_access_action: Fortsæt
@@ -11,8 +11,8 @@ de:
11
11
  Sie laufen nach 30 Tagen ab.
12
12
  enable_cookies_action: Cookies aktivieren
13
13
  top_level_interaction_heading: Ihr Browser muss %{app} authentifizieren
14
- top_level_interaction_body: Ihr Browser verlangt, dass Apps von Drittanbietern wie
15
- %{app} Sie um Zugriff auf Cookies bitten, bevor Shopify sie für Sie öffnen kann.
14
+ top_level_interaction_body: Ihr Browser verlangt, dass Apps wie %{app} Sie um Zugriff
15
+ auf Cookies bitten, bevor Shopify sie für Sie öffnen kann.
16
16
  top_level_interaction_action: Weiter
17
17
  request_storage_access_heading: "%{app} braucht Zugriff auf Cookies"
18
18
  request_storage_access_body: Damit kann die App Sie authentifizieren, indem Ihre
@@ -11,8 +11,8 @@ es:
11
11
  de 30 días.
12
12
  enable_cookies_action: Habilitar cookies
13
13
  top_level_interaction_heading: Tu navegador necesita autenticar %{app}
14
- top_level_interaction_body: Tu navegador requiere aplicaciones externas como %{app}
15
- para solicitarte acceso a cookies antes de que Shopify pueda abrirlo por ti.
14
+ top_level_interaction_body: Tu navegador requiere aplicaciones como %{app} para
15
+ solicitarte acceso a cookies antes de que Shopify pueda abrirlo por ti.
16
16
  top_level_interaction_action: Continuar
17
17
  request_storage_access_heading: "%{app} necesita acceso a las cookies"
18
18
  request_storage_access_body: Esto permite que la aplicación te autentique almacenando
@@ -0,0 +1,20 @@
1
+ ---
2
+ fi:
3
+ logged_out: Olet kirjautunut ulos
4
+ could_not_log_in: Kirjautuminen Shopify-kauppaan ei onnistunut
5
+ invalid_shop_url: Virheellinen kaupan verkkotunnus
6
+ enable_cookies_heading: Ota käyttöön sovelluksen %{app} evästeet
7
+ enable_cookies_body: Sinun on otettava evästeet käyttöön manuaalisesti tässä selaimessa,
8
+ jotta voit käyttää sovellusta %{app} Shopifyssa.
9
+ enable_cookies_footer: Evästeiden avulla sovellus voi todentaa sinut tallentamalla
10
+ asetuksesi ja henkilötietosi tilapäisesti. Ne vanhenevat 30 päivän kuluttua.
11
+ enable_cookies_action: Ota evästeet käyttöön
12
+ top_level_interaction_heading: Selaimesi täytyy todentaa %{app}
13
+ top_level_interaction_body: Selaimesi vaatii sovelluksia, kuten %{app}, pyytämään
14
+ sinulta luvan evästeiden käyttöön, ennen kuin Shopify voi avata sovelluksen.
15
+ top_level_interaction_action: Jatka
16
+ request_storage_access_heading: "%{app} edellyttää evästeiden käyttöä"
17
+ request_storage_access_body: Näin sovellus voi todentaa sinut tallentamalla henkilötietosi
18
+ tilapäisesti. Napsauta Jatka ja salli evästeet sovelluksen käyttämiseksi.
19
+ request_storage_access_footer: Evästeet vanhenevat 30 päivän kuluttua.
20
+ request_storage_access_action: Jatka
@@ -11,9 +11,9 @@ fr:
11
11
  expirent après 30 jours.
12
12
  enable_cookies_action: Activer les cookies
13
13
  top_level_interaction_heading: Votre navigateur doit s'authentifier %{app}
14
- top_level_interaction_body: Votre navigateur nécessite des applications tierces
15
- telles que %{app} pour vous demander l'accès aux cookies avant que Shopify ne
16
- puisse l'ouvrir pour vous.
14
+ top_level_interaction_body: Votre navigateur nécessite des applications telles que
15
+ %{app} pour vous demander l'accès aux cookies avant que Shopify ne puisse l'ouvrir
16
+ pour vous.
17
17
  top_level_interaction_action: Continuer
18
18
  request_storage_access_heading: "%{app} a besoin d'accéder aux cookies"
19
19
  request_storage_access_body: Cela permet à l'application de vous authentifier en
@@ -0,0 +1,23 @@
1
+ ---
2
+ hi:
3
+ logged_out: सफलतापूर्वक लॉग आउट कर दिया
4
+ could_not_log_in: Shopify स्टोर में लॉग इन नहीं किया जा सका
5
+ invalid_shop_url: अमान्य शॉप डोमेन
6
+ enable_cookies_heading: "%{app} के कुकीज़ सक्षम करें"
7
+ enable_cookies_body: आपको %{app} का उपयोग Shopify में करने के लिए इस ब्राउज़र में
8
+ कुकीज़ मैन्युअल रूप से सक्षम करने चाहिए.
9
+ enable_cookies_footer: कुकीज़ अस्थायी रूप से आपकी वरीयताएं और व्यक्तिगत जानकारी स्टोर
10
+ कर ऐप को आपको प्रमाणित करने देते हैं. इनकी समय-सीमा 30 दिनों बाद समाप्त हो जाती
11
+ है.
12
+ enable_cookies_action: कुकीज़ को सक्षम करें
13
+ top_level_interaction_heading: आपके ब्राउज़र को %{app} प्रमाणित करने की आवश्यकता
14
+ है
15
+ top_level_interaction_body: आपके ब्राउज़र को %{app} जैसे ऐप की ज़रूरत होती है, जो
16
+ Shopify द्वारा आपके लिए उसे खोलने से पहले कुकीज़ पर पहुंचने करने की अनुमति मांगे.
17
+ top_level_interaction_action: जारी रखें
18
+ request_storage_access_heading: "%{app} को कुकीज़ पर पहुंच करने की आवश्यकता है"
19
+ request_storage_access_body: यह आपकी व्यक्तिगत जानकारी अस्थायी रूप से स्टोर कर ऐप
20
+ को आपको प्रमाणित करने देता है. जारी रखें पर क्लिक करें और कुकीज़ को ऐप उपयोग करने
21
+ की अनुमति दें.
22
+ request_storage_access_footer: कुकीज़ की समय-सीमा 30 दिनों बाद समाप्त हो जाती है.
23
+ request_storage_access_action: जारी रखें
@@ -10,9 +10,8 @@ it:
10
10
  temporaneamente le tue preferenze e informazioni personali. Scadono dopo 30 giorni.
11
11
  enable_cookies_action: Abilita i cookie
12
12
  top_level_interaction_heading: Il tuo browser deve autenticare %{app}
13
- top_level_interaction_body: Il tuo browser richiede che app di terze parti come
14
- %{app} ti chiedano l'accesso ai cookie prima dell'apertura automatica da parte
15
- di Shopify.
13
+ top_level_interaction_body: Il tuo browser richiede che app come %{app} ti chiedano
14
+ l'accesso ai cookie prima dell'apertura automatica da parte di Shopify.
16
15
  top_level_interaction_action: Continua
17
16
  request_storage_access_heading: "%{app} deve accedere ai cookie"
18
17
  request_storage_access_body: L'app potrà così autenticarti memorizzando temporaneamente
@@ -8,7 +8,7 @@ ja:
8
8
  enable_cookies_footer: Cookieを使用すると、各種設定や個人情報を一時的に保存することで、アプリ認証を受けることができます。30日後に有効期限が切れます。
9
9
  enable_cookies_action: Cookieを有効にする
10
10
  top_level_interaction_heading: お使いのブラウザを更新する必要があります%{app}
11
- top_level_interaction_body: Shopifyがアプリを開けるように、ブラウザーはCookie にアクセスするための%{app}のような外部アプリが必要です。
11
+ top_level_interaction_body: Shopifyがアプリを開けるように、ブラウザーはCookieにアクセスするための%{app}のようなアプリが必要です。
12
12
  top_level_interaction_action: 続ける
13
13
  request_storage_access_heading: "%{app}クッキーにアクセスする必要がある"
14
14
  request_storage_access_body: Cookieを使用すると、個人情報を一時的に保存することで、アプリ認証を受けることができます。[続行]