@shift72/core-template 0.4.1 → 0.4.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (75) hide show
  1. package/CHANGELOG.md +29 -1
  2. package/kibble.json +2 -2
  3. package/package.json +7 -4
  4. package/scripts/css-local-get.js +34 -0
  5. package/scripts/css-local-put.js +110 -0
  6. package/scripts/language-file-validator.js +16 -2
  7. package/site/ar_LB.all.json +22 -18
  8. package/site/ca_ES.all.json +16 -32
  9. package/site/da_DK.all.json +47 -32
  10. package/site/de_DE.all.json +130 -2
  11. package/site/ee_EE.all.json +90 -23
  12. package/site/el_EL.all.json +89 -18
  13. package/site/en_AU.all.json +27 -24
  14. package/site/es_ES.all.json +129 -3
  15. package/site/es_MX.all.json +165 -3
  16. package/site/fi_FI.all.json +164 -2
  17. package/site/fr_FR.all.json +131 -3
  18. package/site/hr_HR.all.json +64 -5
  19. package/site/hu_HU.all.json +90 -23
  20. package/site/it_IT.all.json +127 -3
  21. package/site/ja_JP.all.json +163 -3
  22. package/site/lt_LT.all.json +50 -15
  23. package/site/nl_BE.all.json +53 -16
  24. package/site/no_NO.all.json +87 -23
  25. package/site/pl_PL.all.json +162 -3
  26. package/site/pt_BR.all.json +24 -32
  27. package/site/pt_PT.all.json +93 -19
  28. package/site/ru_RU.all.json +85 -16
  29. package/site/se_SE.all.json +64 -31
  30. package/site/static/images/common/sponsors-md.png +0 -0
  31. package/site/static/images/common/sponsors-xs.png +0 -0
  32. package/site/static/images/common/sponsors-xxxs.png +0 -0
  33. package/site/styles/_awards.scss +6 -6
  34. package/site/styles/_bootstrap4.scss +90 -0
  35. package/site/styles/_buttons.scss +9 -8
  36. package/site/styles/_can-be-watched-button.scss +2 -0
  37. package/site/styles/_card.scss +2 -2
  38. package/site/styles/_carousel.scss +43 -28
  39. package/site/styles/_collections.scss +4 -4
  40. package/site/styles/_cookie-consent.scss +1 -1
  41. package/site/styles/_devices.scss +3 -3
  42. package/site/styles/_footer.scss +45 -2
  43. package/site/styles/_forms.scss +6 -6
  44. package/site/styles/_globals.scss +1 -1
  45. package/site/styles/_icons.scss +2 -2
  46. package/site/styles/_language-selector.scss +2 -2
  47. package/site/styles/_legacy.scss +3 -3
  48. package/site/styles/_meta-detail.scss +44 -24
  49. package/site/styles/_mixins.scss +2 -2
  50. package/site/styles/_nav.scss +40 -40
  51. package/site/styles/_pages.scss +12 -12
  52. package/site/styles/_pin-codes.scss +2 -2
  53. package/site/styles/_plans.scss +1 -1
  54. package/site/styles/_poster.scss +5 -4
  55. package/site/styles/_shift72.scss +22 -22
  56. package/site/styles/_shopping.scss +8 -8
  57. package/site/styles/_slider.scss +4 -10
  58. package/site/styles/_social-media-buttons.scss +20 -20
  59. package/site/styles/_swiper.scss +2 -2
  60. package/site/styles/_variables.scss +107 -82
  61. package/site/styles/_wishlist.scss +2 -2
  62. package/site/styles/main.scss +1 -3
  63. package/site/templates/application/application.jet +13 -1
  64. package/site/templates/application/footer/footer.jet +3 -0
  65. package/site/templates/application/footer/sponsor-banner.jet +9 -0
  66. package/site/templates/bundle/buttons.jet +2 -1
  67. package/site/templates/bundle/item.jet +1 -2
  68. package/site/templates/collection/carousel_item.jet +12 -13
  69. package/site/templates/common/awards/item.jet +1 -1
  70. package/site/templates/film/item.jet +36 -12
  71. package/site/templates/tv/detail.jet +7 -7
  72. package/site/tr_TR.all.json +88 -22
  73. package/site/uk_UA.all.json +50 -34
  74. package/site/zh_TW.all.json +19 -36
  75. package/site/styles/_functions.scss +0 -8
package/CHANGELOG.md CHANGED
@@ -1,8 +1,36 @@
1
1
  # Changelog
2
2
 
3
- ## [Unreleased](https://github.com/shift72/core-template/compare/0.4.1...HEAD)
3
+ ## [Unreleased](https://github.com/shift72/core-template/compare/0.4.4...HEAD)
4
+
5
+ ## [0.4.4](https://github.com/shift72/core-template/compare/0.4.3...0.4.4)
6
+ - Fixed usage of obsolete $primary var for trailer button
7
+
8
+ ### Added
9
+ - Awards categories
10
+
11
+ ## [0.4.3](https://github.com/shift72/core-template/compare/0.4.2...0.4.3)
4
12
 
5
13
  ### Added
14
+ - Awards categories
15
+ - Floating donate button
16
+ - External custom CSS link in head.
17
+ - Scripts for downloading/uploading custom CSS files for use with local development.
18
+
19
+ ### Changed
20
+ - Replaced various SASS variables with CSS variables.
21
+ - Added workarounds for SASS and Bootstrap functions that don't understand CSS variables.
22
+ - Kibble 0.16.4
23
+ - Split CC and Subtitles
24
+ - Moved engagement icons
25
+
26
+ ## [0.4.2](https://github.com/shift72/core-template/compare/0.4.1...0.4.2)
27
+
28
+ ### Added
29
+ - Lang files updated with entries for purchasing one-off passes
30
+ - Sponsor banner that can be enabled/disabled in Uber Admin
31
+
32
+ ### Changed
33
+ - Typo in English lang file
6
34
 
7
35
  ## [0.4.1](https://github.com/shift72/core-template/compare/0.4.0...0.4.1)
8
36
 
package/kibble.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "core-template",
3
3
  "version": "0.0.1",
4
4
  "siteUrl": "https://abccinemas.screenplus.co",
5
- "builderVersion": "0.15.22",
5
+ "builderVersion": "0.16.4",
6
6
  "defaultLanguage": "en",
7
7
  "languages": {
8
8
  "ar": { "code": "ar_LB", "name": "عربى" },
@@ -107,4 +107,4 @@
107
107
  "pageSize": 0
108
108
  }
109
109
  ]
