diff --git a/core/profiles/demo_umami/config/install/field.field.node.article.field_tags.yml b/core/profiles/demo_umami/config/install/field.field.node.article.field_tags.yml
index a9425fd6ba..6eb219faea 100644
--- a/core/profiles/demo_umami/config/install/field.field.node.article.field_tags.yml
+++ b/core/profiles/demo_umami/config/install/field.field.node.article.field_tags.yml
@@ -12,7 +12,7 @@ bundle: article
 label: Tags
 description: 'Enter a comma-separated list. For example: Vegetarian, Chocolate brownies, Appetizers'
 required: false
-translatable: true
+translatable: false
 default_value: {  }
 default_value_callback: ''
 settings:
diff --git a/core/profiles/demo_umami/config/install/field.field.node.recipe.field_ingredients.yml b/core/profiles/demo_umami/config/install/field.field.node.recipe.field_ingredients.yml
index 647c7dff0e..7ef7efeebd 100644
--- a/core/profiles/demo_umami/config/install/field.field.node.recipe.field_ingredients.yml
+++ b/core/profiles/demo_umami/config/install/field.field.node.recipe.field_ingredients.yml
@@ -11,7 +11,7 @@ bundle: recipe
 label: Ingredients
 description: 'List the ingredients required for this recipe, one per item.'
 required: false
-translatable: false
+translatable: true
 default_value: {  }
 default_value_callback: ''
 settings: {  }
diff --git a/core/profiles/demo_umami/config/install/field.field.node.recipe.field_recipe_instruction.yml b/core/profiles/demo_umami/config/install/field.field.node.recipe.field_recipe_instruction.yml
index b85af3b2f1..ff090cac35 100644
--- a/core/profiles/demo_umami/config/install/field.field.node.recipe.field_recipe_instruction.yml
+++ b/core/profiles/demo_umami/config/install/field.field.node.recipe.field_recipe_instruction.yml
@@ -13,7 +13,7 @@ bundle: recipe
 label: 'Recipe instruction'
 description: ''
 required: true
-translatable: false
+translatable: true
 default_value: {  }
 default_value_callback: ''
 settings: {  }
diff --git a/core/profiles/demo_umami/config/install/field.field.node.recipe.field_summary.yml b/core/profiles/demo_umami/config/install/field.field.node.recipe.field_summary.yml
index af8230ece9..b648b97889 100644
--- a/core/profiles/demo_umami/config/install/field.field.node.recipe.field_summary.yml
+++ b/core/profiles/demo_umami/config/install/field.field.node.recipe.field_summary.yml
@@ -13,7 +13,7 @@ bundle: recipe
 label: Summary
 description: 'Provide a short overview of this recipe.'
 required: true
-translatable: false
+translatable: true
 default_value: {  }
 default_value_callback: ''
 settings: {  }
diff --git a/core/profiles/demo_umami/config/install/field.field.node.recipe.field_tags.yml b/core/profiles/demo_umami/config/install/field.field.node.recipe.field_tags.yml
index 87f7351dc8..b90fecdbec 100644
--- a/core/profiles/demo_umami/config/install/field.field.node.recipe.field_tags.yml
+++ b/core/profiles/demo_umami/config/install/field.field.node.recipe.field_tags.yml
@@ -12,7 +12,7 @@ bundle: recipe
 label: Tags
 description: 'Enter a comma-separated list. For example: Vegetarian, Chocolate brownies, Appetizers'
 required: false
-translatable: true
+translatable: false
 default_value: {  }
 default_value_callback: ''
 settings:
diff --git a/core/profiles/demo_umami/config/install/language.content_settings.node.article.yml b/core/profiles/demo_umami/config/install/language.content_settings.node.article.yml
new file mode 100644
index 0000000000..de684ef1f4
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/language.content_settings.node.article.yml
@@ -0,0 +1,15 @@
+langcode: en
+status: true
+dependencies:
+  config:
+    - node.type.article
+  module:
+    - content_translation
+third_party_settings:
+  content_translation:
+    enabled: true
+id: node.article
+target_entity_type_id: node
+target_bundle: article
+default_langcode: site_default
+language_alterable: true
diff --git a/core/profiles/demo_umami/config/install/language.content_settings.node.page.yml b/core/profiles/demo_umami/config/install/language.content_settings.node.page.yml
new file mode 100644
index 0000000000..f8874db2ef
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/language.content_settings.node.page.yml
@@ -0,0 +1,15 @@
+langcode: en
+status: true
+dependencies:
+  config:
+    - node.type.page
+  module:
+    - content_translation
+third_party_settings:
+  content_translation:
+    enabled: true
+id: node.page
+target_entity_type_id: node
+target_bundle: page
+default_langcode: site_default
+language_alterable: true
diff --git a/core/profiles/demo_umami/config/install/language.content_settings.node.recipe.yml b/core/profiles/demo_umami/config/install/language.content_settings.node.recipe.yml
new file mode 100644
index 0000000000..3e7c3a5664
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/language.content_settings.node.recipe.yml
@@ -0,0 +1,15 @@
+langcode: en
+status: true
+dependencies:
+  config:
+    - node.type.recipe
+  module:
+    - content_translation
+third_party_settings:
+  content_translation:
+    enabled: true
+id: node.recipe
+target_entity_type_id: node
+target_bundle: recipe
+default_langcode: site_default
+language_alterable: true
diff --git a/core/profiles/demo_umami/config/install/language.content_settings.taxonomy_term.recipe_category.yml b/core/profiles/demo_umami/config/install/language.content_settings.taxonomy_term.recipe_category.yml
new file mode 100644
index 0000000000..b45e9e7c6a
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/language.content_settings.taxonomy_term.recipe_category.yml
@@ -0,0 +1,15 @@
+langcode: en
+status: true
+dependencies:
+  config:
+    - taxonomy.vocabulary.recipe_category
+  module:
+    - content_translation
+third_party_settings:
+  content_translation:
+    enabled: true
+id: taxonomy_term.recipe_category
+target_entity_type_id: taxonomy_term
+target_bundle: recipe_category
+default_langcode: site_default
+language_alterable: true
diff --git a/core/profiles/demo_umami/config/install/language.content_settings.taxonomy_term.tags.yml b/core/profiles/demo_umami/config/install/language.content_settings.taxonomy_term.tags.yml
new file mode 100644
index 0000000000..a73a75b3c5
--- /dev/null
+++ b/core/profiles/demo_umami/config/install/language.content_settings.taxonomy_term.tags.yml
@@ -0,0 +1,15 @@
+langcode: en
+status: true
+dependencies:
+  config:
+    - taxonomy.vocabulary.tags
+  module:
+    - content_translation
+third_party_settings:
+  content_translation:
+    enabled: true
+id: taxonomy_term.tags
+target_entity_type_id: taxonomy_term
+target_bundle: tags
+default_langcode: site_default
+language_alterable: true
diff --git a/core/profiles/demo_umami/modules/demo_umami_content/default_content/languages/en/articles.csv b/core/profiles/demo_umami/modules/demo_umami_content/default_content/languages/en/articles.csv
deleted file mode 100644
index c17688b646..0000000000
--- a/core/profiles/demo_umami/modules/demo_umami_content/default_content/languages/en/articles.csv
+++ /dev/null
@@ -1,9 +0,0 @@
-title,body,author,slug,image,alt,tags
-Give it a go and grow your own herbs,give-it-a-go-and-grow-your-own-herbs.html,Holly Foat,articles/give-it-a-go-and-grow-your-own-herbs,home-grown-herbs.jpg,"Fresh cut herbs including mint, parsley, thyme and dill","14,23,16"
-Dairy-free and delicious milk chocolate,dairy-free-delicious-milk-chocolate.html,Umami,articles/dairy-free-and-delicious-milk-chocolate,vegan-chocolate.jpg,"A delicious bar of dairy-free milk chocolate, broken into pieces.","27,7"
-The real deal for supermarket savvy shopping,the-real-deal-for-supermarket-savvy-shopping.html,Megan Collins Quinlan,articles/the-real-deal-for-supermarket-savvy-shopping,supermarket-savvy-umami.jpg,Products presented on supermarket shelving.,"26,24"
-The Umami guide to our favorite mushrooms,the-umami-guide-to-our-favourite-mushrooms.html,Umami,articles/the-umami-guide-to-our-favourite-mushrooms,mushrooms-umami.jpg,A delightful selection of mushroom varieties laid out on a simple wooden plate.,"18,28"
-Let's hear it for carrots,lets-hear-it-for-carrots.html,Umami,articles/lets-hear-it-for-carrots,heritage-carrots.jpg,"Purple, orange, yellow and white heritage carrots.","6,28,15"
-Baking mishaps - our troubleshooting tips,baking-mishaps-our-troubleshooting-tips.html,"Umami",articles/baking-mishaps-our-troubleshooting-tips,chocolate-brownie-umami.jpg,"A delicious chocolate brownie","3,17"
-Skip the spirits with delicious mocktails,skip-the-spirits-with-delicious-mocktails.html,Megan Collins Quinlan,articles/skip-the-spirits-with-delicious-mocktails,mojito-mocktail.jpg,"Fresh mojito mocktail with garnish of mint leaves, ice, and sliced lime","1,12,20,8,11"
-Give your oatmeal the ultimate makeover,give-your-oatmeal-the-ultimate-makeover.html,Umami,articles/give-your-oatmeal-the-ultimate-makeover,oatmeal-fruit-syrup-topping.jpg,"Oatmeal topped with a vibrant mix of berries, nuts, and seeds","27,28,19,4,10"
diff --git a/core/profiles/demo_umami/modules/demo_umami_content/default_content/languages/en/block_content/banner_block.csv b/core/profiles/demo_umami/modules/demo_umami_content/default_content/languages/en/block_content/banner_block.csv
new file mode 100644
index 0000000000..3e9dbbfe30
--- /dev/null
+++ b/core/profiles/demo_umami/modules/demo_umami_content/default_content/languages/en/block_content/banner_block.csv
@@ -0,0 +1,3 @@
+id,uuid,info,type,field_title,field_content_link_content,field_content_link_title,field_summary,field_banner_image_target_id,field_banner_image_alt
+umami_home_banner,9aadf4a1-ded6-4017-a10d-a5e043396edf,"Umami Home Banner",banner_block,"Super easy vegetarian pasta bake","Super easy vegetarian pasta bake","View recipe","A wholesome pasta bake is the ultimate comfort food. This delicious bake is super quick to prepare and an ideal midweek meal for all the family.",veggie-pasta-bake-hero-umami.jpg,"Mouth watering vegetarian pasta bake with rich tomato sauce and cheese toppings"
+umami_recipes_banner,4c7d58a3-a45d-412d-9068-259c57e40541,"Umami Recipes Banner",banner_block,"Vegan chocolate and nut brownies","Vegan chocolate and nut brownies","View recipe","These sumptuous brownies should be gooey on the inside and crisp on the outside. A perfect indulgence!",vegan-brownies-hero-umami.jpg,"A stack of chocolate and pecan brownies, sprinkled with pecan crumbs and crushed walnut, fresh out of the oven"
diff --git a/core/profiles/demo_umami/modules/demo_umami_content/default_content/languages/en/block_content/disclaimer_block.csv b/core/profiles/demo_umami/modules/demo_umami_content/default_content/languages/en/block_content/disclaimer_block.csv
new file mode 100644
index 0000000000..5bc0cadcaa
--- /dev/null
+++ b/core/profiles/demo_umami/modules/demo_umami_content/default_content/languages/en/block_content/disclaimer_block.csv
@@ -0,0 +1,2 @@
+id,uuid,info,type,field_disclaimer,field_copyright
+umami_disclaimer,9b4dcd67-99f3-48d0-93c9-2c46648b29de,"Umami Disclaimer",disclaimer_block,"<strong>Umami Magazine & Umami Publications</strong> is a fictional magazine and publisher for illustrative purposes only.","Terms & Conditions"
diff --git a/core/profiles/demo_umami/modules/demo_umami_content/default_content/languages/en/block_content/footer_promo_block.csv b/core/profiles/demo_umami/modules/demo_umami_content/default_content/languages/en/block_content/footer_promo_block.csv
new file mode 100644
index 0000000000..37323f2a6d
--- /dev/null
+++ b/core/profiles/demo_umami/modules/demo_umami_content/default_content/languages/en/block_content/footer_promo_block.csv
@@ -0,0 +1,2 @@
+id,uuid,info,type,field_title,field_content_link_content,field_content_link_title,field_summary,field_promo_image_target_id,field_promo_image_alt
+umami_footer_promo,924ab293-8f5f-45a1-9c7f-2423ae61a241,"Umami footer promo",footer_promo_block,"Umami Food Magazine","About Umami","Find out more","Skills and know-how. Magazine exclusive articles, recipes and plenty of reasons to get your copy today.",umami-bundle.png,"3 issue bundle of the Umami food magazine"
diff --git a/core/profiles/demo_umami/modules/demo_umami_content/default_content/languages/en/node/article.csv b/core/profiles/demo_umami/modules/demo_umami_content/default_content/languages/en/node/article.csv
new file mode 100644
index 0000000000..42f27c2214
--- /dev/null
+++ b/core/profiles/demo_umami/modules/demo_umami_content/default_content/languages/en/node/article.csv
@@ -0,0 +1,9 @@
+id,title,body,author,slug,image,alt,tags
+1,Give it a go and grow your own herbs,give-it-a-go-and-grow-your-own-herbs.html,Holly Foat,articles/give-it-a-go-and-grow-your-own-herbs,home-grown-herbs.jpg,"Fresh cut herbs including mint, parsley, thyme and dill","14,23,16"
+2,Dairy-free and delicious milk chocolate,dairy-free-delicious-milk-chocolate.html,Umami,articles/dairy-free-and-delicious-milk-chocolate,vegan-chocolate.jpg,"A delicious bar of dairy-free milk chocolate, broken into pieces.","27,7"
+3,The real deal for supermarket savvy shopping,the-real-deal-for-supermarket-savvy-shopping.html,Megan Collins Quinlan,articles/the-real-deal-for-supermarket-savvy-shopping,supermarket-savvy-umami.jpg,Products presented on supermarket shelving.,"26,24"
+4,The Umami guide to our favorite mushrooms,the-umami-guide-to-our-favourite-mushrooms.html,Umami,articles/the-umami-guide-to-our-favourite-mushrooms,mushrooms-umami.jpg,A delightful selection of mushroom varieties laid out on a simple wooden plate.,"18,28"
+5,Let's hear it for carrots,lets-hear-it-for-carrots.html,Umami,articles/lets-hear-it-for-carrots,heritage-carrots.jpg,"Purple, orange, yellow and white heritage carrots.","6,28,15"
+6,Baking mishaps - our troubleshooting tips,baking-mishaps-our-troubleshooting-tips.html,"Umami",articles/baking-mishaps-our-troubleshooting-tips,chocolate-brownie-umami.jpg,"A delicious chocolate brownie","3,17"
+7,Skip the spirits with delicious mocktails,skip-the-spirits-with-delicious-mocktails.html,Megan Collins Quinlan,articles/skip-the-spirits-with-delicious-mocktails,mojito-mocktail.jpg,"Fresh mojito mocktail with garnish of mint leaves, ice, and sliced lime","1,12,20,8,11"
+8,Give your oatmeal the ultimate makeover,give-your-oatmeal-the-ultimate-makeover.html,Umami,articles/give-your-oatmeal-the-ultimate-makeover,oatmeal-fruit-syrup-topping.jpg,"Oatmeal topped with a vibrant mix of berries, nuts, and seeds","27,28,19,4,10"
diff --git a/core/profiles/demo_umami/modules/demo_umami_content/default_content/languages/en/node/page.csv b/core/profiles/demo_umami/modules/demo_umami_content/default_content/languages/en/node/page.csv
new file mode 100644
index 0000000000..492feb1ec9
--- /dev/null
+++ b/core/profiles/demo_umami/modules/demo_umami_content/default_content/languages/en/node/page.csv
@@ -0,0 +1,2 @@
+id,title,body,author,slug
+1,About Umami,"<p>Umami is a fictional food magazine that has been created to demonstrate how you might build a Drupal site using functionality provided 'out of the box'.</p><p>For more information visit <a href='https://www.drupal.org/docs/8/umami-drupal-8-demonstration-installation-profile'>https://www.drupal.org/docs/8/umami-drupal-8-demonstration-installation-profile</a>.</p>",Samuel Adamson,about-umami
diff --git a/core/profiles/demo_umami/modules/demo_umami_content/default_content/languages/en/node/recipe.csv b/core/profiles/demo_umami/modules/demo_umami_content/default_content/languages/en/node/recipe.csv
new file mode 100644
index 0000000000..1580e1b10f
--- /dev/null
+++ b/core/profiles/demo_umami/modules/demo_umami_content/default_content/languages/en/node/recipe.csv
@@ -0,0 +1,10 @@
+id,title,image,alt,summary,author,recipe_category,preparation_time,cooking_time,total_time,difficulty,ingredients,recipe_instruction,number_of_servings,tags,slug
+1,Deep mediterranean quiche,mediterranean-quiche-umami.jpg,"A delicious deep layered Mediterranean quiche with basil garnish.",An Italian inspired quiche with sun dried tomatoes and courgette. A perfect light meal for a summer's day.,Umami,3,40,30,70,medium,"For the pastry:,280g plain flour,140g butter,Cold water,For the filling:,1 onion,2 garlic cloves,Half a courgette,450ml soya milk,500g grated parmesan,2 eggs,200g sun dried tomatoes,100g feta",mediterranean-quiche-umami.html,8,"22,13",recipes/deep-mediterranean-quiche
+2,Vegan chocolate and nut brownies,vegan-chocolate-nut-brownies.jpg,"A stack of chocolate and pecan brownies, sprinkled with pecan crumbs and crushed walnut, fresh out of the oven","Scrumptious vegan chocolate brownies that are rich, fudgy, and nutty. These delights have a surprise hint of coconut making them the perfect indulgence. Serve warm with a little vanilla dairy-free ice cream!",Umami,4,20,20,40,medium,"6 tbsp sunflower oil, 80g vegan dark chocolate, 170g plain flour, 80g coconut flour, 1 tsp baking powder, 9 tsp cocoa powder, 100g caster sugar, 3 tbsp of maple syrup, 1/4 tsp sea salt, 1 tsp vanilla extract, 230ml unsweetened organic soya milk, 100g pecan nuts, 80g walnut halves",vegan-chocolate-nut-brownies.html,12,"3,7,27,9",recipes/vegan-chocolate-and-nut-brownies
+3,Super easy vegetarian pasta bake,veggie-pasta-bake-umami.jpg,Cheesy pasta dish with vegetarian sausages and topped with mozzarella cheese and basil,A wholesome pasta bake is the ultimate comfort food. This delicious bake is super quick to prepare and an ideal midweek meal for all the family.,Umami,3,5,20,25,easy,"400g wholewheat pasta, 1 onion, 2 garlic cloves, 1 pack vegetarian sausages, 400g chopped tomatoes, 50g sliced sun dried tomatoes, 1 pinch sugar, 3 tbsp red pesto, 50g cheddar cheese, Basil or mixed herbs, 100g mozzarella",veggie-pasta-bake-umami.html,4,"28,21,2",recipes/super-easy-vegetarian-pasta-bake
+4,Watercress soup,watercress-soup-umami.jpg,Watercress soup with a sprig of coriander as garnish in a white bowl with green trim.,"A wonderfully simple and light soup, making the most of seasonal, local produce. ",Umami,5,10,20,30,easy,"3 bunches watercress,3 potatoes,3 onions,2 leeks,800ml stock,5 tbsp crème fraîche",watercress-soup-umami.html,4,"25,28",recipes/watercress-soup
+5,Victoria sponge cake,victoria-sponge-umami.jpg,"A classic, uncut Victoria sponge with a deep filling of butter cream and jam","A traditional Victoria sponge cake, perfect for any afternoon with a cup of tea.",Umami,2,20,20,40,easy,"225g butter or margarine,225g caster sugar,225g self-raising flour,4 eggs,1 tsp baking powder,3 tbsp of jam for the filling,Icing sugar to dust the top,Cream to serve",victoria-sponge-umami.html,10,5,recipes/victoria-sponge-cake
+6,Gluten free pizza,pizza-umami.jpg,"Olives, basil, and mozzarella top a gluten free pizza crust with marinara sauce.","A gorgeous and simple gluten free pizza, with deliciously indulgent mozzarella and Parma ham. Can easily be vegetarian by leaving out the ham.",Umami,3,15,15,30,,"400g gluten free flour, 125ml warm water, 125ml milk, 1 sachet dried yeast, 2 tsp sugar, 1 tsp salt, 2 tbsp olive oil, 4 tbsp tomato puree, 1 garlic clove, Fresh basil, 200g mozzarella, 100g rocket, 5 slices Parma ham",pizza-umami.html,4,,recipes/gluten-free-pizza
+7,Thai green curry,thai-green-curry-umami.jpg,"A traditional bowl of creamy, aromatic Thai green curry with chunks of chicken in a small bowl with jasmine rice.",A quick and easy version of the classic Thai green curry. Perfect for a midweek meal!,Umami,3,10,15,25,,"400g coconut milk, 400g chicken or tofu, 1 tbsp Thai green curry paste, 1 garlic clove, 2 tsp fish sauce, 400g mushrooms, 200g green beans, Fresh coriander leaves, Jasmine rice",thai-green-curry-umami.html,4,,recipes/thai-green-curry
+8,Crema catalana,crema-catalana-umami.jpg,"Typical Catalan dessert made from cream and egg yolks, covered with a traditional layer of caramelized sugar to provide a crispy contrast.",Enjoy this sweet recipe for one of the oldest desserts in Europe. It requires very few ingredients!,Umami,2,10,20,30,,"1l milk, 200g sugar, 6 egg yolks, 30g cornstarch, 1 cinnamon stick, 1 piece lemon peel",crema-catalana-umami.html,8,"13,28",recipes/crema-catalana
+9,Fiery chili sauce,chili-sauce-umami.jpg,"An iridescent array of chilies, onions, and garlic, slowly sweating over a low heat","A rich and fiery chili sauce. Take care when handling chili peppers. And serve sparingly!",Umami,1,10,50,60,easy,"2 red onions, 1 lemon, 2 limes, 250ml malt vinegar, 7 garlic cloves, 1 green bell pepper, 1 red bell pepper, 800g cherry tomatoes, 30 mixed chilies, Olive oil, 1 tbsp ground black pepper, 1 tbsp brown sugar",chili-sauce-umami.html,60,28,recipes/fiery-chili-sauce
diff --git a/core/profiles/demo_umami/modules/demo_umami_content/default_content/languages/en/pages.csv b/core/profiles/demo_umami/modules/demo_umami_content/default_content/languages/en/pages.csv
deleted file mode 100644
index a36c10bd5c..0000000000
--- a/core/profiles/demo_umami/modules/demo_umami_content/default_content/languages/en/pages.csv
+++ /dev/null
@@ -1,2 +0,0 @@
-title,body,author,slug
-About Umami,"<p>Umami is a fictional food magazine that has been created to demonstrate how you might build a Drupal site using functionality provided 'out of the box'.</p><p>For more information visit <a href='https://www.drupal.org/docs/8/umami-drupal-8-demonstration-installation-profile'>https://www.drupal.org/docs/8/umami-drupal-8-demonstration-installation-profile</a>.</p>",Samuel Adamson,about-umami
\ No newline at end of file
diff --git a/core/profiles/demo_umami/modules/demo_umami_content/default_content/languages/en/recipes.csv b/core/profiles/demo_umami/modules/demo_umami_content/default_content/languages/en/recipes.csv
deleted file mode 100644
index acc884625c..0000000000
--- a/core/profiles/demo_umami/modules/demo_umami_content/default_content/languages/en/recipes.csv
+++ /dev/null
@@ -1,10 +0,0 @@
-title,image,alt,summary,author,recipe_category,preparation_time,cooking_time,total_time,difficulty,ingredients,recipe_instruction,number_of_servings,tags,slug
-Deep mediterranean quiche,mediterranean-quiche-umami.jpg,"A delicious deep layered Mediterranean quiche with basil garnish.",An Italian inspired quiche with sun dried tomatoes and courgette. A perfect light meal for a summer's day.,Umami,3,40,30,70,medium,"For the pastry:,280g plain flour,140g butter,Cold water,For the filling:,1 onion,2 garlic cloves,Half a courgette,450ml soya milk,500g grated parmesan,2 eggs,200g sun dried tomatoes,100g feta",mediterranean-quiche-umami.html,8,"22,13",recipes/deep-mediterranean-quiche
-Vegan chocolate and nut brownies,vegan-chocolate-nut-brownies.jpg,"A stack of chocolate and pecan brownies, sprinkled with pecan crumbs and crushed walnut, fresh out of the oven","Scrumptious vegan chocolate brownies that are rich, fudgy, and nutty. These delights have a surprise hint of coconut making them the perfect indulgence. Serve warm with a little vanilla dairy-free ice cream!",Umami,4,20,20,40,medium,"6 tbsp sunflower oil, 80g vegan dark chocolate, 170g plain flour, 80g coconut flour, 1 tsp baking powder, 9 tsp cocoa powder, 100g caster sugar, 3 tbsp of maple syrup, 1/4 tsp sea salt, 1 tsp vanilla extract, 230ml unsweetened organic soya milk, 100g pecan nuts, 80g walnut halves",vegan-chocolate-nut-brownies.html,12,"3,7,27,9",recipes/vegan-chocolate-and-nut-brownies
-Super easy vegetarian pasta bake,veggie-pasta-bake-umami.jpg,Cheesy pasta dish with vegetarian sausages and topped with mozzarella cheese and basil,A wholesome pasta bake is the ultimate comfort food. This delicious bake is super quick to prepare and an ideal midweek meal for all the family.,Umami,3,5,20,25,easy,"400g wholewheat pasta, 1 onion, 2 garlic cloves, 1 pack vegetarian sausages, 400g chopped tomatoes, 50g sliced sun dried tomatoes, 1 pinch sugar, 3 tbsp red pesto, 50g cheddar cheese, Basil or mixed herbs, 100g mozzarella",veggie-pasta-bake-umami.html,4,"28,21,2",recipes/super-easy-vegetarian-pasta-bake
-Watercress soup,watercress-soup-umami.jpg,Watercress soup with a sprig of coriander as garnish in a white bowl with green trim.,"A wonderfully simple and light soup, making the most of seasonal, local produce. ",Umami,5,10,20,30,easy,"3 bunches watercress,3 potatoes,3 onions,2 leeks,800ml stock,5 tbsp crème fraîche",watercress-soup-umami.html,4,"25,28",recipes/watercress-soup
-Victoria sponge cake,victoria-sponge-umami.jpg,"A classic, uncut Victoria sponge with a deep filling of butter cream and jam","A traditional Victoria sponge cake, perfect for any afternoon with a cup of tea.",Umami,2,20,20,40,easy,"225g butter or margarine,225g caster sugar,225g self-raising flour,4 eggs,1 tsp baking powder,3 tbsp of jam for the filling,Icing sugar to dust the top,Cream to serve",victoria-sponge-umami.html,10,5,recipes/victoria-sponge-cake
-Gluten free pizza,pizza-umami.jpg,"Olives, basil, and mozzarella top a gluten free pizza crust with marinara sauce.","A gorgeous and simple gluten free pizza, with deliciously indulgent mozzarella and Parma ham. Can easily be vegetarian by leaving out the ham.",Umami,3,15,15,30,,"400g gluten free flour, 125ml warm water, 125ml milk, 1 sachet dried yeast, 2 tsp sugar, 1 tsp salt, 2 tbsp olive oil, 4 tbsp tomato puree, 1 garlic clove, Fresh basil, 200g mozzarella, 100g rocket, 5 slices Parma ham",pizza-umami.html,4,,recipes/gluten-free-pizza
-Thai green curry,thai-green-curry-umami.jpg,"A traditional bowl of creamy, aromatic Thai green curry with chunks of chicken in a small bowl with jasmine rice.",A quick and easy version of the classic Thai green curry. Perfect for a midweek meal!,Umami,3,10,15,25,,"400g coconut milk, 400g chicken or tofu, 1 tbsp Thai green curry paste, 1 garlic clove, 2 tsp fish sauce, 400g mushrooms, 200g green beans, Fresh coriander leaves, Jasmine rice",thai-green-curry-umami.html,4,,recipes/thai-green-curry
-Crema catalana,crema-catalana-umami.jpg,"Typical Catalan dessert made from cream and egg yolks, covered with a traditional layer of caramelized sugar to provide a crispy contrast.",Enjoy this sweet recipe for one of the oldest desserts in Europe. It requires very few ingredients!,Umami,2,10,20,30,,"1l milk, 200g sugar, 6 egg yolks, 30g cornstarch, 1 cinnamon stick, 1 piece lemon peel",crema-catalana-umami.html,8,"13,28",recipes/crema-catalana
-Fiery chili sauce,chili-sauce-umami.jpg,"An iridescent array of chilies, onions, and garlic, slowly sweating over a low heat","A rich and fiery chili sauce. Take care when handling chili peppers. And serve sparingly!",Umami,1,10,50,60,easy,"2 red onions, 1 lemon, 2 limes, 250ml malt vinegar, 7 garlic cloves, 1 green bell pepper, 1 red bell pepper, 800g cherry tomatoes, 30 mixed chilies, Olive oil, 1 tbsp ground black pepper, 1 tbsp brown sugar",chili-sauce-umami.html,60,28,recipes/fiery-chili-sauce
diff --git a/core/profiles/demo_umami/modules/demo_umami_content/default_content/languages/en/recipe_categories.csv b/core/profiles/demo_umami/modules/demo_umami_content/default_content/languages/en/taxonomy_term/recipe_category.csv
similarity index 100%
rename from core/profiles/demo_umami/modules/demo_umami_content/default_content/languages/en/recipe_categories.csv
rename to core/profiles/demo_umami/modules/demo_umami_content/default_content/languages/en/taxonomy_term/recipe_category.csv
diff --git a/core/profiles/demo_umami/modules/demo_umami_content/default_content/languages/en/tags.csv b/core/profiles/demo_umami/modules/demo_umami_content/default_content/languages/en/taxonomy_term/tags.csv
similarity index 100%
rename from core/profiles/demo_umami/modules/demo_umami_content/default_content/languages/en/tags.csv
rename to core/profiles/demo_umami/modules/demo_umami_content/default_content/languages/en/taxonomy_term/tags.csv
diff --git a/core/profiles/demo_umami/modules/demo_umami_content/default_content/languages/es/article_body/dairy-free-delicious-milk-chocolate.html b/core/profiles/demo_umami/modules/demo_umami_content/default_content/languages/es/article_body/dairy-free-delicious-milk-chocolate.html
new file mode 100644
index 0000000000..21b6f6c7cd
--- /dev/null
+++ b/core/profiles/demo_umami/modules/demo_umami_content/default_content/languages/es/article_body/dairy-free-delicious-milk-chocolate.html
@@ -0,0 +1,12 @@
+<p>El calendario está lleno de excusas para complacer a los amantes del chocolate, desde festividades religiosas a cumpleaños - incluso el Día Internacional del chocolate, el 7 de julio. Pero aquellos que son veganos o no toman lácteos no tienen por qué perdérselo porque hay una gran oferta de chocolates veganos sin lactosa.</p>
+<p>El chocolate con leche sin lactosa se fabrica de forma similar al chocolate normal, hasta el momento en el que se añade la leche. Los granos de cacao son tostados durante un par de horas hasta que adquieren su rico sabor. Se elimina la cáscara y se muele el interior del grano hasta conseguir una pasta que pueda mezclarse con la manteca de cacao, produciendo así el porcentaje de cacao deseado. Los saborizantes, el azúcar y la leche son añadidos después en diferentes cantidades dependiendo del tipo de chocolate que se desea realizar. El chocolate es granulado en este punto y se tritura hasta que está suave, ¡esto puede llevar días! Finalmente, se templa mediante un proceso de calentamiento y enfriamiento hasta que está listo para comer.</p>
+<p>Entonces, ¿cómo hacen para que los chocolates veganos adquieran ese sabor y esa textura cremosa propias de la leche?</p>
+<h2>Leche de arroz</h22>
+<p>El sabor de la leche de arroz complementa perfectamente a las semillas de cacao y fue una de las primeras alternativas usadas para crear chocolate con leche vegano. La leche de arroz está hecha de polvo de arroz y algunas veces se combina con leche de avellana para crear la textura y el sabor correctos que son ideales para producir todo tipo de barras de chocolate.</p>
+<h2>Leche de coco</h2>
+<p>La leche de coco es el ingrediente perfecto para agregar cremosidad a una barra de chocolate. Con altos niveles de grasa, un sabor dulce pero no abrumador y con la consistencia correcta, es una excelente opción para el chocolate con leche vegano. El chocolate hecho de esta manera se derretirá estupendamente para luego rociarlo o mojar en él, y la leche de coco agrega un ligero sabor tropical que funciona bien con otros sabores de frutas y nueces.</p>
+<h2>Leche de soja</h2>
+<p>La soja ha sido durante mucho tiempo el pilar de las dietas veganas y vegetarianas ya que es rica en proteínas y está disponible en una amplia variedad de texturas adecuadas para todo tipo de platos. La leche de soja está ampliamente disponible y es una excelente alternativa a la leche para el chocolate. No es tan rica en grasa como algunas leches veganas, pero tiene un sabor neutro que facilita su combinación con casi cualquier otro sabor.</p>
+<h2>Leche de almendras y avellanas</h2>
+<p>Las leches hechas de almendras y avellanas son fáciles de encontrar en los estantes de los supermercados y son perfectas para la producción de chocolate. Al igual que la leche de soja, suelen ser bastante bajas en grasa y, por lo tanto, algo menos cremosas, pero tienen ese sabor a fruto seco que combina muy bien con cualquier tipo de chocolate.</p>
+<p>Muchos fabricantes usan una combinación de las leches anteriores citadas para crear la consistencia perfecta para su producto. Usando una mezcla de estas leches, son capaces de producir todo tipo de chocolates con leche (incluido el chocolate blanco).</p>
diff --git a/core/profiles/demo_umami/modules/demo_umami_content/default_content/languages/es/article_body/give-it-a-go-and-grow-your-own-herbs.html b/core/profiles/demo_umami/modules/demo_umami_content/default_content/languages/es/article_body/give-it-a-go-and-grow-your-own-herbs.html
new file mode 100644
index 0000000000..16782372c2
--- /dev/null
+++ b/core/profiles/demo_umami/modules/demo_umami_content/default_content/languages/es/article_body/give-it-a-go-and-grow-your-own-herbs.html
@@ -0,0 +1,15 @@
+<p>No hay nada como tener tu propio suministro de hierbas frescas a mano y listas para ser usadas mientras cocinas. Tanto si tienes un gran jardín como un pequeño alféizar en la cocina, siempre hay espacio suficiente para un cultivo casero.</p>
+<h2>Exteriores</h2>
+<h3>Menta</h3>
+<p>La menta es una gran planta para cultivo casero ya que es resistente y prácticamente crece en cualquier tipo de tierra. La menta es un cultivo que puede descontrolarse, así que mantenla cercada en una maceta o podría extenderse por todo tu jardín.</p>
+<h3>Salvia</h3>
+<p>Al igual que la menta, la salvia es otra planta que crece de forma descontrolada y puede hacerse con tu jardín si la dejas. Altamente aromática, la planta de la salvia se puede plantar en una maceta o en un lecho de flores con tierra seca. La mejor forma de almacenar las hierbas es secarlas al sol y guardarlas dentro de un recipiente cerrado en un armario fresco y oscuro.</p>
+<h3>Romero</h3>
+<p>La planta del romero crece en forma de hermosos arbustos. Se puede cultivar fácilmente a partir de esquejes. No aguanta las temperaturas muy frías así que hay que plantarla cerca de la casa para protegerlas del frío. Crece bien en maceta ya que le gusta el suelo seco, pero puede sobrevivir también sin problema en el suelo. Si vas a podar el romero para mejorar su forma, guarda las ramas y cuélgalas boca abajo para preservar su sabor y usarlas en tus platos.</p>
+<h2>Interiores</h2>
+<h3>Albahaca</h3>
+<p>Perfecta para un lugar al sol en el alféizar de la ventana de la cocina. La albahaca es una planta anual, así que morirá en otoño por lo que es una buena idea recogerla en verano y secarla. Una vez cortada, la albahaca se mantiene fresca más tiempo si se pone en agua (como se hace con las flores frescas). Otra buena manera de almacenar la albahaca es hacer pesto con ella.</p>
+<h3>Cebollino</h3>
+<p>El cebollino es una hierba versátil, que crece sin problema en interiores. Asegurate de que la planta se riega bien y recibe mucha luz. Recuerda recortar regularmente la planta para prevenir que salgan flores y la planta crezca más.</p>
+<h3>Cilantro</h3>
+<p>El cilantro puede crecer en interiores, pero a diferencia de otras hierbas, no soporta la luz directa del sol. Si tienes una ventana en la cocina orientada al sur no es un buen lugar para colocarla. Aunque no necesita tanta agua como la albahaca, al cilantro no le gusta la tierra seca así que acuérdate de regarla. El cilantro cortado se almacena mejor en el frigorífico.</p>
diff --git a/core/profiles/demo_umami/modules/demo_umami_content/default_content/languages/es/article_body/the-real-deal-for-supermarket-savvy-shopping.html b/core/profiles/demo_umami/modules/demo_umami_content/default_content/languages/es/article_body/the-real-deal-for-supermarket-savvy-shopping.html
new file mode 100644
index 0000000000..f45dfdd374
--- /dev/null
+++ b/core/profiles/demo_umami/modules/demo_umami_content/default_content/languages/es/article_body/the-real-deal-for-supermarket-savvy-shopping.html
@@ -0,0 +1,16 @@
+<p>Puede que esto no le sorprenda, pero su supermercado es un hervidero de marketing caótico diseñado para mejorar sus ganancias y para alentar al consumidor a gastar más de lo que pretendía. Los trucos que emplean todos los supermercados son a veces tácticas sensatas que cualquier minorista debería hacer para mejorar las ventas, pero algunas de ellas  pueden ser más sutiles y menos obvias de lo que cree.<p>
+<p>Debido a los artículos y los documentales de sensibilización, los consumidores retoman este tema con frecuencia y es probable que a los minoristas les resulte más difícil salirse con la suya usando solamente los trucos más obvios. Nos estamos convirtiendo en unos consumidores cada vez más inteligentes y probablemente no hay muchas cosas que nos sorprendan. Pero aquí hay algunos trucos para la venta al por menor que debe tener en cuenta cuando se apresura a realizar la compra semanal en el supermercado.</p>
+<h2>Productos esenciales escondidos</h2>
+<p>La distribución de su supermercado puede tener mucho sentido para usted cuando lleva comprando ahí un tiempo, pero para los nuevos clientes que están intentando encontrar los productos esenciales puede que no tenga ningún sentido. Algunos supermercados han notado como la gente que viene a su tienda a comprar leche, pan o huevos y que, ocultando esos productos esenciales en esquinas recónditas de la tienda, los animan a deambular por ella mientras añaden a la cesta otros productos antes de irse.</p>
+<p>Por supuesto, esto puede ser genial para recordar productos esenciales que de otra forma olvidaría, pero no lo es si lo que quiere es ahorrar unas monedas y solo comprar las cosas a por las que vino, y eso lo los supermercados lo saben.</p>
+<blockquote>
+Nuestro consejo: Realice la lista de la compra antes de salir de casa, revisando que necesita y marcándolo en la lista. Le sorprenderá lo que ahorra con el tiempo.
+</blockquote>
+<h2>Descuentos por número</h2>
+<p>Compre uno y llévese otro gratis; dos por 2&pound; y ofertas en comida. Todo esto descuentos parecen una buena oportunidad, pero en algunos casos son productos vendidos a pérdidas con el único objetivo de atraerle y que compre más cosas mientras está allí. En otros casos, las ofertas para múltiples productos o packs de tamaño específico pueden parecer una ganga hasta que se comparan los precios con marcas similares u otros tamaños de la misma marca. Estos descuentos pueden hacerle pensar que paga menos pero es menos por algo que no necesita e incluso puede terminar pagando más por el artículo. Recuerde, los supermercados saben que a menudo tiene prisa y no tiene tiempo suficiente de considerar la imagen completa del producto.</p>
+<blockquote>
+<p>Nuestro consejo: No se apresure y tómese el tiempo necesario para leer la letra pequeña. La letra grande le atraerá pero en la letra pequeña encontrará el precio por cada 100g de producto o el precio por litro y se sorprenderá de la de veces que no existe tal oferta o incluso que es más caro que el paquete pequeño.</p>
+</blockquote>
+<h2>Entendiendo nuestros hábitos de compra</h2>
+<p>Los productos más baratos del supermercado casi siempre se colocan en la parte baja de las estanterías, donde tendrá que agacharse para tomarlos. También es posible que no pueda leer fácilmente el precio en el ticket. La mayoría de la gente selecciona los productos de la parte media de las estanterías dado que es más fácil y rápido. Esos productos son los que tienen mayores beneficios y son los que el supermercado quiere que compre.</p>
+<p>La distribución de música, colores y tipos de productos está decidido en base a unos principios establecidos por expertos en personas: psicólogos y expertos en comportamiento que saben cómo pensamos. Y así, el comprador inteligente sin duda podrá aprovechar las grandes ofertas en su tienda semanal, pero se necesita un poco de tiempo y esfuerzo para ser más conscientes de lo que se nos incita a escoger en los pasillos.</p>
diff --git a/core/profiles/demo_umami/modules/demo_umami_content/default_content/languages/es/article_body/the-umami-guide-to-our-favourite-mushrooms.html b/core/profiles/demo_umami/modules/demo_umami_content/default_content/languages/es/article_body/the-umami-guide-to-our-favourite-mushrooms.html
new file mode 100644
index 0000000000..6cbd7a89a0
--- /dev/null
+++ b/core/profiles/demo_umami/modules/demo_umami_content/default_content/languages/es/article_body/the-umami-guide-to-our-favourite-mushrooms.html
@@ -0,0 +1,7 @@
+<p>Creemos que las setas son uno de los ingredientes que más se pueden disfrutar en la cocina. Hay muchas variedades comestibles para probar, cada una con su propia forma, tamaño y sabor distintivos. Y con curiosos nombres como rebozuelo, seta gitana, trompeta de los muertos o frigola frondosa ¿quién no querría saber más sobre cocinar con las poderosas setas?</p>
+<p>Una de las mejoras cosas que tienen las setas son su versatilidad. Pueden ser fritas, tostadas, asadas al horno oa la parrilla e incluso cocinadas en un microondas. Y pueden ser servidas como ingrediente principal del plato como parte de un conjunto mayor. Esto hace a las setas una opción ideal para crear simples y deliciosos platos vegetarianos.</p>
+<p>Así que echemos un vistazo a algunos de nuestros tipos preferidos de setas. Es posible que no hayas intentado cocinar con ellas antes, pero no dejes que eso te desanime. Con sus deliciosos y particulares sabores puedes transformar fácilmente sopas, entrantes, salsas y crear increíbles platos de pasta o salteados.</p>
+<p>Prueba el adorable <strong>shiitake</strong>. Usadas en la cocina asiática, pueden comprarse secos y rehidratados para obtener un sabor fuerte y profundo. O comprarlo fresco y añadirlo a sopas y sofritos. No solo es una seta de intenso sabor, sino también de encantadora apariencia. Las formas de color marrón oscuro y suave proporcionarán textura a su comida. En su forma rehidratada son el complemento perfecto para un caldo o un risotto.</p>
+<p>La hermosa <strong>rebozuelo</strong> (o chantarela) con su pulpa amarilla, tiene un sabor afrutado, pero vale la pena mencionar que hay muchas variedades parecidas por ahí y se ha de tener cuidado para asegurarse de que se está comiendo la correcta. Quedan muy bien en una tortilla o una sopa asiática para complementar los tonos amarillos.</p>
+<p>La <strong>morchella</strong> (o morilla) marrón ofrece un sabor carnoso y distintivo y probablemente te encantará lo extraordinaria que se ve en una comida. La morchella es una seta más popular durante la primavera, que es cuando su disponibilidad es más alta.</p>
+<p>Para algo delicado, pruebe la <strong>enoki</strong>, con sus diminutas cabezas blancas que crecen en un montón. Incluso se pueden comer crudas en ensaladas. Por último, puedes elegir la popular seta <strong>ostra</strong>. Se nombran porque no se parecen en nada a una seta y se asemejan a las entrañas de una ostra y su sabor dulce es delicioso.</p>
diff --git a/core/profiles/demo_umami/modules/demo_umami_content/default_content/languages/es/block_content/banner_block.csv b/core/profiles/demo_umami/modules/demo_umami_content/default_content/languages/es/block_content/banner_block.csv
new file mode 100644
index 0000000000..ee579cab35
--- /dev/null
+++ b/core/profiles/demo_umami/modules/demo_umami_content/default_content/languages/es/block_content/banner_block.csv
@@ -0,0 +1,3 @@
+id,uuid,info,type,field_title,field_content_link_content,field_content_link_title,field_summary,field_banner_image_target_id,field_banner_image_alt
+umami_home_banner,9aadf4a1-ded6-4017-a10d-a5e043396edf,"Spanish-Umami Home Banner",banner_block,"Spanish-Super easy vegetarian pasta bake","Super easy vegetarian pasta bake","Spanish-View recipe","A wholesome pasta bake is the ultimate comfort food. This delicious bake is super quick to prepare and an ideal midweek meal for all the family.",veggie-pasta-bake-hero-umami.jpg,"Mouth watering vegetarian pasta bake with rich tomato sauce and cheese toppings"
+umami_recipes_banner,4c7d58a3-a45d-412d-9068-259c57e40541,"Spanish-Umami Recipes Banner",banner_block,"Spanish-Vegan chocolate and nut brownies","Vegan chocolate and nut brownies","Spanish-View recipe","These sumptuous brownies should be gooey on the inside and crisp on the outside. A perfect indulgence!",vegan-brownies-hero-umami.jpg,"A stack of chocolate and pecan brownies, sprinkled with pecan crumbs and crushed walnut, fresh out of the oven"
diff --git a/core/profiles/demo_umami/modules/demo_umami_content/default_content/languages/es/block_content/disclaimer_block.csv b/core/profiles/demo_umami/modules/demo_umami_content/default_content/languages/es/block_content/disclaimer_block.csv
new file mode 100644
index 0000000000..3880836843
--- /dev/null
+++ b/core/profiles/demo_umami/modules/demo_umami_content/default_content/languages/es/block_content/disclaimer_block.csv
@@ -0,0 +1,2 @@
+id,uuid,info,type,field_disclaimer,field_copyright
+umami_disclaimer,9b4dcd67-99f3-48d0-93c9-2c46648b29de,"Spanish-Umami Disclaimer",disclaimer_block,"Spanish-<strong>Umami Magazine & Umami Publications</strong> is a fictional magazine and publisher for illustrative purposes only.","Terms & Conditions"
diff --git a/core/profiles/demo_umami/modules/demo_umami_content/default_content/languages/es/block_content/footer_promo_block.csv b/core/profiles/demo_umami/modules/demo_umami_content/default_content/languages/es/block_content/footer_promo_block.csv
new file mode 100644
index 0000000000..295b0f862a
--- /dev/null
+++ b/core/profiles/demo_umami/modules/demo_umami_content/default_content/languages/es/block_content/footer_promo_block.csv
@@ -0,0 +1,2 @@
+id,uuid,info,type,field_title,field_content_link_content,field_content_link_title,field_summary,field_promo_image_target_id,field_promo_image_alt
+umami_footer_promo,924ab293-8f5f-45a1-9c7f-2423ae61a241,"Spanish-Umami footer promo",footer_promo_block,"Spanish-Umami Food Magazine","About Umami","Spanish-Find out more","Skills and know-how. Magazine exclusive articles, recipes and plenty of reasons to get your copy today.",umami-bundle.png,"3 issue bundle of the Umami food magazine"
diff --git a/core/profiles/demo_umami/modules/demo_umami_content/default_content/languages/es/node/article.csv b/core/profiles/demo_umami/modules/demo_umami_content/default_content/languages/es/node/article.csv
new file mode 100644
index 0000000000..62ae728e46
--- /dev/null
+++ b/core/profiles/demo_umami/modules/demo_umami_content/default_content/languages/es/node/article.csv
@@ -0,0 +1,5 @@
+id,title,body,author,slug,image,alt,tags
+1,Prueba y cultiva tus propias hierbas,give-it-a-go-and-grow-your-own-herbs.html,Holly Foat,articles/prueba-y-cultiva-tus-propias-hierbas,home-grown-herbs.jpg,"Hierbas frescas cortadas incluyendo menta, perejil, tomillo y eneldo.","14,23,16"
+2,Delicioso chocolate sin lactosa,dairy-free-delicious-milk-chocolate.html,Umami,articles/delicioso-chocolate-sin-lactosa,vegan-chocolate.jpg,"Deliciosa tableta de chocolate con leche sin lactosa partido en onzas.","27,7"
+3,El verdadero negocio para comprar en el supermercado,the-real-deal-for-supermarket-savvy-shopping.html,Megan Collins Quinlan,articles/el-verdadeo-negocio-para-comprar-en-el-supermercado,supermarket-savvy-umami.jpg,"Productos presentados en un la estantería de un supermercado.","26,24"
+4,Guía Umami de nuestras setas preferidas,the-umami-guide-to-our-favourite-mushrooms.html,Umami,articles/guia-umami-de-nuestras-setas-preferidas,mushrooms-umami.jpg,"Una deliciosa selección de variedades de setas distribuidas en un sencillo plato de madera.","18,28"
diff --git a/core/profiles/demo_umami/modules/demo_umami_content/default_content/languages/es/node/page.csv b/core/profiles/demo_umami/modules/demo_umami_content/default_content/languages/es/node/page.csv
new file mode 100644
index 0000000000..4875bfb4aa
--- /dev/null
+++ b/core/profiles/demo_umami/modules/demo_umami_content/default_content/languages/es/node/page.csv
@@ -0,0 +1,2 @@
+id,title,body,author,slug
+1,Acerca de Umami,"<p> Umami es una revista ficticia de alimentos que se ha creado para demostrar cómo se puede construir un sitio de Drupal con la funcionalidad que se proporciona 'fuera de la caja'. </p> <p> Para obtener más información, visite <a href = 'https: //www.drupal.org/docs/8/umami-drupal-8-demonstration-installation-profile'> https://www.drupal.org/docs/8/umami-drupal-8-demonstration -installation-profile </a>. </p> ",Samuel Adamson,about-umami
diff --git a/core/profiles/demo_umami/modules/demo_umami_content/default_content/languages/es/node/recipe.csv b/core/profiles/demo_umami/modules/demo_umami_content/default_content/languages/es/node/recipe.csv
new file mode 100644
index 0000000000..e328a04546
--- /dev/null
+++ b/core/profiles/demo_umami/modules/demo_umami_content/default_content/languages/es/node/recipe.csv
@@ -0,0 +1,5 @@
+id,title,image,alt,summary,author,recipe_category,preparation_time,cooking_time,total_time,difficulty,ingredients,recipe_instruction,number_of_servings,tags,slug
+4,Sopa de berro,watercress-soup-umami.jpg,Sopa de berros con una ramita de cilantro como guarnición en un tazón blanco con borde verde.,"Una sopa maravillosamente simple y ligera, que aprovecha al máximo los productos locales de temporada.",Umami,5,10,20,30,easy,"3 racimos de berros,3 patatas,3 cebollas,2 puerros,800ml de caldo,75g de crème fraîche",watercress-soup-umami.html,4,"25,28",recipes/sopa-de-berro
+6,Pizza sin gluten,pizza-umami.jpg,"Aceitunas, albahaca y mozzarella cubren una masa de pizza sin gluten con salsa de tomate.","Una vistosa y simple pizza sin gluten, con deliciosa mozzarella y jamón de Parma. Puede convertirse fácilmente en vegetariana si quitamos el jamón.",Umami,3,15,15,30,,"400g de harina sin gluten, 125ml de agua caliente, 125ml de Leche, 1 de bolsita levadura, 12g de azúcar, 6g de Sal, 32g de aceite de oliva, 75g de tomate triturado, 1 diente de ajo, Albahaca fresca, 200g de mozzarella, 100g de rúcula, 5 lonchas de jamón de Parma",pizza-umami.html,4,,recipes/pizza-sin-gluten
+7,Curry verde tailandés,thai-green-curry-umami.jpg,"Un tazón tradicional de curry verde tailandés aromático y cremoso, con trozos de pollo y verduras.",Una versión rápida y fácil del clásico curry verde tailandés. ¡Perfecto para una comida entre semana!,Umami,3,10,15,25,,"400g de leche de coco, 400g de pollo o tofu, 15g de pasta de curry verde tailandés, 1 diente de ajo, 10g de salsa de pescado, 400g de champiñones, 200g de judías verdes, Hojas de cilantro fresco, Arroz jazmín",thai-green-curry-umami.html,4,,recipes/curry-verde-tailandes
+8,Crema catalana,crema-catalana-umami.jpg,"Postre típico catalán hecho de crema y yemas de huevo, cubierto con una capa tradicional de azúcar caramelizado para proporcionar un contraste crujiente.",Disfruta de esta dulce receta de uno de los postres más antiguos de Europa. ¡Requiere muy pocos ingredientes!,Umami,2,10,20,30,,"1l de Leche, 200g de azúcar, 6 yemas de huevo, 30g de Maizena, 1 rama de canela, 1 La piel de un limón",crema-catalana-umami.html,8,"13,28",recipes/crema-catalana
diff --git a/core/profiles/demo_umami/modules/demo_umami_content/default_content/languages/es/recipe_instructions/crema-catalana-umami.html b/core/profiles/demo_umami/modules/demo_umami_content/default_content/languages/es/recipe_instructions/crema-catalana-umami.html
new file mode 100644
index 0000000000..ff6d6a79b8
--- /dev/null
+++ b/core/profiles/demo_umami/modules/demo_umami_content/default_content/languages/es/recipe_instructions/crema-catalana-umami.html
@@ -0,0 +1,8 @@
+<ol>
+  <li>Mezcle las yemas de huevo, el azúcar y la harina de maiz con ⅓ de la leche. En un cazo, hierve el resto de la leche con la ralladura de un limón y la canela.</li>
+  <li>Después de 3 minutos, aparte del fuego y quite el limón y la canela.</li>
+  <li>Ve añadiendo muy despacio la mezcla del huevo sobre la leche utilizando un colador para asegurarse que no hay grumos.</li>
+  <li>Coloque el cazo otra vez en el fuego y, sin dejar de remover, espere hasta que hierva.</li>
+  <li>Una vez que la mezcla ha empezado a espesar, apártalo del fuego y ponlo en recipientes individuales para que enfríe.</li>
+  <li>Para un resultado auténtico, esparza un poco de azúcar y caramelízalo con un soplete de cocina o bajo el gratinador del horno.</li>
+</ol>
diff --git a/core/profiles/demo_umami/modules/demo_umami_content/default_content/languages/es/recipe_instructions/pizza-umami.html b/core/profiles/demo_umami/modules/demo_umami_content/default_content/languages/es/recipe_instructions/pizza-umami.html
new file mode 100644
index 0000000000..3f4be7afa6
--- /dev/null
+++ b/core/profiles/demo_umami/modules/demo_umami_content/default_content/languages/es/recipe_instructions/pizza-umami.html
@@ -0,0 +1,7 @@
+<ol>
+  <li>Precaliente el horno a 425 ° F / 220 ° C. Mezcle un poco de la leche y el agua en un jarra. Agregue la levadura y el azúcar y apártalos.</li>
+  <li>Mezcle la harina, la sal y el aceite en un bol. Agregue lentamente el líquido de la jarra y forme una masa.</li>
+  <li>Rompa la masa por la mitad y dele forma de dos bases de pizza. Deje reposar durante unos 15 minutos, mientras hace la cobertura.</li>
+  <li>Extienda el tomate triturado sobre las bases de pizza, corte la albahaca y la rúcula y espolvoree sobre el tomate. Distribuya sobre la masa el jamón de Parma picado y agregue rebanadas gruesas de mozzarella por toda la pizza.</li>
+  <li>Hornee en la rejilla superior (con una bandeja debajo) de 10 a 12 minutos o hasta que la mozzarella esté burbujeando. Sazone con sal y pimienta y sirva.</li>
+</ol>
diff --git a/core/profiles/demo_umami/modules/demo_umami_content/default_content/languages/es/recipe_instructions/thai-green-curry-umami.html b/core/profiles/demo_umami/modules/demo_umami_content/default_content/languages/es/recipe_instructions/thai-green-curry-umami.html
new file mode 100644
index 0000000000..8550f6bfd2
--- /dev/null
+++ b/core/profiles/demo_umami/modules/demo_umami_content/default_content/languages/es/recipe_instructions/thai-green-curry-umami.html
@@ -0,0 +1,6 @@
+<ol>
+  <li>En un wok grande, dorar el pollo, luego bajar el fuego y cocinar suavemente el ajo. Añadir las judías verdes picadas y revolver.</li>
+  <li>Añadir la leche de coco, la pasta de curry verde y la salsa de pescado.</li>
+  <li>Agregar los champiñones picados y cocinar a fuego lento hasta que el pollo (o tofu) esté cocido.</li>
+  <li>Servir con arroz jazmín y una pizca de cilantro.</li>
+</ol>
diff --git a/core/profiles/demo_umami/modules/demo_umami_content/default_content/languages/es/recipe_instructions/watercress-soup-umami.html b/core/profiles/demo_umami/modules/demo_umami_content/default_content/languages/es/recipe_instructions/watercress-soup-umami.html
new file mode 100644
index 0000000000..a8c0a8e32c
--- /dev/null
+++ b/core/profiles/demo_umami/modules/demo_umami_content/default_content/languages/es/recipe_instructions/watercress-soup-umami.html
@@ -0,0 +1,7 @@
+<ol>
+  <li>Prepare las verduras pelando y cortando las patatas y picando finamente las cebollas, los puerros y el ajo.</li>
+  <li>Caliente un poco de aceite en una sartén y agregue las verduras picadas, cocinándolas suavemente durante unos 5 minutos.</li>
+  <li>Agregue el caldo de verduras a la misma sartén y aumente el fuego hasta que hierva a fuego lento, agregando el berro después de unos 10 minutos. Cocine hasta que todas las verduras estén blandas y se muelan fácilmente.</li>
+  <li>Licuar la sopa con una batidora de mano o en un mezclador, hasta que esté suave.</li>
+  <li>Si la sopa se ha enfriado demasiado mientras se está licuando, agregue la crème fraîche y vuelva a calentarla antes de servirla (de lo contrario, sírvala de inmediato). Sazone a su gusto.</li>
+</ol>
diff --git a/core/profiles/demo_umami/modules/demo_umami_content/default_content/languages/es/taxonomy_term/recipe_category.csv b/core/profiles/demo_umami/modules/demo_umami_content/default_content/languages/es/taxonomy_term/recipe_category.csv
new file mode 100644
index 0000000000..9e56a61ef2
--- /dev/null
+++ b/core/profiles/demo_umami/modules/demo_umami_content/default_content/languages/es/taxonomy_term/recipe_category.csv
@@ -0,0 +1,6 @@
+id,term
+1,Acompañamiento
+2,Postre
+3,Plato principal
+4,Tentempié
+5,Entrante
diff --git a/core/profiles/demo_umami/modules/demo_umami_content/default_content/languages/es/taxonomy_term/tags.csv b/core/profiles/demo_umami/modules/demo_umami_content/default_content/languages/es/taxonomy_term/tags.csv
new file mode 100644
index 0000000000..fca5cdaeab
--- /dev/null
+++ b/core/profiles/demo_umami/modules/demo_umami_content/default_content/languages/es/taxonomy_term/tags.csv
@@ -0,0 +1,29 @@
+id,term
+1,Sin alcohol
+2,Horneado
+3,Cocción
+4,Desayuno
+5,Pastel
+6,Zanahorias
+7,Chocolate
+8,Fiesta de coctel
+9,Sin Lactosa
+10,Postre
+11,Fiesta de cena
+12,Bebidas
+13,Huevo
+14,Cultiva los tuyos
+15,Saludable
+16,Hierbas
+17,Aprender a cocinar
+18,Champiñones
+19,Avena
+20,Fiesta
+21,Pastas
+22,Repostería
+23,Estacional
+24,Compras
+25,Sopa
+26,Supermercados
+27,Vegano
+28,Vegetariano
diff --git a/core/profiles/demo_umami/modules/demo_umami_content/src/InstallHelper.php b/core/profiles/demo_umami/modules/demo_umami_content/src/InstallHelper.php
index b434ffe681..ecd1120e0a 100644
--- a/core/profiles/demo_umami/modules/demo_umami_content/src/InstallHelper.php
+++ b/core/profiles/demo_umami/modules/demo_umami_content/src/InstallHelper.php
@@ -110,49 +110,77 @@ public static function create(ContainerInterface $container) {
    * @throws \Drupal\Core\Entity\EntityStorageException
    */
   public function importContent() {
-    $this->importTerms('tags', 'tags.csv')
-      ->importTerms('recipe_category', 'recipe_categories.csv')
-      ->importEditors()
-      ->importArticles()
-      ->importRecipes()
-      ->importPages()
-      ->importBlockContent();
+    $this->importEditors()
+      ->importContentFromFile('taxonomy_term', 'tags')
+      ->importContentFromFile('taxonomy_term', 'recipe_category')
+      ->importContentFromFile('node', 'recipe')
+      ->importContentFromFile('node', 'article')
+      ->importContentFromFile('node', 'page')
+      ->importContentFromFile('block_content', 'banner_block')
+      ->importContentFromFile('block_content', 'disclaimer_block')
+      ->importContentFromFile('block_content', 'footer_promo_block');
   }
 
   /**
-   * Imports terms for a given vocabulary and filename.
+   * Read Multilingual Content.
    *
-   * @param string $vocabulary
-   *   Machine name of vocabulary to which we should save terms.
    * @param string $filename
-   *   Filename of the file containing the terms to import.
+   *   Filename to import.
    *
-   * @return $this
-   *
-   * @throws \Drupal\Component\Plugin\Exception\InvalidPluginDefinitionException
-   * @throws \Drupal\Component\Plugin\Exception\PluginNotFoundException
-   * @throws \Drupal\Core\Entity\EntityStorageException
+   * @return array $keyed_content,$translated_languages
+   *   All multilingual content that was read from the files.
+   *   List of language codes that need to be imported.
    */
-  protected function importTerms($vocabulary, $filename) {
+  protected function readMultilingualContent($filename) {
+    // Find all the language directories available for default content.
     $module_path = $this->moduleHandler->getModule('demo_umami_content')->getPath();
-    $term_storage = $this->entityTypeManager->getStorage('taxonomy_term');
-    if (($handle = fopen($module_path . "/default_content/languages/en/$filename", 'r')) !== FALSE) {
-      $header = fgetcsv($handle);
-      while (($data = fgetcsv($handle)) !== FALSE) {
-        $data = array_combine($header, $data);
-        $term_name = trim($data['term']);
-
-        $term = $term_storage->create([
-          'name' => $term_name,
-          'vid' => $vocabulary,
-          'path' => ['alias' => '/' . Html::getClass($vocabulary) . '/' . Html::getClass($term_name)],
-        ]);
-        $term->save();
-        $this->storeCreatedContentUuids([$term->uuid() => 'taxonomy_term']);
-        $this->saveTermId($vocabulary, $data['id'], $term->id());
+    $translated_languages = [];
+    $default_content_path = $module_path . "/default_content/languages/";
+    $dir_handle = opendir($default_content_path);
+    while ($languages_directory = readdir($dir_handle)) {
+      switch ($languages_directory) {
+        case ".":
+          break;
+        case "..":
+          break;
+        default:
+          array_push($translated_languages, $languages_directory);
       }
     }
-    return $this;
+    closedir($dir_handle);
+
+    // Load all content in all languages.
+    foreach ($translated_languages as $language) {
+      if (file_exists($default_content_path . "$language/$filename") &&
+      ($handle = fopen($default_content_path . "$language/$filename", 'r')) !== FALSE) {
+        $first_csv_line = fgetcsv($handle);
+        // Save the header from the English file.
+        if ($language === 'en') {
+          $header = $first_csv_line;
+        }
+        $line_counter = 0;
+        while (($content = fgetcsv($handle)) !== FALSE) {
+          $data[$language][$line_counter] = $content;
+          $line_counter++;
+        }
+        fclose($handle);
+      }
+      else {
+        // Language directory exists, but the file in this language was not found,
+        // remove that language from list list of languages to be translated.
+        $error = error_get_last();
+        $key = array_search($language, $translated_languages);
+        unset($translated_languages[$key]);
+      }
+    }
+
+    // Add keys to each content in all languages.
+    foreach ($translated_languages as $translated_language) {
+      foreach ($data[$translated_language] as $index => $content) {
+        $keyed_content[$translated_language][$index] = array_combine($header, $content);
+      }
+    }
+    return [$keyed_content, $translated_languages];
   }
 
   /**
@@ -216,314 +244,471 @@ protected function importEditors() {
   }
 
   /**
-   * Imports articles.
+   * Process terms for a given vocabulary and filename.
    *
-   * @return $this
+   * @param array $data
+   *   Data of line that was read from the file.
+   * @param string $vocabulary
+   *   Machine name of vocabulary to which we should save terms.
+   *
+   * @return array
+   *   Data structured as a term.
    */
-  protected function importArticles() {
-    $module_path = $this->moduleHandler->getModule('demo_umami_content')
-      ->getPath();
-    if (($handle = fopen($module_path . '/default_content/languages/en/articles.csv', "r")) !== FALSE) {
-      $uuids = [];
-      $header = fgetcsv($handle);
-      while (($data = fgetcsv($handle)) !== FALSE) {
-        $data = array_combine($header, $data);
-        // Prepare content.
-        $values = [
-          'type' => 'article',
-          'title' => $data['title'],
-          'moderation_state' => 'published',
-        ];
-        // Fields mapping starts.
-        // Set Body Field.
-        if (!empty($data['body'])) {
-          $body_path = $module_path . '/default_content/languages/en/article_body/' . $data['body'];
-          $body = file_get_contents($body_path);
-          if ($body !== FALSE) {
-            $values['body'] = [['value' => $body, 'format' => 'basic_html']];
-          }
-        }
-        // Set node alias if exists.
-        if (!empty($data['slug'])) {
-          $values['path'] = [['alias' => '/' . $data['slug']]];
-        }
-        // Set field_tags if exists.
-        if (!empty($data['tags'])) {
-          $values['field_tags'] = [];
-          $tags = explode(',', $data['tags']);
-          foreach ($tags as $tag_id) {
-            if ($tid = $this->getTermId('tags', $tag_id)) {
-              $values['field_tags'][] = ['target_id' => $tid];
-            }
-          }
-        }
-        // Set article author.
-        if (!empty($data['author'])) {
-          $values['uid'] = $this->getUser($data['author']);
-        }
-        // Set Image field.
-        if (!empty($data['image'])) {
-          $path = $module_path . '/default_content/images/' . $data['image'];
-          $values['field_image'] = [
-            'target_id' => $this->createFileEntity($path),
-            'alt' => $data['alt'],
-          ];
-        }
+  protected function processTerm(array $data, $vocabulary) {
+    $term_name = trim($data['term']);
+
+    // Prepare content.
+    $values = [
+      'name' => $term_name,
+      'vid' => $vocabulary,
+      'path' => ['alias' => '/' . Html::getClass($vocabulary) . '/' . Html::getClass($term_name)],
+      'langcode' => 'en',
+    ];
+    return $values;
+  }
 
-        // Create Node.
-        $node = $this->entityTypeManager->getStorage('node')->create($values);
-        $node->save();
-        $uuids[$node->uuid()] = 'node';
-      }
-      $this->storeCreatedContentUuids($uuids);
-      fclose($handle);
+  /**
+   * Process pages data into page node structure.
+   *
+   * @param array $data
+   *   Data of line that was read from the file.
+   *
+   * @return array
+   *   Data structured as a page node.
+   */
+  protected function processPage($module_path, array $data) {
+    // Prepare content.
+    $values = [
+      'type' => 'page',
+      'title' => $data['title'],
+      'moderation_state' => 'published',
+      'langcode' => 'en',
+    ];
+    // Fields mapping starts.
+    // Set Body Field.
+    if (!empty($data['body'])) {
+      $values['body'] = [['value' => $data['body'], 'format' => 'basic_html']];
     }
-    return $this;
+    // Set node alias if exists.
+    if (!empty($data['slug'])) {
+      $values['path'] = [['alias' => '/' . $data['slug']]];
+    }
+    // Set article author.
+    if (!empty($data['author'])) {
+      $values['uid'] = $this->getUser($data['author']);
+    }
+    return $values;
   }
 
   /**
-   * Imports recipes.
+   * Process recipe data into recipe node structure.
    *
-   * @return $this
+   * @param string $module_path
+   *   Path of this module
+   * @param array $data
+   *   Data of line that was read from the file.
+   *
+   * @return array
+   *   Data structured as a recipe node.
    */
-  protected function importRecipes() {
-    $module_path = $this->moduleHandler->getModule('demo_umami_content')->getPath();
-
-    if (($handle = fopen($module_path . '/default_content/languages/en/recipes.csv', "r")) !== FALSE) {
-      $header = fgetcsv($handle);
-      $uuids = [];
-      while (($data = fgetcsv($handle)) !== FALSE) {
-        $data = array_combine($header, $data);
-        $values = [
-          'type' => 'recipe',
-          // Title field.
-          'title' => $data['title'],
-          'moderation_state' => 'published',
-        ];
-        // Set article author.
-        if (!empty($data['author'])) {
-          $values['uid'] = $this->getUser($data['author']);
-        }
-        // Set node alias if exists.
-        if (!empty($data['slug'])) {
-          $values['path'] = [['alias' => '/' . $data['slug']]];
-        }
-        // Set field_image field.
-        if (!empty($data['image'])) {
-          $image_path = $module_path . '/default_content/images/' . $data['image'];
-          $values['field_image'] = [
-            'target_id' => $this->createFileEntity($image_path),
-            'alt' => $data['alt'],
-          ];
-        }
-        // Set field_summary Field.
-        if (!empty($data['summary'])) {
-          $values['field_summary'] = [['value' => $data['summary'], 'format' => 'basic_html']];
-        }
-        // Set field_recipe_category if exists.
-        if (!empty($data['recipe_category'])) {
-          $values['field_recipe_category'] = [];
-          $tags = array_filter(explode(',', $data['recipe_category']));
-          foreach ($tags as $tag_id) {
-            if ($tid = $this->getTermId('recipe_category', $tag_id)) {
-              $values['field_recipe_category'][] = ['target_id' => $tid];
-            }
-          }
-        }
-        // Set field_preparation_time Field.
-        if (!empty($data['preparation_time'])) {
-          $values['field_preparation_time'] = [['value' => $data['preparation_time']]];
-        }
-        // Set field_cooking_time Field.
-        if (!empty($data['cooking_time'])) {
-          $values['field_cooking_time'] = [['value' => $data['cooking_time']]];
-        }
-        // Set field_difficulty Field.
-        if (!empty($data['difficulty'])) {
-          $values['field_difficulty'] = $data['difficulty'];
-        }
-        // Set field_number_of_servings Field.
-        if (!empty($data['number_of_servings'])) {
-          $values['field_number_of_servings'] = [['value' => $data['number_of_servings']]];
-        }
-        // Set field_ingredients Field.
-        if (!empty($data['ingredients'])) {
-          $ingredients = explode(',', $data['ingredients']);
-          $values['field_ingredients'] = [];
-          foreach ($ingredients as $ingredient) {
-            $values['field_ingredients'][] = ['value' => $ingredient];
-          }
-        }
-        // Set field_recipe_instruction Field.
-        if (!empty($data['recipe_instruction'])) {
-          $recipe_instruction_path = $module_path . '/default_content/languages/en/recipe_instructions/' . $data['recipe_instruction'];
-          $recipe_instructions = file_get_contents($recipe_instruction_path);
-          if ($recipe_instructions !== FALSE) {
-            $values['field_recipe_instruction'] = [['value' => $recipe_instructions, 'format' => 'basic_html']];
-          }
+  protected function processRecipe($module_path, array $data, $langcode) {
+    $values = [
+      'type' => 'recipe',
+      // Title field.
+      'title' => $data['title'],
+      'moderation_state' => 'published',
+      'langcode' => 'en',
+    ];
+    // Set article author.
+    if (!empty($data['author'])) {
+      $values['uid'] = $this->getUser($data['author']);
+    }
+    // Set node alias if exists.
+    if (!empty($data['slug'])) {
+      $values['path'] = [['alias' => '/' . $data['slug']]];
+    }
+    // Set field_image field.
+    if (!empty($data['image'])) {
+      $image_path = $module_path . '/default_content/images/' . $data['image'];
+      $values['field_image'] = [
+        'target_id' => $this->createFileEntity($image_path),
+        'alt' => $data['alt'],
+      ];
+    }
+    // Set field_summary Field.
+    if (!empty($data['summary'])) {
+      $values['field_summary'] = [['value' => $data['summary'], 'format' => 'basic_html']];
+    }
+    // Set field_recipe_category if exists.
+    if (!empty($data['recipe_category'])) {
+      $values['field_recipe_category'] = [];
+      $tags = array_filter(explode(',', $data['recipe_category']));
+      foreach ($tags as $tag_id) {
+        if ($tid = $this->getTermId('recipe_category', $tag_id)) {
+          $values['field_recipe_category'][] = ['target_id' => $tid];
         }
-        // Set field_tags if exists.
-        if (!empty($data['tags'])) {
-          $values['field_tags'] = [];
-          $tags = array_filter(explode(',', $data['tags']));
-          foreach ($tags as $tag_id) {
-            if ($tid = $this->getTermId('tags', $tag_id)) {
-              $values['field_tags'][] = ['target_id' => $tid];
-            }
-          }
+      }
+    }
+    // Set field_preparation_time Field.
+    if (!empty($data['preparation_time'])) {
+      $values['field_preparation_time'] = [['value' => $data['preparation_time']]];
+    }
+    // Set field_cooking_time Field.
+    if (!empty($data['cooking_time'])) {
+      $values['field_cooking_time'] = [['value' => $data['cooking_time']]];
+    }
+    // Set field_difficulty Field.
+    if (!empty($data['difficulty'])) {
+      $values['field_difficulty'] = $data['difficulty'];
+    }
+    // Set field_number_of_servings Field.
+    if (!empty($data['number_of_servings'])) {
+      $values['field_number_of_servings'] = [['value' => $data['number_of_servings']]];
+    }
+    // Set field_ingredients Field.
+    if (!empty($data['ingredients'])) {
+      $ingredients = explode(',', $data['ingredients']);
+      $values['field_ingredients'] = [];
+      foreach ($ingredients as $ingredient) {
+        $values['field_ingredients'][] = ['value' => $ingredient];
+      }
+    }
+    // Set field_recipe_instruction Field.
+    if (!empty($data['recipe_instruction'])) {
+      $recipe_instruction_path = $module_path . '/default_content/languages/' . $langcode . '/recipe_instructions/' . $data['recipe_instruction'];
+      $recipe_instructions = file_get_contents($recipe_instruction_path);
+      if ($recipe_instructions !== FALSE) {
+        $values['field_recipe_instruction'] = [['value' => $recipe_instructions, 'format' => 'basic_html']];
+      }
+    }
+    // Set field_tags if exists.
+    if (!empty($data['tags'])) {
+      $values['field_tags'] = [];
+      $tags = array_filter(explode(',', $data['tags']));
+      foreach ($tags as $tag_id) {
+        if ($tid = $this->getTermId('tags', $tag_id)) {
+          $values['field_tags'][] = ['target_id' => $tid];
         }
-
-        $node = $this->entityTypeManager->getStorage('node')->create($values);
-        $node->save();
-        $uuids[$node->uuid()] = 'node';
       }
-      $this->storeCreatedContentUuids($uuids);
-      fclose($handle);
     }
-    return $this;
+    return $values;
   }
 
   /**
-   * Imports pages.
+   * Process article data into article node structure.
    *
-   * @return $this
+   * @param string $module_path
+   *   Path of this module
+   * @param array $data
+   *   Data of line that was read from the file.
+   *
+   * @return array
+   *   Data structured as an article node.
    */
-  protected function importPages() {
-    if (($handle = fopen($this->moduleHandler->getModule('demo_umami_content')->getPath() . '/default_content/languages/en/pages.csv', "r")) !== FALSE) {
-      $headers = fgetcsv($handle);
-      $uuids = [];
-      while (($data = fgetcsv($handle)) !== FALSE) {
-        $data = array_combine($headers, $data);
-
-        // Prepare content.
-        $values = [
-          'type' => 'page',
-          'title' => $data['title'],
-          'moderation_state' => 'published',
-        ];
-        // Fields mapping starts.
-        // Set Body Field.
-        if (!empty($data['body'])) {
-          $values['body'] = [['value' => $data['body'], 'format' => 'basic_html']];
-        }
-        // Set node alias if exists.
-        if (!empty($data['slug'])) {
-          $values['path'] = [['alias' => '/' . $data['slug']]];
-        }
-        // Set article author.
-        if (!empty($data['author'])) {
-          $values['uid'] = $this->getUser($data['author']);
-        }
+  protected function processArticle($module_path, array $data, $langcode) {
+    // Prepare content.
+    $values = [
+      'type' => 'article',
+      'title' => $data['title'],
+      'moderation_state' => 'published',
+      'langcode' => 'en',
+    ];
+    // Fields mapping starts.
+    // Set Body Field.
+    if (!empty($data['body'])) {
+      $body_path = $module_path . '/default_content/languages/' . $langcode . '/article_body/' . $data['body'];
+      $body = file_get_contents($body_path);
+      if ($body !== FALSE) {
+        $values['body'] = [['value' => $body, 'format' => 'basic_html']];
+      }
+    }
 
-        // Create Node.
-        $node = $this->entityTypeManager->getStorage('node')->create($values);
-        $node->save();
-        $uuids[$node->uuid()] = 'node';
+    // Set node alias if exists.
+    if (!empty($data['slug'])) {
+      $values['path'] = [['alias' => '/' . $data['slug']]];
+    }
+    // Set article author.
+    if (!empty($data['author'])) {
+      $values['uid'] = $this->getUser($data['author']);
+    }
+    // Set Image field.
+    if (!empty($data['image'])) {
+      $path = $module_path . '/default_content/images/' . $data['image'];
+      $values['field_image'] = [
+        'target_id' => $this->createFileEntity($path),
+        'alt' => $data['alt'],
+      ];
+    }
+    // Set field_tags if exists.
+    if (!empty($data['tags'])) {
+      $values['field_tags'] = [];
+      $tags = explode(',', $data['tags']);
+      foreach ($tags as $tag_id) {
+        if ($tid = $this->getTermId('tags', $tag_id)) {
+          $values['field_tags'][] = ['target_id' => $tid];
+        }
       }
-      $this->storeCreatedContentUuids($uuids);
-      fclose($handle);
     }
-    return $this;
+    return $values;
   }
 
   /**
-   * Imports block content entities.
+   * Process block_banner data into block_banner block structure.
    *
-   * @return $this
+   * @param string $module_path
+   *   Path of this module
+   * @param array $data
+   *   Data of line that was read from the file.
+   *
+   * @return array
+   *   Data structured as a block.
    */
-  protected function importBlockContent() {
-    $module_path = $this->moduleHandler->getModule('demo_umami_content')->getPath();
-    $copyright_message = '&copy; ' . date("Y") . ' Terms & Conditions';
-    $block_content_entities = [
-      'umami_home_banner' => [
-        'uuid' => '9aadf4a1-ded6-4017-a10d-a5e043396edf',
-        'info' => 'Umami Home Banner',
-        'type' => 'banner_block',
-        'field_title' => [
-          'value' => 'Super easy vegetarian pasta bake',
-        ],
-        'field_content_link' => [
-          'uri' => 'internal:' . call_user_func(function () {
-            $nodes = $this->entityTypeManager->getStorage('node')->loadByProperties(['title' => 'Super easy vegetarian pasta bake']);
-            $node = reset($nodes);
-            return $this->aliasManager->getAliasByPath('/node/' . $node->id());
-          }),
-          'title' => 'View recipe',
-        ],
-        'field_summary' => [
-          'value' => 'A wholesome pasta bake is the ultimate comfort food. This delicious bake is super quick to prepare and an ideal midweek meal for all the family.',
-        ],
-        'field_banner_image' => [
-          'target_id' => $this->createFileEntity($module_path . '/default_content/images/veggie-pasta-bake-hero-umami.jpg'),
-          'alt' => 'Mouth watering vegetarian pasta bake with rich tomato sauce and cheese toppings',
-        ],
+  protected function processBannerBlock($module_path, array $data) {
+
+    $nodes = $this->entityTypeManager->getStorage('node')->loadByProperties(['title' => $data['field_content_link_content']]);
+    $node = reset($nodes);
+    $node_of_field_title = $this->aliasManager->getAliasByPath('/node/' . $node->id());
+    $values = [
+      'uuid' => $data['uuid'],
+      'info' => $data['info'],
+      'type' => $data['type'],
+      'field_title' => [
+        'value' => $data['field_title'],
+      ],
+      'field_content_link' => [
+        'uri' => 'internal:' . $node_of_field_title,
+        'title' => $data['field_content_link_title'],
       ],
-      'umami_recipes_banner' => [
-        'uuid' => '4c7d58a3-a45d-412d-9068-259c57e40541',
-        'info' => 'Umami Recipes Banner',
-        'type' => 'banner_block',
-        'field_title' => [
-          'value' => 'Vegan chocolate and nut brownies',
-        ],
-        'field_content_link' => [
-          'uri' => 'internal:' . call_user_func(function () {
-            $nodes = $this->entityTypeManager->getStorage('node')->loadByProperties(['title' => 'Vegan chocolate and nut brownies']);
-            $node = reset($nodes);
-            return $this->aliasManager->getAliasByPath('/node/' . $node->id());
-          }),
-          'title' => 'View recipe',
-        ],
-        'field_summary' => [
-          'value' => 'These sumptuous brownies should be gooey on the inside and crisp on the outside. A perfect indulgence!',
-        ],
-        'field_banner_image' => [
-          'target_id' => $this->createFileEntity($module_path . '/default_content/images/vegan-brownies-hero-umami.jpg'),
-          'alt' => 'A stack of chocolate and pecan brownies, sprinkled with pecan crumbs and crushed walnut, fresh out of the oven',
-        ],
+      'field_summary' => [
+        'value' => $data['field_summary'],
       ],
-      'umami_disclaimer' => [
-        'uuid' => '9b4dcd67-99f3-48d0-93c9-2c46648b29de',
-        'info' => 'Umami disclaimer',
-        'type' => 'disclaimer_block',
-        'field_disclaimer' => [
-          'value' => '<strong>Umami Magazine & Umami Publications</strong> is a fictional magazine and publisher for illustrative purposes only.',
-          'format' => 'basic_html',
-        ],
-        'field_copyright' => [
-          'value' => $copyright_message,
-          'format' => 'basic_html',
-        ],
+      'field_banner_image' => [
+        'target_id' => $this->createFileEntity($module_path . '/default_content/images/' . $data['field_banner_image_target_id']),
+        'alt' => $data['field_banner_image_alt'],
       ],
-      'umami_footer_promo' => [
-        'uuid' => '924ab293-8f5f-45a1-9c7f-2423ae61a241',
-        'info' => 'Umami footer promo',
-        'type' => 'footer_promo_block',
-        'field_title' => [
-          'value' => 'Umami Food Magazine',
-        ],
-        'field_summary' => [
-          'value' => 'Skills and know-how. Magazine exclusive articles, recipes and plenty of reasons to get your copy today.',
-        ],
-        'field_content_link' => [
-          'uri' => 'internal:' . call_user_func(function () {
-            $nodes = $this->entityTypeManager->getStorage('node')->loadByProperties(['title' => 'About Umami']);
-            $node = reset($nodes);
-            return $this->aliasManager->getAliasByPath('/node/' . $node->id());
-          }),
-          'title' => 'Find out more',
-        ],
-        'field_promo_image' => [
-          'target_id' => $this->createFileEntity($module_path . '/default_content/images/umami-bundle.png'),
-          'alt' => '3 issue bundle of the Umami food magazine',
-        ],
+    ];
+    return $values;
+  }
+
+  protected function processDisclaimerBlock($module_path, array $data) {
+
+    $values = [
+      'uuid' => $data['uuid'],
+      'info' => $data['info'],
+      'type' => $data['type'],
+      'field_disclaimer' => [
+        'value' => $data['field_disclaimer'],
+        'format' => 'basic_html',
+      ],
+      'field_copyright' => [
+        'value' => '&copy; ' . date("Y") . ' ' . $data['field_copyright'],
+        'format' => 'basic_html',
+      ],
+    ];
+    return $values;
+  }
+
+  protected function processFooterPromoBlock($module_path, array $data) {
+    $nodes = $this->entityTypeManager->getStorage('node')->loadByProperties(['title' => $data['field_content_link_content']]);
+    $node = reset($nodes);
+    $node_of_field_title = $this->aliasManager->getAliasByPath('/node/' . $node->id());
+    $values = [
+      'uuid' => $data['uuid'],
+      'info' => $data['info'],
+      'type' => $data['type'],
+      'field_title' => [
+        'value' => $data['field_title'],
+      ],
+      'field_content_link' => [
+        'uri' => 'internal:' . $node_of_field_title,
+        'title' => $data['field_content_link_title'],
+      ],
+      'field_summary' => [
+        'value' => $data['field_summary'],
+      ],
+      'field_promo_image' => [
+        'target_id' => $this->createFileEntity($module_path . '/default_content/images/' . $data['field_promo_image_target_id']),
+        'alt' => $data['field_promo_image_alt'],
       ],
     ];
+    return $values;
+  }
+
+  /**
+   * Process block_banner data into block_banner block structure.
+   *
+   * @param string $module_path
+   *   Path of this module
+   * @param array $data
+   *   Data of line that was read from the file.
+   *
+   * @return array
+   *   Data structured as a block.
+   */
+  protected function processBlock($module_path, array $data, $block_type) {
 
-    // Create block content.
-    foreach ($block_content_entities as $values) {
-      $block_content = $this->entityTypeManager->getStorage('block_content')->create($values);
-      $block_content->save();
-      $this->storeCreatedContentUuids([$block_content->uuid() => 'block_content']);
+    switch ($block_type) {
+      case 'banner_block':
+        $nodes = $this->entityTypeManager->getStorage('node')->loadByProperties(['title' => $data['field_content_link_content']]);
+        $node = reset($nodes);
+        $node_of_field_title = $this->aliasManager->getAliasByPath('/node/' . $node->id());
+        $values = [
+          'uuid' => $data['uuid'],
+          'info' => $data['info'],
+          'type' => $data['type'],
+          'field_title' => [
+            'value' => $data['field_title'],
+          ],
+          'field_content_link' => [
+            'uri' => 'internal:' . $node_of_field_title,
+            'title' => $data['field_content_link_title'],
+          ],
+          'field_summary' => [
+            'value' => $data['field_summary'],
+          ],
+          'field_banner_image' => [
+            'target_id' => $this->createFileEntity($module_path . '/default_content/images/' . $data['field_banner_image_target_id']),
+            'alt' => $data['field_banner_image_alt'],
+          ],
+        ];
+        break;
+      case 'disclaimer_block':
+        $values = [
+          'uuid' => $data['uuid'],
+          'info' => $data['info'],
+          'type' => $data['type'],
+          'field_disclaimer' => [
+            'value' => $data['field_disclaimer'],
+            'format' => 'basic_html',
+          ],
+          'field_copyright' => [
+            'value' => '&copy; ' . date("Y") . ' ' . $data['field_copyright'],
+            'format' => 'basic_html',
+          ],
+        ];
+        break;
+      case 'footer_promo_block':
+        $nodes = $this->entityTypeManager->getStorage('node')->loadByProperties(['title' => $data['field_content_link_content']]);
+        $node = reset($nodes);
+        $node_of_field_title = $this->aliasManager->getAliasByPath('/node/' . $node->id());
+        $values = [
+          'uuid' => $data['uuid'],
+          'info' => $data['info'],
+          'type' => $data['type'],
+          'field_title' => [
+            'value' => $data['field_title'],
+          ],
+          'field_content_link' => [
+            'uri' => 'internal:' . $node_of_field_title,
+            'title' => $data['field_content_link_title'],
+          ],
+          'field_summary' => [
+            'value' => $data['field_summary'],
+          ],
+          'field_promo_image' => [
+            'target_id' => $this->createFileEntity($module_path . '/default_content/images/' . $data['field_promo_image_target_id']),
+            'alt' => $data['field_promo_image_alt'],
+          ],
+        ];
+        break;
+      default:
+        break;
+    }
+    return $values;
+  }
+
+  /**
+   * Imports content.
+   *
+   * @return $this
+   */
+  protected function processContent($ct_machine_name, $current_content, $module_path, $langcode) {
+    switch ($ct_machine_name) {
+      case 'recipe':
+        $values = $this->processRecipe($module_path, $current_content, $langcode);
+        break;
+      case 'article':
+        $values = $this->processArticle($module_path, $current_content, $langcode);
+        break;
+      case 'page':
+        $values = $this->processPage($module_path, $current_content);
+        break;
+      case 'banner_block':
+        $values = $this->processBannerBlock($module_path, $current_content);
+        break;
+      case 'disclaimer_block':
+        $values = $this->processDisclaimerBlock($module_path, $current_content);
+        break;
+      case 'footer_promo_block':
+        $values = $this->processFooterPromoBlock($module_path, $current_content);
+        break;
+      case 'recipe_category':
+      case 'tags':
+        $values = $this->processTerm($current_content, $ct_machine_name);
+        break;
+      default:
+        break;
+    }
+    return $values;
+  }
+
+  /**
+   * Imports content.
+   *
+   * @param string $entity_type
+   *   Entity Type to be imported
+   *
+   * @param string $ct_machine_name
+   *
+   * @return $this
+   */
+  protected function importContentFromFile($entity_type, $ct_machine_name) {
+    $module_path = $this->moduleHandler->getModule('demo_umami_content')->getPath();
+    $filename = $entity_type . '/' . $ct_machine_name . '.csv';
+
+    // Read all multilingual content from the file.
+    [$all_content, $translated_languages] = $this->readMultilingualContent($filename);
+
+    // English is no longer needed in the list of languages to translate.
+    $key = array_search('en', $translated_languages);
+    unset($translated_languages[$key]);
+
+    // Start the loop with English (default) recipes.
+    foreach ($all_content['en'] as $current_content) {
+      // Process data into its relevant structure.
+      $structured_content = $this->processContent($ct_machine_name, $current_content, $module_path, 'en');
+
+      // Save Entity.
+      $entity = $this->entityTypeManager->getStorage($entity_type)->create($structured_content);
+      $entity->save();
+      $this->storeCreatedContentUuids([$entity->uuid() => $entity_type]);
+
+      // Taxonomy entities - save ID internally to reference nodes later.
+      if ($entity_type == 'taxonomy_term') {
+        $this->saveTermId($ct_machine_name, $current_content['id'], $entity->id());
+      }
+
+      // Go through all the languages that have translations.
+      foreach ($translated_languages as $translated_language) {
+
+        // Find the translated content ID that corresponds to original content.
+        $translation_id = array_search($current_content['id'], array_column($all_content[$translated_language], 'id'));
+
+        // Check if translation was found.
+        if ($translation_id !== FALSE) {
+
+          // Process that translation.
+          $translated_entity = $all_content[$translated_language][$translation_id];
+          $structured_content = $this->processContent($ct_machine_name, $translated_entity, $module_path, $translated_language);
+
+          // Save entity's translation.
+          $entity->addTranslation(
+            $translated_language,
+            $structured_content
+          );
+          $entity->save();
+        }
+      }
     }
     return $this;
   }
diff --git a/core/profiles/demo_umami/modules/demo_umami_content/tests/src/Functional/DefaultContentFilesAccessTest.php b/core/profiles/demo_umami/modules/demo_umami_content/tests/src/Functional/DefaultContentFilesAccessTest.php
index f3c7d53f0e..cda82219f4 100644
--- a/core/profiles/demo_umami/modules/demo_umami_content/tests/src/Functional/DefaultContentFilesAccessTest.php
+++ b/core/profiles/demo_umami/modules/demo_umami_content/tests/src/Functional/DefaultContentFilesAccessTest.php
@@ -23,7 +23,7 @@ public function testAccessDeniedToFiles() {
       'images/heritage-carrots.jpg',
       'languages/en/recipe_instructions/mediterranean-quiche-umami.html',
       'languages/en/article_body/lets-hear-it-for-carrots.html',
-      'languages/en/articles.csv',
+      'languages/en/node/article.csv',
     ];
     foreach ($files_to_test as $file) {
       // Hard code the path since the demo_umami profile is not installed.
