Fix i18n resource loading

This commit is contained in:
Paulo Gustavo Veiga 2020-11-29 09:18:38 -08:00
parent facf54b804
commit d2eb98d1c0
11 changed files with 303 additions and 361 deletions

View File

@ -1 +1 @@
[{"/Users/pveiga/repos/wisemapping-react/src/Footer.js":"1","/Users/pveiga/repos/wisemapping-react/src/Header.js":"2","/Users/pveiga/repos/wisemapping-react/src/index.js":"3","/Users/pveiga/repos/wisemapping-react/src/LoginPage.js":"4"},{"size":1747,"mtime":1606529689598,"results":"5","hashOfConfig":"6"},{"size":1557,"mtime":1606529996629,"results":"7","hashOfConfig":"6"},{"size":695,"mtime":1606632469498,"results":"8","hashOfConfig":"6"},{"size":4283,"mtime":1606584003214,"results":"9","hashOfConfig":"6"},{"filePath":"10","messages":"11","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"1xegajf",{"filePath":"12","messages":"13","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"14","messages":"15","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"16","messages":"17","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},"/Users/pveiga/repos/wisemapping-react/src/Footer.js",[],"/Users/pveiga/repos/wisemapping-react/src/Header.js",[],"/Users/pveiga/repos/wisemapping-react/src/index.js",["18"],"/Users/pveiga/repos/wisemapping-react/src/LoginPage.js",["19"],{"ruleId":"20","severity":1,"message":"21","line":8,"column":9,"nodeType":"22","messageId":"23","endLine":8,"endColumn":17},{"ruleId":"20","severity":1,"message":"24","line":7,"column":7,"nodeType":"22","messageId":"23","endLine":7,"endColumn":26},"no-unused-vars","'language' is assigned a value but never used.","Identifier","unusedVar","'ConfigStatusMessage' is defined but never used."] [{"/Users/pveiga/repos/wisemapping-react/src/Footer.js":"1","/Users/pveiga/repos/wisemapping-react/src/Header.js":"2","/Users/pveiga/repos/wisemapping-react/src/index.js":"3","/Users/pveiga/repos/wisemapping-react/src/LoginPage.js":"4"},{"size":2117,"mtime":1606670064431,"results":"5","hashOfConfig":"6"},{"size":1572,"mtime":1606670050593,"results":"7","hashOfConfig":"6"},{"size":777,"mtime":1606670265242,"results":"8","hashOfConfig":"6"},{"size":4012,"mtime":1606670278388,"results":"9","hashOfConfig":"6"},{"filePath":"10","messages":"11","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"1xegajf",{"filePath":"12","messages":"13","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"14","messages":"15","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"16","messages":"17","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},"/Users/pveiga/repos/wisemapping-react/src/Footer.js",[],"/Users/pveiga/repos/wisemapping-react/src/Header.js",[],"/Users/pveiga/repos/wisemapping-react/src/index.js",[],"/Users/pveiga/repos/wisemapping-react/src/LoginPage.js",["18"],{"ruleId":"19","severity":1,"message":"20","line":7,"column":7,"nodeType":"21","messageId":"22","endLine":7,"endColumn":26},"no-unused-vars","'ConfigStatusMessage' is defined but never used.","Identifier","unusedVar"]

View File

