Commit 22b5447d authored by Matthew Taylor's avatar Matthew Taylor Committed by GitHub

Merge pull request #849 from mewtaylor/issue/missing-locale-strings

Add missing locale strings for localization
parents b893c5c6 4a044269
var React = require('react');
var classNames = require('classnames'); var classNames = require('classnames');
var FormattedMessage = require('react-intl').FormattedMessage;
var React = require('react');
require('./thumbnail.scss'); require('./thumbnail.scss');
...@@ -32,7 +33,10 @@ var Thumbnail = React.createClass({ ...@@ -32,7 +33,10 @@ var Thumbnail = React.createClass({
if (this.props.creator) { if (this.props.creator) {
extra.push( extra.push(
<div key="creator" className="thumbnail-creator"> <div key="creator" className="thumbnail-creator">
by <a href={'/users/' + this.props.creator + '/'}>{this.props.creator}</a> <FormattedMessage id={'thumbnail.by'} />{' '}
<a href={'/users/' + this.props.creator + '/'}>
{this.props.creator}
</a>
</div> </div>
); );
} }
......
...@@ -57,6 +57,7 @@ ...@@ -57,6 +57,7 @@
"general.privacyPolicy": "Privacy Policy", "general.privacyPolicy": "Privacy Policy",
"general.projects": "Projects", "general.projects": "Projects",
"general.profile": "Profile", "general.profile": "Profile",
"general.resourcesTitle": "Educator Resources",
"general.scratchConference": "Scratch Conference", "general.scratchConference": "Scratch Conference",
"general.scratchday": "Scratch Day", "general.scratchday": "Scratch Day",
"general.scratchEd": "ScratchEd", "general.scratchEd": "ScratchEd",
...@@ -154,5 +155,7 @@ ...@@ -154,5 +155,7 @@
"registration.waitForApprovalDescription": "You can log into your Scratch Account now, but the features specific to Teachers are not yet available. Your information is being reviewed. Please be patient, the approval process can take up to 24 hours. You will receive an email indicating your account has been upgraded once your account has been approved.", "registration.waitForApprovalDescription": "You can log into your Scratch Account now, but the features specific to Teachers are not yet available. Your information is being reviewed. Please be patient, the approval process can take up to 24 hours. You will receive an email indicating your account has been upgraded once your account has been approved.",
"registration.welcomeStepDescription": "You have successfully set up a Scratch account! You are now a member of the class:", "registration.welcomeStepDescription": "You have successfully set up a Scratch account! You are now a member of the class:",
"registration.welcomeStepPrompt": "To get started, click on the button below.", "registration.welcomeStepPrompt": "To get started, click on the button below.",
"registration.welcomeStepTitle": "Hurray! Welcome to Scratch!" "registration.welcomeStepTitle": "Hurray! Welcome to Scratch!",
"thumbnail.by": "by"
} }
...@@ -111,10 +111,12 @@ var Explore = injectIntl(React.createClass({ ...@@ -111,10 +111,12 @@ var Explore = injectIntl(React.createClass({
); );
}, },
render: function () { render: function () {
var formatMessage = this.props.intl.formatMessage;
return ( return (
<div> <div>
<div className='outer'> <div className='outer'>
<Box title={'Explore'}> <Box title={formatMessage({id: 'general.explore'})}>
<SubNavigation className='categories'> <SubNavigation className='categories'>
{this.getBubble('all')} {this.getBubble('all')}
{this.getBubble('animations')} {this.getBubble('animations')}
......
...@@ -26,7 +26,6 @@ ...@@ -26,7 +26,6 @@
"teacherbanner.greeting": "Hi", "teacherbanner.greeting": "Hi",
"teacherbanner.subgreeting": "Teacher Account", "teacherbanner.subgreeting": "Teacher Account",
"teacherbanner.classesButton": "My Classes", "teacherbanner.classesButton": "My Classes",
"teacherbanner.resourcesButton": "Educator Resources",
"teacherbanner.faqButton": "Teacher Account FAQ", "teacherbanner.faqButton": "Teacher Account FAQ",
"welcome.welcomeToScratch": "Welcome to Scratch!", "welcome.welcomeToScratch": "Welcome to Scratch!",
......
...@@ -189,16 +189,12 @@ var Splash = injectIntl(React.createClass({ ...@@ -189,16 +189,12 @@ var Splash = injectIntl(React.createClass({
var rows = [ var rows = [
<Box <Box
title={formatMessage({ title={formatMessage({id: 'splash.featuredProjects'})}
id: 'splash.featuredProjects',
defaultMessage: 'Featured Projects'})}
key="community_featured_projects"> key="community_featured_projects">
<Carousel items={this.state.featuredGlobal.community_featured_projects} /> <Carousel items={this.state.featuredGlobal.community_featured_projects} />
</Box>, </Box>,
<Box <Box
title={formatMessage({ title={formatMessage({id: 'splash.featuredStudios'})}
id: 'splash.featuredStudios',
defaultMessage: 'Featured Studios'})}
key="community_featured_studios"> key="community_featured_studios">
<Carousel items={this.state.featuredGlobal.community_featured_studios} <Carousel items={this.state.featuredGlobal.community_featured_studios}
settings={{slidesToShow: 4, slidesToScroll: 4, lazyLoad: false}} /> settings={{slidesToShow: 4, slidesToScroll: 4, lazyLoad: false}} />
...@@ -216,8 +212,8 @@ var Splash = injectIntl(React.createClass({ ...@@ -216,8 +212,8 @@ var Splash = injectIntl(React.createClass({
this.state.featuredGlobal.curator_top_projects[0].curator_name} this.state.featuredGlobal.curator_top_projects[0].curator_name}
moreTitle={formatMessage({id: 'general.learnMore', defaultMessage: 'Learn More'})} moreTitle={formatMessage({id: 'general.learnMore', defaultMessage: 'Learn More'})}
moreHref="/studios/386359/"> moreHref="/studios/386359/">
<Carousel
items={this.state.featuredGlobal.curator_top_projects} /> <Carousel items={this.state.featuredGlobal.curator_top_projects} />
</Box> </Box>
); );
} }
...@@ -229,14 +225,12 @@ var Splash = injectIntl(React.createClass({ ...@@ -229,14 +225,12 @@ var Splash = injectIntl(React.createClass({
<Box <Box
key="scratch_design_studio" key="scratch_design_studio"
title={ title={
formatMessage({ formatMessage({id: 'splash.scratchDesignStudioTitle'})
id: 'splash.scratchDesignStudioTitle',
defaultMessage: 'Scratch Design Studio' })
+ ' - ' + this.state.featuredGlobal.scratch_design_studio[0].gallery_title} + ' - ' + this.state.featuredGlobal.scratch_design_studio[0].gallery_title}
moreTitle={formatMessage({id: 'splash.visitTheStudio', defaultMessage: 'Visit the studio'})} moreTitle={formatMessage({id: 'splash.visitTheStudio', defaultMessage: 'Visit the studio'})}
moreHref={'/studios/' + this.state.featuredGlobal.scratch_design_studio[0].gallery_id + '/'}> moreHref={'/studios/' + this.state.featuredGlobal.scratch_design_studio[0].gallery_id + '/'}>
<Carousel
items={this.state.featuredGlobal.scratch_design_studio} /> <Carousel items={this.state.featuredGlobal.scratch_design_studio} />
</Box> </Box>
); );
} }
...@@ -246,14 +240,9 @@ var Splash = injectIntl(React.createClass({ ...@@ -246,14 +240,9 @@ var Splash = injectIntl(React.createClass({
this.state.featuredGlobal.community_newest_projects.length > 0) { this.state.featuredGlobal.community_newest_projects.length > 0) {
rows.push( rows.push(
<Box <Box title={formatMessage({id: 'splash.recentlySharedProjects'})}
title={ key="community_newest_projects">
formatMessage({ <Carousel items={this.state.featuredGlobal.community_newest_projects} />
id: 'splash.recentlySharedProjects',
defaultMessage: 'Recently Shared Projects' })}
key="community_newest_projects">
<Carousel
items={this.state.featuredGlobal.community_newest_projects} />
</Box> </Box>
); );
} }
...@@ -262,12 +251,9 @@ var Splash = injectIntl(React.createClass({ ...@@ -262,12 +251,9 @@ var Splash = injectIntl(React.createClass({
this.state.featuredCustom.custom_projects_by_following.length > 0) { this.state.featuredCustom.custom_projects_by_following.length > 0) {
rows.push( rows.push(
<Box title={ <Box title={formatMessage({id: 'splash.projectsByScratchersFollowing'})}
formatMessage({
id: 'splash.projectsByScratchersFollowing',
defaultMessage: 'Projects by Scratchers I\'m Following'})}
key="custom_projects_by_following"> key="custom_projects_by_following">
<Carousel items={this.state.featuredCustom.custom_projects_by_following} /> <Carousel items={this.state.featuredCustom.custom_projects_by_following} />
</Box> </Box>
); );
...@@ -276,12 +262,9 @@ var Splash = injectIntl(React.createClass({ ...@@ -276,12 +262,9 @@ var Splash = injectIntl(React.createClass({
this.state.featuredCustom.custom_projects_loved_by_following.length > 0) { this.state.featuredCustom.custom_projects_loved_by_following.length > 0) {
rows.push( rows.push(
<Box title={ <Box title={formatMessage({id: 'splash.projectsLovedByScratchersFollowing'})}
formatMessage({
id: 'splash.projectsLovedByScratchersFollowing',
defaultMessage: 'Projects Loved by Scratchers I\'m Following'})}
key="custom_projects_loved_by_following"> key="custom_projects_loved_by_following">
<Carousel items={this.state.featuredCustom.custom_projects_loved_by_following} /> <Carousel items={this.state.featuredCustom.custom_projects_loved_by_following} />
</Box> </Box>
); );
...@@ -291,31 +274,22 @@ var Splash = injectIntl(React.createClass({ ...@@ -291,31 +274,22 @@ var Splash = injectIntl(React.createClass({
this.state.featuredCustom.custom_projects_in_studios_following.length > 0) { this.state.featuredCustom.custom_projects_in_studios_following.length > 0) {
rows.push( rows.push(
<Box title={ <Box title={formatMessage({id:'splash.projectsInStudiosFollowing'})}
formatMessage({
id:'splash.projectsInStudiosFollowing',
defaultMessage: 'Projects in Studios I\'m Following'})}
key="custom_projects_in_studios_following"> key="custom_projects_in_studios_following">
<Carousel items={this.state.featuredCustom.custom_projects_in_studios_following} /> <Carousel items={this.state.featuredCustom.custom_projects_in_studios_following} />
</Box> </Box>
); );
} }
rows.push( rows.push(
<Box title={ <Box title={formatMessage({id: 'splash.communityRemixing'})}
formatMessage({
id: 'splash.communityRemixing',
defaultMessage: 'What the Community is Remixing' })}
key="community_most_remixed_projects"> key="community_most_remixed_projects">
<Carousel items={shuffle(this.state.featuredGlobal.community_most_remixed_projects)} <Carousel items={shuffle(this.state.featuredGlobal.community_most_remixed_projects)}
showRemixes={true} /> showRemixes={true} />
</Box>, </Box>,
<Box title={ <Box title={formatMessage({id: 'splash.communityLoving'})}
formatMessage({
id: 'splash.communityLoving',
defaultMessage: 'What the Community is Loving' })}
key="community_most_loved_projects"> key="community_most_loved_projects">
<Carousel items={shuffle(this.state.featuredGlobal.community_most_loved_projects)} <Carousel items={shuffle(this.state.featuredGlobal.community_most_loved_projects)}
...@@ -350,7 +324,7 @@ var Splash = injectIntl(React.createClass({ ...@@ -350,7 +324,7 @@ var Splash = injectIntl(React.createClass({
'teacherbanner.greeting': formatMessage({id: 'teacherbanner.greeting'}), 'teacherbanner.greeting': formatMessage({id: 'teacherbanner.greeting'}),
'teacherbanner.subgreeting': formatMessage({id: 'teacherbanner.subgreeting'}), 'teacherbanner.subgreeting': formatMessage({id: 'teacherbanner.subgreeting'}),
'teacherbanner.classesButton': formatMessage({id: 'teacherbanner.classesButton'}), 'teacherbanner.classesButton': formatMessage({id: 'teacherbanner.classesButton'}),
'teacherbanner.resourcesButton': formatMessage({id: 'teacherbanner.resourcesButton'}), 'teacherbanner.resourcesButton': formatMessage({id: 'general.resourcesTitle'}),
'teacherbanner.faqButton': formatMessage({id: 'teacherbanner.faqButton'}) 'teacherbanner.faqButton': formatMessage({id: 'teacherbanner.faqButton'})
}; };
if (this.state.projectCount === this.getInitialState().projectCount) { if (this.state.projectCount === this.getInitialState().projectCount) {
......
...@@ -8,7 +8,6 @@ ...@@ -8,7 +8,6 @@
"teacherlanding.generalUsageSettings": "<b>Settings:</b> schools, museums, libraries, community centers", "teacherlanding.generalUsageSettings": "<b>Settings:</b> schools, museums, libraries, community centers",
"teacherlanding.generalUsageGradeLevels": "<b>Grade Levels:</b> elementary, middle, and high school (and some colleges too!)", "teacherlanding.generalUsageGradeLevels": "<b>Grade Levels:</b> elementary, middle, and high school (and some colleges too!)",
"teacherlanding.generalUsageSubjectAreas": "<b>Subject Areas:</b> language arts, science, social studies, math, computer science, foreign languages, and the arts", "teacherlanding.generalUsageSubjectAreas": "<b>Subject Areas:</b> language arts, science, social studies, math, computer science, foreign languages, and the arts",
"teacherlanding.resourcesTitle": "Educator Resources",
"teacherlanding.scratchEdTitle": "A Community for Educators", "teacherlanding.scratchEdTitle": "A Community for Educators",
"teacherlanding.scratchEdDescription": "<a href=\"http://scratched.gse.harvard.edu/\">ScratchEd</a> is an online community where Scratch educators <a href=\"http://scratched.gse.harvard.edu/stories\">share stories</a>, exchange resources, ask questions, and find people. ScratchEd is developed and supported by the Harvard Graduate School of Education.", "teacherlanding.scratchEdDescription": "<a href=\"http://scratched.gse.harvard.edu/\">ScratchEd</a> is an online community where Scratch educators <a href=\"http://scratched.gse.harvard.edu/stories\">share stories</a>, exchange resources, ask questions, and find people. ScratchEd is developed and supported by the Harvard Graduate School of Education.",
"teacherlanding.meetupTitle": "In-Person Gatherings", "teacherlanding.meetupTitle": "In-Person Gatherings",
......
...@@ -64,7 +64,7 @@ var Landing = injectIntl(React.createClass({ ...@@ -64,7 +64,7 @@ var Landing = injectIntl(React.createClass({
</section> </section>
<section id="resources"> <section id="resources">
<span className="nav-spacer"></span> <span className="nav-spacer"></span>
<h2><FormattedMessage id="teacherlanding.resourcesTitle" /></h2> <h2><FormattedMessage id="general.resourcesTitle" /></h2>
<FlexRow className="educator-community"> <FlexRow className="educator-community">
<div> <div>
<h3><FormattedMessage id="teacherlanding.scratchEdTitle" /></h3> <h3><FormattedMessage id="teacherlanding.scratchEdTitle" /></h3>
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment