@shift72/core-template 1.3.0-alpha.0 → 1.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (66) hide show
  1. package/.github/pull_request_template.md +1 -1
  2. package/CHANGELOG.md +41 -1
  3. package/kibble.json +3 -3
  4. package/package.json +2 -2
  5. package/scripts/core-template-version.js +4 -4
  6. package/scripts/css-local-get.js +12 -5
  7. package/scripts/css-local-put.js +3 -3
  8. package/scripts/language-file-validator.js +1 -1
  9. package/scripts/translate.mjs +2 -3
  10. package/site/ar_LB.all.json +104 -10
  11. package/site/ca_ES.all.json +74 -8
  12. package/site/da_DK.all.json +76 -10
  13. package/site/de_DE.all.json +74 -8
  14. package/site/el_EL.all.json +79 -4
  15. package/site/en_AU.all.json +79 -4
  16. package/site/es_ES.all.json +79 -4
  17. package/site/es_MX.all.json +81 -6
  18. package/site/et_ET.all.json +73 -7
  19. package/site/fi_FI.all.json +77 -2
  20. package/site/fr_FR.all.json +80 -5
  21. package/site/hr_HR.all.json +85 -9
  22. package/site/hu_HU.all.json +73 -7
  23. package/site/it_IT.all.json +79 -4
  24. package/site/ja_JP.all.json +71 -0
  25. package/site/lt_LT.all.json +92 -3
  26. package/site/manifest.json.jet +4 -2
  27. package/site/nl_BE.all.json +75 -0
  28. package/site/no_NO.all.json +80 -5
  29. package/site/pl_PL.all.json +92 -3
  30. package/site/plans.html.jet +12 -2
  31. package/site/pt_BR.all.json +80 -5
  32. package/site/pt_PT.all.json +78 -3
  33. package/site/ru_RU.all.json +93 -4
  34. package/site/search.html.jet +3 -1
  35. package/site/sr_SR.all.json +85 -3
  36. package/site/static/js/main.js +1 -0
  37. package/site/static/scripts/main.js.map +1 -1
  38. package/site/styles/_availability-tags.scss +1 -1
  39. package/site/styles/_awards.scss +2 -1
  40. package/site/styles/_buttons.scss +20 -10
  41. package/site/styles/_carousel.scss +7 -3
  42. package/site/styles/_cookie-consent.scss +1 -0
  43. package/site/styles/_footer.scss +10 -31
  44. package/site/styles/_forms.scss +11 -0
  45. package/site/styles/_meta-detail.scss +27 -32
  46. package/site/styles/_meta-item-tagline.scss +1 -1
  47. package/site/styles/_mixins.scss +23 -1
  48. package/site/styles/_nav.scss +49 -65
  49. package/site/styles/_share-modal.scss +12 -7
  50. package/site/styles/_shopping.scss +5 -0
  51. package/site/styles/_typography.scss +30 -22
  52. package/site/styles/_variables.scss +93 -46
  53. package/site/subscriptions.html.jet +1 -1
  54. package/site/templates/application/application.jet +13 -13
  55. package/site/templates/application/brand/logo.jet +11 -0
  56. package/site/templates/application/brand/sponsors.jet +11 -0
  57. package/site/templates/application/footer/brand.jet +3 -1
  58. package/site/templates/application/footer/sponsor-banner.jet +3 -3
  59. package/site/templates/application/head/seo.jet +1 -1
  60. package/site/templates/application/nav/nav.jet +5 -4
  61. package/site/templates/collection/carousel/carousel.jet +4 -1
  62. package/site/templates/collection/carousel/item.jet +3 -1
  63. package/site/templates/tv/detail.jet +4 -2
  64. package/site/tr_TR.all.json +79 -4
  65. package/site/uk_UA.all.json +93 -4
  66. package/site/zh_TW.all.json +73 -2
@@ -4,14 +4,11 @@
4
4
  {{import "./google.jet" }}