110
- }
110
+ }
package/package.json CHANGED
@@ -1,15 +1,17 @@
1
1
  {
2
2
  "name": "@shift72/core-template",
3
- "version": "0.4.1",
3
+ "version": "0.4.4",
4
4
  "description": "Shift72 core template",
5
5
  "license": "MIT",
6
6
  "scripts": {
7
7
  "start": "npm run init && npm-run-all --parallel css:watch js:watch kibble:watch",
8
- "init": "npm-run-all css js",
8
+ "init": "npm-run-all css css:local:get js",
9
9
  "css": "sass ./site/styles/main.scss ./site/static/styles/main.css --load-path=node_modules",
10
10
  "css:lint": "prettier 'site/styles/*.scss' --write && stylelint ./site/styles/*.scss --fix",
11
11
  "css:watch": "npm run css -- --watch",
12
12
  "css:build": "postcss ./site/static/styles/main.css --use autoprefixer --use cssnano -r",
13
+ "css:local:get": "node scripts/css-local-get.js",
14
+ "css:local:put": "node scripts/css-local-put.js",
13
15
  "js": "rollup -c",
14
16
  "js:lint": "prettier '{scripts,site/static/js}/**/!(modernizr-custom).js' --write && eslint ./site/static/js/*.js ./scripts --fix",
15
17
  "js:watch": "rollup -c -w",
@@ -34,7 +36,7 @@
34
36
  "dependencies": {
35
37
  "@rollup/plugin-buble": "^0.21.3",
36
38
  "autoprefixer": "^7.1.2",
37
- "bootstrap": "^4.0.0",
39
+ "bootstrap": "^4.6.1",
38
40
  "concat": "^1.0.3",
39
41
  "cssnano": "^5.0.8",
40
42
  "del": "^6.0.0",
@@ -45,7 +47,7 @@
45
47
  "postcss-cli": "^9.0.1",
46
48
  "rollup": "^2.23.0",
47
49
  "rollup-plugin-terser": "^6.1.0",
48
- "s72-kibble": "^0.15.22",
50
+ "s72-kibble": "^0.16.4",
49
51
  "sass": "^1.36.0"
50
52
  },
51
53
  "devDependencies": {
@@ -55,6 +57,7 @@
55
57
  "eslint-plugin-compat": "^3.13.0",
56
58
  "eslint-plugin-react": "^7.26.1",
57
59
  "eslint-plugin-react-hooks": "^4.2.0",
60
+ "form-data": "^4.0.0",
58
61
  "prettier": "^2.3.2",
59
62
  "stylelint": "^13.13.1",
60
63
  "stylelint-config-prettier": "^8.0.2",
@@ -0,0 +1,34 @@
1
+ const https = require('https');
2
+ const fs = require('fs');
3
+
4
+ const siteUrl = readJsonValueFromRawData('siteUrl', fs.readFileSync('kibble.json'));
5
+ const file = fs.createWriteStream('site/static/styles/local.css');
6
+
7
+ https.get(`${siteUrl}/services/users/v1/css`, handleFilenameResponse).on('error', handleError);
8
+
9
+ ///////////////////////////////////////////////////////////////////////////////////////////////
10
+
11
+ function readJsonValueFromRawData(key, rawJson) {
12
+ let json = JSON.parse(rawJson);
13
+ return json[key];
14
+ }
15
+
16
+ function handleFilenameResponse(res) {
17
+ res.on('data', d => {
18
+ const filename = readJsonValueFromRawData('css_filename', d);
19
+
20
+ if (filename) {
21
+ https.get(`${siteUrl}/styles/${filename}`, handleFileResponse).on('error', handleError);
22
+ } else {
23
+ console.log('Custom CSS not found');
24
+ }
25
+ });
26
+ }
27
+
28
+ function handleFileResponse(res) {
29
+ res.pipe(file);
30
+ }
31
+
32
+ function handleError(e) {
33
+ console.error(e);
34
+ }
@@ -0,0 +1,110 @@
1
+ const https = require('https');
2
+ const fs = require('fs');
3
+ const FormData = require('form-data');
4
+ const rl = require('readline').createInterface({
5
+ input: process.stdin,
6
+ output: process.stdout,
7
+ });
8
+
9
+ const siteUrl = readJsonValueFromRawData('siteUrl', fs.readFileSync('kibble.json'));
10
+ const url = new URL(siteUrl);
11
+
12
+ rl.question(`Enter Username for ${siteUrl}: `, username => {
13
+ rl.question('Enter Password: ', password => {
14
+ rl.close();
15
+
16
+ return signin(username, password)
17
+ .then(authToken => {
18
+ return uploadCSS(authToken);
19
+ })
20
+ .then(filename => {
21
+ console.log(`CSS file upload success: https://${url.hostname}/styles/${filename}`);
22
+ })
23
+ .catch(handleError);
24
+ });
25
+ });
26
+
27
+ ///////////////////////////////////////////////////////////////////////////////////////////////
28
+
29
+ function uploadCSS(authToken) {
30
+ return new Promise((resolve, reject) => {
31
+ let form = new FormData();
32
+ form.append('file', fs.createReadStream('site/static/styles/local.css'), {
33
+ filename: 'local.css',
34
+ contentType: 'text/css',
35
+ });
36
+
37
+ let headers = form.getHeaders();
38
+ headers['x-auth-token'] = authToken;
39
+
40
+ let options = {
41
+ hostname: url.hostname,
42
+ path: '/services/users/v1/css',
43
+ method: 'PUT',
44
+ headers,
45
+ };
46
+
47
+ const req = https.request(options);
48
+
49
+ form.pipe(req);
50
+ form.on('end', () => {
51
+ req.end();
52
+ });
53
+
54
+ req.on('response', res => {
55
+ if (res.statusCode < 200 || res.statusCode >= 300) {
56
+ return reject(new Error(`statusCode=${res.statusCode}`));
57
+ }
58
+
59
+ res.on('data', d => {
60
+ let filename = readJsonValueFromRawData('css_filename', d);
61
+ return resolve(filename);
62
+ });
63
+ });
64
+
65
+ req.on('error', e => {
66
+ return reject(e);
67
+ });
68
+ });
69
+ }
70
+
71
+ function signin(username, password) {
72
+ return new Promise((resolve, reject) => {
73
+ let options = {
74
+ hostname: url.hostname,
75
+ path: '/services/users/auth/sign_in',
76
+ method: 'POST',
77
+ headers: { 'Content-Type': 'application/json' },
78
+ };
79
+
80
+ const req = https.request(options);
81
+
82
+ req.on('response', res => {
83
+ if (res.statusCode < 200 || res.statusCode >= 300) {
84
+ return reject(new Error(`statusCode=${res.statusCode}`));
85
+ }
86
+
87
+ res.on('data', d => {
88
+ let authToken = readJsonValueFromRawData('auth_token', d);
89
+ return resolve(authToken);
90
+ });
91
+ });
92
+
93
+ req.on('error', e => {
94
+ return reject(e);
95
+ });
96
+
97
+ req.write(JSON.stringify({ user: { email: username, password } }));
98
+
99
+ req.end();
100
+ });
101
+ }
102
+
103
+ function readJsonValueFromRawData(key, rawJson) {
104
+ let json = JSON.parse(rawJson);
105
+ return json[key];
106
+ }
107
+
108
+ function handleError(e) {
109
+ console.error(e);
110
+ }
@@ -10,7 +10,6 @@ const languageFiles = openFiles(languageFilenames);
10
10
  let errors = [];
11
11
 
12
12
  const whitespacePaddedKeys = [
13
- 'accept_invite_page_header',
14
13
  'shopping_info_release_date_title',
15
14
  'shopping_info_available_until_date_title',
16
15
  'shopping_info_rental_period_duration',
@@ -18,7 +17,7 @@ const whitespacePaddedKeys = [
18
17
  'classification_intro',
19
18
  'classification_divider',
20
19
  ];
21
- const emptyKeys = ['classification_outro', 'plan_label_owned'];
20
+ const emptyKeys = ['classification_outro'];
22
21
 
23
22
  languageFilenames.forEach(language => {
24
23
  console.log(`===== TESTING: ${language} =====`);
@@ -39,6 +38,7 @@ languageFilenames.forEach(language => {
39
38
 
40
39
  if (keys.includes(key)) {
41
40
  testKeyNotEnglish(masterFile[key], file[key], key);
41
+ testValueNotKey(file[key], key);
42
42
  }
43
43
  });
44
44
 
@@ -103,3 +103,17 @@ function testKeyNotEnglish(englishValue, translatedValue, key) {
103
103
  errors.push(e);
104
104
  }
105
105
  }
106
+
107
+ function testValueNotKey(translation, key) {
108
+ try {
109
+ assert.ok(translation['zero'] != key);
110
+ assert.ok(translation['one'] != key);
111
+ assert.ok(translation['two'] != key);
112
+ assert.ok(translation['few'] != key);
113
+ assert.ok(translation['many'] != key);
114
+ assert.ok(translation['other'] != key);
115
+ } catch(e) {
116
+ console.error(`${key} - key is value.`);
117
+ errors.push(e);
118
+ }
119
+ }
@@ -312,7 +312,9 @@
312
312
  "shopping_complete_purchase_coming_soon": { "other": "يمكن المشاهدة ابتداء من {{.Date}}." },
313
313
  "shopping_complete_receipt": { "other": "تم إرسال الإيصال عبر البريد الإلكتروني." },
314
314
  "shopping_complete_library_link": { "other": "عرض المكتبة" },
315
-
315
+ "shopping_complete_plan": {
316
+ "other": "لقد نجحت عملية شرائك لـ {{ .Title }}"
317
+ },
316
318
  "shopping_complete_rental_watch_window_start": {
317
319
  "one": "يمكن الآن بدء المشاهدة حتى اليوم التالي.",
318
320
  "other": "يمكن الآن بدء المشاهدة في غضون الأيام الـ {{.Count}} القادمة."
@@ -346,6 +348,7 @@
346
348
  "meta_detail_studios": { "one": "الاستديو", "other": "الاستوديوهات" },
347
349
  "meta_detail_countries": { "one": "البلد", "other": "البلدان" },
348
350
  "meta_detail_subtitles": { "other": "الترجمة" },
351
+ "meta_detail_captions": { "other": "الترجمة [CC]" },
349
352
  "meta_detail_episodes_title": { "other": "الحلفات" },
350
353
  "meta_detail_bonus_title": { "other": "محتوى إضافي" },
351
354
  "meta_detail_recommendations_title": { "other": "قد يعجبك أيضا" },
@@ -411,7 +414,6 @@
411
414
  "users_gender_diverse": { "other": "مختلف" },
412
415
  "users_gender_other": { "other": "غير محدد" },
413
416
 
414
- "plan_label_owned": { "other": "" },
415
417
 
416
418
  "pricing_quality_hd": { "other": "pricing_quality_hd" },
417
419
  "pricing_quality_sd": { "other": "pricing_quality_sd" },
@@ -431,22 +433,8 @@
431
433
 
432
434
  "shopping_info_ownership_plan": { "other": "shopping_info_ownership_plan" },
433
435
 
434
- "shopping_price_title_plan": { "other": "shopping_price_title_plan" },
435
- "shopping_price_plan_note": { "other": "shopping_price_plan_note" },
436
- "shopping_price_plan_note_interval": { "other": "shopping_price_plan_note_interval" },
437
-
438
- "shopping_enter_card_prompt_plan": { "other": "shopping_enter_card_prompt_plan" },
439
-
440
- "shopping_action_credit": { "other": "shopping_action_credit" },
441
- "shopping_action_plan": { "other": "shopping_action_plan" },
442
-
443
- "shopping_complete_subscription": { "other": "shopping_complete_subscription" },
444
- "shopping_complete_subscription_browse": { "other": "shopping_complete_subscription_browse" },
445
-
446
436
  "shopping_info_rental_period_coming_soon": { "other": "من تاريخ ووقت الإصدار." },
447
- "shopping_info_plan_offer": { "other": "shopping_info_plan_offer" },
448
- "shopping_info_trial_period_offer": { "other": "shopping_info_trial_period_offer" },
449
-
437
+
450
438
  "usersubscriptions_change_payment_method_change": { "other": "usersubscriptions_change_payment_method_change" },
451
439
  "usersubscriptions_change_payment_method_modal_title": { "other": "usersubscriptions_change_payment_method_modal_title" },
452
440
  "usersubscriptions_change_payment_method_modal_submit": { "other": "usersubscriptions_change_payment_method_modal_submit" },
@@ -538,6 +526,7 @@
538
526
  "shopping_action_plan": {
539
527
  "other": "مكتمل"
540
528
  },
529
+ "shopping_action_credit": { "other": "shopping_action_credit" },
541
530
  "shopping_complete_subscription": {
542
531
  "other": "تم شراء اشتراكك بنجاح. أنت الآن مشترك في {{ .Title }} ."
543
532
  },
@@ -588,5 +577,20 @@
588
577
  },
589
578
  "awards_in_competition": {
590
579
  "other": "في المنافسة"
591
- }
580
+ },
581
+ "donate_button_text": {
582
+ "other": "يتبرع"
583
+ },
584
+ "shopping_error_plan_already_owned": { "other": "You already have this plan." },
585
+ "shopping_error_plan_expired": { "other": "This plan is no longer available." },
586
+
587
+ "wcag_aria_label_letterboxd": { "other": "View on Letterboxd" },
588
+
589
+ "header_banner": { "other": "ABC Cinemas – 21st Film Festival, June 1 – 6, 2021" },
590
+ "app_badge_title": { "other": "Download the app to view your purchased content!" },
591
+ "app_badge_ios": { "other": "Download on the App Store" },
592
+ "app_badge_android": { "other": "Get it on Google Play" },
593
+
594
+ "awards_winner_of": { "other": "Winner of" }
595
+
592
596
  }
@@ -147,7 +147,7 @@
147
147
  "social_media_buttons_copied_link": { "other": "S'ha copiat l'enllaç al porta-retalls!" },
148
148
  "social_media_buttons_copy_link": { "other": "Copiar al portapapers" },
149
149
  "accept_invite_page_header": {
150
- "other": "Benvingut"
150
+ "other": "Benvingut "
151
151
  },
152
152
  "acceptinvite_form_invalid_reset_password_token": {
153
153
  "other": "Sembla que ja heu reclamat aquesta invitació, haureu de fer <a href=\"{{.SigninURL}}\">inicia la sessió</a> en canvi. Si heu oblidat la vostra contrasenya, també podeu <a href=\"{{.ForgotPasswordURL}}\">restablir la contrasenya</a>."
@@ -693,6 +693,9 @@
693
693
  "shopping_complete_purchase_coming_soon": {
694
694
  "other": "Podreu veure-ho des de {{.Date}}."
695
695
  },
696
+ "shopping_complete_plan": {
697
+ "other": "La teva compra de {{ .Title }} estat correcta."
698
+ },
696
699
  "shopping_complete_receipt": {
697
700
  "other": "S'ha enviat un rebut per correu electrònic."
698
701
  },
@@ -757,6 +760,7 @@
757
760
  "meta_detail_subtitles": {
758
761
  "other": "Subtítols"
759
762
  },
763
+ "meta_detail_captions": { "other": "Subtítols [CC]" },
760
764
  "meta_detail_episodes_title": {
761
765
  "other": "Episodis"
762
766
  },
@@ -914,9 +918,6 @@
914
918
  "users_gender_other": {
915
919
  "other": "Altre"
916
920
  },
917
- "plan_label_owned": {
918
- "other": ""
919
- },
920
921
  "pricing_quality_hd": {
921
922
  "other": "pricing_quality_hd"
922
923
  },
@@ -962,39 +963,12 @@
962
963
  "shopping_info_ownership_plan": {
963
964
  "other": "shopping_info_ownership_plan"
964
965
  },
965
- "shopping_price_title_plan": {
966
- "other": "shopping_price_title_plan"
967
- },
968
- "shopping_price_plan_note": {
969
- "other": "shopping_price_plan_note"
970
- },
971
- "shopping_price_plan_note_interval": {
972
- "other": "shopping_price_plan_note_interval"
973
- },
974
- "shopping_enter_card_prompt_plan": {
975
- "other": "shopping_enter_card_prompt_plan"
976
- },
977
966
  "shopping_action_credit": {
978
967
  "other": "shopping_action_credit"
979
968
  },
980
- "shopping_action_plan": {
981
- "other": "shopping_action_plan"
982
- },
983
- "shopping_complete_subscription": {
984
- "other": "shopping_complete_subscription"
985
- },
986
- "shopping_complete_subscription_browse": {
987
- "other": "shopping_complete_subscription_browse"
988
- },
989
969
  "shopping_info_rental_period_coming_soon": {
990
970
  "other": "des de la data i l'hora de l'alliberament."
991
971
  },
992
- "shopping_info_plan_offer": {
993
- "other": "shopping_info_plan_offer"
994
- },
995
- "shopping_info_trial_period_offer": {
996
- "other": "shopping_info_trial_period_offer"
997
- },
998
972
  "usersubscriptions_change_payment_method_change": {
999
973
  "other": "usersubscriptions_change_payment_method_change"
1000
974
  },
@@ -1255,5 +1229,15 @@
1255
1229
  },
1256
1230
  "awards_in_competition": {
1257
1231
  "other": "En Competició"
1258
- }
1232
+ },
1233
+ "awards_winner_of": {
1234
+ "other": "Guanyador de"
1235
+ },
1236
+ "donate_button_text": {
1237
+ "other": "Donar"
1238
+ },
1239
+ "shopping_error_plan_already_owned": { "other": "You already have this plan." },
1240
+ "shopping_error_plan_expired": { "other": "This plan is no longer available." },
1241
+
1242
+ "wcag_aria_label_letterboxd": { "other": "View on Letterboxd" }
1259
1243
  }
@@ -132,7 +132,7 @@
132
132
  "social_media_buttons_copied_link": { "other": "Link kopieret til udklipsholder!" },
133
133
  "social_media_buttons_copy_link": { "other": "Kopier til udklipsholder" },
134
134
  "accept_invite_page_header": {
135
- "other": "Velkommen"
135
+ "other": "Velkommen "
136
136
  },
137
137
  "acceptinvite_form_invalid_reset_password_token": {
138
138
  "other": "Det ser ud som om du allerede har accepteret denne invitation, du skal derfor <a href=\"signin.html\">logge ind</a> i stedet Hvis du har glemt dit kodeord, kan du også <a href=\"forgotpassword.html\">nulstille dit kodeord</a>."
@@ -676,6 +676,9 @@
676
676
  "shopping_complete_receipt": {
677
677
  "other": "En kvittering er blevet mailet til dig."
678
678
  },
679
+ "shopping_complete_plan": {
680
+ "other": "Dit køb af {{ .Title }} blev gennemført."
681
+ },
679
682
  "shopping_complete_library_link": {
680
683
  "other": "Se dit bibliotek"
681
684
  },
@@ -722,6 +725,7 @@
722
725
  "meta_detail_subtitles": {
723
726
  "other": "Undertekster"
724
727
  },
728
+ "meta_detail_captions": { "other": "Undertekster [CC]" },
725
729
  "meta_detail_episodes_title": {
726
730
  "other": "Episodes"
727
731
  },
@@ -879,9 +883,6 @@
879
883
  "users_gender_other": {
880
884
  "other": "Andet"
881
885
  },
882
- "plan_label_owned": {
883
- "other": ""
884
- },
885
886
  "pricing_quality_hd": {
886
887
  "other": "pricing_quality_hd"
887
888
  },
@@ -927,39 +928,12 @@
927
928
  "shopping_info_ownership_plan": {
928
929
  "other": "shopping_info_ownership_plan"
929
930
  },
930
- "shopping_price_title_plan": {
931
- "other": "shopping_price_title_plan"
932
- },
933
- "shopping_price_plan_note": {
934
- "other": "shopping_price_plan_note"
935
- },
936
- "shopping_price_plan_note_interval": {
937
- "other": "shopping_price_plan_note_interval"
938
- },
939
- "shopping_enter_card_prompt_plan": {
940
- "other": "shopping_enter_card_prompt_plan"
941
- },
942
931
  "shopping_action_credit": {
943
932
  "other": "shopping_action_credit"
944
933
  },
945
- "shopping_action_plan": {
946
- "other": "shopping_action_plan"
947
- },
948
- "shopping_complete_subscription": {
949
- "other": "shopping_complete_subscription"
950
- },
951
- "shopping_complete_subscription_browse": {
952
- "other": "shopping_complete_subscription_browse"
953
- },
954
934
  "shopping_info_rental_period_coming_soon": {
955
935
  "other": "fra premieredatoen og -tidspunktet."
956
936
  },
957
- "shopping_info_plan_offer": {
958
- "other": "shopping_info_plan_offer"
959
- },
960
- "shopping_info_trial_period_offer": {
961
- "other": "shopping_info_trial_period_offer"
962
- },
963
937
  "usersubscriptions_change_payment_method_change": {
964
938
  "other": "usersubscriptions_change_payment_method_change"
965
939
  },
@@ -1158,5 +1132,46 @@
1158
1132
  },
1159
1133
  "awards_in_competition": {
1160
1134
  "other": "I Konkurrence"
1161
- }
1135
+ },
1136
+ "awards_winner_of": {
1137
+ "other": "Vinder af"
1138
+ },
1139
+ "donate_button_text": {
1140
+ "other": "Doner"
1141
+ },
1142
+
1143
+ "shopping_error_plan_already_owned": { "other": "You already have this plan." },
1144
+ "shopping_error_plan_expired": { "other": "This plan is no longer available." },
1145
+ "shopping_payment_method_header": { "other": "Payment methods" },
1146
+ "shopping_payment_method_credit_card": { "other": "Credit card" },
1147
+ "shopping_payment_method_giropay": { "other": "Giropay" },
1148
+ "shopping_error_stripe_unknown_error": { "other": "Something went wrong with this payment. Please try again later." },
1149
+ "shopping_error_payment_complete_failed": { "other": "The payment was declined. Close this window and try again." },
1150
+
1151
+ "wcag_skip_links_header": { "other": "Accessibility Links" },
1152
+ "wcag_skip_links_content": { "other": "Skip to Content" },
1153
+ "wcag_skip_links_footer": { "other": "Skip to Footer" },
1154
+
1155
+ "wcag_homepage_h1": { "other": "Homepage" },
1156
+ "wcag_carousel_h2": { "other": "Carousel" },
1157
+ "wcag_collections_h2": { "other": "Collections" },
1158
+
1159
+ "wcag_aria_label_footer": { "other": "Footer" },
1160
+ "wcag_aria_label_nav_main": { "other": "Main" },
1161
+ "wcag_aria_label_nav_sub": { "other": "Sub" },
1162
+ "wcag_aria_label_toggle_nav": { "other": "Toggle Navigation" },
1163
+ "wcag_aria_label_bundle_items": { "other": "Bundle Items" },
1164
+ "wcag_aria_label_carousel": { "other": "Carousel" },
1165
+ "wcag_aria_label_page_collection": { "other": "Page Collection" },
1166
+ "wcag_aria_label_collection_list": { "other": "Collection List" },
1167
+ "wcag_aria_label_collection_slider": { "other": "Collection Slider" },
1168
+ "wcag_aria_label_wishlist": { "other": "Wishlist" },
1169
+ "wcag_aria_label_facebook": { "other": "Share on Facebook" },
1170
+ "wcag_aria_label_twitter": { "other": "Share on Twitter" },
1171
+ "wcag_aria_label_linkedin": { "other": "Share on LinkedIn" },
1172
+ "wcag_aria_label_letterboxd": { "other": "View on Letterboxd" },
1173
+
1174
+ "header_banner": { "other": "ABC Cinemas – 21st Film Festival, June 1 – 6, 2021" }
1175
+
1176
+
1162
1177
  }