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

Add missing locale strings for localization
This commit is contained in:
Matthew Taylor 2016-08-16 18:01:10 -04:00 committed by GitHub
commit 22b5447d87
7 changed files with 33 additions and 52 deletions

View file

@ -1,5 +1,6 @@
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({
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>
); );
} }

View file

@ -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 @@
"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"
} }

View file

@ -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')}

View file

@ -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!",

View file

@ -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({
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({
<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({
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={
formatMessage({
id: 'splash.recentlySharedProjects',
defaultMessage: 'Recently Shared Projects' })}
key="community_newest_projects"> key="community_newest_projects">
<Carousel <Carousel items={this.state.featuredGlobal.community_newest_projects} />
items={this.state.featuredGlobal.community_newest_projects} />
</Box> </Box>
); );
} }
@ -262,10 +251,7 @@ 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} />
@ -276,10 +262,7 @@ 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} />
@ -291,10 +274,7 @@ 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} />
@ -303,19 +283,13 @@ var Splash = injectIntl(React.createClass({
} }
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({
'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) {

View file

@ -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",

View file

@ -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>