5
5
  {{import "./footer/footer.jet" }}
6
6
 
7
- {{CDN := "//cdn.shift72.com/1.3"}}
7
+ {{CDN := "//cdn.shift72.com/latest"}}
8
8
  {*{CDN := "//localhost:3000"}*}
9
9
 
10
- {{CSSFilename := ""}}
11
- {{if isEnabled("self_service_css") && site.CSSFilename != "" }}
12
- {{CSSFilename = site.CSSFilename}}
13
- {{end}}
14
- {*{CSSFilename = "local.css"}*}
10
+ {{CSSFileURL := site.SiteBrand.GetLink("css", "")}}
11
+ {*{CSSFileURL := "/styles/local.css"}*}
15
12
 
16
13
  <!DOCTYPE html>
17
14
  <html lang="{{lang.Code}}">
@@ -34,30 +31,33 @@
34
31
 
35
32
  {{yield font()}}
36
33
  <link rel="stylesheet" href="/styles/main.css">
37
- {{if CSSFilename != "" }}
38
- <link rel="stylesheet" href="/styles/{{CSSFilename}}">
34
+ {{if CSSFileURL != "" }}
35
+ <link rel="stylesheet" href="{{CSSFileURL}}">
39
36
  {{end}}
40
37
 
41
- <link rel="shortcut icon" href="/favicon.ico" type="image/x-icon">
42
- <link rel="icon" href="/favicon.ico" type="image/x-icon">
38
+ {{faviconURL := site.SiteBrand.GetImage("favicon", "/favicon.ico")}}
39
+ <link rel="shortcut icon" href="{{faviconURL}}" type="image/x-icon">
40
+ <link rel="icon" href="{{faviconURL}}" type="image/x-icon">
43
41
 
44
42
  {{block head()}}
45
43
  {{yield seo()}}
46
44
  {{end}}
47
45
 
48
- <script src="https://cdn.polyfill.io/v2/polyfill.min.js?features=default,fetch" defer></script>
46
+ <script src="https://polyfill.io/v3/polyfill.min.js?features=Intl%2Cdefault%2Cfetch" defer></script>
49
47
  <script src="{{CDN}}/s72.core.js" defer></script>
50
48
  <script src="{{CDN}}/s72.ui.js" defer></script>
51
49
 
52
- <script src="/scripts/main.js" defer></script>
50
+ <script src="/scripts/main.js" defer></script>
53
51
 
54
52
  <script src="{{CDN}}/s72.transactional.js" defer></script>
55
53
  <script src="https://js.stripe.com/v3/" defer></script>
56
54
 
55
+ {* get default language from site record or kibble.json depening on if db translations is enabled *}
56
+ {{ defaultLanguage := isEnabled("site_translations_api") ? site.DefaultLanguage : site.SiteConfig.DefaultLanguage }}
57
57
  <script>
58
58
  window.addEventListener('DOMContentLoaded', function(){
59
59
  s72.cfg(function(){ return s72.i18n.load('{{lang.Code}}', '/{{lang.DefinitionFilePath}}'); });
60
- s72.cfg(function(){ return s72.i18n.href.setLanguages('{{site.SiteConfig.DefaultLanguage}}', '{{lang.Code}}'); });
60
+ s72.cfg(function(){ return s72.i18n.href.setLanguages('{{defaultLanguage}}', '{{lang.Code}}'); });
61
61
  s72.boot({
62
62
  config: {{ site.Config | json | raw }},
63
63
  toggles: {{ site.Toggles | json | raw }},
@@ -0,0 +1,11 @@
1
+ {{block logo(class="")}}
2
+ {{logo1x := site.SiteBrand.GetImage("logo@1x", "/images/common/logo.png")}}
3
+ {{logo2x := site.SiteBrand.GetImage("logo@2x", "/images/common/logo@2x.png")}}
4
+ {{siteName := site.Config.GetSiteName()}}
5
+
6
+ <img class="{{class}}"
7
+ srcset="{{logo1x}} 300w, {{logo2x}} 600w"
8
+ sizes="(max-width: 768px) 300px, 600px"
9
+ src="{{logo2x}}"
10
+ alt="{{siteName}}">
11
+ {{end}}
@@ -0,0 +1,11 @@
1
+ {{block sponsors(class="")}}
2
+ {{sponsorsXXXS := site.SiteBrand.GetImage("sponsors-xxxs", "/images/common/sponsors-xxxs.png")}}
3
+ {{sponsorsXS := site.SiteBrand.GetImage("sponsors-xs", "/images/common/sponsors-xs.png")}}
4
+ {{sponsorsMD := site.SiteBrand.GetImage("sponsors-md", "/images/common/sponsors-md.png")}}
5
+
6
+ <picture class="{{class}}">
7
+ <source class="sponsor-image" srcset="{{sponsorsMD}}" media="(min-width: 768px)">
8
+ <source class="sponsor-image" srcset="{{sponsorsXS}}" media="(min-width: 475px)">
9
+ <img class="sponsor-image" src="{{sponsorsXXXS}}">
10
+ </picture>
11
+ {{end}}
@@ -1,5 +1,7 @@
1
+ {{import "../brand/logo.jet"}}
2
+
1
3
  {{block footerBrand()}}
2
4
  <a class="footer-brand-link" href="{{routeToPath("/")}}" aria-label="{{site.Config.GetSiteName()}}">
3
- <s72-image class="footer-brand-image" src="/images/common/logo.png" alt="{{site.Config.GetSiteName()}}"></s72-image>
5
+ {{yield logo(class="footer-brand-image")}}
4
6
  </a>
5
7
  {{end}}
@@ -1,9 +1,9 @@
1
+ {{import "../brand/sponsors.jet"}}
2
+
1
3
  {{block sponsorBanner()}}
2
4
  {{if config("show_sponsor_banner") == "true"}}
3
5
  <div class="sponsor-banner">
4
- <s72-image class="sponsors-xxxs" src="/images/common/sponsors-xxxs.png"></s72-image>
5
- <s72-image class="sponsors-xs" src="/images/common/sponsors-xs.png"></s72-image>
6
- <s72-image class="sponsors-md" src="/images/common/sponsors-md.png"></s72-image>
6
+ {{yield sponsors(class="sponsor-picture")}}
7
7
  </div>
8
8
  {{end}}
9
9
  {{end}}
@@ -9,7 +9,7 @@
9
9
  {{end}}
10
10
 
11
11
  {* Set this to be a local file path to have a default SEO sharing image e.g. "/images/common/logo.png" *}
12
- {{seoImage := site.SiteConfig.SiteURL + "/images/common/facebook-image.png"}}
12
+ {{seoImage := site.SiteBrand.GetImage("facebook-image", site.SiteConfig.SiteURL + "/images/common/facebook-image.png")}}
13
13
  {{if isset(.Seo) && len(.Seo.Image) > 0}}
14
14
  {{seoImage = .Seo.Image}}
15
15
  {{end}}
@@ -1,16 +1,17 @@
1
1
  {{import "./user_logged_out.jet"}}
2
2
  {{import "./user_logged_in.jet"}}
3
3
  {{import "./header-banner.jet"}}
4
+ {{import "../brand/logo.jet"}}
4
5
 
5
6
  {{block nav(showSubNav=true)}}
6
7
  <header class="navigation" data-toggle="affix">
7
8
  {{yield headerBanner()}}
8
9
  <div class="navbar-brand-container-tablet">
9
- <a class="navbar-brand" href="{{routeToPath("/")}}">{{site.Config.GetSiteName()}}</a>
10
+ <a class="navbar-brand-logo" href="{{routeToPath("/")}}">{{yield logo()}}</a>
10
11
  </div>
11
12
  <div class="navbar" aria-label="{{i18n("wcag_aria_label_nav_main")}}">
12
13
  <div class="navbar-brand-container">
13
- <a class="navbar-brand" href="{{routeToPath("/")}}">{{site.Config.GetSiteName()}}</a>
14
+ <a class="navbar-brand-logo" href="{{routeToPath("/")}}">{{yield logo()}}</a>
14
15
  </div>
15
16
 
16
17
  {{if config("search_disabled") != "true"}}
@@ -18,8 +19,8 @@
18
19
  <button type="button" class="btn-search-open" aria-label="open search" tabindex="-1">
19
20
  <i class="fa fa-search search-icon"></i>
20
21
  </button>
21
- <input class="form-control form-control-search" type="search" placeholder="{{i18n("search_control_placeholder")}}" name="q" aria-label="{{i18n("search_control_placeholder")}}">
22
- <button class="sr-only" type="submit">{{i18n("search_control_submit")}}</button>
22
+ <input class="form-control form-control-search" type="search" placeholder="{{i18n("nav_search_control_placeholder")}}" name="q" aria-label="{{i18n("nav_search_control_placeholder")}}">
23
+ <button class="sr-only" type="submit">{{i18n("nav_search_control_sr_submit")}}</button>
23
24
  <button type="button" class="btn-search-close" aria-label="close search" tabindex="-1">
24
25
  <i class="fa fa-times"></i>
25
26
  </button>
@@ -8,8 +8,11 @@
8
8
  {{end}}
9
9
  {{items := .Items[0:maxSlides]}}
10
10
 
11
+ {{playSpeed := config("carousel_play_speed")}}
12
+ {{fadeTime := config("carousel_fade_time")}}
13
+
11
14
  {{if len(items) > 0}}
12
- <s72-carousel>
15
+ <s72-carousel play-speed="{{playSpeed}}" fade-time="{{fadeTime}}">
13
16
  <section class="page-collection page-collection-carousel" aria-label="{{i18n("wcag_aria_label_carousel")}}">
14
17
  <h2 class="sr-only">{{i18n("wcag_carousel_h2")}}</h2>
15
18
 
@@ -33,9 +33,11 @@
33
33
  {{yield carouselItemSynopsis(synopsis=item.InnerItem.Tagline)}}
34
34
  {{end}}
35
35
 
36
+ <s72-availability-label data-slug="{{item.Slug}}"></s72-availability-label>
37
+
36
38
  {{yield ctaButtons(itemType=item.ItemType) item.InnerItem}}
37
39
 
38
- <s72-availability-label data-slug="{{item.Slug}}"></s72-availability-label>
40
+
39
41
  </div>
40
42
  </div>
41
43
  {{end}}
@@ -31,8 +31,10 @@
31
31
  {{end}}
32
32
  <div class="meta-detail-content">
33
33
  <h1>{{tvseason.GetTitle(i18n)}}</h1>
34
- <div class="meta-detail-tagline">
35
- {{yield metaItemTagline() tvseason}}
34
+ <div class="meta-detail-tagline-and-classification">
35
+ <div class="meta-detail-tagline">
36
+ {{yield metaItemTagline() tvseason}}
37
+ </div>
36
38
  </div>
37
39
  <s72-availability-label data-slug="{{tvseason.Slug}}"></s72-availability-label>
38
40
 
@@ -551,10 +551,10 @@
551
551
  "other": "İlginiz için teşekkür ederiz."
552
552
  },
553
553
  "shopping_error_incorrect_cvc": {
554
- "other": "Lütfen geçerli bir CVV girin."
554
+ "other": "Lütfen geçerli bir CVC girin."
555
555
  },
556
556
  "shopping_error_invalid_cvc": {
557
- "other": "Lütfen geçerli bir CVV girin."
557
+ "other": "Lütfen geçerli bir CVC girin."
558
558
  },
559
559
  "shopping_error_incorrect_number": {
560
560
  "other": "Lütfen geçerli bir Kredi Kart Numarası girin."
@@ -631,6 +631,9 @@
631
631
  "shopping_error_payment_intent_authentication_failure": {
632
632
  "other": "Kredi Kartınız reddedildi. Lütfen tekrar deneyin."
633
633
  },
634
+ "shopping_error_card_not_supported": {
635
+ "other": "Kartınız desteklenmiyor."
636
+ },
634
637
  "shopping_complete_rental": {
635
638
  "other": "Başardınız!"
636
639
  },
@@ -980,7 +983,7 @@
980
983
  "other": "Hüküm ve şartları kabul etmelisiniz."
981
984
  },
982
985
  "shopping_error_item_limit_exceeded": {
983
- "other": " Ne yazık ki{{.Title}} tükendi. ."
986
+ "other": " Ne yazık ki{{.Title}} tükendi."
984
987
  },
985
988
  "shopping_card_change": {
986
989
  "other": "Kredi kartı doğru değil? <a href=\"{{.SubscriptionsURL}}\">Kartınızı güncellemek için buraya tıklayın.</a>"
@@ -1005,7 +1008,7 @@
1005
1008
  "other": "Her Ücretli {{.Interval}} sizin sonra {{.Count}} günlük ücretsiz deneme sürümü bitmeden."
1006
1009
  },
1007
1010
  "shopping_price_plan_note_without_trial": {
1008
- "other": "Her {{.Interval}} ."
1011
+ "other": "Her {{.Interval}}."
1009
1012
  },
1010
1013
  "shopping_price_plan_note_interval": {
1011
1014
  "one": "{{.Interval}}",
@@ -1358,5 +1361,77 @@
1358
1361
  },
1359
1362
  "stripe_card_not_supported": {
1360
1363
  "other": "Kartınız desteklenmiyor."
1364
+ },
1365
+ "nav_search_control_placeholder": {
1366
+ "other": "Arama"
1367
+ },
1368
+ "nav_search_control_sr_submit": {
1369
+ "other": "Aramayı gönder"
1370
+ },
1371
+ "shopping_info_plan_interval": {
1372
+ "one": "{{.Interval}} otomatik olarak yeniler",
1373
+ "other": "Otomatik olarak her yeniler {{.Count}} {{.Interval}}"
1374
+ },
1375
+ "shopping_info_trial_period": {
1376
+ "one": "24 saatlik ücretsiz denemenizi şimdi deneyin!",
1377
+ "other": "Ücretsiz {{.Count}} günlük denemenizi deneyin!"
1378
+ },
1379
+ "usersubscriptions_page_header_seo": {
1380
+ "other": "Abonelikler ve Faturalandırma"
1381
+ },
1382
+ "usersubscriptions_subscription_status_past_due": {
1383
+ "other": "vadesi geçmiş"
1384
+ },
1385
+ "usersubscriptions_subscription_status_unpaid": {
1386
+ "other": "ödenmemiş"
1387
+ },
1388
+ "usersubscriptions_subscription_status_cancelled": {
1389
+ "other": "İptal edildi"
1390
+ },
1391
+ "usersubscriptions_subscription_status_cancelling": {
1392
+ "other": "İptal"
1393
+ },
1394
+ "interval_day": {
1395
+ "one": "gün",
1396
+ "other": "günler"
1397
+ },
1398
+ "interval_week": {
1399
+ "one": "hafta",
1400
+ "other": "haftalar"
1401
+ },
1402
+ "interval_month": {
1403
+ "one": "ay",
1404
+ "other": "aylar"
1405
+ },
1406
+ "interval_year": {
1407
+ "one": "yıl",
1408
+ "other": "yıllar"
1409
+ },
1410
+ "shopping_error_processing_error": {
1411
+ "other": "Kartınız işlenirken bir hata oluştu. Daha sonra veya farklı bir ödeme yöntemiyle tekrar deneyin."
1412
+ },
1413
+ "shopping_error_invalid_session_token": {
1414
+ "other": "Alışveriş oturumunun süresi doldu, lütfen tekrar deneyin."
1415
+ },
1416
+ "shopping_error_credit_discounts_not_allowed": {
1417
+ "other": "Bu satın alma veya kiralama için promosyon kodu kullanamazsınız"
1418
+ },
1419
+ "shopping_error_discount_coming_soon": {
1420
+ "other": "Bu promosyon kodu henüz geçerli değil"
1421
+ },
1422
+ "shopping_error_discount_not_allowed_on_free_session": {
1423
+ "other": "Promosyon kodları ücretsiz alışveriş seanslarına uygulanamaz"
1424
+ },
1425
+ "shopping_error_discount_not_allowed_on_processing_session": {
1426
+ "other": "Promosyon kodları, satın alma işlemi tamamlandıktan sonra uygulanamaz"
1427
+ },
1428
+ "shopping_error_discount_redemption_failed": {
1429
+ "other": "Promosyon kodu uygulanamadı, lütfen tekrar deneyin"
1430
+ },
1431
+ "shopping_error_invalid_code": {
1432
+ "other": "Geçersiz reklam kodu"
1433
+ },
1434
+ "shopping_error_missing_code": {
1435
+ "other": "Promosyon kodu sağlanmadı"
1361
1436
  }
1362
1437
  }
@@ -615,10 +615,10 @@
615
615
  "other": "Сталася помилка."
616
616
  },
617
617
  "shopping_error_incorrect_cvc": {
618
- "other": "Будь ласка, введіть дійсний CVV."
618
+ "other": "Будь ласка, введіть дійсний CVC."
619
619
  },
620
620
  "shopping_error_invalid_cvc": {
621
- "other": "Будь ласка, введіть дійсний CVV."
621
+ "other": "Будь ласка, введіть дійсний CVC."
622
622
  },
623
623
  "shopping_error_incorrect_number": {
624
624
  "other": "Будь ласка, введіть дійсний номер банківської картки."
@@ -695,6 +695,9 @@
695
695
  "shopping_error_payment_intent_authentication_failure": {
696
696
  "other": "Банківську картку відхилено. Спробуйте ще раз."
697
697
  },
698
+ "shopping_error_card_not_supported": {
699
+ "other": "Ваша картка не підтримується."
700
+ },
698
701
  "shopping_complete_rental": {
699
702
  "other": "Успішно!"
700
703
  },
@@ -1125,7 +1128,7 @@
1125
1128
  "other": "Заряджені кожен {{.Interval}} після вашого {{.Count}} дня закінчується безкоштовно суд."
1126
1129
  },
1127
1130
  "shopping_price_plan_note_without_trial": {
1128
- "other": "Стягується через кожний {{.Interval}} ."
1131
+ "other": "Стягується через кожний {{.Interval}}."
1129
1132
  },
1130
1133
  "shopping_price_plan_note_interval": {
1131
1134
  "one": "{{.Interval}}",
@@ -1154,7 +1157,9 @@
1154
1157
  },
1155
1158
  "shopping_info_trial_period_offer": {
1156
1159
  "one": "Спробуйте безкоштовну 24-годинну пробну версію зараз!",
1157
- "other": "Спробуйте безкоштовну пробну версію {{.Count}}"
1160
+ "few": "Спробуйте {{.Count}}-денну безкоштовну пробну версію!",
1161
+ "many": "Спробуйте {{.Count}}-денну безкоштовну пробну версію!",
1162
+ "other": "Спробуйте {{.Count}}-денну безкоштовну пробну версію!"
1158
1163
  },
1159
1164
  "plans_page_header": {
1160
1165
  "other": "Доступні плани"
@@ -1398,5 +1403,89 @@
1398
1403
  },
1399
1404
  "stripe_card_not_supported": {
1400
1405
  "other": "Ваша картка не підтримується."
1406
+ },
1407
+ "nav_search_control_placeholder": {
1408
+ "other": "Пошук"
1409
+ },
1410
+ "nav_search_control_sr_submit": {
1411
+ "other": "Шукати"
1412
+ },
1413
+ "shopping_info_plan_interval": {
1414
+ "one": "Автоматично поновлюється через кожний {{.Interval}}",
1415
+ "few": "Автоматично оновлює кожні {{.Count}} {{.Interval}} сек",
1416
+ "many": "Автоматично оновлює кожні {{.Count}} {{.Interval}} сек",
1417
+ "other": "Автоматично оновлює кожні {{.Count}} {{.Interval}} сек"
1418
+ },
1419
+ "shopping_info_trial_period": {
1420
+ "one": "Спробуйте безкоштовну 24-годинну пробну версію зараз!",
1421
+ "few": "Спробуйте {{.Count}}-денну безкоштовну пробну версію!",
1422
+ "many": "Спробуйте {{.Count}}-денну безкоштовну пробну версію!",
1423
+ "other": "Спробуйте {{.Count}}-денну безкоштовну пробну версію!"
1424
+ },
1425
+ "usersubscriptions_page_header_seo": {
1426
+ "other": "Підписки та виставлення рахунків"
1427
+ },
1428
+ "usersubscriptions_subscription_status_past_due": {
1429
+ "other": "Прострочено"
1430
+ },
1431
+ "usersubscriptions_subscription_status_unpaid": {
1432
+ "other": "Неоплачений"
1433
+ },
1434
+ "usersubscriptions_subscription_status_cancelled": {
1435
+ "other": "Скасовано"
1436
+ },
1437
+ "usersubscriptions_subscription_status_cancelling": {
1438
+ "other": "Скасування"
1439
+ },
1440
+ "interval_day": {
1441
+ "one": "день",
1442
+ "few": "днів",
1443
+ "many": "днів",
1444
+ "other": "днів"
1445
+ },
1446
+ "interval_week": {
1447
+ "one": "тиждень",
1448
+ "few": "тижнів",
1449
+ "many": "тижнів",
1450
+ "other": "тижнів"
1451
+ },
1452
+ "interval_month": {
1453
+ "one": "місяць",
1454
+ "few": "місяців",
1455
+ "many": "місяців",
1456
+ "other": "місяців"
1457
+ },
1458
+ "interval_year": {
1459
+ "one": "рік",
1460
+ "few": "років",
1461
+ "many": "років",
1462
+ "other": "років"
1463
+ },
1464
+ "shopping_error_processing_error": {
1465
+ "other": "Під час обробки вашої картки сталася помилка. Спробуйте пізніше або іншим способом оплати."
1466
+ },
1467
+ "shopping_error_invalid_session_token": {
1468
+ "other": "Сеанс покупки закінчився, повторіть спробу."
1469
+ },
1470
+ "shopping_error_credit_discounts_not_allowed": {
1471
+ "other": "Ви не можете використовувати промокод для цієї покупки або оренди"
1472
+ },
1473
+ "shopping_error_discount_coming_soon": {
1474
+ "other": "Цей промокод ще не дійсний"
1475
+ },
1476
+ "shopping_error_discount_not_allowed_on_free_session": {
1477
+ "other": "Промокоди не можуть бути застосовані до безкоштовних сеансів покупок"
1478
+ },
1479
+ "shopping_error_discount_not_allowed_on_processing_session": {
1480
+ "other": "Промокоди не можна застосувати після завершення покупки"
1481
+ },
1482
+ "shopping_error_discount_redemption_failed": {
1483
+ "other": "Не вдалося застосувати промокод, повторіть спробу"
1484
+ },
1485
+ "shopping_error_invalid_code": {
1486
+ "other": "Недійсний промокод"
1487
+ },
1488
+ "shopping_error_missing_code": {
1489
+ "other": "Промокод не надано"
1401
1490
  }
1402
1491
  }