@ -1,63 +1,60 @@
{ {
"ABOUT_US": { "footer.aboutus": {
"defaultMessage": "About Us" "defaultMessage": "About Us"
}, },
"CONTACT_US": { "footer.contactus": {
"defaultMessage": "Contact Us" "defaultMessage": "Contact Us"
}, },
"DONATIONS": { "footer.donations": {
"defaultMessage": "PayPal Donations" "defaultMessage": "PayPal footer.donations"
}, },
"DONT_HAVE_ACCOUNT": { "header.donthaveaccount": {
"defaultMessage": "Don't have an account ?" "defaultMessage": "Don't have an account ?"
}, },
"EMAIL": { "login.email": {
"defaultMessage": "Email" "defaultMessage": "login.email"
}, },
"FAQ": { "footer.faq": {
"defaultMessage": "F.A.Q." "defaultMessage": "F.A.Q."
}, },
"FEEDBACK": { "footer.feedback": {
"defaultMessage": "Feedback" "defaultMessage": "footer.feedback"
}, },
"FORGOT_PASSWORD": { "login.forgotpwd": {
"defaultMessage": "Forgot Password ?" "defaultMessage": "Forgot login.password ?"
}, },
"LOGIN_ERROR": { "login.error": {
"defaultMessage": "The email address or password you entered is not valid." "defaultMessage": "The login.email address or login.password you entered is not valid."
}, },
"LOG_INTO": { "login.loginto": {
"defaultMessage": "Log Into Your Account" "defaultMessage": "Log Into Your Account"
}, },
"NO_PRODUCTION_DATABASE_CONFIGURED": { "login.hsqldbcofig": {
"defaultMessage": "Warning: Although HSQLDB is bundled with WiseMapping by default during the installation, we do not recommend this database for production use. Please consider using MySQL 5.7 instead. You can find more information how to configure MySQL", "defaultMessage": "Warning: Although HSQLDB is bundled with WiseMapping by default during the installation, we do not recommend this database for production use. Please consider using MySQL 5.7 instead. You can find more information how to configure MySQL",
"description": "Missing production database configured" "description": "Missing production database configured"
}, },
"OPEN_SOURCE": { "footer.opensource": {
"defaultMessage": "Open Source" "defaultMessage": "Open Source"
}, },
"PASSWORD": { "login.password": {
"defaultMessage": "Password" "defaultMessage": "login.password"
}, },
"REMEMBER_ME": { "login.remberme": {
"defaultMessage": "Remember me" "defaultMessage": "Remember me"
}, },
"SIGN_IN": { "login.signin": {
"defaultMessage": "Sign In" "defaultMessage": "Sign In"
}, },
"SIGN_UP": { "login.signup": {
"defaultMessage": "Sign Up" "defaultMessage": "Sign Up"
}, },
"SING_IN": { "footer.termsandconditions": {
"defaultMessage": "Sign In" "defaultMessage": "Term And Conditions"
}, },
"TERMS_AND_CONDITIONS": { "login.userinactive": {
"defaultMessage": "Term And Conditions" "defaultMessage": "Sorry, your account has not been activated yet. You'll receive a notification login.email when it becomes active. Stay tuned!."
}, },
"USER_INACTIVE": { "login.welcome": {
"defaultMessage": "Sorry, your account has not been activated yet. You'll receive a notification email when it becomes active. Stay tuned!." "defaultMessage": "login.welcome"
}, }
"WELCOME": {
"defaultMessage": "Welcome"
}
} }

View File

@ -1,63 +1,60 @@
{ {
"ABOUT_US": { "footer.aboutus": {
"defaultMessage": "About Us" "defaultMessage": "Sobre Nosotros"
}, },
"CONTACT_US": { "footer.contactus": {
"defaultMessage": "Contact Us" "defaultMessage": "Contáctenos"
}, },
"DONATIONS": { "footer.donations": {
"defaultMessage": "PayPal Donations" "defaultMessage": "PayPal Donaciones"
}, },
"DONT_HAVE_ACCOUNT": { "header.donthaveaccount": {
"defaultMessage": "Don't have an account ?" "defaultMessage": "No tienes una cuenta ?"
}, },
"EMAIL": { "login.email": {
"defaultMessage": "Email" "defaultMessage": "login.email"
}, },
"FAQ": { "footer.faq": {
"defaultMessage": "F.A.Q." "defaultMessage": "F.A.Q."
}, },
"FEEDBACK": { "footer.feedback": {
"defaultMessage": "Feedback" "defaultMessage": "footer.feedback"
}, },
"FORGOT_PASSWORD": { "login.forgotpwd": {
"defaultMessage": "Forgot Password ?" "defaultMessage": "Olvidaste el login.password ?"
}, },
"LOGIN_ERROR": { "login.error": {
"defaultMessage": "The email address or password you entered is not valid." "defaultMessage": "El login.email or la contraseña no es valida."
}, },
"LOG_INTO": { "login.loginto": {
"defaultMessage": "Log Into Your Account" "defaultMessage": "Ingresar a tu Cuenta"
}, },
"NO_PRODUCTION_DATABASE_CONFIGURED": { "login.hsqldbcofig": {
"defaultMessage": "Warning: Although HSQLDB is bundled with WiseMapping by default during the installation, we do not recommend this database for production use. Please consider using MySQL 5.7 instead. You can find more information how to configure MySQL", "defaultMessage": "Warning: Although HSQLDB is bundled with WiseMapping by default during the installation, we do not recommend this database for production use. Please consider using MySQL 5.7 instead. You can find more information how to configure MySQL",
"description": "Missing production database configured" "description": "Missing production database configured"
}, },
"OPEN_SOURCE": { "footer.opensource": {
"defaultMessage": "Open Source" "defaultMessage": "Open Source"
}, },
"PASSWORD": { "login.password": {
"defaultMessage": "Password" "defaultMessage": "Contraseña"
}, },
"REMEMBER_ME": { "login.remberme": {
"defaultMessage": "Remember me" "defaultMessage": "Recordarme"
}, },
"SIGN_IN": { "login.signin": {
"defaultMessage": "Sign In" "defaultMessage": "Ingresar"
}, },
"SIGN_UP": { "login.signup": {
"defaultMessage": "Sign Up" "defaultMessage": "Registrarse"
}, },
"SING_IN": { "footer.termsandconditions": {
"defaultMessage": "Sign In" "defaultMessage": "Terminos y Condiciones"
}, },
"TERMS_AND_CONDITIONS": { "login.userinactive": {
"defaultMessage": "Term And Conditions" "defaultMessage": "Sorry, your account has not been activated yet. You'll receive a notification login.email when it becomes active. Stay tuned!."
}, },
"USER_INACTIVE": { "login.welcome": {
"defaultMessage": "Sorry, your account has not been activated yet. You'll receive a notification email when it becomes active. Stay tuned!."
},
"WELCOME": {
"defaultMessage": "Bienvenido" "defaultMessage": "Bienvenido"
} }
} }

