From d577117143e3aa63fc66761fc8c53fc30e8abb78 Mon Sep 17 00:00:00 2001 From: Yemeni Date: Sat, 26 Sep 2020 22:53:28 +0300 Subject: [PATCH 1/4] added i18n-node localization package --- app.js | 6 ++++ locales/ar.json | 4 +++ locales/en.json | 4 +++ package-lock.json | 88 +++++++++++++++++++++++++++++++++++++++++++++-- package.json | 3 +- 5 files changed, 102 insertions(+), 3 deletions(-) create mode 100644 locales/ar.json create mode 100644 locales/en.json diff --git a/app.js b/app.js index 1bec99f7..c4bd0244 100644 --- a/app.js +++ b/app.js @@ -26,6 +26,7 @@ const ngrok = require('ngrok'); const commandExists = require('command-exists'); const errorHandler = require('errorhandler'); const jsHelpers = require('./lib/helpers/js-helpers'); +const { I18n } = require('i18n'); /** FOR FINDING ERRANT LOGS **/ if(process.env.SHOW_LOG_LOCATION == 'true' || 2 == 1){ @@ -138,6 +139,11 @@ if(cluster.isMaster){ console.log('CONNECTED TO DATABASE AT: ' + mongoUri + '\n'); + const i18n = new I18n({ + locales: ['en', 'ar'], + directory: path.join(__dirname, 'locales') + }); + /** create express app **/ const app = express(); diff --git a/locales/ar.json b/locales/ar.json new file mode 100644 index 00000000..9e7fae3a --- /dev/null +++ b/locales/ar.json @@ -0,0 +1,4 @@ +{ + "Hello World": "مرحباً يا عالم", + "Hello": "مرحباً" +} \ No newline at end of file diff --git a/locales/en.json b/locales/en.json new file mode 100644 index 00000000..5bdacb8b --- /dev/null +++ b/locales/en.json @@ -0,0 +1,4 @@ +{ + "Hello World": "Hello World", + "Hello": "Hello" +} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 6da47d50..0d8d63fc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "NodeTube", - "version": "1.0.0", + "version": "1.1.0", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -1587,7 +1587,7 @@ "combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "integrity": "sha1-w9RaizT9cwYxoRCoolIGgrMdWn8=", "requires": { "delayed-stream": "~1.0.0" } @@ -4848,6 +4848,39 @@ "resolved": "https://registry.npmjs.org/i/-/i-0.3.6.tgz", "integrity": "sha1-2WyScyB28HJxG2sQ/X1PZa2O4j0=" }, + "i18n": { + "version": "0.13.2", + "resolved": "https://registry.npmjs.org/i18n/-/i18n-0.13.2.tgz", + "integrity": "sha512-PB65bHhQESMBIl/xVNChEAzoxZ5W6FrZ1H9Ma/YcPeSfE7VS9b0sqwBPusa0CfzSKUPSl+uMhRIgyv3jkE7XNw==", + "requires": { + "debug": "^4.1.1", + "make-plural": "^6.2.2", + "math-interval-parser": "^2.0.1", + "messageformat": "^2.3.0", + "mustache": "^4.0.1", + "sprintf-js": "^1.1.2" + }, + "dependencies": { + "debug": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz", + "integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==", + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "sprintf-js": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", + "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==" + } + } + }, "iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", @@ -5960,6 +5993,11 @@ } } }, + "make-plural": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/make-plural/-/make-plural-6.2.2.tgz", + "integrity": "sha512-8iTuFioatnTTmb/YJjywkVIHLjcwkFD9Ms0JpxjEm9Mo8eQYkh1z+55dwv4yc1jQ8ftVBxWQbihvZL1DfzGGWA==" + }, "map-cache": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", @@ -5978,6 +6016,11 @@ "object-visit": "^1.0.0" } }, + "math-interval-parser": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/math-interval-parser/-/math-interval-parser-2.0.1.tgz", + "integrity": "sha512-VmlAmb0UJwlvMyx8iPhXUDnVW1F9IrGEd9CIOmv+XL8AErCUUuozoDMrgImvnYt2A+53qVX/tPW6YJurMKYsvA==" + }, "media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", @@ -6020,6 +6063,42 @@ "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.3.0.tgz", "integrity": "sha1-WzZu6DsvFYLEj4fkfPGpNSEDyoE=" }, + "messageformat": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/messageformat/-/messageformat-2.3.0.tgz", + "integrity": "sha512-uTzvsv0lTeQxYI2y1NPa1lItL5VRI8Gb93Y2K2ue5gBPyrbJxfDi/EYWxh2PKv5yO42AJeeqblS9MJSh/IEk4w==", + "requires": { + "make-plural": "^4.3.0", + "messageformat-formatters": "^2.0.1", + "messageformat-parser": "^4.1.2" + }, + "dependencies": { + "make-plural": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/make-plural/-/make-plural-4.3.0.tgz", + "integrity": "sha512-xTYd4JVHpSCW+aqDof6w/MebaMVNTVYBZhbB/vi513xXdiPT92JMVCo0Jq8W2UZnzYRFeVbQiQ+I25l13JuKvA==", + "requires": { + "minimist": "^1.2.0" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "optional": true + } + } + }, + "messageformat-formatters": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/messageformat-formatters/-/messageformat-formatters-2.0.1.tgz", + "integrity": "sha512-E/lQRXhtHwGuiQjI7qxkLp8AHbMD5r2217XNe/SREbBlSawe0lOqsFb7rflZJmlQFSULNLIqlcjjsCPlB3m3Mg==" + }, + "messageformat-parser": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/messageformat-parser/-/messageformat-parser-4.1.3.tgz", + "integrity": "sha512-2fU3XDCanRqeOCkn7R5zW5VQHWf+T3hH65SzuqRvjatBK7r4uyFa5mEX+k6F9Bd04LVM5G4/BHBTUJsOdW7uyg==" + }, "methods": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", @@ -6648,6 +6727,11 @@ } } }, + "mustache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/mustache/-/mustache-4.0.1.tgz", + "integrity": "sha512-yL5VE97+OXn4+Er3THSmTdCFCtx5hHWzrolvH+JObZnUYwuaG7XV+Ch4fR2cIrcYI0tFHxS7iyFYl14bW8y2sA==" + }, "mute-stream": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", diff --git a/package.json b/package.json index 38c278a7..9e9bab7b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "NodeTube", - "version": "1.0.0", + "version": "1.1.0", "description": "Video, audio and image hosting", "repository": { "type": "git", @@ -68,6 +68,7 @@ "get-audio-duration": "^2.0.0", "get-video-duration": "^1.0.3", "heroku-ssl-redirect": "0.0.4", + "i18n": "^0.13.2", "intl-messageformat": "^1.3.0", "ipstack": "^0.1.1", "javascript-time-ago": "^0.4.15", From 5a08cfa95012d05bd9abcfaa364d4cfdb34788ba Mon Sep 17 00:00:00 2001 From: Yemeni Date: Sat, 26 Sep 2020 23:32:28 +0300 Subject: [PATCH 2/4] a working example of locales using query --- app.js | 5 +++++ locales/ar.json | 3 ++- locales/en.json | 5 +++-- views/public/home.pug | 2 +- 4 files changed, 11 insertions(+), 4 deletions(-) diff --git a/app.js b/app.js index c4bd0244..cf3aa6fa 100644 --- a/app.js +++ b/app.js @@ -141,12 +141,17 @@ if(cluster.isMaster){ const i18n = new I18n({ locales: ['en', 'ar'], + defaultLocale: 'ar', + queryParameter: 'lang', directory: path.join(__dirname, 'locales') }); + i18n.setLocale('ar'); + /** create express app **/ const app = express(); + app.use(i18n.init); app.use(favicon(path.join(__dirname, 'public', 'images/favicon.ico'))); /* diff --git a/locales/ar.json b/locales/ar.json index 9e7fae3a..496f5628 100644 --- a/locales/ar.json +++ b/locales/ar.json @@ -1,4 +1,5 @@ { "Hello World": "مرحباً يا عالم", - "Hello": "مرحباً" + "Hello": "مرحباً", + "No Email Required": "ليس هنالك داعِ للإيميل" } \ No newline at end of file diff --git a/locales/en.json b/locales/en.json index 5bdacb8b..ee3d3bcc 100644 --- a/locales/en.json +++ b/locales/en.json @@ -1,4 +1,5 @@ { - "Hello World": "Hello World", - "Hello": "Hello" + "Hello World": "Hello World", + "Hello": "Hello", + "No Email Required": "No Email Required 2" } \ No newline at end of file diff --git a/views/public/home.pug b/views/public/home.pug index 44dcee4a..957fd91c 100644 --- a/views/public/home.pug +++ b/views/public/home.pug @@ -69,7 +69,7 @@ block content .row.first-row .col-sm-4 - h2.pitch-header.fw No Email Required   + h2.pitch-header.fw #{__('No Email Required')}   i.fa.fa-bolt p.explainer.fw Start your channel on #{brandName} p.fw without having to verify your email From f9d8f1633558bd242a75812ec78691696c06b97c Mon Sep 17 00:00:00 2001 From: Yemeni Date: Sun, 27 Sep 2020 01:12:22 +0300 Subject: [PATCH 3/4] updated home.pug with localization support --- locales/ar.json | 23 ++++++++++++++++++++--- locales/en.json | 23 ++++++++++++++++++++--- views/public/home.pug | 38 +++++++++++++++++++------------------- 3 files changed, 59 insertions(+), 25 deletions(-) diff --git a/locales/ar.json b/locales/ar.json index 496f5628..458c861e 100644 --- a/locales/ar.json +++ b/locales/ar.json @@ -1,5 +1,22 @@ { - "Hello World": "مرحباً يا عالم", - "Hello": "مرحباً", - "No Email Required": "ليس هنالك داعِ للإيميل" + "Introducing {{brandName}}": "نقدم لكم {{brandName}}", + "An open-source YouTube alternative powered by Node.js": "بديل مفتوح المصدر ليوتيوب مدعوم بNode.js", + "No Email Required": "ليس هنالك داعٍ للإيميل", + "Start your channel on {{brandName}}": "إبدأ ٌقناتك في {{brandName}}", + "without having to verify your email": "ليس عليك أن تؤكد إيميلك", + "Video, Audio, Images": "فيديو, صوت, صور", + "Over 30 file formats are supported": "أكثر من 30 نوع ملفات مدعوم", + "between video, audio and image uploads": "بين الفيديو، والصوت والصور", + "100% Open Source": "100% مفتوح المصدر", + "Create your own {{brandName}} instance": "إنشئ {{brandName}} الآن", + "in just minutes following our tutorials": "in just minutes following our tutorials", + "{{channelAmount}} Channels": "{{channelAmount}} Channels", + "The number of creators who have": "The number of creators who have", + "chosen {{brandName}} for their media hosting": "chosen {{brandName}} for their media hosting", + "{{mediaAmount}} Uploads": "{{mediaAmount}} Uploads", + "The number of times creators have": "The number of times creators have", + "chosen {{brandName}} for their content hosting": "chosen {{brandName}} for their content hosting", + "{{viewAmount}} Views": "{{viewAmount}} Views", + "The number of times people have": "The number of times people have", + "enjoyed the innovative new platform": "enjoyed the innovative new platform" } \ No newline at end of file diff --git a/locales/en.json b/locales/en.json index ee3d3bcc..2101128c 100644 --- a/locales/en.json +++ b/locales/en.json @@ -1,5 +1,22 @@ { - "Hello World": "Hello World", - "Hello": "Hello", - "No Email Required": "No Email Required 2" + "Introducing {{brandName}}": "Introducing {{brandName}}", + "An open-source YouTube alternative powered by Node.js": "An open-source YouTube alternative powered by Node.js", + "No Email Required": "No Email Required", + "Start your channel on {{brandName}}": "Start your channel on {{brandName}}", + "without having to verify your email": "without having to verify your email", + "Video, Audio, Images": "Video, Audio, Images", + "Over 30 file formats are supported": "Over 30 file formats are supported", + "between video, audio and image uploads": "between video, audio and image uploads", + "100% Open Source": "100% Open Source", + "Create your own {{brandName}} instance": "Create your own {{brandName}} instance", + "in just minutes following our tutorials": "in just minutes following our tutorials", + "{{channelAmount}} Channels": "{{channelAmount}} Channels", + "The number of creators who have": "The number of creators who have", + "chosen {{brandName}} for their media hosting": "chosen {{brandName}} for their media hosting", + "{{mediaAmount}} Uploads": "{{mediaAmount}} Uploads", + "The number of times creators have": "The number of times creators have", + "chosen {{brandName}} for their content hosting": "chosen {{brandName}} for their content hosting", + "{{viewAmount}} Views": "{{viewAmount}} Views", + "The number of times people have": "The number of times people have", + "enjoyed the innovative new platform": "enjoyed the innovative new platform" } \ No newline at end of file diff --git a/views/public/home.pug b/views/public/home.pug index 957fd91c..853a4349 100644 --- a/views/public/home.pug +++ b/views/public/home.pug @@ -63,41 +63,41 @@ block content //.landingVideo(style="margin-top:0px;padding-top:70px;") // iframe.display-element(src='https://newtube.app/embed/ScMyHdB', frameborder='0', allowfullscreen='' style="width:80%;height:400px;") - h1.lead-header.fw Introducing #{brandName} - h2.tagline-header.fw An open-source YouTube alternative powered by Node.js + h1.lead-header.fw #{__('Introducing {{brandName}}', {brandName: brandName})} + h2.tagline-header.fw #{__('An open-source YouTube alternative powered by Node.js')} hr .row.first-row .col-sm-4 h2.pitch-header.fw #{__('No Email Required')}   i.fa.fa-bolt - p.explainer.fw Start your channel on #{brandName} - p.fw without having to verify your email + p.explainer.fw #{__('Start your channel on {{brandName}}', {brandName: brandName})} + p.fw #{__('without having to verify your email')} .col-sm-4 - h2.pitch-header.fw Video, Audio, Images   + h2.pitch-header.fw #{__('Video, Audio, Images')}   i.fa.fa-thumbs-o-up - p.explainer.fw Over 30 file formats are supported - p.fw between video, audio and image uploads + p.explainer.fw #{__('Over 30 file formats are supported')} + p.fw #{__('between video, audio and image uploads')} .col-sm-4 - h2.pitch-header.fw 100% Open Source   + h2.pitch-header.fw #{__('100% Open Source')}   i.fa.fa-space-shuttle - p.explainer.fw Create your own #{brandName} instance - p.fw in just minutes following our tutorials + p.explainer.fw #{__('Create your own {{brandName}} instance', {brandName: brandName})} + p.fw #{__('in just minutes following our tutorials')} .row.second-row .col-sm-4 - h2.pitch-header.fw #{channelAmount} Channels   + h2.pitch-header.fw #{__('{{channelAmount}} Channels', {channelAmount: channelAmount})}   i.fa.fa-users - p.explainer.fw The number of creators who have - p.fw chosen #{brandName} for their media hosting + p.explainer.fw #{__('The number of creators who have')} + p.fw #{__('chosen {{brandName}} for their media hosting', {brandName: brandName})} .col-sm-4 - h2.pitch-header.fw #{mediaAmount} Uploads   + h2.pitch-header.fw #{__('{{mediaAmount}} Uploads', {mediaAmount: mediaAmount})}   i.fa.fa-upload - p.explainer.fw The number of times creators have - p.fw chosen #{brandName} for their content hosting + p.explainer.fw #{__('The number of times creators have')} + p.fw #{__('chosen {{brandName}} for their content hosting', {brandName: brandName})} .col-sm-4 - h2.pitch-header.fw #{viewAmount} Views   + h2.pitch-header.fw #{__('{{viewAmount}} Views', {viewAmount: viewAmount})}   i.fa.fa-video - p.explainer.fw The number of times people have - p.fw enjoyed the innovative new platform \ No newline at end of file + p.explainer.fw #{__('The number of times people have')} + p.fw #{__('enjoyed the innovative new platform')} \ No newline at end of file From 678b05fcab4d9ecf75ac929554afd12a2fae9865 Mon Sep 17 00:00:00 2001 From: Yemeni Date: Sun, 27 Sep 2020 01:56:50 +0300 Subject: [PATCH 4/4] updated spacing characters in home.pug --- locales/ar.json | 40 ++++++++++++++++++++-------------------- locales/en.json | 12 ++++++------ views/layout.pug | 2 +- views/public/home.pug | 12 ++++++------ 4 files changed, 33 insertions(+), 33 deletions(-) diff --git a/locales/ar.json b/locales/ar.json index 458c861e..7dc49e91 100644 --- a/locales/ar.json +++ b/locales/ar.json @@ -1,22 +1,22 @@ { - "Introducing {{brandName}}": "نقدم لكم {{brandName}}", - "An open-source YouTube alternative powered by Node.js": "بديل مفتوح المصدر ليوتيوب مدعوم بNode.js", - "No Email Required": "ليس هنالك داعٍ للإيميل", - "Start your channel on {{brandName}}": "إبدأ ٌقناتك في {{brandName}}", - "without having to verify your email": "ليس عليك أن تؤكد إيميلك", - "Video, Audio, Images": "فيديو, صوت, صور", - "Over 30 file formats are supported": "أكثر من 30 نوع ملفات مدعوم", - "between video, audio and image uploads": "بين الفيديو، والصوت والصور", - "100% Open Source": "100% مفتوح المصدر", - "Create your own {{brandName}} instance": "إنشئ {{brandName}} الآن", - "in just minutes following our tutorials": "in just minutes following our tutorials", - "{{channelAmount}} Channels": "{{channelAmount}} Channels", - "The number of creators who have": "The number of creators who have", - "chosen {{brandName}} for their media hosting": "chosen {{brandName}} for their media hosting", - "{{mediaAmount}} Uploads": "{{mediaAmount}} Uploads", - "The number of times creators have": "The number of times creators have", - "chosen {{brandName}} for their content hosting": "chosen {{brandName}} for their content hosting", - "{{viewAmount}} Views": "{{viewAmount}} Views", - "The number of times people have": "The number of times people have", - "enjoyed the innovative new platform": "enjoyed the innovative new platform" + "Introducing {{brandName}}": "نقدم لكم {{brandName}}", + "An open-source YouTube alternative powered by Node.js": "بديل مفتوح المصدر ليوتيوب مدعوم بNode.js", + "No Email Required ": "ليس هنالك داعٍ للإيميل ", + "Start your channel on {{brandName}}": "إبدأ ٌقناتك في {{brandName}}", + "without having to verify your email": "ليس عليك أن تؤكد إيميلك", + "Video, Audio, Images ": "فيديو, صوت, صور ", + "Over 30 file formats are supported": "أكثر من 30 نوع ملفات مدعوم", + "between video, audio and image uploads": "بين الفيديو، والصوت والصور", + "100% Open Source ": "100% مفتوح المصدر ", + "Create your own {{brandName}} instance": "إنشئ {{brandName}} الآن", + "in just minutes following our tutorials": "in just minutes following our tutorials", + "{{channelAmount}} Channels ": "{{channelAmount}} Channels ", + "The number of creators who have": "The number of creators who have", + "chosen {{brandName}} for their media hosting": "chosen {{brandName}} for their media hosting", + "{{mediaAmount}} Uploads ": "{{mediaAmount}} Uploads ", + "The number of times creators have": "The number of times creators have", + "chosen {{brandName}} for their content hosting": "chosen {{brandName}} for their content hosting", + "{{viewAmount}} Views ": "{{viewAmount}} Views ", + "The number of times people have": "The number of times people have", + "enjoyed the innovative new platform": "enjoyed the innovative new platform" } \ No newline at end of file diff --git a/locales/en.json b/locales/en.json index 2101128c..2d7a9612 100644 --- a/locales/en.json +++ b/locales/en.json @@ -1,22 +1,22 @@ { "Introducing {{brandName}}": "Introducing {{brandName}}", "An open-source YouTube alternative powered by Node.js": "An open-source YouTube alternative powered by Node.js", - "No Email Required": "No Email Required", + "No Email Required ": "No Email Required ", "Start your channel on {{brandName}}": "Start your channel on {{brandName}}", "without having to verify your email": "without having to verify your email", - "Video, Audio, Images": "Video, Audio, Images", + "Video, Audio, Images ": "Video, Audio, Images ", "Over 30 file formats are supported": "Over 30 file formats are supported", "between video, audio and image uploads": "between video, audio and image uploads", - "100% Open Source": "100% Open Source", + "100% Open Source ": "100% Open Source ", "Create your own {{brandName}} instance": "Create your own {{brandName}} instance", "in just minutes following our tutorials": "in just minutes following our tutorials", - "{{channelAmount}} Channels": "{{channelAmount}} Channels", + "{{channelAmount}} Channels ": "{{channelAmount}} Channels ", "The number of creators who have": "The number of creators who have", "chosen {{brandName}} for their media hosting": "chosen {{brandName}} for their media hosting", - "{{mediaAmount}} Uploads": "{{mediaAmount}} Uploads", + "{{mediaAmount}} Uploads ": "{{mediaAmount}} Uploads ", "The number of times creators have": "The number of times creators have", "chosen {{brandName}} for their content hosting": "chosen {{brandName}} for their content hosting", - "{{viewAmount}} Views": "{{viewAmount}} Views", + "{{viewAmount}} Views ": "{{viewAmount}} Views ", "The number of times people have": "The number of times people have", "enjoyed the innovative new platform": "enjoyed the innovative new platform" } \ No newline at end of file diff --git a/views/layout.pug b/views/layout.pug index 353d0bfe..a8266d3c 100644 --- a/views/layout.pug +++ b/views/layout.pug @@ -54,7 +54,7 @@ html block extra_js - + // TODO: dir='RTL" if localization is ar or any other RTL languages body(style="overflow-x:hidden;touch-action: manipulation;" id="body" class="dark-mode") diff --git a/views/public/home.pug b/views/public/home.pug index 853a4349..af8be673 100644 --- a/views/public/home.pug +++ b/views/public/home.pug @@ -69,17 +69,17 @@ block content .row.first-row .col-sm-4 - h2.pitch-header.fw #{__('No Email Required')}   + h2.pitch-header.fw #{__('No Email Required ')} i.fa.fa-bolt p.explainer.fw #{__('Start your channel on {{brandName}}', {brandName: brandName})} p.fw #{__('without having to verify your email')} .col-sm-4 - h2.pitch-header.fw #{__('Video, Audio, Images')}   + h2.pitch-header.fw #{__('Video, Audio, Images ')} i.fa.fa-thumbs-o-up p.explainer.fw #{__('Over 30 file formats are supported')} p.fw #{__('between video, audio and image uploads')} .col-sm-4 - h2.pitch-header.fw #{__('100% Open Source')}   + h2.pitch-header.fw #{__('100% Open Source ')} i.fa.fa-space-shuttle p.explainer.fw #{__('Create your own {{brandName}} instance', {brandName: brandName})} p.fw #{__('in just minutes following our tutorials')} @@ -87,17 +87,17 @@ block content .row.second-row .col-sm-4 - h2.pitch-header.fw #{__('{{channelAmount}} Channels', {channelAmount: channelAmount})}   + h2.pitch-header.fw #{__('{{channelAmount}} Channels ', {channelAmount: channelAmount})} i.fa.fa-users p.explainer.fw #{__('The number of creators who have')} p.fw #{__('chosen {{brandName}} for their media hosting', {brandName: brandName})} .col-sm-4 - h2.pitch-header.fw #{__('{{mediaAmount}} Uploads', {mediaAmount: mediaAmount})}   + h2.pitch-header.fw #{__('{{mediaAmount}} Uploads ', {mediaAmount: mediaAmount})} i.fa.fa-upload p.explainer.fw #{__('The number of times creators have')} p.fw #{__('chosen {{brandName}} for their content hosting', {brandName: brandName})} .col-sm-4 - h2.pitch-header.fw #{__('{{viewAmount}} Views', {viewAmount: viewAmount})}   + h2.pitch-header.fw #{__('{{viewAmount}} Views ', {viewAmount: viewAmount})} i.fa.fa-video p.explainer.fw #{__('The number of times people have')} p.fw #{__('enjoyed the innovative new platform')} \ No newline at end of file