From 05bf21fe09f536c92e7820b5e48867d14e92951b Mon Sep 17 00:00:00 2001 From: gaba Date: Mon, 24 Apr 2017 10:08:33 -0500 Subject: [PATCH 01/47] Refactoring --- .../components/ConfigureCommentStream.js | 25 ++++---- client/coral-embed-stream/src/Embed.js | 2 +- .../components/RestrictedContent.js | 5 +- .../components/SuspendedAccount.js | 8 ++- client/coral-i18n/locales/en.yml | 63 +++++++++++++++++++ client/coral-i18n/locales/es.yml | 62 ++++++++++++++++++ .../modules/i18n/i18n.js | 15 ++++- .../coral-settings/components/NotLoggedIn.js | 6 +- .../containers/ProfileContainer.js | 5 +- 9 files changed, 164 insertions(+), 27 deletions(-) create mode 100644 client/coral-i18n/locales/en.yml create mode 100644 client/coral-i18n/locales/es.yml rename client/{coral-framework => coral-i18n}/modules/i18n/i18n.js (87%) diff --git a/client/coral-configure/components/ConfigureCommentStream.js b/client/coral-configure/components/ConfigureCommentStream.js index bef53e1ef..a7153823b 100644 --- a/client/coral-configure/components/ConfigureCommentStream.js +++ b/client/coral-configure/components/ConfigureCommentStream.js @@ -3,22 +3,21 @@ import {Button, Checkbox, TextField} from 'coral-ui'; import styles from './ConfigureCommentStream.css'; -import I18n from 'coral-framework/modules/i18n/i18n'; -import translations from '../translations.json'; -const lang = new I18n(translations); +import I18n from 'coral-i18n/modules/i18n/i18n'; +const lang = new I18n(); export default ({handleChange, handleApply, changed, ...props}) => (
-

{lang.t('configureCommentStream.title')}

-

{lang.t('configureCommentStream.description')}

+

{lang.t('configure.title')}

+

{lang.t('configure.description')}

    @@ -30,8 +29,8 @@ export default ({handleChange, handleApply, changed, ...props}) => ( onChange={handleChange} defaultChecked={props.premod} info={{ - title: lang.t('configureCommentStream.enablePremod'), - description: lang.t('configureCommentStream.enablePremodDescription') + title: lang.t('configure.enablePremod'), + description: lang.t('configure.enablePremodDescription') }} />
  • @@ -42,8 +41,8 @@ export default ({handleChange, handleApply, changed, ...props}) => ( onChange={handleChange} defaultChecked={props.premodLinksEnable} info={{ - title: lang.t('configureCommentStream.enablePremodLinks'), - description: lang.t('configureCommentStream.enablePremodLinksDescription') + title: lang.t('configure.enablePremodLinks'), + description: lang.t('configure.enablePremodLinksDescription') }} />
  • @@ -54,8 +53,8 @@ export default ({handleChange, handleApply, changed, ...props}) => ( onChange={handleChange} defaultChecked={props.questionBoxEnable} info={{ - title: lang.t('configureCommentStream.enableQuestionBox'), - description: lang.t('configureCommentStream.enableQuestionBoxDescription') + title: lang.t('configure.enableQuestionBox'), + description: lang.t('configure.enableQuestionBoxDescription') }} />
    ( onChange={handleChange} rows={3} value={props.questionBoxContent} - label={lang.t('configureCommentStream.includeQuestionHere')} + label={lang.t('configure.includeQuestionHere')} />
  • diff --git a/client/coral-embed-stream/src/Embed.js b/client/coral-embed-stream/src/Embed.js index c7c204288..2f33228fa 100644 --- a/client/coral-embed-stream/src/Embed.js +++ b/client/coral-embed-stream/src/Embed.js @@ -164,7 +164,7 @@ class Embed extends React.Component {
    - {lang.t('myProfile')} + {lang.t('my_profile')} Configure Stream { diff --git a/client/coral-framework/components/RestrictedContent.js b/client/coral-framework/components/RestrictedContent.js index 32aaf632d..2e2b30f56 100644 --- a/client/coral-framework/components/RestrictedContent.js +++ b/client/coral-framework/components/RestrictedContent.js @@ -1,9 +1,8 @@ import React from 'react'; import styles from './RestrictedContent.css'; -import I18n from 'coral-framework/modules/i18n/i18n'; -import translations from 'coral-framework/translations.json'; -const lang = new I18n(translations); +import I18n from 'coral-i18n/modules/i18n/i18n'; +const lang = new I18n(); export default ({children, restricted, message = lang.t('contentNotAvailable'), restrictedComp}) => { if (restricted) { diff --git a/client/coral-framework/components/SuspendedAccount.js b/client/coral-framework/components/SuspendedAccount.js index 446169b37..93e42c701 100644 --- a/client/coral-framework/components/SuspendedAccount.js +++ b/client/coral-framework/components/SuspendedAccount.js @@ -1,9 +1,11 @@ import React, {Component, PropTypes} from 'react'; -import I18n from 'coral-framework/modules/i18n/i18n'; -import translations from 'coral-framework/translations.json'; -const lang = new I18n(translations); + +import I18n from 'coral-i18n/modules/i18n/i18n'; +const lang = new I18n(); + import styles from './RestrictedContent.css'; import {Button} from 'coral-ui'; + import validate from '../helpers/validate'; class SuspendedAccount extends Component { diff --git a/client/coral-i18n/locales/en.yml b/client/coral-i18n/locales/en.yml new file mode 100644 index 000000000..299abc698 --- /dev/null +++ b/client/coral-i18n/locales/en.yml @@ -0,0 +1,63 @@ +--- +en: + framework: + profile: Profile + my_profile: My profile + successUpdateSettings: The changes you have made have been applied to the comment stream on this article + successNameUpdate: Your username has been updated + contentNotAvailable: This content is not available + bannedAccountMsg: Your account is currently suspended. This means that you cannot Like Report or write comments. Please contact us if you have any questions. + editName: + msg: Your account is currently suspended because your username has been deemed inappropriate. To restore your account please enter a new username. Please contact us if you have any questions. + label: New Username + button: Submit + error: Usernames can contain letters numbers and _ only + viewMoreComments: view more comments + showAllComments: Show all comments + viewReply: view reply + viewAllRepliesInitial: view all 0 replies + viewAllReplies: view 0 replies + newCount: View 0 new 1 + comment: comment + comments: comments + commentIsIgnored: This comment is hidden because you ignored this user. + configure: + apply: Apply + title: Configure Comment Stream + description: As an admin you may customize the settings for the comment stream for this asset + enablePremod: Enable Premoderation + enablePremodDescription: Moderators must approve any comment before its published. + enablePremodLinks: Pre-Moderate Comments Containing Links + enablePremodLinksDescription: Moderators must approve any comment containing a link before its published. + enableQuestionBox: Ask readers a question + enableQuestionBoxDescription: This question will appear at the top of this comment stream. Ask readers about a certain issue in the article or pose discussion questions etc. + includeQuestionHere: Write your question here. + error: + emailNotVerified: Email address 0 not verified. + email: Not a valid E-Mail + password: Password must be at least 8 characters + username: Usernames can contain letters numbers and _ only + confirmPassword: Passwords don't match. Please check again + organizationName: Organization name must only contain letters or numbers. + emailPasswordError: Email and/or password combination incorrect. + EMAIL_REQUIRED: An email address is required + PASSWORD_REQUIRED: Must input a password + PASSWORD_LENGTH: Password is too short + EMAIL_IN_USE: Email address already in use + EMAIL_USERNAME_IN_USE: Email address or username already in use + USERNAME_IN_USE: Username already in use + USERNAME_REQUIRED: Must input a username + NO_SPECIAL_CHARACTERS: Usernames can contain letters numbers and _ only + PROFANITY_ERROR: Usernames must not contain profanity. Please contact the administrator if you believe this to be in error. + NOT_AUTHORIZED: Not authorized. + EDIT_USERNAME_NOT_AUTHORIZED: You do not have permission to update your username. + + settings: + profile: Profile + userNoComment: You've never left a comment. Join the conversation! + allComments: All Comments + profileSettings: Profile Settings + myCommentHistory: My comment History + signIn: Sign in + toAccess: to access Profile + fromSettingsPage: From the Profile Page you can see your comment history. diff --git a/client/coral-i18n/locales/es.yml b/client/coral-i18n/locales/es.yml new file mode 100644 index 000000000..d871847a7 --- /dev/null +++ b/client/coral-i18n/locales/es.yml @@ -0,0 +1,62 @@ +--- +es: + framework: + profile: Pérfil + my_profile: Mi pérfil + successUpdateSettings: La configuración de este articulo fue actualizada + successBioUpdate: Tu biografia fue actualizada + contentNotAvailable: El contenido no se encuentra disponible + bannedAccountMsg: Tu cuenta se encuentra suspendida. Esto significa que no puedes gustar marcar o escribir commentarios. + editName: + msg: Your account is currently suspended because your username has been deemed inappropriate. To restore your account please enter a new username. Please contact us if you have any questions. + label: New Username + button: Submit + error: Usernames can contain letters numbers and _ only + viewMoreComments: Ver commentarios más + viewReply: ver respuesta + viewAllRepliesInitial: ver todas las 0 respuestas + viewAllReplies: ver 0 respuestas + newCount: Ver 0 1 más + comment: commentario + comments: commentarios + commentIsIgnored: Este comentario está escondido porque has ignorado al usuario. + showAllComments: Mostrar todos los comentarios + configure: + apply: Aplicar + title: Configurar los comentarios + description: Como Administrador/a puedes modificar las opciones de los comentarios en este artículo + enablePremod: Activar Pre Moderación + enablePremodDescription: Los y las Moderadoras deben aprobar cualquier comentario antes de su publicación + enablePremodLinks: Pre-Moderar Comentarios que contienen Enlaces + enablePremodLinksDescription: Los y las moderadoras deben aprobar cualquier comentario que contengan enlaces antes de su publicación. + enableQuestionBox: Hacer una pregunta a los y las lectoras. + enableQuestionBoxDescription: Esta pregunta aparecera en la parte de arriba del hilo de comentarios. + includeQuestionHere: Escribir la pregunta aquí. + settings: + profile: Perfil + userNoComment: No has dejado aún ningún comentario. ¡Únete a la conversación! + allComments: Todos los comentarios + profileSettings: Configuración del perfil + myCommentHistory: Mi historial de comentarios + signIn: Entrar + toAccess: para acceder a al perfil + fromSettingsPage: Desde la página de configuración puedes ver tu historia de comentarios. + error: + emailNotVerified: E-mail 0 no verificado. + email: No es un e-mail válido + password: La contraseña debe tener por lo menos 8 caracteres + username: Los nombres pueden contener letras números y _ + organizationName: El nombre de la organización debe contener letras y/o números. + confirmPassword: Las contraseñas no coinciden + emailPasswordError: E-mail y/o contraseña incorrecta. + EMAIL_REQUIRED: Se requiere un e-mail + PASSWORD_REQUIRED: Debe ingresar una contraseña + PASSWORD_LENGTH: La contraseña es muy corta + EMAIL_IN_USE: El e-mail se encuentra en uso + EMAIL_USERNAME_IN_USE: E-mail o Nombre en uso. + USERNAME_IN_USE: Nombre en uso. + USERNAME_REQUIRED: Debe ingresar un nombre + NO_SPECIAL_CHARACTERS: Los nombres pueden contener letras números y _ + PROFANITY_ERROR: Los nombres no pueden contener blasfemias. Por favor contacte al o la administradora si cree que esto es un error + NOT_AUTHORIZED: Acción no autorizada. + EDIT_USERNAME_NOT_AUTHORIZED: No tiene permiso para editar el nombre de usuario. diff --git a/client/coral-framework/modules/i18n/i18n.js b/client/coral-i18n/modules/i18n/i18n.js similarity index 87% rename from client/coral-framework/modules/i18n/i18n.js rename to client/coral-i18n/modules/i18n/i18n.js index 08fc1c451..3d750111f 100644 --- a/client/coral-framework/modules/i18n/i18n.js +++ b/client/coral-i18n/modules/i18n/i18n.js @@ -3,6 +3,11 @@ import esTA from '../../../../node_modules/timeago.js/locales/es'; import has from 'lodash/has'; import get from 'lodash/get'; +// To Do +// check on how to load the translations from YML file + +// Look at other i18n work in express/node + /** * Default locales, this should be overriden by config file */ @@ -14,21 +19,27 @@ class i18n { * Register locales */ - this.locales = {'en': 'en', 'es': 'es'}; + this.locales = {'en': 'locales/en.yml', 'es': 'locales/es.yml'}; + timeago.register('es_ES', esTA); this.timeagoInstance = new timeago(); /** * Load translations */ + // To Do : get all the yml from locales let trans = translations || {en: {}}; try { const locale = localStorage.getItem('locale') || navigator.language; localStorage.setItem('locale', locale); + const lang = this.locales[locale.split('-')[0]] || 'en'; this.translations = trans[lang]; + } catch (err) { + + // To Do: get configuration for default translation this.translations = trans['en']; } @@ -72,7 +83,9 @@ class i18n { this.timeago = (time) => { return this.timeagoInstance.format(new Date(time)); }; + } + } export default i18n; diff --git a/client/coral-settings/components/NotLoggedIn.js b/client/coral-settings/components/NotLoggedIn.js index a5d8b0693..25b84c192 100644 --- a/client/coral-settings/components/NotLoggedIn.js +++ b/client/coral-settings/components/NotLoggedIn.js @@ -1,8 +1,8 @@ import React from 'react'; import styles from './NotLoggedIn.css'; -import translations from '../translations'; -import I18n from 'coral-framework/modules/i18n/i18n'; -const lang = new I18n(translations); +import I18n from 'coral-i18n/modules/i18n/i18n'; + +const lang = new I18n(); export default ({showSignInDialog}) => (
    diff --git a/client/coral-settings/containers/ProfileContainer.js b/client/coral-settings/containers/ProfileContainer.js index 553504462..6775e6074 100644 --- a/client/coral-settings/containers/ProfileContainer.js +++ b/client/coral-settings/containers/ProfileContainer.js @@ -1,7 +1,7 @@ import {connect} from 'react-redux'; import {compose} from 'react-apollo'; import React, {Component} from 'react'; -import I18n from 'coral-framework/modules/i18n/i18n'; +import I18n from 'coral-i18n/modules/i18n/i18n'; import {bindActionCreators} from 'redux'; import {myCommentHistory, myIgnoredUsers} from 'coral-framework/graphql/queries'; @@ -15,8 +15,7 @@ import CommentHistory from 'coral-plugin-history/CommentHistory'; import {showSignInDialog, checkLogin} from 'coral-framework/actions/auth'; -import translations from '../translations'; -const lang = new I18n(translations); +const lang = new I18n(); class ProfileContainer extends Component { constructor (props) { From 59e23ffd60f8dbda67d1a09750a35e9525f8d492 Mon Sep 17 00:00:00 2001 From: gaba Date: Mon, 24 Apr 2017 18:09:13 -0500 Subject: [PATCH 02/47] Moves into YAML and own module. --- .../coral-admin/src/components/AdminLogin.js | 2 +- .../src/components/BanUserButton.js | 2 +- .../src/components/BanUserDialog.js | 2 +- .../src/components/CountdownTimer.js | 2 +- .../src/components/ModerationKeysModal.js | 2 +- .../coral-admin/src/components/ui/Drawer.js | 2 +- .../coral-admin/src/components/ui/Header.js | 2 +- .../containers/Community/FlaggedAccounts.js | 2 +- .../src/containers/Community/People.js | 2 +- .../src/containers/Community/Table.js | 2 +- .../Community/components/BanUserDialog.js | 2 +- .../Community/components/CommunityMenu.js | 2 +- .../Community/components/SuspendUserDialog.js | 2 +- .../containers/Community/components/User.js | 2 +- .../src/containers/Configure/Configure.js | 2 +- .../src/containers/Configure/Domainlist.js | 2 +- .../src/containers/Configure/EmbedLink.js | 2 +- .../Configure/ModerationSettings.js | 2 +- .../containers/Configure/StreamSettings.js | 2 +- .../src/containers/Configure/TechSettings.js | 2 +- .../src/containers/Configure/Wordlist.js | 2 +- .../containers/Dashboard/ActivityWidget.js | 2 +- .../src/containers/Dashboard/FlagWidget.js | 2 +- .../src/containers/Dashboard/LikeWidget.js | 2 +- .../Dashboard/MostLikedCommentsWidget.js | 2 +- .../components/Steps/AddOrganizationName.js | 2 +- .../components/Steps/CreateYourAccount.js | 2 +- .../Install/components/Steps/FinalStep.js | 2 +- .../Install/components/Steps/InitialStep.js | 2 +- .../components/Steps/PermittedDomainsStep.js | 2 +- .../ModerationQueue/ModerationQueue.js | 2 +- .../ModerationQueue/components/Comment.js | 2 +- .../ModerationQueue/components/FlagBox.js | 2 +- .../components/ModerationMenu.js | 2 +- .../src/containers/Stories/Stories.js | 2 +- .../src/containers/Streams/Stories.js | 2 +- .../components/CloseCommentsInfo.js | 2 +- client/coral-embed-stream/src/Embed.js | 2 +- .../src/IgnoredCommentTombstone.js | 2 +- client/coral-embed-stream/src/LoadMore.js | 2 +- client/coral-embed-stream/src/NewCount.js | 2 +- client/coral-framework/actions/asset.js | 2 +- client/coral-framework/actions/auth.js | 2 +- client/coral-framework/actions/user.js | 2 +- client/coral-framework/helpers/error.js | 2 +- client/coral-framework/index.js | 2 +- client/coral-i18n/modules/i18n/i18n.js | 129 +++++++++--------- .../PermalinkButton.js | 2 +- .../components/CreateUsernameDialog.js | 2 +- .../coral-sign-in/components/FakeComment.js | 2 +- .../coral-sign-in/components/ForgotContent.js | 2 +- .../coral-sign-in/components/SignInContent.js | 2 +- .../coral-sign-in/components/SignUpContent.js | 2 +- client/coral-sign-in/components/UserBox.js | 2 +- .../containers/ChangeUsernameContainer.js | 2 +- .../containers/SignInContainer.js | 2 +- 56 files changed, 121 insertions(+), 118 deletions(-) diff --git a/client/coral-admin/src/components/AdminLogin.js b/client/coral-admin/src/components/AdminLogin.js index e7e41eb48..4770a63fd 100644 --- a/client/coral-admin/src/components/AdminLogin.js +++ b/client/coral-admin/src/components/AdminLogin.js @@ -2,7 +2,7 @@ import React, {PropTypes} from 'react'; import Layout from 'coral-admin/src/components/ui/Layout'; import styles from './NotFound.css'; import {Button, TextField, Alert, Success} from 'coral-ui'; -import I18n from 'coral-framework/modules/i18n/i18n'; +import I18n from 'coral-i18n/modules/i18n/i18n'; import translations from '../translations'; import Recaptcha from 'react-recaptcha'; const lang = new I18n(translations); diff --git a/client/coral-admin/src/components/BanUserButton.js b/client/coral-admin/src/components/BanUserButton.js index a54cdd322..a31371a5c 100644 --- a/client/coral-admin/src/components/BanUserButton.js +++ b/client/coral-admin/src/components/BanUserButton.js @@ -2,7 +2,7 @@ import React, {PropTypes} from 'react'; import {Button, Icon} from 'coral-ui'; import styles from './BanUserButton.css'; -import I18n from 'coral-framework/modules/i18n/i18n'; +import I18n from 'coral-i18n/modules/i18n/i18n'; import translations from 'coral-admin/src/translations.json'; const lang = new I18n(translations); diff --git a/client/coral-admin/src/components/BanUserDialog.js b/client/coral-admin/src/components/BanUserDialog.js index ee5830249..1dfdc2793 100644 --- a/client/coral-admin/src/components/BanUserDialog.js +++ b/client/coral-admin/src/components/BanUserDialog.js @@ -4,7 +4,7 @@ import styles from './BanUserDialog.css'; import Button from 'coral-ui/components/Button'; -import I18n from 'coral-framework/modules/i18n/i18n'; +import I18n from 'coral-i18n/modules/i18n/i18n'; import translations from '../translations'; const lang = new I18n(translations); diff --git a/client/coral-admin/src/components/CountdownTimer.js b/client/coral-admin/src/components/CountdownTimer.js index aba4d0b5a..4630820f8 100644 --- a/client/coral-admin/src/components/CountdownTimer.js +++ b/client/coral-admin/src/components/CountdownTimer.js @@ -1,5 +1,5 @@ import React, {PropTypes} from 'react'; -import I18n from 'coral-framework/modules/i18n/i18n'; +import I18n from 'coral-i18n/modules/i18n/i18n'; import translations from 'coral-admin/src/translations'; import styles from 'coral-admin/src/containers/Dashboard/Dashboard.css'; import {Icon} from 'coral-ui'; diff --git a/client/coral-admin/src/components/ModerationKeysModal.js b/client/coral-admin/src/components/ModerationKeysModal.js index 5a951e588..e0ec9a77b 100644 --- a/client/coral-admin/src/components/ModerationKeysModal.js +++ b/client/coral-admin/src/components/ModerationKeysModal.js @@ -1,4 +1,4 @@ -import I18n from 'coral-framework/modules/i18n/i18n'; +import I18n from 'coral-i18n/modules/i18n/i18n'; import translations from '../translations.json'; import React from 'react'; import Modal from 'components/Modal'; diff --git a/client/coral-admin/src/components/ui/Drawer.js b/client/coral-admin/src/components/ui/Drawer.js index 5ac55045c..461c88df5 100644 --- a/client/coral-admin/src/components/ui/Drawer.js +++ b/client/coral-admin/src/components/ui/Drawer.js @@ -2,7 +2,7 @@ import React, {PropTypes} from 'react'; import {Navigation, Drawer} from 'react-mdl'; import {IndexLink, Link} from 'react-router'; import styles from './Drawer.css'; -import I18n from 'coral-framework/modules/i18n/i18n'; +import I18n from 'coral-i18n/modules/i18n/i18n'; import translations from '../../translations.json'; const CoralDrawer = ({handleLogout, restricted = false}) => ( diff --git a/client/coral-admin/src/components/ui/Header.js b/client/coral-admin/src/components/ui/Header.js index f09a9f9f7..7a7cbd3e2 100644 --- a/client/coral-admin/src/components/ui/Header.js +++ b/client/coral-admin/src/components/ui/Header.js @@ -2,7 +2,7 @@ import React, {PropTypes} from 'react'; import {Navigation, Header, IconButton, MenuItem, Menu} from 'react-mdl'; import {Link, IndexLink} from 'react-router'; import styles from './Header.css'; -import I18n from 'coral-framework/modules/i18n/i18n'; +import I18n from 'coral-i18n/modules/i18n/i18n'; import translations from '../../translations.json'; import {Logo} from './Logo'; diff --git a/client/coral-admin/src/containers/Community/FlaggedAccounts.js b/client/coral-admin/src/containers/Community/FlaggedAccounts.js index 692cef70d..a19965f6e 100644 --- a/client/coral-admin/src/containers/Community/FlaggedAccounts.js +++ b/client/coral-admin/src/containers/Community/FlaggedAccounts.js @@ -1,6 +1,6 @@ import React from 'react'; -import I18n from 'coral-framework/modules/i18n/i18n'; +import I18n from 'coral-i18n/modules/i18n/i18n'; import translations from 'coral-admin/src/translations.json'; const lang = new I18n(translations); diff --git a/client/coral-admin/src/containers/Community/People.js b/client/coral-admin/src/containers/Community/People.js index 0011cd704..d6a280a72 100644 --- a/client/coral-admin/src/containers/Community/People.js +++ b/client/coral-admin/src/containers/Community/People.js @@ -1,5 +1,5 @@ import React from 'react'; -import I18n from 'coral-framework/modules/i18n/i18n'; +import I18n from 'coral-i18n/modules/i18n/i18n'; import translations from 'coral-admin/src/translations.json'; import styles from './Community.css'; diff --git a/client/coral-admin/src/containers/Community/Table.js b/client/coral-admin/src/containers/Community/Table.js index aacc9c82f..96c7e3bc0 100644 --- a/client/coral-admin/src/containers/Community/Table.js +++ b/client/coral-admin/src/containers/Community/Table.js @@ -2,7 +2,7 @@ import React, {Component} from 'react'; import {connect} from 'react-redux'; import {SelectField, Option} from 'react-mdl-selectfield'; import styles from './Community.css'; -import I18n from 'coral-framework/modules/i18n/i18n'; +import I18n from 'coral-i18n/modules/i18n/i18n'; import translations from '../../translations'; import {setRole, setCommenterStatus} from '../../actions/community'; diff --git a/client/coral-admin/src/containers/Community/components/BanUserDialog.js b/client/coral-admin/src/containers/Community/components/BanUserDialog.js index affffcd54..d4f6c1ba4 100644 --- a/client/coral-admin/src/containers/Community/components/BanUserDialog.js +++ b/client/coral-admin/src/containers/Community/components/BanUserDialog.js @@ -4,7 +4,7 @@ import styles from './BanUserDialog.css'; import Button from 'coral-ui/components/Button'; -import I18n from 'coral-framework/modules/i18n/i18n'; +import I18n from 'coral-i18n/modules/i18n/i18n'; import translations from 'coral-admin/src/translations.json'; const lang = new I18n(translations); diff --git a/client/coral-admin/src/containers/Community/components/CommunityMenu.js b/client/coral-admin/src/containers/Community/components/CommunityMenu.js index 9a51798ec..ae76098b8 100644 --- a/client/coral-admin/src/containers/Community/components/CommunityMenu.js +++ b/client/coral-admin/src/containers/Community/components/CommunityMenu.js @@ -2,7 +2,7 @@ import React from 'react'; import styles from './styles.css'; -import I18n from 'coral-framework/modules/i18n/i18n'; +import I18n from 'coral-i18n/modules/i18n/i18n'; import translations from 'coral-admin/src/translations.json'; import {Link} from 'react-router'; diff --git a/client/coral-admin/src/containers/Community/components/SuspendUserDialog.js b/client/coral-admin/src/containers/Community/components/SuspendUserDialog.js index 20e221c48..a54b1e507 100644 --- a/client/coral-admin/src/containers/Community/components/SuspendUserDialog.js +++ b/client/coral-admin/src/containers/Community/components/SuspendUserDialog.js @@ -3,7 +3,7 @@ import React, {Component, PropTypes} from 'react'; import {Dialog, Button} from 'coral-ui'; import styles from './SuspendUserDialog.css'; -import I18n from 'coral-framework/modules/i18n/i18n'; +import I18n from 'coral-i18n/modules/i18n/i18n'; import translations from 'coral-admin/src/translations.json'; const lang = new I18n(translations); diff --git a/client/coral-admin/src/containers/Community/components/User.js b/client/coral-admin/src/containers/Community/components/User.js index 20b599a7a..a6b2f26dc 100644 --- a/client/coral-admin/src/containers/Community/components/User.js +++ b/client/coral-admin/src/containers/Community/components/User.js @@ -3,7 +3,7 @@ import styles from '../Community.css'; import ActionButton from './ActionButton'; -import I18n from 'coral-framework/modules/i18n/i18n'; +import I18n from 'coral-i18n/modules/i18n/i18n'; import translations from '../../../translations.json'; const lang = new I18n(translations); diff --git a/client/coral-admin/src/containers/Configure/Configure.js b/client/coral-admin/src/containers/Configure/Configure.js index b94394c61..5b8d8ca95 100644 --- a/client/coral-admin/src/containers/Configure/Configure.js +++ b/client/coral-admin/src/containers/Configure/Configure.js @@ -10,7 +10,7 @@ import { import {Button, List, Item, Card, Spinner} from 'coral-ui'; import styles from './Configure.css'; -import I18n from 'coral-framework/modules/i18n/i18n'; +import I18n from 'coral-i18n/modules/i18n/i18n'; import translations from 'coral-admin/src/translations.json'; import StreamSettings from './StreamSettings'; import ModerationSettings from './ModerationSettings'; diff --git a/client/coral-admin/src/containers/Configure/Domainlist.js b/client/coral-admin/src/containers/Configure/Domainlist.js index f1fc25dd0..53f5e4074 100644 --- a/client/coral-admin/src/containers/Configure/Domainlist.js +++ b/client/coral-admin/src/containers/Configure/Domainlist.js @@ -3,7 +3,7 @@ import {Card} from 'coral-ui'; import styles from './Configure.css'; import TagsInput from 'react-tagsinput'; -import I18n from 'coral-framework/modules/i18n/i18n'; +import I18n from 'coral-i18n/modules/i18n/i18n'; import translations from '../../translations.json'; const lang = new I18n(translations); diff --git a/client/coral-admin/src/containers/Configure/EmbedLink.js b/client/coral-admin/src/containers/Configure/EmbedLink.js index 86ab8b1f8..c4bc44cfc 100644 --- a/client/coral-admin/src/containers/Configure/EmbedLink.js +++ b/client/coral-admin/src/containers/Configure/EmbedLink.js @@ -1,5 +1,5 @@ import React, {Component} from 'react'; -import I18n from 'coral-framework/modules/i18n/i18n'; +import I18n from 'coral-i18n/modules/i18n/i18n'; import translations from '../../translations.json'; import styles from './Configure.css'; import {Button, Card} from 'coral-ui'; diff --git a/client/coral-admin/src/containers/Configure/ModerationSettings.js b/client/coral-admin/src/containers/Configure/ModerationSettings.js index 5b7286b98..eb91fad72 100644 --- a/client/coral-admin/src/containers/Configure/ModerationSettings.js +++ b/client/coral-admin/src/containers/Configure/ModerationSettings.js @@ -3,7 +3,7 @@ import styles from './Configure.css'; import {Card} from 'coral-ui'; import {Checkbox} from 'react-mdl'; import Wordlist from './Wordlist'; -import I18n from 'coral-framework/modules/i18n/i18n'; +import I18n from 'coral-i18n/modules/i18n/i18n'; import translations from '../../translations.json'; const lang = new I18n(translations); diff --git a/client/coral-admin/src/containers/Configure/StreamSettings.js b/client/coral-admin/src/containers/Configure/StreamSettings.js index 08ec062c8..26340cb8e 100644 --- a/client/coral-admin/src/containers/Configure/StreamSettings.js +++ b/client/coral-admin/src/containers/Configure/StreamSettings.js @@ -1,6 +1,6 @@ import React from 'react'; import {SelectField, Option} from 'react-mdl-selectfield'; -import I18n from 'coral-framework/modules/i18n/i18n'; +import I18n from 'coral-i18n/modules/i18n/i18n'; import translations from '../../translations.json'; import styles from './Configure.css'; import {Checkbox, Textfield} from 'react-mdl'; diff --git a/client/coral-admin/src/containers/Configure/TechSettings.js b/client/coral-admin/src/containers/Configure/TechSettings.js index 6fbc302a0..9ebee3ee7 100644 --- a/client/coral-admin/src/containers/Configure/TechSettings.js +++ b/client/coral-admin/src/containers/Configure/TechSettings.js @@ -3,7 +3,7 @@ import {Card} from 'coral-ui'; import Domainlist from './Domainlist'; import EmbedLink from './EmbedLink'; import styles from './Configure.css'; -import I18n from 'coral-framework/modules/i18n/i18n'; +import I18n from 'coral-i18n/modules/i18n/i18n'; import translations from '../../translations.json'; const lang = new I18n(translations); diff --git a/client/coral-admin/src/containers/Configure/Wordlist.js b/client/coral-admin/src/containers/Configure/Wordlist.js index 8eb010b79..4fbf43946 100644 --- a/client/coral-admin/src/containers/Configure/Wordlist.js +++ b/client/coral-admin/src/containers/Configure/Wordlist.js @@ -1,5 +1,5 @@ import React from 'react'; -import I18n from 'coral-framework/modules/i18n/i18n'; +import I18n from 'coral-i18n/modules/i18n/i18n'; import translations from '../../translations.json'; import TagsInput from 'react-tagsinput'; import styles from './Configure.css'; diff --git a/client/coral-admin/src/containers/Dashboard/ActivityWidget.js b/client/coral-admin/src/containers/Dashboard/ActivityWidget.js index a6e293b82..559479dd1 100644 --- a/client/coral-admin/src/containers/Dashboard/ActivityWidget.js +++ b/client/coral-admin/src/containers/Dashboard/ActivityWidget.js @@ -1,7 +1,7 @@ import React, {PropTypes} from 'react'; import {Link} from 'react-router'; import styles from './Widget.css'; -import I18n from 'coral-framework/modules/i18n/i18n'; +import I18n from 'coral-i18n/modules/i18n/i18n'; import translations from 'coral-admin/src/translations'; const lang = new I18n(translations); diff --git a/client/coral-admin/src/containers/Dashboard/FlagWidget.js b/client/coral-admin/src/containers/Dashboard/FlagWidget.js index 92de6c4d2..afd732cc7 100644 --- a/client/coral-admin/src/containers/Dashboard/FlagWidget.js +++ b/client/coral-admin/src/containers/Dashboard/FlagWidget.js @@ -1,7 +1,7 @@ import React, {PropTypes} from 'react'; import {Link} from 'react-router'; import styles from './Widget.css'; -import I18n from 'coral-framework/modules/i18n/i18n'; +import I18n from 'coral-i18n/modules/i18n/i18n'; import translations from 'coral-admin/src/translations'; const lang = new I18n(translations); diff --git a/client/coral-admin/src/containers/Dashboard/LikeWidget.js b/client/coral-admin/src/containers/Dashboard/LikeWidget.js index b878c281b..4a4fbd28a 100644 --- a/client/coral-admin/src/containers/Dashboard/LikeWidget.js +++ b/client/coral-admin/src/containers/Dashboard/LikeWidget.js @@ -1,7 +1,7 @@ import React, {PropTypes} from 'react'; import {Link} from 'react-router'; import styles from './Widget.css'; -import I18n from 'coral-framework/modules/i18n/i18n'; +import I18n from 'coral-i18n/modules/i18n/i18n'; import translations from 'coral-admin/src/translations'; const lang = new I18n(translations); diff --git a/client/coral-admin/src/containers/Dashboard/MostLikedCommentsWidget.js b/client/coral-admin/src/containers/Dashboard/MostLikedCommentsWidget.js index 0c41ac7c6..71f1da2a2 100644 --- a/client/coral-admin/src/containers/Dashboard/MostLikedCommentsWidget.js +++ b/client/coral-admin/src/containers/Dashboard/MostLikedCommentsWidget.js @@ -1,5 +1,5 @@ import React from 'react'; -import I18n from 'coral-framework/modules/i18n/i18n'; +import I18n from 'coral-i18n/modules/i18n/i18n'; import translations from 'coral-admin/src/translations'; import ModerationQueue from 'coral-admin/src/containers/ModerationQueue/ModerationQueue'; import styles from './Widget.css'; diff --git a/client/coral-admin/src/containers/Install/components/Steps/AddOrganizationName.js b/client/coral-admin/src/containers/Install/components/Steps/AddOrganizationName.js index bcac6ef29..910832cdf 100644 --- a/client/coral-admin/src/containers/Install/components/Steps/AddOrganizationName.js +++ b/client/coral-admin/src/containers/Install/components/Steps/AddOrganizationName.js @@ -4,7 +4,7 @@ import {TextField, Button} from 'coral-ui'; const lang = new I18n(translations); import translations from '../../translations.json'; -import I18n from 'coral-framework/modules/i18n/i18n'; +import I18n from 'coral-i18n/modules/i18n/i18n'; const AddOrganizationName = props => { const {handleSettingsChange, handleSettingsSubmit, install} = props; diff --git a/client/coral-admin/src/containers/Install/components/Steps/CreateYourAccount.js b/client/coral-admin/src/containers/Install/components/Steps/CreateYourAccount.js index 416fac195..9e871765f 100644 --- a/client/coral-admin/src/containers/Install/components/Steps/CreateYourAccount.js +++ b/client/coral-admin/src/containers/Install/components/Steps/CreateYourAccount.js @@ -4,7 +4,7 @@ import {TextField, Button, Spinner} from 'coral-ui'; const lang = new I18n(translations); import translations from '../../translations.json'; -import I18n from 'coral-framework/modules/i18n/i18n'; +import I18n from 'coral-i18n/modules/i18n/i18n'; const InitialStep = props => { const {handleUserChange, handleUserSubmit, install} = props; diff --git a/client/coral-admin/src/containers/Install/components/Steps/FinalStep.js b/client/coral-admin/src/containers/Install/components/Steps/FinalStep.js index 0ad918487..fd2b81fee 100644 --- a/client/coral-admin/src/containers/Install/components/Steps/FinalStep.js +++ b/client/coral-admin/src/containers/Install/components/Steps/FinalStep.js @@ -5,7 +5,7 @@ import {Link} from 'react-router'; const lang = new I18n(translations); import translations from '../../translations.json'; -import I18n from 'coral-framework/modules/i18n/i18n'; +import I18n from 'coral-i18n/modules/i18n/i18n'; const InitialStep = () => { return ( diff --git a/client/coral-admin/src/containers/Install/components/Steps/InitialStep.js b/client/coral-admin/src/containers/Install/components/Steps/InitialStep.js index 1838e3178..8995756ea 100644 --- a/client/coral-admin/src/containers/Install/components/Steps/InitialStep.js +++ b/client/coral-admin/src/containers/Install/components/Steps/InitialStep.js @@ -4,7 +4,7 @@ import {Button} from 'coral-ui'; const lang = new I18n(translations); import translations from '../../translations.json'; -import I18n from 'coral-framework/modules/i18n/i18n'; +import I18n from 'coral-i18n/modules/i18n/i18n'; const InitialStep = props => { const {nextStep} = props; diff --git a/client/coral-admin/src/containers/Install/components/Steps/PermittedDomainsStep.js b/client/coral-admin/src/containers/Install/components/Steps/PermittedDomainsStep.js index f2c1546f6..03dc06640 100644 --- a/client/coral-admin/src/containers/Install/components/Steps/PermittedDomainsStep.js +++ b/client/coral-admin/src/containers/Install/components/Steps/PermittedDomainsStep.js @@ -5,7 +5,7 @@ import TagsInput from 'react-tagsinput'; const lang = new I18n(translations); import translations from '../../translations.json'; -import I18n from 'coral-framework/modules/i18n/i18n'; +import I18n from 'coral-i18n/modules/i18n/i18n'; const PermittedDomainsStep = props => { const {finishInstall, install, handleDomainsChange} = props; diff --git a/client/coral-admin/src/containers/ModerationQueue/ModerationQueue.js b/client/coral-admin/src/containers/ModerationQueue/ModerationQueue.js index 79b4ce7e4..f33baacfa 100644 --- a/client/coral-admin/src/containers/ModerationQueue/ModerationQueue.js +++ b/client/coral-admin/src/containers/ModerationQueue/ModerationQueue.js @@ -4,7 +4,7 @@ import Comment from './components/Comment'; import styles from './components/styles.css'; import EmptyCard from '../../components/EmptyCard'; import {actionsMap} from './helpers/moderationQueueActionsMap'; -import I18n from 'coral-framework/modules/i18n/i18n'; +import I18n from 'coral-i18n/modules/i18n/i18n'; import translations from 'coral-admin/src/translations'; import LoadMore from './components/LoadMore'; diff --git a/client/coral-admin/src/containers/ModerationQueue/components/Comment.js b/client/coral-admin/src/containers/ModerationQueue/components/Comment.js index b18f239e4..447de0099 100644 --- a/client/coral-admin/src/containers/ModerationQueue/components/Comment.js +++ b/client/coral-admin/src/containers/ModerationQueue/components/Comment.js @@ -14,7 +14,7 @@ import {getActionSummary} from 'coral-framework/utils'; const linkify = new Linkify(); -import I18n from 'coral-framework/modules/i18n/i18n'; +import I18n from 'coral-i18n/modules/i18n/i18n'; import translations from 'coral-admin/src/translations.json'; const lang = new I18n(translations); diff --git a/client/coral-admin/src/containers/ModerationQueue/components/FlagBox.js b/client/coral-admin/src/containers/ModerationQueue/components/FlagBox.js index 62b4e554d..16340963c 100644 --- a/client/coral-admin/src/containers/ModerationQueue/components/FlagBox.js +++ b/client/coral-admin/src/containers/ModerationQueue/components/FlagBox.js @@ -1,7 +1,7 @@ import React, {Component, PropTypes} from 'react'; import {Icon} from 'coral-ui'; import styles from './FlagBox.css'; -import I18n from 'coral-framework/modules/i18n/i18n'; +import I18n from 'coral-i18n/modules/i18n/i18n'; import translations from 'coral-admin/src/translations.json'; const lang = new I18n(translations); diff --git a/client/coral-admin/src/containers/ModerationQueue/components/ModerationMenu.js b/client/coral-admin/src/containers/ModerationQueue/components/ModerationMenu.js index 0606fdb81..085d96333 100644 --- a/client/coral-admin/src/containers/ModerationQueue/components/ModerationMenu.js +++ b/client/coral-admin/src/containers/ModerationQueue/components/ModerationMenu.js @@ -2,7 +2,7 @@ import React, {PropTypes} from 'react'; import CommentCount from './CommentCount'; import styles from './styles.css'; import {SelectField, Option} from 'react-mdl-selectfield'; -import I18n from 'coral-framework/modules/i18n/i18n'; +import I18n from 'coral-i18n/modules/i18n/i18n'; import translations from 'coral-admin/src/translations.json'; import {Link} from 'react-router'; diff --git a/client/coral-admin/src/containers/Stories/Stories.js b/client/coral-admin/src/containers/Stories/Stories.js index 1264663f0..3ba9b1359 100644 --- a/client/coral-admin/src/containers/Stories/Stories.js +++ b/client/coral-admin/src/containers/Stories/Stories.js @@ -1,7 +1,7 @@ import React, {Component} from 'react'; import styles from './Stories.css'; import {connect} from 'react-redux'; -import I18n from 'coral-framework/modules/i18n/i18n'; +import I18n from 'coral-i18n/modules/i18n/i18n'; import {fetchAssets, updateAssetState} from 'coral-admin/src/actions/assets'; import translations from 'coral-admin/src/translations.json'; import {Link} from 'react-router'; diff --git a/client/coral-admin/src/containers/Streams/Stories.js b/client/coral-admin/src/containers/Streams/Stories.js index 4d2ad086a..7a11c014f 100644 --- a/client/coral-admin/src/containers/Streams/Stories.js +++ b/client/coral-admin/src/containers/Streams/Stories.js @@ -1,7 +1,7 @@ import React, {Component} from 'react'; import styles from './Stories.css'; import {connect} from 'react-redux'; -import I18n from 'coral-framework/modules/i18n/i18n'; +import I18n from 'coral-i18n/modules/i18n/i18n'; import {fetchAssets, updateAssetState} from '../../actions/assets'; import translations from '../../translations.json'; import {Link} from 'react-router'; diff --git a/client/coral-configure/components/CloseCommentsInfo.js b/client/coral-configure/components/CloseCommentsInfo.js index fae7bc5e5..6d12c8bd0 100644 --- a/client/coral-configure/components/CloseCommentsInfo.js +++ b/client/coral-configure/components/CloseCommentsInfo.js @@ -1,7 +1,7 @@ import React from 'react'; import {Button} from 'coral-ui'; -import I18n from 'coral-framework/modules/i18n/i18n'; +import I18n from 'coral-i18n/modules/i18n/i18n'; import translations from 'coral-admin/src/translations'; const lang = new I18n(translations); diff --git a/client/coral-embed-stream/src/Embed.js b/client/coral-embed-stream/src/Embed.js index 2f33228fa..f4cde5d05 100644 --- a/client/coral-embed-stream/src/Embed.js +++ b/client/coral-embed-stream/src/Embed.js @@ -2,7 +2,7 @@ import React from 'react'; import {compose} from 'react-apollo'; import {connect} from 'react-redux'; import isEqual from 'lodash/isEqual'; -import I18n from 'coral-framework/modules/i18n/i18n'; +import I18n from 'coral-i18n/modules/i18n/i18n'; import translations from 'coral-framework/translations'; const lang = new I18n(translations); diff --git a/client/coral-embed-stream/src/IgnoredCommentTombstone.js b/client/coral-embed-stream/src/IgnoredCommentTombstone.js index 0ed746976..3f4dc949e 100644 --- a/client/coral-embed-stream/src/IgnoredCommentTombstone.js +++ b/client/coral-embed-stream/src/IgnoredCommentTombstone.js @@ -1,6 +1,6 @@ import React from 'react'; -import I18n from 'coral-framework/modules/i18n/i18n'; +import I18n from 'coral-i18n/modules/i18n/i18n'; import translations from 'coral-framework/translations'; const lang = new I18n(translations); diff --git a/client/coral-embed-stream/src/LoadMore.js b/client/coral-embed-stream/src/LoadMore.js index 1a58c8d19..3d858270b 100644 --- a/client/coral-embed-stream/src/LoadMore.js +++ b/client/coral-embed-stream/src/LoadMore.js @@ -1,5 +1,5 @@ import React, {PropTypes} from 'react'; -import I18n from 'coral-framework/modules/i18n/i18n'; +import I18n from 'coral-i18n/modules/i18n/i18n'; import translations from 'coral-framework/translations.json'; import {ADDTL_COMMENTS_ON_LOAD_MORE} from 'coral-framework/constants/comments'; import {Button} from 'coral-ui'; diff --git a/client/coral-embed-stream/src/NewCount.js b/client/coral-embed-stream/src/NewCount.js index 8d7333aab..facc0d381 100644 --- a/client/coral-embed-stream/src/NewCount.js +++ b/client/coral-embed-stream/src/NewCount.js @@ -1,5 +1,5 @@ import React, {PropTypes} from 'react'; -import I18n from 'coral-framework/modules/i18n/i18n'; +import I18n from 'coral-i18n/modules/i18n/i18n'; import translations from 'coral-framework/translations.json'; const lang = new I18n(translations); diff --git a/client/coral-framework/actions/asset.js b/client/coral-framework/actions/asset.js index 50efa3dcb..27dd97b01 100644 --- a/client/coral-framework/actions/asset.js +++ b/client/coral-framework/actions/asset.js @@ -3,7 +3,7 @@ import coralApi from '../helpers/response'; import {addNotification} from '../actions/notification'; import {pym} from 'coral-framework'; -import I18n from 'coral-framework/modules/i18n/i18n'; +import I18n from 'coral-i18n/modules/i18n/i18n'; import translations from './../translations'; const lang = new I18n(translations); diff --git a/client/coral-framework/actions/auth.js b/client/coral-framework/actions/auth.js index e112b2b6c..f277e01a7 100644 --- a/client/coral-framework/actions/auth.js +++ b/client/coral-framework/actions/auth.js @@ -1,6 +1,6 @@ import {gql} from 'react-apollo'; import client from 'coral-framework/services/client'; -import I18n from '../../coral-framework/modules/i18n/i18n'; +import I18n from '../../coral-i18n/modules/i18n/i18n'; import translations from './../translations'; const lang = new I18n(translations); import * as actions from '../constants/auth'; diff --git a/client/coral-framework/actions/user.js b/client/coral-framework/actions/user.js index 3e80b718c..202139c12 100644 --- a/client/coral-framework/actions/user.js +++ b/client/coral-framework/actions/user.js @@ -2,7 +2,7 @@ import {addNotification} from '../actions/notification'; import coralApi from '../helpers/response'; import * as actions from '../constants/auth'; -import I18n from 'coral-framework/modules/i18n/i18n'; +import I18n from 'coral-i18n/modules/i18n/i18n'; import translations from './../translations'; const lang = new I18n(translations); diff --git a/client/coral-framework/helpers/error.js b/client/coral-framework/helpers/error.js index 89f20c928..5943f6a86 100644 --- a/client/coral-framework/helpers/error.js +++ b/client/coral-framework/helpers/error.js @@ -1,4 +1,4 @@ -import I18n from 'coral-framework/modules/i18n/i18n'; +import I18n from 'coral-i18n/modules/i18n/i18n'; import translations from './../translations'; const lang = new I18n(translations); diff --git a/client/coral-framework/index.js b/client/coral-framework/index.js index b85b69bcd..e1e1c55e7 100644 --- a/client/coral-framework/index.js +++ b/client/coral-framework/index.js @@ -1,5 +1,5 @@ import pym from './services/PymConnection'; -import I18n from './modules/i18n/i18n'; +import I18n from '../coral-i18n/modules/i18n/i18n'; import actions from './actions'; // TODO (bc): Deprecate old actions. Spreading actions is now needed. diff --git a/client/coral-i18n/modules/i18n/i18n.js b/client/coral-i18n/modules/i18n/i18n.js index 3d750111f..749e06a5e 100644 --- a/client/coral-i18n/modules/i18n/i18n.js +++ b/client/coral-i18n/modules/i18n/i18n.js @@ -3,89 +3,92 @@ import esTA from '../../../../node_modules/timeago.js/locales/es'; import has from 'lodash/has'; import get from 'lodash/get'; -// To Do -// check on how to load the translations from YML file - -// Look at other i18n work in express/node +const yaml = require('node-yaml'); /** * Default locales, this should be overriden by config file */ class i18n { - constructor (translations) { + constructor(translations) { /** * Register locales */ - - this.locales = {'en': 'locales/en.yml', 'es': 'locales/es.yml'}; - timeago.register('es_ES', esTA); this.timeagoInstance = new timeago(); - /** - * Load translations - */ - // To Do : get all the yml from locales - let trans = translations || {en: {}}; - try { - const locale = localStorage.getItem('locale') || navigator.language; - localStorage.setItem('locale', locale); + const locale = this.getLocale(); + this.setLocale(locale); - const lang = this.locales[locale.split('-')[0]] || 'en'; - this.translations = trans[lang]; + this.language = this.locales[locale.split('-')[0]] || 'en'; + + this.loadTranslations(translations); } catch (err) { - - // To Do: get configuration for default translation - this.translations = trans['en']; + console.error(err); } - - this.setLocale = (locale) => { - try { - localStorage.setItem('locale', locale); - } catch (err) { - console.error(err); - } - }; - - this.getLocale = () => ( - localStorage.getItem('locale') || navigator.locale || 'en-US' - ); - - /** - * Expose the translation function - * - * it takes a string with the translation key and returns - * the translation value or the key itself if not found - * it works with nested translations (my.page.title) - * - * any extra parameters are optional and replace a variable marked by {0}, {1}, etc in the translation. - */ - - this.t = (key, ...replacements) => { - if (has(this.translations, key)) { - let translation = get(this.translations, key); - - // replace any {n} with the arguments passed to this method - replacements.forEach((str, i) => { - translation = translation.replace(new RegExp(`\\{${i}\\}`, 'g'), str); - }); - return translation; - } else { - console.warn(`${key} language key not set`); - return key; - } - }; - - this.timeago = (time) => { - return this.timeagoInstance.format(new Date(time)); - }; - } + loadTranslations = (translations) => { + const localesFiles = {'en': 'locales/en.yml', 'es': 'locales/es.yml'}; + + yaml.readPromise(localesFiles[this.language]) + .then((data) => { + + // Translations need to be loaded from translations or localesFiles. + this.translations = translations[this.language] || data; + + }) + .catch(() => { + + // To Do: get configuration for default translation + this.translations = translations['en']; + }); + } + + setLocale = (locale) => { + try { + localStorage.setItem('locale', locale); + } catch (err) { + console.error(err); + } + }; + + getLocale = () => ( + localStorage.getItem('locale') || navigator.language || 'en-US' + ); + + /** + * Expose the translation function + * + * it takes a string with the translation key and returns + * the translation value or the key itself if not found + * it works with nested translations (my.page.title) + * + * any extra parameters are optional and replace a variable marked by {0}, {1}, etc in the translation. + */ + + t = (key, ...replacements) => { + if (has(this.translations, key)) { + let translation = get(this.translations, key); + + // replace any {n} with the arguments passed to this method + replacements.forEach((str, i) => { + translation = translation.replace(new RegExp(`\\{${i}\\}`, 'g'), str); + }); + return translation; + } else { + console.warn(`${key} language key not set`); + return key; + } + }; + + timeago = (time) => { + return this.timeagoInstance.format(new Date(time)); + }; + } export default i18n; diff --git a/client/coral-plugin-permalinks/PermalinkButton.js b/client/coral-plugin-permalinks/PermalinkButton.js index 464155b2e..9474d1b32 100644 --- a/client/coral-plugin-permalinks/PermalinkButton.js +++ b/client/coral-plugin-permalinks/PermalinkButton.js @@ -1,5 +1,5 @@ import React, {PropTypes} from 'react'; -import I18n from 'coral-framework/modules/i18n/i18n'; +import I18n from 'coral-i18n/modules/i18n/i18n'; import translations from './translations'; import onClickOutside from 'react-onclickoutside'; const name = 'coral-plugin-permalinks'; diff --git a/client/coral-sign-in/components/CreateUsernameDialog.js b/client/coral-sign-in/components/CreateUsernameDialog.js index b94b47c42..045462413 100644 --- a/client/coral-sign-in/components/CreateUsernameDialog.js +++ b/client/coral-sign-in/components/CreateUsernameDialog.js @@ -6,7 +6,7 @@ import FakeComment from './FakeComment'; import styles from './styles.css'; -import I18n from 'coral-framework/modules/i18n/i18n'; +import I18n from 'coral-i18n/modules/i18n/i18n'; import translations from '../translations'; const lang = new I18n(translations); diff --git a/client/coral-sign-in/components/FakeComment.js b/client/coral-sign-in/components/FakeComment.js index f5926852c..5e715f7ac 100644 --- a/client/coral-sign-in/components/FakeComment.js +++ b/client/coral-sign-in/components/FakeComment.js @@ -6,7 +6,7 @@ import Content from 'coral-plugin-commentcontent/CommentContent'; import PubDate from 'coral-plugin-pubdate/PubDate'; import {ReplyButton} from 'coral-plugin-replies'; -import I18n from 'coral-framework/modules/i18n/i18n'; +import I18n from 'coral-i18n/modules/i18n/i18n'; import translations from '../translations'; const lang = new I18n(translations); diff --git a/client/coral-sign-in/components/ForgotContent.js b/client/coral-sign-in/components/ForgotContent.js index 307a32b6e..e2eb29d51 100644 --- a/client/coral-sign-in/components/ForgotContent.js +++ b/client/coral-sign-in/components/ForgotContent.js @@ -1,7 +1,7 @@ import React from 'react'; import styles from './styles.css'; import Button from 'coral-ui/components/Button'; -import I18n from 'coral-framework/modules/i18n/i18n'; +import I18n from 'coral-i18n/modules/i18n/i18n'; import translations from '../translations'; const lang = new I18n(translations); diff --git a/client/coral-sign-in/components/SignInContent.js b/client/coral-sign-in/components/SignInContent.js index 7460efb97..2f4ed6c7e 100644 --- a/client/coral-sign-in/components/SignInContent.js +++ b/client/coral-sign-in/components/SignInContent.js @@ -1,7 +1,7 @@ import React, {PropTypes} from 'react'; import {Button, TextField, Spinner, Success, Alert} from 'coral-ui'; import styles from './styles.css'; -import I18n from 'coral-framework/modules/i18n/i18n'; +import I18n from 'coral-i18n/modules/i18n/i18n'; import translations from '../translations'; const lang = new I18n(translations); diff --git a/client/coral-sign-in/components/SignUpContent.js b/client/coral-sign-in/components/SignUpContent.js index 921f045be..aac8d4937 100644 --- a/client/coral-sign-in/components/SignUpContent.js +++ b/client/coral-sign-in/components/SignUpContent.js @@ -1,7 +1,7 @@ import React, {PropTypes} from 'react'; import {Button, TextField, Spinner, Success, Alert} from 'coral-ui'; import styles from './styles.css'; -import I18n from 'coral-framework/modules/i18n/i18n'; +import I18n from 'coral-i18n/modules/i18n/i18n'; import translations from '../translations'; const lang = new I18n(translations); diff --git a/client/coral-sign-in/components/UserBox.js b/client/coral-sign-in/components/UserBox.js index 8e718614b..15432258a 100644 --- a/client/coral-sign-in/components/UserBox.js +++ b/client/coral-sign-in/components/UserBox.js @@ -1,6 +1,6 @@ import React from 'react'; import styles from './styles.css'; -import I18n from 'coral-framework/modules/i18n/i18n'; +import I18n from 'coral-i18n/modules/i18n/i18n'; import translations from '../translations'; const lang = new I18n(translations); diff --git a/client/coral-sign-in/containers/ChangeUsernameContainer.js b/client/coral-sign-in/containers/ChangeUsernameContainer.js index a3b4b969d..e94c956b8 100644 --- a/client/coral-sign-in/containers/ChangeUsernameContainer.js +++ b/client/coral-sign-in/containers/ChangeUsernameContainer.js @@ -6,7 +6,7 @@ import errorMsj from 'coral-framework/helpers/error'; import CreateUsernameDialog from '../components/CreateUsernameDialog'; -import I18n from 'coral-framework/modules/i18n/i18n'; +import I18n from 'coral-i18n/modules/i18n/i18n'; import translations from '../translations'; const lang = new I18n(translations); diff --git a/client/coral-sign-in/containers/SignInContainer.js b/client/coral-sign-in/containers/SignInContainer.js index 868ef8456..e027acb31 100644 --- a/client/coral-sign-in/containers/SignInContainer.js +++ b/client/coral-sign-in/containers/SignInContainer.js @@ -3,7 +3,7 @@ import {connect} from 'react-redux'; import SignDialog from '../components/SignDialog'; import validate from 'coral-framework/helpers/validate'; import errorMsj from 'coral-framework/helpers/error'; -import I18n from 'coral-framework/modules/i18n/i18n'; +import I18n from 'coral-i18n/modules/i18n/i18n'; import translations from '../translations'; import {pym} from 'coral-framework'; const lang = new I18n(translations); From 0f7b4ddaf620e4885761cb43da62e71e49ca8e70 Mon Sep 17 00:00:00 2001 From: gaba Date: Tue, 25 Apr 2017 11:43:04 -0500 Subject: [PATCH 03/47] Removes timeago from i18n module. --- .../containers/ConfigureStreamContainer.js | 4 ++- client/coral-i18n/modules/i18n/i18n.js | 29 ++++++------------- client/coral-plugin-pubdate/PubDate.js | 5 +++- package.json | 3 +- yarn.lock | 7 +++++ 5 files changed, 25 insertions(+), 23 deletions(-) diff --git a/client/coral-configure/containers/ConfigureStreamContainer.js b/client/coral-configure/containers/ConfigureStreamContainer.js index aef7093f2..9c53fdf28 100644 --- a/client/coral-configure/containers/ConfigureStreamContainer.js +++ b/client/coral-configure/containers/ConfigureStreamContainer.js @@ -5,6 +5,8 @@ import {compose} from 'react-apollo'; import {I18n} from 'coral-framework'; import {updateOpenStatus, updateConfiguration} from 'coral-framework/actions/asset'; +import timeago from 'timeago.js'; + import CloseCommentsInfo from '../components/CloseCommentsInfo'; import ConfigureCommentStream from '../components/ConfigureCommentStream'; @@ -87,7 +89,7 @@ class ConfigureStreamContainer extends Component { const {closedTimeout} = this.props.asset.settings; const {created_at} = this.props.asset; - return lang.timeago(new Date(created_at).getTime() + (1000 * closedTimeout)); + return timeago().format(new Date(created_at).getTime() + (1000 * closedTimeout), lang.getLocale().replace('-', '_')); } render () { diff --git a/client/coral-i18n/modules/i18n/i18n.js b/client/coral-i18n/modules/i18n/i18n.js index 749e06a5e..ac447c313 100644 --- a/client/coral-i18n/modules/i18n/i18n.js +++ b/client/coral-i18n/modules/i18n/i18n.js @@ -1,9 +1,7 @@ -import timeago from 'timeago.js'; -import esTA from '../../../../node_modules/timeago.js/locales/es'; import has from 'lodash/has'; import get from 'lodash/get'; -const yaml = require('node-yaml'); +import YAML from 'yamljs'; /** * Default locales, this should be overriden by config file @@ -15,8 +13,6 @@ class i18n { /** * Register locales */ - timeago.register('es_ES', esTA); - this.timeagoInstance = new timeago(); try { const locale = this.getLocale(); @@ -34,18 +30,16 @@ class i18n { loadTranslations = (translations) => { const localesFiles = {'en': 'locales/en.yml', 'es': 'locales/es.yml'}; - yaml.readPromise(localesFiles[this.language]) - .then((data) => { + try { - // Translations need to be loaded from translations or localesFiles. - this.translations = translations[this.language] || data; + // Translations need to be loaded from translations or localesFiles. + this.translations = translations[this.language] || YAML.load(localesFiles[this.language]); + } + catch(err) { - }) - .catch(() => { - - // To Do: get configuration for default translation - this.translations = translations['en']; - }); + // To Do: get configuration for default translation + this.translations = translations['en']; + } } setLocale = (locale) => { @@ -84,11 +78,6 @@ class i18n { return key; } }; - - timeago = (time) => { - return this.timeagoInstance.format(new Date(time)); - }; - } export default i18n; diff --git a/client/coral-plugin-pubdate/PubDate.js b/client/coral-plugin-pubdate/PubDate.js index 81c8495a4..202d2131c 100644 --- a/client/coral-plugin-pubdate/PubDate.js +++ b/client/coral-plugin-pubdate/PubDate.js @@ -1,11 +1,14 @@ import React from 'react'; import {I18n} from '../coral-framework'; +import timeago from 'timeago.js'; + const lang = new I18n(); const name = 'coral-plugin-pubdate'; const PubDate = ({created_at}) =>
    - {lang.timeago(created_at)} + {timeago().format(created_at, lang.getLocale().replace('-', '_'))} +
    ; export default PubDate; diff --git a/package.json b/package.json index 6c725a852..25bbec92b 100644 --- a/package.json +++ b/package.json @@ -97,7 +97,8 @@ "resolve": "^1.3.2", "semver": "^5.3.0", "simplemde": "^1.11.2", - "uuid": "^2.0.3" + "uuid": "^2.0.3", + "yamljs": "^0.2.10" }, "devDependencies": { "apollo-client": "^1.0.0", diff --git a/yarn.lock b/yarn.lock index 378e5a6c0..29058ed72 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8236,6 +8236,13 @@ yallist@^2.0.0: version "2.1.2" resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" +yamljs@^0.2.10: + version "0.2.10" + resolved "https://registry.yarnpkg.com/yamljs/-/yamljs-0.2.10.tgz#481cc7c25ca73af59f591f0c96e3ce56c757a40f" + dependencies: + argparse "^1.0.7" + glob "^7.0.5" + yargs-parser@^2.4.1: version "2.4.1" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-2.4.1.tgz#85568de3cf150ff49fa51825f03a8c880ddcc5c4" From 527cbc7d6357de19cddb0ab2b117f6f4028421e0 Mon Sep 17 00:00:00 2001 From: gaba Date: Tue, 25 Apr 2017 15:52:52 -0500 Subject: [PATCH 04/47] Recover the scroll. --- .../src/containers/ModerationQueue/components/Comment.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/coral-admin/src/containers/ModerationQueue/components/Comment.js b/client/coral-admin/src/containers/ModerationQueue/components/Comment.js index b18f239e4..203f2fbe6 100644 --- a/client/coral-admin/src/containers/ModerationQueue/components/Comment.js +++ b/client/coral-admin/src/containers/ModerationQueue/components/Comment.js @@ -25,7 +25,7 @@ const Comment = ({actions = [], comment, ...props}) => { const flagActions = comment.actions && comment.actions.filter(a => a.__typename === 'FlagAction'); return ( -
  • +
  • From 3b80ee8b130bb2c1db8af35128434e6233cdc60b Mon Sep 17 00:00:00 2001 From: gaba Date: Thu, 11 May 2017 15:05:09 -0700 Subject: [PATCH 05/47] Add YAML loader. Fix i18n module to get YAML files. --- .../coral-admin/src/components/AdminLogin.js | 3 +- .../src/components/BanUserButton.js | 3 +- .../src/components/BanUserDialog.js | 3 +- .../src/components/CountdownTimer.js | 3 +- .../src/components/ModerationKeysModal.js | 3 +- .../coral-admin/src/components/ui/Drawer.js | 3 +- .../coral-admin/src/components/ui/Header.js | 3 +- .../containers/Community/FlaggedAccounts.js | 3 +- .../src/containers/Community/People.js | 3 +- .../src/containers/Community/Table.js | 3 +- .../Community/components/BanUserDialog.js | 3 +- .../Community/components/CommunityMenu.js | 3 +- .../Community/components/SuspendUserDialog.js | 4 +- .../containers/Community/components/User.js | 4 +- .../src/containers/Configure/Configure.js | 3 +- .../src/containers/Configure/Domainlist.js | 3 +- .../src/containers/Configure/EmbedLink.js | 4 +- .../Configure/ModerationSettings.js | 4 +- .../containers/Configure/StreamSettings.js | 4 +- .../src/containers/Configure/TechSettings.js | 4 +- .../src/containers/Configure/Wordlist.js | 4 +- .../containers/Dashboard/ActivityWidget.js | 3 +- .../src/containers/Dashboard/FlagWidget.js | 5 +- .../src/containers/Dashboard/LikeWidget.js | 3 +- .../Dashboard/MostLikedCommentsWidget.js | 4 +- .../components/Steps/AddOrganizationName.js | 4 +- .../components/Steps/CreateYourAccount.js | 4 +- .../Install/components/Steps/FinalStep.js | 4 +- .../Install/components/Steps/InitialStep.js | 4 +- .../components/Steps/PermittedDomainsStep.js | 4 +- .../ModerationQueue/ModerationQueue.js | 4 +- .../ModerationQueue/components/Comment.js | 3 +- .../components/CommentCount.js | 6 +- .../ModerationQueue/components/FlagBox.js | 3 +- .../components/ModerationMenu.js | 3 +- .../src/containers/Stories/Stories.js | 3 +- .../src/containers/Streams/Stories.js | 4 +- .../components/CloseCommentsInfo.js | 4 +- client/coral-configure/translations.json | 30 ----- .../src/components/Embed.js | 6 +- .../src/components/IgnoredCommentTombstone.js | 3 +- .../src/components/LoadMore.js | 4 +- .../src/components/NewCount.js | 4 +- client/coral-framework/actions/asset.js | 4 +- client/coral-framework/actions/auth.js | 3 +- client/coral-framework/actions/user.js | 3 +- client/coral-framework/helpers/error.js | 3 +- client/coral-framework/translations.json | 85 ------------ client/coral-i18n/locales/en.yml | 88 ++++++------- client/coral-i18n/locales/es.yml | 123 +++++++++--------- client/coral-i18n/modules/i18n/i18n.js | 17 ++- client/coral-plugin-best/BestButton.js | 4 +- .../CommentCount.js | 4 +- client/coral-plugin-commentbox/CommentBox.js | 4 +- client/coral-plugin-flags/FlagButton.js | 4 +- client/coral-plugin-flags/FlagComment.js | 7 +- .../coral-plugin-moderation/ModerationLink.js | 7 +- .../PermalinkButton.js | 3 +- client/coral-plugin-replies/ReplyButton.js | 4 +- .../components/CreateUsernameDialog.js | 4 +- .../coral-sign-in/components/FakeComment.js | 3 +- .../coral-sign-in/components/ForgotContent.js | 4 +- .../coral-sign-in/components/SignInContent.js | 4 +- .../coral-sign-in/components/SignUpContent.js | 4 +- client/coral-sign-in/components/UserBox.js | 4 +- .../containers/ChangeUsernameContainer.js | 4 +- .../containers/SignInContainer.js | 4 +- package.json | 5 +- .../client/components/RespectButton.js | 3 +- webpack.config.js | 5 + yarn.lock | 8 +- 71 files changed, 230 insertions(+), 367 deletions(-) delete mode 100644 client/coral-configure/translations.json delete mode 100644 client/coral-framework/translations.json diff --git a/client/coral-admin/src/components/AdminLogin.js b/client/coral-admin/src/components/AdminLogin.js index 4770a63fd..a36e0fe0d 100644 --- a/client/coral-admin/src/components/AdminLogin.js +++ b/client/coral-admin/src/components/AdminLogin.js @@ -3,9 +3,8 @@ import Layout from 'coral-admin/src/components/ui/Layout'; import styles from './NotFound.css'; import {Button, TextField, Alert, Success} from 'coral-ui'; import I18n from 'coral-i18n/modules/i18n/i18n'; -import translations from '../translations'; import Recaptcha from 'react-recaptcha'; -const lang = new I18n(translations); +const lang = new I18n(); class AdminLogin extends React.Component { diff --git a/client/coral-admin/src/components/BanUserButton.js b/client/coral-admin/src/components/BanUserButton.js index a31371a5c..ddd10f3d2 100644 --- a/client/coral-admin/src/components/BanUserButton.js +++ b/client/coral-admin/src/components/BanUserButton.js @@ -3,8 +3,7 @@ import {Button, Icon} from 'coral-ui'; import styles from './BanUserButton.css'; import I18n from 'coral-i18n/modules/i18n/i18n'; -import translations from 'coral-admin/src/translations.json'; -const lang = new I18n(translations); +const lang = new I18n(); const BanUserButton = ({user, ...props}) => (
    diff --git a/client/coral-admin/src/components/BanUserDialog.js b/client/coral-admin/src/components/BanUserDialog.js index 1dfdc2793..d28216632 100644 --- a/client/coral-admin/src/components/BanUserDialog.js +++ b/client/coral-admin/src/components/BanUserDialog.js @@ -5,8 +5,7 @@ import styles from './BanUserDialog.css'; import Button from 'coral-ui/components/Button'; import I18n from 'coral-i18n/modules/i18n/i18n'; -import translations from '../translations'; -const lang = new I18n(translations); +const lang = new I18n(); const onBanClick = (userId, commentId, handleBanUser, rejectComment, handleClose) => (e) => { e.preventDefault(); diff --git a/client/coral-admin/src/components/CountdownTimer.js b/client/coral-admin/src/components/CountdownTimer.js index 4630820f8..5e15bb03e 100644 --- a/client/coral-admin/src/components/CountdownTimer.js +++ b/client/coral-admin/src/components/CountdownTimer.js @@ -1,10 +1,9 @@ import React, {PropTypes} from 'react'; import I18n from 'coral-i18n/modules/i18n/i18n'; -import translations from 'coral-admin/src/translations'; import styles from 'coral-admin/src/containers/Dashboard/Dashboard.css'; import {Icon} from 'coral-ui'; -const lang = new I18n(translations); +const lang = new I18n(); const refreshIntervalSeconds = 60 * 5; class CountdownTimer extends React.Component { diff --git a/client/coral-admin/src/components/ModerationKeysModal.js b/client/coral-admin/src/components/ModerationKeysModal.js index 07385c2c0..5efe19a18 100644 --- a/client/coral-admin/src/components/ModerationKeysModal.js +++ b/client/coral-admin/src/components/ModerationKeysModal.js @@ -1,10 +1,9 @@ import I18n from 'coral-i18n/modules/i18n/i18n'; -import translations from '../translations.json'; import React, {PropTypes} from 'react'; import Modal from 'components/Modal'; import styles from './ModerationKeysModal.css'; -const lang = new I18n(translations); +const lang = new I18n(); const shortcuts = [ { diff --git a/client/coral-admin/src/components/ui/Drawer.js b/client/coral-admin/src/components/ui/Drawer.js index 461c88df5..a5889dfb3 100644 --- a/client/coral-admin/src/components/ui/Drawer.js +++ b/client/coral-admin/src/components/ui/Drawer.js @@ -3,7 +3,6 @@ import {Navigation, Drawer} from 'react-mdl'; import {IndexLink, Link} from 'react-router'; import styles from './Drawer.css'; import I18n from 'coral-i18n/modules/i18n/i18n'; -import translations from '../../translations.json'; const CoralDrawer = ({handleLogout, restricted = false}) => ( @@ -50,6 +49,6 @@ CoralDrawer.propTypes = { restricted: PropTypes.bool // hide app elements from a logged out user }; -const lang = new I18n(translations); +const lang = new I18n(); export default CoralDrawer; diff --git a/client/coral-admin/src/components/ui/Header.js b/client/coral-admin/src/components/ui/Header.js index 88c7aed3c..d57b9cbb3 100644 --- a/client/coral-admin/src/components/ui/Header.js +++ b/client/coral-admin/src/components/ui/Header.js @@ -3,7 +3,6 @@ import {Navigation, Header, IconButton, MenuItem, Menu} from 'react-mdl'; import {Link, IndexLink} from 'react-router'; import styles from './Header.css'; import I18n from 'coral-i18n/modules/i18n/i18n'; -import translations from '../../translations.json'; import {Logo} from './Logo'; const CoralHeader = ({handleLogout, showShortcuts = () => {}, restricted = false}) => ( @@ -78,6 +77,6 @@ CoralHeader.propTypes = { restricted: PropTypes.bool // hide elemnts from a user that's logged out }; -const lang = new I18n(translations); +const lang = new I18n(); export default CoralHeader; diff --git a/client/coral-admin/src/containers/Community/FlaggedAccounts.js b/client/coral-admin/src/containers/Community/FlaggedAccounts.js index a19965f6e..799cd5480 100644 --- a/client/coral-admin/src/containers/Community/FlaggedAccounts.js +++ b/client/coral-admin/src/containers/Community/FlaggedAccounts.js @@ -1,8 +1,7 @@ import React from 'react'; import I18n from 'coral-i18n/modules/i18n/i18n'; -import translations from 'coral-admin/src/translations.json'; -const lang = new I18n(translations); +const lang = new I18n(); import styles from './Community.css'; diff --git a/client/coral-admin/src/containers/Community/People.js b/client/coral-admin/src/containers/Community/People.js index 4f948d52e..6b959b01c 100644 --- a/client/coral-admin/src/containers/Community/People.js +++ b/client/coral-admin/src/containers/Community/People.js @@ -1,13 +1,12 @@ import React from 'react'; import I18n from 'coral-i18n/modules/i18n/i18n'; -import translations from 'coral-admin/src/translations.json'; import styles from './Community.css'; import Table from './Table'; import {Pager, Icon} from 'coral-ui'; import EmptyCard from '../../components/EmptyCard'; -const lang = new I18n(translations); +const lang = new I18n(); const tableHeaders = [ { diff --git a/client/coral-admin/src/containers/Community/Table.js b/client/coral-admin/src/containers/Community/Table.js index 96c7e3bc0..49a2a2520 100644 --- a/client/coral-admin/src/containers/Community/Table.js +++ b/client/coral-admin/src/containers/Community/Table.js @@ -3,10 +3,9 @@ import {connect} from 'react-redux'; import {SelectField, Option} from 'react-mdl-selectfield'; import styles from './Community.css'; import I18n from 'coral-i18n/modules/i18n/i18n'; -import translations from '../../translations'; import {setRole, setCommenterStatus} from '../../actions/community'; -const lang = new I18n(translations); +const lang = new I18n(); class Table extends Component { diff --git a/client/coral-admin/src/containers/Community/components/BanUserDialog.js b/client/coral-admin/src/containers/Community/components/BanUserDialog.js index d4f6c1ba4..d4a4945ba 100644 --- a/client/coral-admin/src/containers/Community/components/BanUserDialog.js +++ b/client/coral-admin/src/containers/Community/components/BanUserDialog.js @@ -5,9 +5,8 @@ import styles from './BanUserDialog.css'; import Button from 'coral-ui/components/Button'; import I18n from 'coral-i18n/modules/i18n/i18n'; -import translations from 'coral-admin/src/translations.json'; -const lang = new I18n(translations); +const lang = new I18n(); const BanUserDialog = ({open, handleClose, handleBanUser, user}) => ( { const flaggedPath = '/admin/community/flagged'; diff --git a/client/coral-admin/src/containers/Community/components/SuspendUserDialog.js b/client/coral-admin/src/containers/Community/components/SuspendUserDialog.js index a54b1e507..af610c2e2 100644 --- a/client/coral-admin/src/containers/Community/components/SuspendUserDialog.js +++ b/client/coral-admin/src/containers/Community/components/SuspendUserDialog.js @@ -4,9 +4,7 @@ import {Dialog, Button} from 'coral-ui'; import styles from './SuspendUserDialog.css'; import I18n from 'coral-i18n/modules/i18n/i18n'; -import translations from 'coral-admin/src/translations.json'; - -const lang = new I18n(translations); +const lang = new I18n(); const stages = [ { diff --git a/client/coral-admin/src/containers/Community/components/User.js b/client/coral-admin/src/containers/Community/components/User.js index a6b2f26dc..8e620b6a2 100644 --- a/client/coral-admin/src/containers/Community/components/User.js +++ b/client/coral-admin/src/containers/Community/components/User.js @@ -4,9 +4,7 @@ import styles from '../Community.css'; import ActionButton from './ActionButton'; import I18n from 'coral-i18n/modules/i18n/i18n'; -import translations from '../../../translations.json'; - -const lang = new I18n(translations); +const lang = new I18n(); // Render a single user for the list const User = props => { diff --git a/client/coral-admin/src/containers/Configure/Configure.js b/client/coral-admin/src/containers/Configure/Configure.js index 5b8d8ca95..4a2509e57 100644 --- a/client/coral-admin/src/containers/Configure/Configure.js +++ b/client/coral-admin/src/containers/Configure/Configure.js @@ -11,7 +11,6 @@ import { import {Button, List, Item, Card, Spinner} from 'coral-ui'; import styles from './Configure.css'; import I18n from 'coral-i18n/modules/i18n/i18n'; -import translations from 'coral-admin/src/translations.json'; import StreamSettings from './StreamSettings'; import ModerationSettings from './ModerationSettings'; import TechSettings from './TechSettings'; @@ -176,4 +175,4 @@ const mapStateToProps = state => ({ }); export default connect(mapStateToProps)(Configure); -const lang = new I18n(translations); +const lang = new I18n(); diff --git a/client/coral-admin/src/containers/Configure/Domainlist.js b/client/coral-admin/src/containers/Configure/Domainlist.js index 53f5e4074..1723bf66c 100644 --- a/client/coral-admin/src/containers/Configure/Domainlist.js +++ b/client/coral-admin/src/containers/Configure/Domainlist.js @@ -4,8 +4,7 @@ import styles from './Configure.css'; import TagsInput from 'react-tagsinput'; import I18n from 'coral-i18n/modules/i18n/i18n'; -import translations from '../../translations.json'; -const lang = new I18n(translations); +const lang = new I18n(); const Domainlist = ({domains, onChangeDomainlist}) => { return ( diff --git a/client/coral-admin/src/containers/Configure/EmbedLink.js b/client/coral-admin/src/containers/Configure/EmbedLink.js index c4bc44cfc..a1ec6fb48 100644 --- a/client/coral-admin/src/containers/Configure/EmbedLink.js +++ b/client/coral-admin/src/containers/Configure/EmbedLink.js @@ -1,6 +1,6 @@ import React, {Component} from 'react'; + import I18n from 'coral-i18n/modules/i18n/i18n'; -import translations from '../../translations.json'; import styles from './Configure.css'; import {Button, Card} from 'coral-ui'; @@ -65,4 +65,4 @@ class EmbedLink extends Component { export default EmbedLink; -const lang = new I18n(translations); +const lang = new I18n(); diff --git a/client/coral-admin/src/containers/Configure/ModerationSettings.js b/client/coral-admin/src/containers/Configure/ModerationSettings.js index eb91fad72..7b8cc1b7a 100644 --- a/client/coral-admin/src/containers/Configure/ModerationSettings.js +++ b/client/coral-admin/src/containers/Configure/ModerationSettings.js @@ -4,8 +4,8 @@ import {Card} from 'coral-ui'; import {Checkbox} from 'react-mdl'; import Wordlist from './Wordlist'; import I18n from 'coral-i18n/modules/i18n/i18n'; -import translations from '../../translations.json'; -const lang = new I18n(translations); + +const lang = new I18n(); const updateModeration = (updateSettings, mod) => () => { const moderation = mod === 'PRE' ? 'POST' : 'PRE'; diff --git a/client/coral-admin/src/containers/Configure/StreamSettings.js b/client/coral-admin/src/containers/Configure/StreamSettings.js index 26340cb8e..be66b59ec 100644 --- a/client/coral-admin/src/containers/Configure/StreamSettings.js +++ b/client/coral-admin/src/containers/Configure/StreamSettings.js @@ -1,7 +1,7 @@ import React from 'react'; import {SelectField, Option} from 'react-mdl-selectfield'; import I18n from 'coral-i18n/modules/i18n/i18n'; -import translations from '../../translations.json'; + import styles from './Configure.css'; import {Checkbox, Textfield} from 'react-mdl'; import {Card, Icon, TextArea} from 'coral-ui'; @@ -184,4 +184,4 @@ const getTimeoutMeasure = ts => { // obtain the amount of time const getTimeoutAmount = ts => ts / TIMESTAMPS[getTimeoutMeasure(ts)]; -const lang = new I18n(translations); +const lang = new I18n(); diff --git a/client/coral-admin/src/containers/Configure/TechSettings.js b/client/coral-admin/src/containers/Configure/TechSettings.js index 9ebee3ee7..caacd9cf9 100644 --- a/client/coral-admin/src/containers/Configure/TechSettings.js +++ b/client/coral-admin/src/containers/Configure/TechSettings.js @@ -4,8 +4,8 @@ import Domainlist from './Domainlist'; import EmbedLink from './EmbedLink'; import styles from './Configure.css'; import I18n from 'coral-i18n/modules/i18n/i18n'; -import translations from '../../translations.json'; -const lang = new I18n(translations); + +const lang = new I18n(); const updateCustomCssUrl = (updateSettings) => (event) => { const customCssUrl = event.target.value; diff --git a/client/coral-admin/src/containers/Configure/Wordlist.js b/client/coral-admin/src/containers/Configure/Wordlist.js index 4fbf43946..7ae28bdd5 100644 --- a/client/coral-admin/src/containers/Configure/Wordlist.js +++ b/client/coral-admin/src/containers/Configure/Wordlist.js @@ -1,6 +1,6 @@ import React from 'react'; import I18n from 'coral-i18n/modules/i18n/i18n'; -import translations from '../../translations.json'; + import TagsInput from 'react-tagsinput'; import styles from './Configure.css'; import {Card} from 'coral-ui'; @@ -37,4 +37,4 @@ const Wordlist = ({suspectWords, bannedWords, onChangeWordlist}) => ( export default Wordlist; -const lang = new I18n(translations); +const lang = new I18n(); diff --git a/client/coral-admin/src/containers/Dashboard/ActivityWidget.js b/client/coral-admin/src/containers/Dashboard/ActivityWidget.js index 559479dd1..e1a48d8e4 100644 --- a/client/coral-admin/src/containers/Dashboard/ActivityWidget.js +++ b/client/coral-admin/src/containers/Dashboard/ActivityWidget.js @@ -2,9 +2,8 @@ import React, {PropTypes} from 'react'; import {Link} from 'react-router'; import styles from './Widget.css'; import I18n from 'coral-i18n/modules/i18n/i18n'; -import translations from 'coral-admin/src/translations'; -const lang = new I18n(translations); +const lang = new I18n(); const ActivityWidget = ({assets}) => { return ( diff --git a/client/coral-admin/src/containers/Dashboard/FlagWidget.js b/client/coral-admin/src/containers/Dashboard/FlagWidget.js index abf348897..ae7fdc13d 100644 --- a/client/coral-admin/src/containers/Dashboard/FlagWidget.js +++ b/client/coral-admin/src/containers/Dashboard/FlagWidget.js @@ -1,10 +1,9 @@ import React, {PropTypes} from 'react'; import {Link} from 'react-router'; import styles from './Widget.css'; -import I18n from 'coral-i18n/modules/i18n/i18n'; -import translations from 'coral-admin/src/translations'; -const lang = new I18n(translations); +import I18n from 'coral-i18n/modules/i18n/i18n'; +const lang = new I18n(); const FlagWidget = ({assets}) => { diff --git a/client/coral-admin/src/containers/Dashboard/LikeWidget.js b/client/coral-admin/src/containers/Dashboard/LikeWidget.js index 4a4fbd28a..2581008c1 100644 --- a/client/coral-admin/src/containers/Dashboard/LikeWidget.js +++ b/client/coral-admin/src/containers/Dashboard/LikeWidget.js @@ -2,9 +2,8 @@ import React, {PropTypes} from 'react'; import {Link} from 'react-router'; import styles from './Widget.css'; import I18n from 'coral-i18n/modules/i18n/i18n'; -import translations from 'coral-admin/src/translations'; -const lang = new I18n(translations); +const lang = new I18n(); const LikeWidget = ({assets}) => { diff --git a/client/coral-admin/src/containers/Dashboard/MostLikedCommentsWidget.js b/client/coral-admin/src/containers/Dashboard/MostLikedCommentsWidget.js index 71f1da2a2..7d125f999 100644 --- a/client/coral-admin/src/containers/Dashboard/MostLikedCommentsWidget.js +++ b/client/coral-admin/src/containers/Dashboard/MostLikedCommentsWidget.js @@ -1,11 +1,11 @@ import React from 'react'; import I18n from 'coral-i18n/modules/i18n/i18n'; -import translations from 'coral-admin/src/translations'; + import ModerationQueue from 'coral-admin/src/containers/ModerationQueue/ModerationQueue'; import styles from './Widget.css'; import BanUserDialog from 'coral-admin/src/components/BanUserDialog'; -const lang = new I18n(translations); +const lang = new I18n(); const MostLikedCommentsWidget = props => { const { diff --git a/client/coral-admin/src/containers/Install/components/Steps/AddOrganizationName.js b/client/coral-admin/src/containers/Install/components/Steps/AddOrganizationName.js index 910832cdf..020b51423 100644 --- a/client/coral-admin/src/containers/Install/components/Steps/AddOrganizationName.js +++ b/client/coral-admin/src/containers/Install/components/Steps/AddOrganizationName.js @@ -2,8 +2,8 @@ import React from 'react'; import styles from './style.css'; import {TextField, Button} from 'coral-ui'; -const lang = new I18n(translations); -import translations from '../../translations.json'; +const lang = new I18n(); + import I18n from 'coral-i18n/modules/i18n/i18n'; const AddOrganizationName = props => { diff --git a/client/coral-admin/src/containers/Install/components/Steps/CreateYourAccount.js b/client/coral-admin/src/containers/Install/components/Steps/CreateYourAccount.js index 9e871765f..a45adb194 100644 --- a/client/coral-admin/src/containers/Install/components/Steps/CreateYourAccount.js +++ b/client/coral-admin/src/containers/Install/components/Steps/CreateYourAccount.js @@ -2,8 +2,8 @@ import React from 'react'; import styles from './style.css'; import {TextField, Button, Spinner} from 'coral-ui'; -const lang = new I18n(translations); -import translations from '../../translations.json'; +const lang = new I18n(); + import I18n from 'coral-i18n/modules/i18n/i18n'; const InitialStep = props => { diff --git a/client/coral-admin/src/containers/Install/components/Steps/FinalStep.js b/client/coral-admin/src/containers/Install/components/Steps/FinalStep.js index fd2b81fee..875687f8d 100644 --- a/client/coral-admin/src/containers/Install/components/Steps/FinalStep.js +++ b/client/coral-admin/src/containers/Install/components/Steps/FinalStep.js @@ -3,8 +3,8 @@ import styles from './style.css'; import {Button} from 'coral-ui'; import {Link} from 'react-router'; -const lang = new I18n(translations); -import translations from '../../translations.json'; +const lang = new I18n(); + import I18n from 'coral-i18n/modules/i18n/i18n'; const InitialStep = () => { diff --git a/client/coral-admin/src/containers/Install/components/Steps/InitialStep.js b/client/coral-admin/src/containers/Install/components/Steps/InitialStep.js index 8995756ea..6e3d66f84 100644 --- a/client/coral-admin/src/containers/Install/components/Steps/InitialStep.js +++ b/client/coral-admin/src/containers/Install/components/Steps/InitialStep.js @@ -2,8 +2,8 @@ import React from 'react'; import styles from './style.css'; import {Button} from 'coral-ui'; -const lang = new I18n(translations); -import translations from '../../translations.json'; +const lang = new I18n(); + import I18n from 'coral-i18n/modules/i18n/i18n'; const InitialStep = props => { diff --git a/client/coral-admin/src/containers/Install/components/Steps/PermittedDomainsStep.js b/client/coral-admin/src/containers/Install/components/Steps/PermittedDomainsStep.js index 03dc06640..da720799d 100644 --- a/client/coral-admin/src/containers/Install/components/Steps/PermittedDomainsStep.js +++ b/client/coral-admin/src/containers/Install/components/Steps/PermittedDomainsStep.js @@ -3,8 +3,8 @@ import styles from './style.css'; import {Button, Card} from 'coral-ui'; import TagsInput from 'react-tagsinput'; -const lang = new I18n(translations); -import translations from '../../translations.json'; +const lang = new I18n(); + import I18n from 'coral-i18n/modules/i18n/i18n'; const PermittedDomainsStep = props => { diff --git a/client/coral-admin/src/containers/ModerationQueue/ModerationQueue.js b/client/coral-admin/src/containers/ModerationQueue/ModerationQueue.js index a25e7b5e3..3618f2d81 100644 --- a/client/coral-admin/src/containers/ModerationQueue/ModerationQueue.js +++ b/client/coral-admin/src/containers/ModerationQueue/ModerationQueue.js @@ -5,10 +5,10 @@ import styles from './components/styles.css'; import EmptyCard from '../../components/EmptyCard'; import {actionsMap} from './helpers/moderationQueueActionsMap'; import I18n from 'coral-i18n/modules/i18n/i18n'; -import translations from 'coral-admin/src/translations'; + import LoadMore from './components/LoadMore'; -const lang = new I18n(translations); +const lang = new I18n(); class ModerationQueue extends React.Component { static propTypes = { diff --git a/client/coral-admin/src/containers/ModerationQueue/components/Comment.js b/client/coral-admin/src/containers/ModerationQueue/components/Comment.js index 619a3cd7a..09e145f14 100644 --- a/client/coral-admin/src/containers/ModerationQueue/components/Comment.js +++ b/client/coral-admin/src/containers/ModerationQueue/components/Comment.js @@ -15,8 +15,7 @@ import {getActionSummary} from 'coral-framework/utils'; const linkify = new Linkify(); import I18n from 'coral-i18n/modules/i18n/i18n'; -import translations from 'coral-admin/src/translations.json'; -const lang = new I18n(translations); +const lang = new I18n(); const Comment = ({actions = [], comment, ...props}) => { const links = linkify.getMatches(comment.body); diff --git a/client/coral-admin/src/containers/ModerationQueue/components/CommentCount.js b/client/coral-admin/src/containers/ModerationQueue/components/CommentCount.js index 0517caf0f..7d2fb89ac 100644 --- a/client/coral-admin/src/containers/ModerationQueue/components/CommentCount.js +++ b/client/coral-admin/src/containers/ModerationQueue/components/CommentCount.js @@ -1,8 +1,8 @@ import React, {PropTypes} from 'react'; import styles from './CommentCount.css'; -import I18n from 'coral-framework/modules/i18n/i18n'; -import translations from 'coral-admin/src/translations.json'; -const lang = new I18n(translations); + +import I18n from 'coral-i18n/modules/i18n/i18n'; +const lang = new I18n(); const CommentCount = ({count}) => { let number = count; diff --git a/client/coral-admin/src/containers/ModerationQueue/components/FlagBox.js b/client/coral-admin/src/containers/ModerationQueue/components/FlagBox.js index 16340963c..b06733d0f 100644 --- a/client/coral-admin/src/containers/ModerationQueue/components/FlagBox.js +++ b/client/coral-admin/src/containers/ModerationQueue/components/FlagBox.js @@ -2,8 +2,7 @@ import React, {Component, PropTypes} from 'react'; import {Icon} from 'coral-ui'; import styles from './FlagBox.css'; import I18n from 'coral-i18n/modules/i18n/i18n'; -import translations from 'coral-admin/src/translations.json'; -const lang = new I18n(translations); +const lang = new I18n(); const shortReasons = { 'This comment is offensive': lang.t('modqueue.offensive'), diff --git a/client/coral-admin/src/containers/ModerationQueue/components/ModerationMenu.js b/client/coral-admin/src/containers/ModerationQueue/components/ModerationMenu.js index b843688a2..8c70ab75f 100644 --- a/client/coral-admin/src/containers/ModerationQueue/components/ModerationMenu.js +++ b/client/coral-admin/src/containers/ModerationQueue/components/ModerationMenu.js @@ -3,11 +3,10 @@ import CommentCount from './CommentCount'; import styles from './styles.css'; import {SelectField, Option} from 'react-mdl-selectfield'; import I18n from 'coral-i18n/modules/i18n/i18n'; -import translations from 'coral-admin/src/translations.json'; import {Icon} from 'coral-ui'; import {Link} from 'react-router'; -const lang = new I18n(translations); +const lang = new I18n(); const ModerationMenu = ( {asset, allCount, acceptedCount, premodCount, rejectedCount, flaggedCount, selectSort, sort} diff --git a/client/coral-admin/src/containers/Stories/Stories.js b/client/coral-admin/src/containers/Stories/Stories.js index 3ba9b1359..5bfbed9d4 100644 --- a/client/coral-admin/src/containers/Stories/Stories.js +++ b/client/coral-admin/src/containers/Stories/Stories.js @@ -3,7 +3,6 @@ import styles from './Stories.css'; import {connect} from 'react-redux'; import I18n from 'coral-i18n/modules/i18n/i18n'; import {fetchAssets, updateAssetState} from 'coral-admin/src/actions/assets'; -import translations from 'coral-admin/src/translations.json'; import {Link} from 'react-router'; import {Pager, Icon} from 'coral-ui'; @@ -189,4 +188,4 @@ const mapDispatchToProps = (dispatch) => { export default connect(mapStateToProps, mapDispatchToProps)(Stories); -const lang = new I18n(translations); +const lang = new I18n(); diff --git a/client/coral-admin/src/containers/Streams/Stories.js b/client/coral-admin/src/containers/Streams/Stories.js index 7a11c014f..17199536d 100644 --- a/client/coral-admin/src/containers/Streams/Stories.js +++ b/client/coral-admin/src/containers/Streams/Stories.js @@ -3,7 +3,7 @@ import styles from './Stories.css'; import {connect} from 'react-redux'; import I18n from 'coral-i18n/modules/i18n/i18n'; import {fetchAssets, updateAssetState} from '../../actions/assets'; -import translations from '../../translations.json'; + import {Link} from 'react-router'; import {Pager, Icon} from 'coral-ui'; @@ -184,4 +184,4 @@ const mapDispatchToProps = (dispatch) => { export default connect(mapStateToProps, mapDispatchToProps)(Stories); -const lang = new I18n(translations); +const lang = new I18n(); diff --git a/client/coral-configure/components/CloseCommentsInfo.js b/client/coral-configure/components/CloseCommentsInfo.js index 6d12c8bd0..71f85828d 100644 --- a/client/coral-configure/components/CloseCommentsInfo.js +++ b/client/coral-configure/components/CloseCommentsInfo.js @@ -2,9 +2,7 @@ import React from 'react'; import {Button} from 'coral-ui'; import I18n from 'coral-i18n/modules/i18n/i18n'; -import translations from 'coral-admin/src/translations'; - -const lang = new I18n(translations); +const lang = new I18n(); export default ({status, onClick}) => ( status === 'open' ? ( diff --git a/client/coral-configure/translations.json b/client/coral-configure/translations.json deleted file mode 100644 index 341fe58e7..000000000 --- a/client/coral-configure/translations.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "en": { - "configureCommentStream": { - "apply": "Apply", - "title": "Configure Comment Stream", - "description": "As an admin you may customize the settings for the comment stream for this asset", - "enablePremod": "Enable Premoderation", - "enablePremodDescription": "Moderators must approve any comment before its published.", - "enablePremodLinks": "Pre-Moderate Comments Containing Links", - "enablePremodLinksDescription": "Moderators must approve any comment containing a link before its published.", - "enableQuestionBox": "Ask readers a question", - "enableQuestionBoxDescription": "This question will appear at the top of this comment stream. Ask readers about a certain issue in the article or pose discussion questions, etc.", - "includeQuestionHere": "Write your question here." - } - }, - "es": { - "configureCommentStream": { - "apply": "Aplicar", - "title": "Configurar los comentarios", - "description": "Como Administrador/a puedes modificar las opciones de los comentarios en este artículo", - "enablePremod": "Activar Pre Moderación", - "enablePremodDescription": "Los y las Moderadoras deben aprobar cualquier comentario antes de su publicación", - "enablePremodLinks": "Pre-Moderar Comentarios que contienen Enlaces", - "enablePremodLinksDescription": "Los y las moderadoras deben aprobar cualquier comentario que contengan enlaces antes de su publicación.", - "enableQuestionBox": "Hacer una pregunta a los y las lectoras.", - "enableQuestionBoxDescription": "Esta pregunta aparecera en la parte de arriba del hilo de comentarios.", - "includeQuestionHere": "Escribir la pregunta aquí." - } - } -} diff --git a/client/coral-embed-stream/src/components/Embed.js b/client/coral-embed-stream/src/components/Embed.js index 0d26cf740..6ce61bd7d 100644 --- a/client/coral-embed-stream/src/components/Embed.js +++ b/client/coral-embed-stream/src/components/Embed.js @@ -1,7 +1,7 @@ import React from 'react'; -import I18n from 'coral-framework/modules/i18n/i18n'; -import translations from 'coral-framework/translations'; -const lang = new I18n(translations); + +import I18n from 'coral-i18n/modules/i18n/i18n'; +const lang = new I18n(); import {TabBar, Tab, TabContent, Button} from 'coral-ui'; diff --git a/client/coral-embed-stream/src/components/IgnoredCommentTombstone.js b/client/coral-embed-stream/src/components/IgnoredCommentTombstone.js index 3f4dc949e..1bcba012f 100644 --- a/client/coral-embed-stream/src/components/IgnoredCommentTombstone.js +++ b/client/coral-embed-stream/src/components/IgnoredCommentTombstone.js @@ -1,8 +1,7 @@ import React from 'react'; import I18n from 'coral-i18n/modules/i18n/i18n'; -import translations from 'coral-framework/translations'; -const lang = new I18n(translations); +const lang = new I18n(); // Render in place of a Comment when the author of the comment is ignored const IgnoredCommentTombstone = () => ( diff --git a/client/coral-embed-stream/src/components/LoadMore.js b/client/coral-embed-stream/src/components/LoadMore.js index ff989f0f2..f21ebc9b9 100644 --- a/client/coral-embed-stream/src/components/LoadMore.js +++ b/client/coral-embed-stream/src/components/LoadMore.js @@ -1,9 +1,9 @@ import React, {PropTypes} from 'react'; import I18n from 'coral-i18n/modules/i18n/i18n'; -import translations from 'coral-framework/translations.json'; import {ADDTL_COMMENTS_ON_LOAD_MORE} from '../constants/stream'; import {Button} from 'coral-ui'; -const lang = new I18n(translations); + +const lang = new I18n(); const loadMoreComments = (assetId, comments, loadMore, parentId, replyCount) => { diff --git a/client/coral-embed-stream/src/components/NewCount.js b/client/coral-embed-stream/src/components/NewCount.js index 3f2b902dd..368f83ae4 100644 --- a/client/coral-embed-stream/src/components/NewCount.js +++ b/client/coral-embed-stream/src/components/NewCount.js @@ -1,7 +1,7 @@ import React, {PropTypes} from 'react'; + import I18n from 'coral-i18n/modules/i18n/i18n'; -import translations from 'coral-framework/translations.json'; -const lang = new I18n(translations); +const lang = new I18n(); const onLoadMoreClick = ({loadMore, commentCount, firstCommentDate, assetId, setCommentCountCache}) => (e) => { e.preventDefault(); diff --git a/client/coral-framework/actions/asset.js b/client/coral-framework/actions/asset.js index f9bf3d908..e7a2fd949 100644 --- a/client/coral-framework/actions/asset.js +++ b/client/coral-framework/actions/asset.js @@ -3,8 +3,7 @@ import coralApi from '../helpers/response'; import {addNotification} from '../actions/notification'; import I18n from 'coral-i18n/modules/i18n/i18n'; -import translations from './../translations'; -const lang = new I18n(translations); +const lang = new I18n(); export const fetchAssetRequest = () => ({type: actions.FETCH_ASSET_REQUEST}); export const fetchAssetSuccess = asset => ({type: actions.FETCH_ASSET_SUCCESS, asset}); @@ -48,4 +47,3 @@ export const updateOpenStatus = status => dispatch => { dispatch(updateOpenStream({closedAt: new Date().getTime()})); } }; - diff --git a/client/coral-framework/actions/auth.js b/client/coral-framework/actions/auth.js index 154d8d8eb..3d64007a5 100644 --- a/client/coral-framework/actions/auth.js +++ b/client/coral-framework/actions/auth.js @@ -1,8 +1,7 @@ import {gql} from 'react-apollo'; import client from 'coral-framework/services/client'; import I18n from '../../coral-i18n/modules/i18n/i18n'; -import translations from './../translations'; -const lang = new I18n(translations); +const lang = new I18n(); import * as actions from '../constants/auth'; import coralApi, {base} from '../helpers/response'; import {pym} from 'coral-framework'; diff --git a/client/coral-framework/actions/user.js b/client/coral-framework/actions/user.js index 202139c12..4177f4e20 100644 --- a/client/coral-framework/actions/user.js +++ b/client/coral-framework/actions/user.js @@ -3,8 +3,7 @@ import coralApi from '../helpers/response'; import * as actions from '../constants/auth'; import I18n from 'coral-i18n/modules/i18n/i18n'; -import translations from './../translations'; -const lang = new I18n(translations); +const lang = new I18n(); const editUsernameFailure = error => ({type: actions.EDIT_USERNAME_FAILURE, error}); const editUsernameSuccess = () => ({type: actions.EDIT_USERNAME_SUCCESS}); diff --git a/client/coral-framework/helpers/error.js b/client/coral-framework/helpers/error.js index 5943f6a86..58175caf0 100644 --- a/client/coral-framework/helpers/error.js +++ b/client/coral-framework/helpers/error.js @@ -1,6 +1,5 @@ import I18n from 'coral-i18n/modules/i18n/i18n'; -import translations from './../translations'; -const lang = new I18n(translations); +const lang = new I18n(); export default { email: lang.t('error.email'), diff --git a/client/coral-framework/translations.json b/client/coral-framework/translations.json deleted file mode 100644 index 88ead57af..000000000 --- a/client/coral-framework/translations.json +++ /dev/null @@ -1,85 +0,0 @@ -{ - "en": { - "MY_COMMENTS": "My Comments", - "profile": "Profile", - "myProfile": "My profile", - "successUpdateSettings": "The changes you have made have been applied to the comment stream on this article", - "successNameUpdate": "Your username has been updated", - "contentNotAvailable": "This content is not available", - "bannedAccountMsg": "Your account is currently suspended. This means that you cannot Like, Report, or write comments. Please contact us if you have any questions.", - "editName": { - "msg": "Your account is currently suspended because your username has been deemed inappropriate. To restore your account, please enter a new username. Please contact us if you have any questions.", - "label": "New Username", - "button": "Submit", - "error": "Usernames can contain letters, numbers and _ only" - }, - "viewMoreComments": "view more comments", - "showAllComments": "Show all comments", - "viewReply": "view reply", - "viewAllRepliesInitial": "view all {0} replies", - "viewAllReplies": "view {0} replies", - "newCount": "View {0} new {1}", - "comment": "comment", - "comments": "comments", - "commentIsIgnored": "This comment is hidden because you ignored this user.", - "error": { - "emailNotVerified": "Email address {0} not verified.", - "email": "Not a valid E-Mail", - "password": "Password must be at least 8 characters", - "username": "Usernames can contain letters, numbers and _ only", - "confirmPassword": "Passwords don't match. Please, check again", - "organizationName": "Organization name must only contain letters or numbers.", - "emailPasswordError": "Email and/or password combination incorrect.", - "EMAIL_REQUIRED": "An email address is required", - "PASSWORD_REQUIRED": "Must input a password", - "PASSWORD_LENGTH": "Password is too short", - "EMAIL_IN_USE": "Email address already in use", - "EMAIL_USERNAME_IN_USE": "Email address or username already in use", - "USERNAME_IN_USE": "Username already in use", - "USERNAME_REQUIRED": "Must input a username", - "NO_SPECIAL_CHARACTERS": "Usernames can contain letters, numbers and _ only", - "PROFANITY_ERROR": "Usernames must not contain profanity. Please contact the administrator if you believe this to be in error.", - "NOT_AUTHORIZED": "Not authorized.", - "EDIT_USERNAME_NOT_AUTHORIZED": "You do not have permission to update your username." - } - }, - "es": { - "profile": "Pérfil", - "MY_COMMENTS": "Mis Comentarios", - "myProfile": "Mi pérfil", - "successUpdateSettings": "La configuración de este articulo fue actualizada", - "successBioUpdate": "Tu biografia fue actualizada", - "contentNotAvailable": "El contenido no se encuentra disponible", - "bannedAccountMsg": "Tu cuenta se encuentra suspendida. Esto significa que no puedes gustar, marcar o escribir commentarios.", - "editNameMsg": "", - "viewMoreComments": "Ver commentarios más", - "viewReply": "ver respuesta", - "viewAllRepliesInitial": "ver todas las {0} respuestas", - "viewAllReplies": "ver {0} respuestas", - "newCount": "Ver {0} {1} más", - "comment": "commentario", - "comments": "commentarios", - "commentIsIgnored": "Este comentario está escondido porque has ignorado al usuario.", - "showAllComments": "Mostrar todos los comentarios", - "error": { - "emailNotVerified": "E-mail {0} no verificado.", - "email": "No es un e-mail válido", - "password": "La contraseña debe tener por lo menos 8 caracteres", - "username": "Los nombres pueden contener letras, números y _", - "organizationName": "El nombre de la organización debe contener letras y/o números.", - "confirmPassword": "Las contraseñas no coinciden", - "emailPasswordError": "E-mail y/o contraseña incorrecta.", - "EMAIL_REQUIRED": "Se requiere un e-mail", - "PASSWORD_REQUIRED": "Debe ingresar una contraseña", - "PASSWORD_LENGTH": "La contraseña es muy corta", - "EMAIL_IN_USE": "El e-mail se encuentra en uso", - "EMAIL_USERNAME_IN_USE": "E-mail o Nombre en uso.", - "USERNAME_IN_USE": "Nombre en uso.", - "USERNAME_REQUIRED": "Debe ingresar un nombre", - "NO_SPECIAL_CHARACTERS": "Los nombres pueden contener letras, números y _", - "PROFANITY_ERROR": "Los nombres no pueden contener blasfemias. Por favor contacte al o la administradora si cree que esto es un error", - "NOT_AUTHORIZED": "Acción no autorizada.", - "EDIT_USERNAME_NOT_AUTHORIZED": "No tiene permiso para editar el nombre de usuario." - } - } -} diff --git a/client/coral-i18n/locales/en.yml b/client/coral-i18n/locales/en.yml index 299abc698..325ba71b4 100644 --- a/client/coral-i18n/locales/en.yml +++ b/client/coral-i18n/locales/en.yml @@ -1,27 +1,45 @@ ---- -en: - framework: - profile: Profile - my_profile: My profile - successUpdateSettings: The changes you have made have been applied to the comment stream on this article - successNameUpdate: Your username has been updated - contentNotAvailable: This content is not available - bannedAccountMsg: Your account is currently suspended. This means that you cannot Like Report or write comments. Please contact us if you have any questions. - editName: - msg: Your account is currently suspended because your username has been deemed inappropriate. To restore your account please enter a new username. Please contact us if you have any questions. - label: New Username - button: Submit - error: Usernames can contain letters numbers and _ only - viewMoreComments: view more comments - showAllComments: Show all comments - viewReply: view reply - viewAllRepliesInitial: view all 0 replies - viewAllReplies: view 0 replies - newCount: View 0 new 1 - comment: comment - comments: comments - commentIsIgnored: This comment is hidden because you ignored this user. - configure: +framework: + profile: Profile + my_profile: My profile + successUpdateSettings: The changes you have made have been applied to the comment stream on this article + successNameUpdate: Your username has been updated + contentNotAvailable: This content is not available + bannedAccountMsg: Your account is currently suspended. This means that you cannot Like Report or write comments. Please contact us if you have any questions. + editName: + msg: Your account is currently suspended because your username has been deemed inappropriate. To restore your account please enter a new username. Please contact us if you have any questions. + label: New Username + button: Submit + error: Usernames can contain letters numbers and _ only + viewMoreComments: view more comments + showAllComments: Show all comments + viewReply: view reply + viewAllRepliesInitial: view all 0 replies + viewAllReplies: view 0 replies + newCount: View 0 new 1 + comment: comment + comments: comments + commentIsIgnored: This comment is hidden because you ignored this user. + my_comments: My Comments +error: + emailNotVerified: Email address {0} not verified. + email: Not a valid E-Mail + password: Password must be at least 8 characters + username: Usernames can contain letters numbers and _ only + confirmPassword: Passwords don't match. Please check again + organizationName: Organization name must only contain letters or numbers. + emailPasswordError: Email and/or password combination incorrect. + EMAIL_REQUIRED: An email address is required + PASSWORD_REQUIRED: Must input a password + PASSWORD_LENGTH: Password is too short + EMAIL_IN_USE: Email address already in use + EMAIL_USERNAME_IN_USE: Email address or username already in use + USERNAME_IN_USE: Username already in use + USERNAME_REQUIRED: Must input a username + NO_SPECIAL_CHARACTERS: Usernames can contain letters numbers and _ only + PROFANITY_ERROR: Usernames must not contain profanity. Please contact the administrator if you believe this to be in error. + NOT_AUTHORIZED: Not authorized. + EDIT_USERNAME_NOT_AUTHORIZED: You do not have permission to update your username. +configure: apply: Apply title: Configure Comment Stream description: As an admin you may customize the settings for the comment stream for this asset @@ -32,27 +50,7 @@ en: enableQuestionBox: Ask readers a question enableQuestionBoxDescription: This question will appear at the top of this comment stream. Ask readers about a certain issue in the article or pose discussion questions etc. includeQuestionHere: Write your question here. - error: - emailNotVerified: Email address 0 not verified. - email: Not a valid E-Mail - password: Password must be at least 8 characters - username: Usernames can contain letters numbers and _ only - confirmPassword: Passwords don't match. Please check again - organizationName: Organization name must only contain letters or numbers. - emailPasswordError: Email and/or password combination incorrect. - EMAIL_REQUIRED: An email address is required - PASSWORD_REQUIRED: Must input a password - PASSWORD_LENGTH: Password is too short - EMAIL_IN_USE: Email address already in use - EMAIL_USERNAME_IN_USE: Email address or username already in use - USERNAME_IN_USE: Username already in use - USERNAME_REQUIRED: Must input a username - NO_SPECIAL_CHARACTERS: Usernames can contain letters numbers and _ only - PROFANITY_ERROR: Usernames must not contain profanity. Please contact the administrator if you believe this to be in error. - NOT_AUTHORIZED: Not authorized. - EDIT_USERNAME_NOT_AUTHORIZED: You do not have permission to update your username. - - settings: +settings: profile: Profile userNoComment: You've never left a comment. Join the conversation! allComments: All Comments diff --git a/client/coral-i18n/locales/es.yml b/client/coral-i18n/locales/es.yml index d871847a7..03551a710 100644 --- a/client/coral-i18n/locales/es.yml +++ b/client/coral-i18n/locales/es.yml @@ -1,62 +1,61 @@ ---- -es: - framework: - profile: Pérfil - my_profile: Mi pérfil - successUpdateSettings: La configuración de este articulo fue actualizada - successBioUpdate: Tu biografia fue actualizada - contentNotAvailable: El contenido no se encuentra disponible - bannedAccountMsg: Tu cuenta se encuentra suspendida. Esto significa que no puedes gustar marcar o escribir commentarios. - editName: - msg: Your account is currently suspended because your username has been deemed inappropriate. To restore your account please enter a new username. Please contact us if you have any questions. - label: New Username - button: Submit - error: Usernames can contain letters numbers and _ only - viewMoreComments: Ver commentarios más - viewReply: ver respuesta - viewAllRepliesInitial: ver todas las 0 respuestas - viewAllReplies: ver 0 respuestas - newCount: Ver 0 1 más - comment: commentario - comments: commentarios - commentIsIgnored: Este comentario está escondido porque has ignorado al usuario. - showAllComments: Mostrar todos los comentarios - configure: - apply: Aplicar - title: Configurar los comentarios - description: Como Administrador/a puedes modificar las opciones de los comentarios en este artículo - enablePremod: Activar Pre Moderación - enablePremodDescription: Los y las Moderadoras deben aprobar cualquier comentario antes de su publicación - enablePremodLinks: Pre-Moderar Comentarios que contienen Enlaces - enablePremodLinksDescription: Los y las moderadoras deben aprobar cualquier comentario que contengan enlaces antes de su publicación. - enableQuestionBox: Hacer una pregunta a los y las lectoras. - enableQuestionBoxDescription: Esta pregunta aparecera en la parte de arriba del hilo de comentarios. - includeQuestionHere: Escribir la pregunta aquí. - settings: - profile: Perfil - userNoComment: No has dejado aún ningún comentario. ¡Únete a la conversación! - allComments: Todos los comentarios - profileSettings: Configuración del perfil - myCommentHistory: Mi historial de comentarios - signIn: Entrar - toAccess: para acceder a al perfil - fromSettingsPage: Desde la página de configuración puedes ver tu historia de comentarios. - error: - emailNotVerified: E-mail 0 no verificado. - email: No es un e-mail válido - password: La contraseña debe tener por lo menos 8 caracteres - username: Los nombres pueden contener letras números y _ - organizationName: El nombre de la organización debe contener letras y/o números. - confirmPassword: Las contraseñas no coinciden - emailPasswordError: E-mail y/o contraseña incorrecta. - EMAIL_REQUIRED: Se requiere un e-mail - PASSWORD_REQUIRED: Debe ingresar una contraseña - PASSWORD_LENGTH: La contraseña es muy corta - EMAIL_IN_USE: El e-mail se encuentra en uso - EMAIL_USERNAME_IN_USE: E-mail o Nombre en uso. - USERNAME_IN_USE: Nombre en uso. - USERNAME_REQUIRED: Debe ingresar un nombre - NO_SPECIAL_CHARACTERS: Los nombres pueden contener letras números y _ - PROFANITY_ERROR: Los nombres no pueden contener blasfemias. Por favor contacte al o la administradora si cree que esto es un error - NOT_AUTHORIZED: Acción no autorizada. - EDIT_USERNAME_NOT_AUTHORIZED: No tiene permiso para editar el nombre de usuario. +framework: + profile: Pérfil + my_profile: Mi pérfil + successUpdateSettings: La configuración de este articulo fue actualizada + successBioUpdate: Tu biografia fue actualizada + contentNotAvailable: El contenido no se encuentra disponible + bannedAccountMsg: Tu cuenta se encuentra suspendida. Esto significa que no puedes gustar marcar o escribir commentarios. + editName: + msg: Your account is currently suspended because your username has been deemed inappropriate. To restore your account please enter a new username. Please contact us if you have any questions. + label: New Username + button: Submit + error: Usernames can contain letters numbers and _ only + viewMoreComments: Ver commentarios más + viewReply: ver respuesta + viewAllRepliesInitial: ver todas las 0 respuestas + viewAllReplies: ver 0 respuestas + newCount: Ver 0 1 más + comment: commentario + comments: commentarios + commentIsIgnored: Este comentario está escondido porque has ignorado al usuario. + showAllComments: Mostrar todos los comentarios + my_comments: Mis Comentarios +error: + emailNotVerified: E-mail {0} no verificado. + email: No es un e-mail válido + password: La contraseña debe tener por lo menos 8 caracteres + username: Los nombres pueden contener letras números y _ + organizationName: El nombre de la organización debe contener letras y/o números. + confirmPassword: Las contraseñas no coinciden + emailPasswordError: E-mail y/o contraseña incorrecta. + EMAIL_REQUIRED: Se requiere un e-mail + PASSWORD_REQUIRED: Debe ingresar una contraseña + PASSWORD_LENGTH: La contraseña es muy corta + EMAIL_IN_USE: El e-mail se encuentra en uso + EMAIL_USERNAME_IN_USE: E-mail o Nombre en uso. + USERNAME_IN_USE: Nombre en uso. + USERNAME_REQUIRED: Debe ingresar un nombre + NO_SPECIAL_CHARACTERS: Los nombres pueden contener letras números y _ + PROFANITY_ERROR: Los nombres no pueden contener blasfemias. Por favor contacte al o la administradora si cree que esto es un error + NOT_AUTHORIZED: Acción no autorizada. + EDIT_USERNAME_NOT_AUTHORIZED: No tiene permiso para editar el nombre de usuario. +configure: + apply: Aplicar + title: Configurar los comentarios + description: Como Administrador/a puedes modificar las opciones de los comentarios en este artículo + enablePremod: Activar Pre Moderación + enablePremodDescription: Los y las Moderadoras deben aprobar cualquier comentario antes de su publicación + enablePremodLinks: Pre-Moderar Comentarios que contienen Enlaces + enablePremodLinksDescription: Los y las moderadoras deben aprobar cualquier comentario que contengan enlaces antes de su publicación. + enableQuestionBox: Hacer una pregunta a los y las lectoras. + enableQuestionBoxDescription: Esta pregunta aparecera en la parte de arriba del hilo de comentarios. + includeQuestionHere: Escribir la pregunta aquí. +settings: + profile: Perfil + userNoComment: No has dejado aún ningún comentario. ¡Únete a la conversación! + allComments: Todos los comentarios + profileSettings: Configuración del perfil + myCommentHistory: Mi historial de comentarios + signIn: Entrar + toAccess: para acceder a al perfil + fromSettingsPage: Desde la página de configuración puedes ver tu historia de comentarios. diff --git a/client/coral-i18n/modules/i18n/i18n.js b/client/coral-i18n/modules/i18n/i18n.js index ac447c313..f42d7796c 100644 --- a/client/coral-i18n/modules/i18n/i18n.js +++ b/client/coral-i18n/modules/i18n/i18n.js @@ -1,7 +1,10 @@ import has from 'lodash/has'; import get from 'lodash/get'; -import YAML from 'yamljs'; +const localesFiles = { + 'en': require('json-loader!yaml-loader!../../locales/en.yml'), + 'es': require('json-loader!yaml-loader!../../locales/es.yml') +}; /** * Default locales, this should be overriden by config file @@ -9,6 +12,7 @@ import YAML from 'yamljs'; class i18n { constructor(translations) { + this.locales = {'en': 'en', 'es': 'es'}; /** * Register locales @@ -28,17 +32,20 @@ class i18n { } loadTranslations = (translations) => { - const localesFiles = {'en': 'locales/en.yml', 'es': 'locales/es.yml'}; try { + if (typeof translations == 'undefined'){ - // Translations need to be loaded from translations or localesFiles. - this.translations = translations[this.language] || YAML.load(localesFiles[this.language]); + // Translations need to be loaded from translations or localesFiles. + this.translations = localesFiles[this.language]; + } else { + this.translations = translations[this.language]; + } } catch(err) { // To Do: get configuration for default translation - this.translations = translations['en']; + this.translations = localesFiles['en']; } } diff --git a/client/coral-plugin-best/BestButton.js b/client/coral-plugin-best/BestButton.js index 96ef45f86..1efb33459 100644 --- a/client/coral-plugin-best/BestButton.js +++ b/client/coral-plugin-best/BestButton.js @@ -1,6 +1,6 @@ import React, {Component, PropTypes} from 'react'; import {I18n} from '../coral-framework'; -import translations from './translations.json'; + import {Icon} from 'coral-ui'; import classnames from 'classnames'; @@ -12,7 +12,7 @@ export const commentIsBest = ({tags} = {}) => { }; const name = 'coral-plugin-best'; -const lang = new I18n(translations); +const lang = new I18n(); // It would be best if the backend/api held this business logic const canModifyBestTag = ({roles = []} = {}) => roles && ['ADMIN', 'MODERATOR'].some(role => roles.includes(role)); diff --git a/client/coral-plugin-comment-count/CommentCount.js b/client/coral-plugin-comment-count/CommentCount.js index 764984634..d9afc2544 100644 --- a/client/coral-plugin-comment-count/CommentCount.js +++ b/client/coral-plugin-comment-count/CommentCount.js @@ -1,6 +1,6 @@ import React, {PropTypes} from 'react'; import {I18n} from '../coral-framework'; -import translations from './translations.json'; + const name = 'coral-plugin-comment-count'; const CommentCount = ({count}) => { @@ -15,4 +15,4 @@ CommentCount.propTypes = { export default CommentCount; -const lang = new I18n(translations); +const lang = new I18n(); diff --git a/client/coral-plugin-commentbox/CommentBox.js b/client/coral-plugin-commentbox/CommentBox.js index 5d0906b6e..308e1cd98 100644 --- a/client/coral-plugin-commentbox/CommentBox.js +++ b/client/coral-plugin-commentbox/CommentBox.js @@ -2,7 +2,7 @@ import React, {PropTypes} from 'react'; import {Button} from 'coral-ui'; import {connect} from 'react-redux'; import {I18n} from '../coral-framework'; -import translations from './translations.json'; + import Slot from 'coral-framework/components/Slot'; const name = 'coral-plugin-commentbox'; @@ -205,4 +205,4 @@ const mapStateToProps = ({commentBox}) => ({commentBox}); export default connect(mapStateToProps, null)(CommentBox); -const lang = new I18n(translations); +const lang = new I18n(); diff --git a/client/coral-plugin-flags/FlagButton.js b/client/coral-plugin-flags/FlagButton.js index e5daf72c9..21be0483f 100644 --- a/client/coral-plugin-flags/FlagButton.js +++ b/client/coral-plugin-flags/FlagButton.js @@ -1,6 +1,6 @@ import React, {Component} from 'react'; import {I18n} from '../coral-framework'; -import translations from './translations.json'; + import {PopupMenu, Button} from 'coral-ui'; import onClickOutside from 'react-onclickoutside'; @@ -222,4 +222,4 @@ const styles = { } }; -const lang = new I18n(translations); +const lang = new I18n(); diff --git a/client/coral-plugin-flags/FlagComment.js b/client/coral-plugin-flags/FlagComment.js index 3f3051f28..7d1f882a6 100644 --- a/client/coral-plugin-flags/FlagComment.js +++ b/client/coral-plugin-flags/FlagComment.js @@ -1,7 +1,8 @@ import React from 'react'; import FlagButton from './FlagButton'; -import {I18n} from '../coral-framework'; -import translations from './translations.json'; +import I18n from 'coral-i18n/modules/i18n/i18n'; + +const lang = new I18n(); const FlagComment = (props) => ; @@ -49,5 +50,3 @@ const getPopupMenu = [ ]; export default FlagComment; - -const lang = new I18n(translations); diff --git a/client/coral-plugin-moderation/ModerationLink.js b/client/coral-plugin-moderation/ModerationLink.js index 808f79839..a9bc6f8bd 100644 --- a/client/coral-plugin-moderation/ModerationLink.js +++ b/client/coral-plugin-moderation/ModerationLink.js @@ -1,8 +1,9 @@ import React, {PropTypes} from 'react'; import styles from './styles.css'; -import {I18n} from '../coral-framework'; -import translations from './translations.json'; +import I18n from 'coral-i18n/modules/i18n/i18n'; + +const lang = new I18n(); const ModerationLink = props => props.isAdmin ? (
    @@ -17,6 +18,4 @@ ModerationLink.propTypes = { isAdmin: PropTypes.bool.isRequired }; -const lang = new I18n(translations); - export default ModerationLink; diff --git a/client/coral-plugin-permalinks/PermalinkButton.js b/client/coral-plugin-permalinks/PermalinkButton.js index 9474d1b32..1567df465 100644 --- a/client/coral-plugin-permalinks/PermalinkButton.js +++ b/client/coral-plugin-permalinks/PermalinkButton.js @@ -1,12 +1,11 @@ import React, {PropTypes} from 'react'; import I18n from 'coral-i18n/modules/i18n/i18n'; -import translations from './translations'; import onClickOutside from 'react-onclickoutside'; const name = 'coral-plugin-permalinks'; import {Button} from 'coral-ui'; import styles from './styles.css'; -const lang = new I18n(translations); +const lang = new I18n(); class PermalinkButton extends React.Component { diff --git a/client/coral-plugin-replies/ReplyButton.js b/client/coral-plugin-replies/ReplyButton.js index eb2d3fe9f..a0e3d7c41 100644 --- a/client/coral-plugin-replies/ReplyButton.js +++ b/client/coral-plugin-replies/ReplyButton.js @@ -1,6 +1,6 @@ import React, {PropTypes} from 'react'; import {I18n} from '../coral-framework'; -import translations from './translations.json'; + import classnames from 'classnames'; const name = 'coral-plugin-replies'; @@ -24,4 +24,4 @@ ReplyButton.propTypes = { export default ReplyButton; -const lang = new I18n(translations); +const lang = new I18n(); diff --git a/client/coral-sign-in/components/CreateUsernameDialog.js b/client/coral-sign-in/components/CreateUsernameDialog.js index 045462413..ed9a30af9 100644 --- a/client/coral-sign-in/components/CreateUsernameDialog.js +++ b/client/coral-sign-in/components/CreateUsernameDialog.js @@ -7,8 +7,8 @@ import FakeComment from './FakeComment'; import styles from './styles.css'; import I18n from 'coral-i18n/modules/i18n/i18n'; -import translations from '../translations'; -const lang = new I18n(translations); + +const lang = new I18n(); const CreateUsernameDialog = ({open, handleClose, formData, handleSubmitUsername, handleChange, ...props}) => { return ( diff --git a/client/coral-sign-in/components/FakeComment.js b/client/coral-sign-in/components/FakeComment.js index ba413b755..5fabc6904 100644 --- a/client/coral-sign-in/components/FakeComment.js +++ b/client/coral-sign-in/components/FakeComment.js @@ -7,9 +7,8 @@ import PubDate from 'coral-plugin-pubdate/PubDate'; import {ReplyButton} from 'coral-plugin-replies'; import I18n from 'coral-i18n/modules/i18n/i18n'; -import translations from '../translations'; -const lang = new I18n(translations); +const lang = new I18n(); class FakeComment extends React.Component { constructor (props) { diff --git a/client/coral-sign-in/components/ForgotContent.js b/client/coral-sign-in/components/ForgotContent.js index e2eb29d51..578a5b1db 100644 --- a/client/coral-sign-in/components/ForgotContent.js +++ b/client/coral-sign-in/components/ForgotContent.js @@ -2,8 +2,8 @@ import React from 'react'; import styles from './styles.css'; import Button from 'coral-ui/components/Button'; import I18n from 'coral-i18n/modules/i18n/i18n'; -import translations from '../translations'; -const lang = new I18n(translations); + +const lang = new I18n(); class ForgotContent extends React.Component { constructor (props) { diff --git a/client/coral-sign-in/components/SignInContent.js b/client/coral-sign-in/components/SignInContent.js index 2f4ed6c7e..e536a1828 100644 --- a/client/coral-sign-in/components/SignInContent.js +++ b/client/coral-sign-in/components/SignInContent.js @@ -2,8 +2,8 @@ import React, {PropTypes} from 'react'; import {Button, TextField, Spinner, Success, Alert} from 'coral-ui'; import styles from './styles.css'; import I18n from 'coral-i18n/modules/i18n/i18n'; -import translations from '../translations'; -const lang = new I18n(translations); + +const lang = new I18n(); const SignInContent = ({ handleChange, diff --git a/client/coral-sign-in/components/SignUpContent.js b/client/coral-sign-in/components/SignUpContent.js index aac8d4937..e5a4cfb69 100644 --- a/client/coral-sign-in/components/SignUpContent.js +++ b/client/coral-sign-in/components/SignUpContent.js @@ -2,8 +2,8 @@ import React, {PropTypes} from 'react'; import {Button, TextField, Spinner, Success, Alert} from 'coral-ui'; import styles from './styles.css'; import I18n from 'coral-i18n/modules/i18n/i18n'; -import translations from '../translations'; -const lang = new I18n(translations); + +const lang = new I18n(); class SignUpContent extends React.Component { diff --git a/client/coral-sign-in/components/UserBox.js b/client/coral-sign-in/components/UserBox.js index 59c14fa1e..88bd41dab 100644 --- a/client/coral-sign-in/components/UserBox.js +++ b/client/coral-sign-in/components/UserBox.js @@ -1,8 +1,8 @@ import React from 'react'; import styles from './styles.css'; import I18n from 'coral-i18n/modules/i18n/i18n'; -import translations from '../translations'; -const lang = new I18n(translations); + +const lang = new I18n(); const UserBox = ({className, user, onLogout, onShowProfile}) => (
    diff --git a/client/coral-sign-in/containers/ChangeUsernameContainer.js b/client/coral-sign-in/containers/ChangeUsernameContainer.js index e94c956b8..c3b8e4406 100644 --- a/client/coral-sign-in/containers/ChangeUsernameContainer.js +++ b/client/coral-sign-in/containers/ChangeUsernameContainer.js @@ -7,8 +7,8 @@ import errorMsj from 'coral-framework/helpers/error'; import CreateUsernameDialog from '../components/CreateUsernameDialog'; import I18n from 'coral-i18n/modules/i18n/i18n'; -import translations from '../translations'; -const lang = new I18n(translations); + +const lang = new I18n(); import { showCreateUsernameDialog, diff --git a/client/coral-sign-in/containers/SignInContainer.js b/client/coral-sign-in/containers/SignInContainer.js index e027acb31..4912193c8 100644 --- a/client/coral-sign-in/containers/SignInContainer.js +++ b/client/coral-sign-in/containers/SignInContainer.js @@ -4,9 +4,9 @@ import SignDialog from '../components/SignDialog'; import validate from 'coral-framework/helpers/validate'; import errorMsj from 'coral-framework/helpers/error'; import I18n from 'coral-i18n/modules/i18n/i18n'; -import translations from '../translations'; + import {pym} from 'coral-framework'; -const lang = new I18n(translations); +const lang = new I18n(); import { changeView, diff --git a/package.json b/package.json index 193f30c72..1ebd5f058 100644 --- a/package.json +++ b/package.json @@ -98,13 +98,12 @@ "react-recaptcha": "^2.2.6", "recompose": "^0.23.1", "redis": "^2.7.1", - "uuid": "^3.0.1", - "simplemde": "^1.11.2", - "subscriptions-transport-ws": "^0.5.5-alpha.0", "resolve": "^1.3.2", "semver": "^5.3.0", "simplemde": "^1.11.2", + "subscriptions-transport-ws": "^0.5.5-alpha.0", "uuid": "^3.0.1", + "yaml-loader": "^0.4.0", "yamljs": "^0.2.10" }, "devDependencies": { diff --git a/plugins/coral-plugin-respect/client/components/RespectButton.js b/plugins/coral-plugin-respect/client/components/RespectButton.js index faeda1991..29ce0e8c7 100644 --- a/plugins/coral-plugin-respect/client/components/RespectButton.js +++ b/plugins/coral-plugin-respect/client/components/RespectButton.js @@ -2,7 +2,8 @@ import React, {Component} from 'react'; import styles from './style.css'; import Icon from './Icon'; -import {I18n} from 'coral-framework'; +import I18n from 'coral-i18n/modules/i18n/i18n'; + import cn from 'classnames'; import translations from '../translations.json'; import {getMyActionSummary, getTotalActionCount} from 'coral-framework/utils'; diff --git a/webpack.config.js b/webpack.config.js index 3a54e85c0..d4171bbb0 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -115,6 +115,11 @@ module.exports = { test: /\.(graphql|gql)$/, exclude: /node_modules/, loader: 'graphql-tag/loader' + }, + { + test: /\.yaml$/, + include: path.resolve('locales'), + loader: 'yaml' } ] }, diff --git a/yarn.lock b/yarn.lock index 20eca8209..01e7f9de0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4431,7 +4431,7 @@ js-tokens@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.1.tgz#08e9f132484a2c45a30907e9dc4d5567b7f114d7" -js-yaml@3.x, js-yaml@^3.4.3, js-yaml@^3.5.1, js-yaml@^3.7.0: +js-yaml@3.x, js-yaml@^3.4.3, js-yaml@^3.5.1, js-yaml@^3.5.2, js-yaml@^3.7.0: version "3.8.3" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.8.3.tgz#33a05ec481c850c8875929166fe1beb61c728766" dependencies: @@ -8423,6 +8423,12 @@ yallist@^2.0.0: version "2.1.2" resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" +yaml-loader@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/yaml-loader/-/yaml-loader-0.4.0.tgz#4aae447d13c1aa73a989d8a2a5309b0b1a3ca353" + dependencies: + js-yaml "^3.5.2" + yamljs@^0.2.10: version "0.2.10" resolved "https://registry.yarnpkg.com/yamljs/-/yamljs-0.2.10.tgz#481cc7c25ca73af59f591f0c96e3ce56c757a40f" From 633086cfa3ed96dd22ad74a996192600e3b49697 Mon Sep 17 00:00:00 2001 From: gaba Date: Mon, 15 May 2017 07:11:11 -0700 Subject: [PATCH 06/47] Fix a few more strings and translations. --- client/coral-admin/src/actions/auth.js | 2 +- .../src/components/CountdownTimer.js | 2 +- .../coral-admin/src/components/ui/Header.js | 2 +- .../src/containers/Configure/Configure.js | 16 +- .../src/containers/Configure/Domainlist.js | 4 +- .../src/containers/Configure/EmbedLink.js | 2 +- .../Configure/ModerationSettings.js | 12 +- .../containers/Configure/StreamSettings.js | 20 +- .../src/containers/Configure/TechSettings.js | 4 +- .../src/containers/Configure/Wordlist.js | 8 +- .../components/Steps/CreateYourAccount.js | 2 +- .../src/containers/Stories/Stories.js | 2 +- .../src/containers/Streams/Stories.js | 2 +- .../components/CloseCommentsInfo.js | 8 +- .../components/ConfigureCommentStream.js | 14 +- .../src/components/Embed.js | 2 +- .../src/components/IgnoredCommentTombstone.js | 2 +- .../src/components/LoadMore.js | 8 +- .../src/components/NewCount.js | 4 +- client/coral-framework/actions/asset.js | 4 +- client/coral-framework/actions/auth.js | 4 +- client/coral-framework/actions/user.js | 2 +- .../components/RestrictedContent.js | 2 +- .../components/SuspendedAccount.js | 12 +- client/coral-framework/helpers/error.js | 4 +- client/coral-i18n/locales/en.yml | 341 +++++++++++++++--- client/coral-i18n/locales/es.yml | 337 ++++++++++++++--- client/coral-plugin-best/BestButton.js | 2 +- .../CommentCount.js | 2 +- client/coral-plugin-commentbox/CommentBox.js | 10 +- client/coral-plugin-flags/FlagButton.js | 2 +- client/coral-plugin-flags/FlagComment.js | 6 +- .../coral-plugin-moderation/ModerationLink.js | 2 +- .../components/CreateUsernameDialog.js | 10 +- .../containers/ChangeUsernameContainer.js | 4 +- errors.js | 8 +- 36 files changed, 664 insertions(+), 204 deletions(-) diff --git a/client/coral-admin/src/actions/auth.js b/client/coral-admin/src/actions/auth.js index 89b56d4dc..cb7467e1a 100644 --- a/client/coral-admin/src/actions/auth.js +++ b/client/coral-admin/src/actions/auth.js @@ -19,7 +19,7 @@ export const handleLogin = (email, password, recaptchaResponse) => dispatch => { }) .catch(error => { - if (error.translation_key === 'LOGIN_MAXIMUM_EXCEEDED') { + if (error.translation_key === 'login_maximum_exceeded') { dispatch({type: actions.LOGIN_MAXIMUM_EXCEEDED, message: error.translation_key}); } else { dispatch({type: actions.LOGIN_FAILURE, message: error.translation_key}); diff --git a/client/coral-admin/src/components/CountdownTimer.js b/client/coral-admin/src/components/CountdownTimer.js index 5e15bb03e..07195910d 100644 --- a/client/coral-admin/src/components/CountdownTimer.js +++ b/client/coral-admin/src/components/CountdownTimer.js @@ -73,7 +73,7 @@ class CountdownTimer extends React.Component { className={styles.autoUpdate} onClick={this.dismissNote}> × - {lang.t('dashboard.next-update', this.formatTime())} {lang.t('dashboard.auto-update')} + {lang.t('dashboard.next_update', this.formatTime())} {lang.t('dashboard.auto_update')}

    ); } diff --git a/client/coral-admin/src/components/ui/Header.js b/client/coral-admin/src/components/ui/Header.js index d57b9cbb3..e001fbfa3 100644 --- a/client/coral-admin/src/components/ui/Header.js +++ b/client/coral-admin/src/components/ui/Header.js @@ -55,7 +55,7 @@ const CoralHeader = ({handleLogout, showShortcuts = () => {}, restricted = false showShortcuts(true)}>{lang.t('configure.shortcuts')} - {lang.t('configure.sign-out')} + {lang.t('configure.sign_out')}
  • diff --git a/client/coral-admin/src/containers/Configure/Configure.js b/client/coral-admin/src/containers/Configure/Configure.js index 4a2509e57..b7f4eb602 100644 --- a/client/coral-admin/src/containers/Configure/Configure.js +++ b/client/coral-admin/src/containers/Configure/Configure.js @@ -104,11 +104,11 @@ class Configure extends Component { getPageTitle (section) { switch(section) { case 'stream': - return lang.t('configure.stream-settings'); + return lang.t('configure.stream_settings'); case 'moderation': - return lang.t('configure.moderation-settings'); + return lang.t('configure.moderation_settings'); case 'tech': - return lang.t('configure.tech-settings'); + return lang.t('configure.tech_settings'); default: return ''; } @@ -126,13 +126,13 @@ class Configure extends Component {
    - {lang.t('configure.stream-settings')} + {lang.t('configure.stream_settings')} - {lang.t('configure.moderation-settings')} + {lang.t('configure.moderation_settings')} - {lang.t('configure.tech-settings')} + {lang.t('configure.tech_settings')}
    @@ -145,7 +145,7 @@ class Configure extends Component { icon='check' full > - {lang.t('configure.save-changes')} + {lang.t('configure.save_changes')} : }
    diff --git a/client/coral-admin/src/containers/Configure/Domainlist.js b/client/coral-admin/src/containers/Configure/Domainlist.js index 1723bf66c..719a7f88d 100644 --- a/client/coral-admin/src/containers/Configure/Domainlist.js +++ b/client/coral-admin/src/containers/Configure/Domainlist.js @@ -10,8 +10,8 @@ const Domainlist = ({domains, onChangeDomainlist}) => { return (
    -
    {lang.t('configure.domain-list-title')}
    -

    {lang.t('configure.domain-list-text')}

    +
    {lang.t('configure.domain_list_title')}
    +

    {lang.t('configure.domain_list_text')}

    Embed Comment Stream
    -

    {lang.t('configure.copy-and-paste')}

    +

    {lang.t('configure.copy_and_paste')}