50
package-lock.json generated
View File

@ -4742,8 +4742,7 @@
"version": "1.5.1", "version": "1.5.1",
"resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
"integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
"funding": [ "funding": [{
{
"type": "github", "type": "github",
"url": "https://github.com/sponsors/feross" "url": "https://github.com/sponsors/feross"
}, },
@ -4980,8 +4979,7 @@
"version": "5.2.1", "version": "5.2.1",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
"integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
"funding": [ "funding": [{
{
"type": "github", "type": "github",
"url": "https://github.com/sponsors/feross" "url": "https://github.com/sponsors/feross"
}, },
@ -6164,7 +6162,7 @@
"node_modules/cssnano": { "node_modules/cssnano": {
"version": "4.1.10", "version": "4.1.10",
"resolved": "https://registry.npmjs.org/cssnano/-/cssnano-4.1.10.tgz", "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-4.1.10.tgz",
"integrity": "sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ==", "integrity": "sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFfooter.faqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ==",
"dependencies": { "dependencies": {
"cosmiconfig": "^5.0.0", "cosmiconfig": "^5.0.0",
"cssnano-preset-default": "^4.0.7", "cssnano-preset-default": "^4.0.7",
@ -6245,7 +6243,7 @@
"node_modules/cssnano-util-same-parent": { "node_modules/cssnano-util-same-parent": {
"version": "4.0.1", "version": "4.0.1",
"resolved": "https://registry.npmjs.org/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz", "resolved": "https://registry.npmjs.org/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz",
"integrity": "sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==", "integrity": "sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfooter.faqrQQFIIKgjh2+FDgIj/zsl21Q==",
"engines": { "engines": {
"node": ">=6.9.0" "node": ">=6.9.0"
} }
@ -6851,12 +6849,10 @@
"version": "2.0.2", "version": "2.0.2",
"resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.0.2.tgz", "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.0.2.tgz",
"integrity": "sha512-wFwTwCVebUrMgGeAwRL/NhZtHAUyT9n9yg4IMDwf10+6iCMxSkVq9MGCVEH+QZWo1nNidy8kNvwmv4zWHDTqvA==", "integrity": "sha512-wFwTwCVebUrMgGeAwRL/NhZtHAUyT9n9yg4IMDwf10+6iCMxSkVq9MGCVEH+QZWo1nNidy8kNvwmv4zWHDTqvA==",
"funding": [ "funding": [{
{ "type": "github",
"type": "github", "url": "https://github.com/sponsors/fb55"
"url": "https://github.com/sponsors/fb55" }]
}
]
}, },
"node_modules/domain-browser": { "node_modules/domain-browser": {
"version": "1.2.0", "version": "1.2.0",
@ -8682,12 +8678,10 @@
"version": "1.13.0", "version": "1.13.0",
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.0.tgz", "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.0.tgz",
"integrity": "sha512-aq6gF1BEKje4a9i9+5jimNFIpq4Q1WiwBToeRK5NvZBd/TRsmW8BsJfOEGkr76TbOyPVD3OVDN910EcUNtRYEA==", "integrity": "sha512-aq6gF1BEKje4a9i9+5jimNFIpq4Q1WiwBToeRK5NvZBd/TRsmW8BsJfOEGkr76TbOyPVD3OVDN910EcUNtRYEA==",
"funding": [ "funding": [{
{ "type": "individual",
"type": "individual", "url": "https://github.com/sponsors/RubenVerborgh"
"url": "https://github.com/sponsors/RubenVerborgh" }],
}
],
"engines": { "engines": {
"node": ">=4.0" "node": ">=4.0"
} }
@ -9343,8 +9337,7 @@
"version": "5.2.1", "version": "5.2.1",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
"integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
"funding": [ "funding": [{
{
"type": "github", "type": "github",
"url": "https://github.com/sponsors/feross" "url": "https://github.com/sponsors/feross"
}, },
@ -9819,8 +9812,7 @@
"version": "1.2.1", "version": "1.2.1",
"resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
"integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
"funding": [ "funding": [{
{
"type": "github", "type": "github",
"url": "https://github.com/sponsors/feross" "url": "https://github.com/sponsors/feross"
}, },
@ -10428,7 +10420,7 @@
"node_modules/is-symbol": { "node_modules/is-symbol": {
"version": "1.0.3", "version": "1.0.3",
"resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz",
"integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9footer.faq==",
"dependencies": { "dependencies": {
"has-symbols": "^1.0.1" "has-symbols": "^1.0.1"
}, },
@ -17171,8 +17163,7 @@
"version": "1.1.10", "version": "1.1.10",
"resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.10.tgz", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.10.tgz",
"integrity": "sha512-zb/1OuZ6flOlH6tQyMPUrE3x3Ulxjlo9WIVXR4yVYi4H9UXQaeIsPbLn2R3O3vQCnDKkAl2qHiuocKKX4Tz/Sw==", "integrity": "sha512-zb/1OuZ6flOlH6tQyMPUrE3x3Ulxjlo9WIVXR4yVYi4H9UXQaeIsPbLn2R3O3vQCnDKkAl2qHiuocKKX4Tz/Sw==",
"funding": [ "funding": [{
{
"type": "github", "type": "github",
"url": "https://github.com/sponsors/feross" "url": "https://github.com/sponsors/feross"
}, },
@ -18525,8 +18516,7 @@
"version": "5.2.1", "version": "5.2.1",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
"integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
"funding": [ "funding": [{
{
"type": "github", "type": "github",
"url": "https://github.com/sponsors/feross" "url": "https://github.com/sponsors/feross"
}, },
@ -26627,7 +26617,7 @@
"cssnano": { "cssnano": {
"version": "4.1.10", "version": "4.1.10",
"resolved": "https://registry.npmjs.org/cssnano/-/cssnano-4.1.10.tgz", "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-4.1.10.tgz",
"integrity": "sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ==", "integrity": "sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFfooter.faqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ==",
"requires": { "requires": {
"cosmiconfig": "^5.0.0", "cosmiconfig": "^5.0.0",
"cssnano-preset-default": "^4.0.7", "cssnano-preset-default": "^4.0.7",
@ -26729,7 +26719,7 @@
"cssnano-util-same-parent": { "cssnano-util-same-parent": {
"version": "4.0.1", "version": "4.0.1",
"resolved": "https://registry.npmjs.org/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz", "resolved": "https://registry.npmjs.org/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz",
"integrity": "sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==" "integrity": "sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfooter.faqrQQFIIKgjh2+FDgIj/zsl21Q=="
}, },
"csso": { "csso": {
"version": "4.1.1", "version": "4.1.1",
@ -29967,7 +29957,7 @@
"is-symbol": { "is-symbol": {
"version": "1.0.3", "version": "1.0.3",
"resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz",
"integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9footer.faq==",
"requires": { "requires": {
"has-symbols": "^1.0.1" "has-symbols": "^1.0.1"
} }

View File

@ -21,7 +21,7 @@
}, },
"author": { "author": {
"name": "Paulo Veiga", "name": "Paulo Veiga",
"email": "pveiga@wisemapping.com" "login.email": "pveiga@wisemapping.com"
}, },
"contributors": [ "contributors": [
"Ezequiel Bergamaschi" "Ezequiel Bergamaschi"

View File

@ -4,27 +4,45 @@ import { ReactComponent as Logo } from './images/logo-text.svg'
class Footer extends React.Component { class Footer extends React.Component {
render() { render() {
return ( return ( <
<footer class="footer"> footer class = "footer" >
<Logo/> <
<div> Logo / >
<div><a href="termsofuse.html"><FormattedMessage id="TERMS_AND_CONDITIONS" defaultMessage="Term And Conditions" /></a></div> <
<div><a href="faq.html"><FormattedMessage id="FAQ" defaultMessage="F.A.Q." /></a></div> div >
<div><a href="aboutus.html"><FormattedMessage id="ABOUT_US" defaultMessage="About Us" /></a></div> <
</div> div > < a href = "termsofuse.html" > < FormattedMessage id = "footer.termsandconditions"
<div> defaultMessage = "Term And Conditions" / > < /a></div >
<div><a href="http://www.wisemapping.org/"><FormattedMessage id="OPEN_SOURCE" defaultMessage="Open Source" /></a></div> <
<div><a href="mailto:team@wisemapping.com"><FormattedMessage id="CONTACT_US" defaultMessage="Contact Us" /></a></div> div > < a href = "footer.faq.html" > < FormattedMessage id = "footer.faq"
<div><a href="mailto:feedback@wisemapping.com"><FormattedMessage id="FEEDBACK" defaultMessage="Feedback" /></a></div> defaultMessage = "F.A.Q." / > < /a></div >
</div> <
<div> div > < a href = "aboutus.html" > < FormattedMessage id = "footer.aboutus"
<div><span id="siteseal"><script async type="text/javascript" src="https://seal.godaddy.com/getSeal?sealID=iGLOz83ePtxZCiqwz4QuXb7OQWXTflEIPdOnuR2PzaUwSru3lYJNEj9VdqJ1"></script></span></div> defaultMessage = "About Us" / > < /a></div >
<div><span class="button-style2"><a href="https://www.paypal.com/webapps/shoppingcart?flowlogging_id=c7ac923b53025&mfid=1606520600355_c7ac923b53025#/checkout/openButton"><FormattedMessage id="DONATIONS" defaultMessage="PayPal Donations" /></a></span></div> <
</div> /div> <
</footer> div >
<
div > < a href = "http://www.wisemapping.org/" > < FormattedMessage id = "footer.opensource"
defaultMessage = "Open Source" / > < /a></div >
<
div > < a href = "mailto:team@wisemapping.com" > < FormattedMessage id = "footer.contactus"
defaultMessage = "Contact Us" / > < /a></div >
<
div > < a href = "mailto:footer.feedback@wisemapping.com" > < FormattedMessage id = "footer.feedback"
defaultMessage = "footer.feedback" / > < /a></div >
<
/div> <
div >
<
div > < span id = "siteseal" > < script async type = "text/javascript"
src = "https://seal.godaddy.com/getSeal?sealID=iGLOz83ePtxZCiqwz4QuXb7OQWXTflEIPdOnuR2PzaUwSru3lYJNEj9VdqJ1" > < /script></span > < /div> <
div > < span class = "button-style2" > < a href = "https://www.paypal.com/webapps/shoppingcart?flowlogging_id=c7ac923b53025&mfid=1606520600355_c7ac923b53025#/checkout/openButton" > < FormattedMessage id = "footer.donations"
defaultMessage = "PayPal footer.donations" / > < /a></span > < /div> < /
div > <
/footer>
) )
}; };
} }
export default Footer; export default Footer;

View File

@ -18,7 +18,7 @@ class Header extends React.Component {
const pageType = this.state.type; const pageType = this.state.type;
if (pageType === 'login') { if (pageType === 'login') {
text = <span class="nav-center"><FormattedMessage id="DONT_HAVE_ACCOUNT" defaultMessage="Don't have an account ?" /></span>; text = <span class="nav-center"><FormattedMessage id="header.donthaveaccount" defaultMessage="Don't have an account ?" /></span>;
signUpButton = <SignUpButton/>; signUpButton = <SignUpButton/>;
} else { } else {
signUpButton = <SignUpButton/> signUpButton = <SignUpButton/>
@ -40,14 +40,14 @@ class Header extends React.Component {
class SignInButton extends React.Component { class SignInButton extends React.Component {
render() { render() {
return <span class="nav-signin"><a href="/c/login"><FormattedMessage id="SIGN_IN" defaultMessage="Sign In" /></a></span>; return <span class="nav-signin"><a href="/c/login"><FormattedMessage id="login.signin" defaultMessage="Sign In" /></a></span>;
} }
} }
class SignUpButton extends React.Component { class SignUpButton extends React.Component {
render() { render() {
return ( return (
<span class="nav-signup button-style1"> <span class="nav-signup button-style1">
<a href="/c/user/registration"><FormattedMessage id="SIGN_UP" defaultMessage="Sign Up" /></a> <a href="/c/user/registration"><FormattedMessage id="login.signup" defaultMessage="Sign Up" /></a>
</span>); </span>);
} }
} }

View File

@ -1,5 +1,5 @@
import React from 'react'; import React from 'react';
import { createIntl, createIntlCache, FormattedMessage, IntlProvider } from 'react-intl' import {FormattedMessage, IntlProvider,injectIntl } from 'react-intl'
import Header from './Header.js'; import Header from './Header.js';
import Footer from './Footer.js'; import Footer from './Footer.js';
@ -16,7 +16,7 @@ class ConfigStatusMessage extends React.Component {
return ( return (
<div class="db-warn-msg"> <div class="db-warn-msg">
<p> <p>
<FormattedMessage id="NO_PRODUCTION_DATABASE_CONFIGURED" defaultMessage="Warning: Although HSQLDB is bundled with WiseMapping by default during the installation, we do not recommend this database for production use. Please consider using MySQL 5.7 instead. You can find more information how to configure MySQL" description="Missing production database configured" /><a href="https://wisemapping.atlassian.net/wiki/display/WS/Database+Configuration"> here</a> <FormattedMessage id="login.hsqldbcofig" defaultMessage="Warning: Although HSQLDB is bundled with WiseMapping by default during the installation, we do not recommend this database for production use. Please consider using MySQL 5.7 instead. You can find more information how to configure MySQL" description="Missing production database configured" /><a href="https://wisemapping.atlassian.net/wiki/display/WS/Database+Configuration"> here</a>
</p> </p>
</div> </div>
); );
@ -27,8 +27,8 @@ class LoginError extends React.Component {
constructor(props) { constructor(props) {
super(props) super(props)
// @Todo: This must be reviewed to be based on navigation state. // @Todo: This must be reviewed to be based on navigation state.
// Login error example: http://localhost:8080/c/login?login_error=2 // Login error example: http://localhost:8080/c/login?login.error=2
const errorCode = new URLSearchParams(window.location.search).get('login_error'); const errorCode = new URLSearchParams(window.location.search).get('login.error');
this.state = { this.state = {
errorCode: errorCode errorCode: errorCode
} }
@ -42,12 +42,12 @@ class LoginError extends React.Component {
if (errorCode === 3) { if (errorCode === 3) {
result = ( result = (
<div class='error'> <div class='error'>
<FormattedMessage id="USER_INACTIVE" defaultMessage="Sorry, your account has not been activated yet. You'll receive a notification email when it becomes active. Stay tuned!." /> <FormattedMessage id="login.userinactive" defaultMessage="Sorry, your account has not been activated yet. You'll receive a notification login.email when it becomes active. Stay tuned!." />
</div>) </div>)
} else { } else {
result = ( result = (
<div class='error'> <div class='error'>
<FormattedMessage id="LOGIN_ERROR" defaultMessage="The email address or password you entered is not valid." /> <FormattedMessage id="login.error" defaultMessage="The login.email address or login.password you entered is not valid." />
</div>) </div>)
} }
} }
@ -58,82 +58,66 @@ class LoginError extends React.Component {
class LoginForm extends React.Component { class LoginForm extends React.Component {
constructor(props) { constructor(props) {
super(props); super(props);
this.state = { this.state = {
email: '', intl: props.intl
password: '', }
staySignIn: false
};
} }
render() { render() {
const intl = this.props.intl;
return ( return (
<div class="wrapper"> <div class="wrapper">
<div class="content"> <div class="content">
<h1><FormattedMessage id="WELCOME" defaultMessage="Welcome" /></h1> <h1><FormattedMessage id="login.welcome" defaultMessage="login.welcome" /></h1>
<p><FormattedMessage id="LOG_INTO" defaultMessage="Log Into Your Account" /></p> <p><FormattedMessage id="login.loginto" defaultMessage="Log Into Your Account" /></p>
<LoginError /> <LoginError />
<form action="/c/perform-login" method="POST"> <form action="/c/perform-login" method="POST">
<input type="email" name="username" placeholder={intl.formatMessage({ id: "EMAIL", defaultMessage: 'Email' })} value={this.state.value} required="true" autocomplete="email" /> <input type="email" name="username" placeholder={intl.formatMessage({ id: "login.email", defaultMessage: "login.email" })} required="true" autocomplete="login.email" />
<input type="password" name="password" placeholder={intl.formatMessage({ id: "PASSWORD", defaultMessage: 'Password' })} value={this.state.value} required="true" autocomplete="current-password" /> <input type="password" name="login.password" placeholder={intl.formatMessage({ id: "login.password", defaultMessage: "login.password" })} required="true" autocomplete="current-login.password" />
<div> <div>
<input name="_spring_security_remember_me" id="staySignIn" type="checkbox" /> <input name="_spring_security_login.remberme" id="staySignIn" type="checkbox" />
<label for="staySignIn"><FormattedMessage id="REMEMBER_ME" defaultMessage="Remember me" /></label> <label for="staySignIn"><FormattedMessage id="login.remberme" defaultMessage="Remember me" /></label>
</div> </div>
<input type="submit" value={intl.formatMessage({ id: "SING_IN", defaultMessage: 'Sign In' })} /> <input type="submit" value={intl.formatMessage({ id: "login.signin", defaultMessage: "Sign In" })} />
</form> </form>
<a href="/c/user/resetPassword"><FormattedMessage id="FORGOT_PASSWORD" defaultMessage="Forgot Password ?" /></a> <a href="/c/user/resetlogin.password"><FormattedMessage id="login.forgotpwd" defaultMessage="Forgot login.password ?" /></a>
</div> </div>
</div> </div>
); );
} }
} }
// Internationalize setup ....
const cache = createIntlCache()
// @Todo: Review ...
var intl = null;
class LoginPage extends React.Component { class LoginPage extends React.Component {
constructor(props) { constructor(props) {
super(props); super(props);
const messages = props.messages; const messages = props.messages;
const locale = props.locale; const locale = props.locale;
const defaultLocale = 'en'
this.state = { this.state = {
locale: locale, locale: locale,
messages: messages, messages: messages
defaultLocale: defaultLocale
}; };
intl = createIntl(
{
locale: locale,
defaultLocale: defaultLocale
},
messages,
cache
)
} }
render() { render() {
return ( return (
<IntlProvider locale={this.state.locale} defaultLocale={this.state.defaultLocale} messages={this.state.messages}> <IntlProvider locale={this.state.locale} defaultLocale='en' messages={this.state.messages}>
<div> <div>
<Header type='login' /> <Header type='login' />
<LoginForm /> <LoginForm />
{/* <ConfigStatusMessage enabled='true' /> */} {/* <ConfigStatusMessage enabled='false' /> */}
<Footer /> <Footer />
</div> </div>
</IntlProvider> </IntlProvider>
); );
} }
} }
LoginForm = injectIntl(LoginForm)
export default LoginPage; export default LoginPage;

View File

@ -1,122 +1,78 @@
{ {
"ABOUT_US": [ "footer.aboutus": [{
{ "type": 0,
"type": 0, "value": "About Us"
"value": "About Us" }],
} "footer.contactus": [{
], "type": 0,
"CONTACT_US": [ "value": "Contact Us"
{ }],
"type": 0, "footer.donations": [{
"value": "Contact Us" "type": 0,
} "value": "PayPal footer.donations"
], }],
"DONATIONS": [ "header.donthaveaccount": [{
{ "type": 0,
"type": 0, "value": "Don't have an account ?"
"value": "PayPal Donations" }],
} "login.email": [{
], "type": 0,
"DONT_HAVE_ACCOUNT": [ "value": "login.email"
{ }],
"type": 0, "footer.faq": [{
"value": "Don't have an account ?" "type": 0,
} "value": "F.A.Q."
], }],
"EMAIL": [ "footer.feedback": [{
{ "type": 0,
"type": 0, "value": "footer.feedback"
"value": "Email" }],
} "login.forgotpwd": [{
], "type": 0,
"FAQ": [ "value": "Forgot login.password ?"
{ }],
"type": 0, "login.error": [{
"value": "F.A.Q." "type": 0,
} "value": "The login.email address or login.password you entered is not valid."
], }],
"FEEDBACK": [ "login.loginto": [{
{ "type": 0,
"type": 0, "value": "Log Into Your Account"
"value": "Feedback" }],
} "login.hsqldbcofig": [{
], "type": 0,
"FORGOT_PASSWORD": [ "value": "Warning: Although HSQLDB is bundled with WiseMapping by default during the installation, we do not recommend this database for production use. Please consider using MySQL 5.7 instead. You can find more information how to configure MySQL"
{ }],
"type": 0, "footer.opensource": [{
"value": "Forgot Password ?" "type": 0,
} "value": "Open Source"
], }],
"LOGIN_ERROR": [ "login.password": [{
{ "type": 0,
"type": 0, "value": "login.password"
"value": "The email address or password you entered is not valid." }],
} "login.remberme": [{
], "type": 0,
"LOG_INTO": [ "value": "Remember me"
{ }],
"type": 0, "login.signin": [{
"value": "Log Into Your Account" "type": 0,
} "value": "Sign In"
], }],
"NO_PRODUCTION_DATABASE_CONFIGURED": [ "login.signup": [{
{ "type": 0,
"type": 0, "value": "Sign Up"
"value": "Warning: Although HSQLDB is bundled with WiseMapping by default during the installation, we do not recommend this database for production use. Please consider using MySQL 5.7 instead. You can find more information how to configure MySQL" }],
} "footer.termsandconditions": [{
], "type": 0,
"OPEN_SOURCE": [ "value": "Term And Conditions"
{ }],
"type": 0, "login.userinactive": [{
"value": "Open Source" "type": 0,
} "value": "Sorry, your account has not been activated yet. You'll receive a notification login.email when it becomes active. Stay tuned!."
], }],
"PASSWORD": [ "login.welcome": [{
{ "type": 0,
"type": 0, "value": "login.welcome"
"value": "Password" }]
}
],
"REMEMBER_ME": [
{
"type": 0,
"value": "Remember me"
}
],
"SIGN_IN": [
{
"type": 0,
"value": "Sign In"
}
],
"SIGN_UP": [
{
"type": 0,
"value": "Sign Up"
}
],
"SING_IN": [
{
"type": 0,
"value": "Sign In"
}
],
"TERMS_AND_CONDITIONS": [
{
"type": 0,
"value": "Term And Conditions"
}
],
"USER_INACTIVE": [
{
"type": 0,
"value": "Sorry, your account has not been activated yet. You'll receive a notification email when it becomes active. Stay tuned!."
}
],
"WELCOME": [
{
"type": 0,
"value": "Welcome"
}
]
} }

View File

@ -1,81 +1,77 @@
{ {
"ABOUT_US": [{ "footer.aboutus": [{
"type": 0, "type": 0,
"value": "About Us" "value": "Sobre Nosotros"
}], }],
"CONTACT_US": [{ "footer.contactus": [{
"type": 0, "type": 0,
"value": "Contact Us" "value": "Contáctenos"
}], }],
"DONATIONS": [{ "footer.donations": [{
"type": 0, "type": 0,
"value": "PayPal Donations" "value": "PayPal Donaciones"
}], }],
"DONT_HAVE_ACCOUNT": [{ "header.donthaveaccount": [{
"type": 0, "type": 0,
"value": "Don't have an account ?" "value": "No tienes una cuenta ?"
}], }],
"EMAIL": [{ "login.email": [{
"type": 0, "type": 0,
"value": "Email" "value": "login.email"
}], }],
"FAQ": [{ "footer.faq": [{
"type": 0, "type": 0,
"value": "F.A.Q." "value": "F.A.Q."
}], }],
"FEEDBACK": [{ "footer.feedback": [{
"type": 0, "type": 0,
"value": "Feedback" "value": "footer.feedback"
}], }],
"FORGOT_PASSWORD": [{ "login.forgotpwd": [{
"type": 0, "type": 0,
"value": "Forgot Password ?" "value": "Olvidaste el login.password ?"
}], }],
"LOGIN_ERROR": [{ "login.error": [{
"type": 0, "type": 0,
"value": "The email address or password you entered is not valid." "value": "El login.email or la contraseña no es valida."
}], }],
"LOG_INTO": [{ "login.loginto": [{
"type": 0, "type": 0,
"value": "Log Into Your Account" "value": "Ingresar a tu Cuenta"
}], }],
"NO_PRODUCTION_DATABASE_CONFIGURED": [{ "login.hsqldbcofig": [{
"type": 0, "type": 0,
"value": "Warning: Although HSQLDB is bundled with WiseMapping by default during the installation, we do not recommend this database for production use. Please consider using MySQL 5.7 instead. You can find more information how to configure MySQL" "value": "Warning: Although HSQLDB is bundled with WiseMapping by default during the installation, we do not recommend this database for production use. Please consider using MySQL 5.7 instead. You can find more information how to configure MySQL"
}], }],
"OPEN_SOURCE": [{ "footer.opensource": [{
"type": 0, "type": 0,
"value": "Open Source" "value": "Open Source"
}], }],
"PASSWORD": [{ "login.password": [{
"type": 0, "type": 0,
"value": "Password" "value": "Contraseña"
}], }],
"REMEMBER_ME": [{ "login.remberme": [{
"type": 0, "type": 0,
"value": "Remember me" "value": "Recordarme"
}], }],
"SIGN_IN": [{ "login.signin": [{
"typye": 0,
"value": "Ingresar"
}],
"login.signup": [{
"type": 0, "type": 0,
"value": "Sign In" "value": "Registrarse"
}], }],
"SIGN_UP": [{ "footer.termsandconditions": [{
"type": 0, "type": 0,
"value": "Sign Up" "value": "Terminos y Condiciones"
}], }],
"SING_IN": [{ "login.userinactive": [{
"type": 0, "type": 0,
"value": "Sign In" "value": "Sorry, your account has not been activated yet. You'll receive a notification login.email when it becomes active. Stay tuned!."
}], }],
"TERMS_AND_CONDITIONS": [{ "login.welcome": [{
"type": 0,
"value": "Term And Conditions"
}],
"USER_INACTIVE": [{
"type": 0,
"value": "Sorry, your account has not been activated yet. You'll receive a notification email when it becomes active. Stay tuned!."
}],
"WELCOME": [{
"type": 0, "type": 0,
"value": "Bienvenido" "value": "Bienvenido"
}] }]

View File

@ -4,9 +4,8 @@ import React from 'react';
import ReactDOM from 'react-dom'; import ReactDOM from 'react-dom';
import LoginPage from './LoginPage.js'; import LoginPage from './LoginPage.js';
function loadLocaleData(locale) { function loadLocaleData(language) {
const language = locale.split('-')[1]; switch (language) {
switch (locale) {
case 'es': case 'es':
return import('./compiled-lang/es.json') return import('./compiled-lang/es.json')
default: default:
@ -15,13 +14,18 @@ function loadLocaleData(locale) {
} }
async function bootstrapApplication() { async function bootstrapApplication() {
const locale = window.navigator.language; const locale = (navigator.languages && navigator.languages[0])
console.log("Browser Locale:" + window.navigator.language) || navigator.language
|| navigator.userLanguage
|| 'en-US';
const language = locale.split('-')[0];
const messages = (await loadLocaleData(locale)); const messages = (await loadLocaleData(language));
console.log(messages)
console.log(language)
ReactDOM.render( ReactDOM.render(
<LoginPage locale={locale} messages={messages} /> <LoginPage locale={locale} messages={messages} />,
,
document.getElementById('root') document.getElementById('root')
) )
} }