@@ -605,10 +605,10 @@
605
605
  "other": "發生錯誤"
606
606
  },
607
607
  "shopping_error_incorrect_cvc": {
608
- "other": "請輸入有效的CVV"
608
+ "other": "請輸入有效的CVC"
609
609
  },
610
610
  "shopping_error_invalid_cvc": {
611
- "other": "請輸入有效的CVV"
611
+ "other": "請輸入有效的CVC"
612
612
  },
613
613
  "shopping_error_incorrect_number": {
614
614
  "other": "請輸入有效的信用卡卡號"
@@ -685,6 +685,9 @@
685
685
  "shopping_error_payment_intent_authentication_failure": {
686
686
  "other": "輸入的信用卡遭拒絕。請再試一次。"
687
687
  },
688
+ "shopping_error_card_not_supported": {
689
+ "other": "不支持您的卡。"
690
+ },
688
691
  "shopping_complete_rental": {
689
692
  "other": "付費成功!"
690
693
  },
@@ -1352,5 +1355,73 @@
1352
1355
  },
1353
1356
  "stripe_card_not_supported": {
1354
1357
  "other": "不支持您的卡。"
1358
+ },
1359
+ "nav_search_control_placeholder": {
1360
+ "other": "關鍵字搜尋"
1361
+ },
1362
+ "nav_search_control_sr_submit": {
1363
+ "other": "送出"
1364
+ },
1365
+ "shopping_info_plan_interval": {
1366
+ "one": "{{.Interval}}自動更新",
1367
+ "other": "自動更新每個{{.Count}} {{.Interval}}"
1368
+ },
1369
+ "shopping_info_trial_period": {
1370
+ "one": "立即試用您的 24 小時免費試用版!",
1371
+ "other": "免費{{.Count}}天!"
1372
+ },
1373
+ "usersubscriptions_page_header_seo": {
1374
+ "other": "订阅和计费"
1375
+ },
1376
+ "usersubscriptions_subscription_status_past_due": {
1377
+ "other": "逾期"
1378
+ },
1379
+ "usersubscriptions_subscription_status_unpaid": {
1380
+ "other": "未付"
1381
+ },
1382
+ "usersubscriptions_subscription_status_cancelled": {
1383
+ "other": "取消"
1384
+ },
1385
+ "usersubscriptions_subscription_status_cancelling": {
1386
+ "other": "取消"
1387
+ },
1388
+ "interval_day": {
1389
+ "other": "天"
1390
+ },
1391
+ "interval_week": {
1392
+ "other": "週"
1393
+ },
1394
+ "interval_month": {
1395
+ "other": "月"
1396
+ },
1397
+ "interval_year": {
1398
+ "other": "年"
1399
+ },
1400
+ "shopping_error_processing_error": {
1401
+ "other": "處理您的卡時發生錯誤。請稍後重試或使用其他付款方式。"
1402
+ },
1403
+ "shopping_error_invalid_session_token": {
1404
+ "other": "購物會話已過期,請重試。"
1405
+ },
1406
+ "shopping_error_credit_discounts_not_allowed": {
1407
+ "other": "您不能為此購買或租賃使用促銷代碼"
1408
+ },
1409
+ "shopping_error_discount_coming_soon": {
1410
+ "other": "該促銷代碼無效"
1411
+ },
1412
+ "shopping_error_discount_not_allowed_on_free_session": {
1413
+ "other": "促銷代碼不能應用於免費購物時段"
1414
+ },
1415
+ "shopping_error_discount_not_allowed_on_processing_session": {
1416
+ "other": "購買完成後無法使用促銷代碼"
1417
+ },
1418
+ "shopping_error_discount_redemption_failed": {
1419
+ "other": "無法應用促銷代碼,請重試"
1420
+ },
1421
+ "shopping_error_invalid_code": {
1422
+ "other": "促銷代碼無效"
1423
+ },
1424
+ "shopping_error_missing_code": {
1425
+ "other": "未提供促銷代碼"
1355
1426
  }
1356
1427
  }