Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Unify i18n logic in the various Craft apps #32375

Merged
merged 6 commits into from Dec 19, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
72 changes: 5 additions & 67 deletions apps/src/craft/agent/blocks.js
@@ -1,60 +1,5 @@
var i18n = require('./locale');

var blocksToDisplayText = {
bedrock: i18n.blockTypeBedrock(),
bricks: i18n.blockTypeBricks(),
clay: i18n.blockTypeClay(),
oreCoal: i18n.blockTypeOreCoal(),
dirtCoarse: i18n.blockTypeDirtCoarse(),
doorIron: i18n.blockTypeDoorIron(),
cobblestone: i18n.blockTypeCobblestone(),
oreDiamond: i18n.blockTypeOreDiamond(),
dirt: i18n.blockTypeDirt(),
oreEmerald: i18n.blockTypeOreEmerald(),
farmlandWet: i18n.blockTypeFarmlandWet(),
glass: i18n.blockTypeGlass(),
glowstone: i18n.blockTypeGlowstone(),
oreGold: i18n.blockTypeOreGold(),
grass: i18n.blockTypeGrass(),
gravel: i18n.blockTypeGravel(),
ice: i18n.blockTypeIce(),
snow: i18n.blockTypeSnow(),
netherrack: i18n.blockTypeNetherrack(),
netherBrick: i18n.blockTypeNetherBrick(),
clayHardened: i18n.blockTypeClayHardened(),
oreIron: i18n.blockTypeOreIron(),
oreLapis: i18n.blockTypeOreLapis(),
lava: i18n.blockTypeLava(),
logAcacia: i18n.blockTypeLogAcacia(),
logBirch: i18n.blockTypeLogBirch(),
logJungle: i18n.blockTypeLogJungle(),
logOak: i18n.blockTypeLogOak(),
logSpruce: i18n.blockTypeLogSpruce(),
planksAcacia: i18n.blockTypePlanksAcacia(),
planksBirch: i18n.blockTypePlanksBirch(),
planksJungle: i18n.blockTypePlanksJungle(),
planksOak: i18n.blockTypePlanksOak(),
planksSpruce: i18n.blockTypePlanksSpruce(),
pressurePlateUp: i18n.blockTypePressurePlateUp(),
oreRedstone: i18n.blockTypeOreRedstone(),
rail: i18n.blockTypeRail(),
railsRedstoneTorch: i18n.blockTypeRailsRedstoneTorch(),
redstoneWire: i18n.blockTypeRedstoneWire(),
sand: i18n.blockTypeSand(),
sandstone: i18n.blockTypeSandstone(),
stone: i18n.blockTypeStone(),
tnt: i18n.blockTypeTnt(),
tree: i18n.blockTypeTree(),
water: i18n.blockTypeWater(),
wool: i18n.blockTypeWool(),
wool_orange: i18n.blockTypeWoolOrange(),
wool_blue: i18n.blockTypeWoolBlue(),
wool_magenta: i18n.blockTypeWoolMagenta(),
wool_pink: i18n.blockTypeWoolPink(),
wool_red: i18n.blockTypeWoolRed(),
wool_yellow: i18n.blockTypeWoolYellow(),
'': i18n.blockTypeEmpty()
};
var i18n = require('../locale');
import {blockTypesToDropdownOptions} from '../utils';

var allBlocks = [
'bedrock',
Expand Down Expand Up @@ -94,13 +39,6 @@ var allBlocks = [
'wool'
];

function keysToDropdownOptions(keysList) {
return keysList.map(function(key) {
var displayText = blocksToDisplayText[key] || key;
return [displayText, key];
});
}

// Install extensions to Blockly's language and JavaScript generator.
exports.install = function(blockly, blockInstallOptions) {
var dropdownBlocks = (blockInstallOptions.level.availableBlocks || []).concat(
Expand Down Expand Up @@ -203,7 +141,7 @@ exports.install = function(blockly, blockInstallOptions) {
blockly.Blocks.craft_ifBlockAhead = {
helpUrl: '',
init: function() {
var dropdownOptions = keysToDropdownOptions(
var dropdownOptions = blockTypesToDropdownOptions(
craftBlockOptions.ifBlockOptions || allDropdownBlocks
);
var dropdown = new blockly.FieldDropdown(dropdownOptions);
Expand Down Expand Up @@ -264,7 +202,7 @@ exports.install = function(blockly, blockInstallOptions) {
blockly.Blocks.craft_placeBlock = {
helpUrl: '',
init: function() {
var dropdownOptions = keysToDropdownOptions(
var dropdownOptions = blockTypesToDropdownOptions(
craftBlockOptions.placeBlockOptions || allDropdownBlocks
);
var dropdown = new blockly.FieldDropdown(dropdownOptions);
Expand Down Expand Up @@ -294,7 +232,7 @@ exports.install = function(blockly, blockInstallOptions) {
blockly.Blocks.craft_placeBlockDirection = {
helpUrl: '',
init: function() {
var dropdownOptions = keysToDropdownOptions(
var dropdownOptions = blockTypesToDropdownOptions(
craftBlockOptions.placeBlockOptions || allDropdownBlocks
);
var dropdown = new blockly.FieldDropdown(dropdownOptions);
Expand Down
2 changes: 1 addition & 1 deletion apps/src/craft/agent/craft.js
Expand Up @@ -6,7 +6,7 @@ import Hammer from 'hammerjs';
import trackEvent from '../../util/trackEvent';
import {tryGetLocalStorage, trySetLocalStorage} from '../../utils';
import {singleton as studioApp} from '../../StudioApp';
import craftMsg from './locale';
import craftMsg from '../locale';
import CustomMarshalingInterpreter from '../../lib/tools/jsinterpreter/CustomMarshalingInterpreter';
import {
GameController,
Expand Down
2 changes: 1 addition & 1 deletion apps/src/craft/agent/dialogs/playerSelection.html.ejs
@@ -1,4 +1,4 @@
<% var i18n = require('../locale'); %>
<% var i18n = require('../../locale'); %>
<h1 class="minecraft-big-yellow-header" id="getting-started-header"><%= i18n.playerSelectLetsGetStarted() %></h1>

<h2 id="select-character-text"><%= i18n.playerSelectChooseCharacter() %></h2>
Expand Down
2 changes: 1 addition & 1 deletion apps/src/craft/aquatic/craft.js
Expand Up @@ -3,7 +3,7 @@ import React from 'react';
import ReactDOM from 'react-dom';
import trackEvent from '../../util/trackEvent';
import {singleton as studioApp} from '@cdo/apps/StudioApp';
import craftMsg from '../simple/locale';
import craftMsg from '../locale';
import CustomMarshalingInterpreter from '../../lib/tools/jsinterpreter/CustomMarshalingInterpreter';
import {
GameController,
Expand Down
2 changes: 1 addition & 1 deletion apps/src/craft/code-connection/blocks.js
@@ -1,4 +1,4 @@
var i18n = require('./locale');
var i18n = require('../locale');
import items from './items';

// Helper functions for block string
Expand Down
@@ -1,4 +1,4 @@
<% var i18n = require('../locale'); %>
<% var i18n = require('../../locale'); %>
<h1 class="minecraft-big-yellow-header" id="getting-started-header"><%= i18n.minecraftNotConnected() %></h1>

<h2 id="download-text"><%= i18n.connectToCodeConnection() %></h2>
Expand Down
@@ -1,4 +1,4 @@
<% var i18n = require('../locale'); %>
<% var i18n = require('../../locale'); %>
<h1 class="minecraft-big-yellow-header" id="import-header"><%= i18n.importShareLinkHeader() %></h1>

<h2><%= i18n.importShareLinkBody() %></h2>
Expand Down
1 change: 0 additions & 1 deletion apps/src/craft/code-connection/locale.js

This file was deleted.

2 changes: 1 addition & 1 deletion apps/src/craft/designer/CraftVisualizationColumn.jsx
@@ -1,7 +1,7 @@
import PropTypes from 'prop-types';
import React from 'react';
import msg from '@cdo/locale';
import craftMsg from './locale';
import craftMsg from '../locale';

import {default as GameButtons} from '../../templates/GameButtons';
import BelowVisualization from '../../templates/BelowVisualization';
Expand Down
57 changes: 7 additions & 50 deletions apps/src/craft/designer/blocks.js
@@ -1,8 +1,9 @@
const i18n = require('./locale');
const i18n = require('../locale');
import {singleton as studioApp} from '../../StudioApp';
import {stripQuotes} from '../../utils';
import _ from 'lodash';
import {EventType} from '@code-dot-org/craft';
import {BLOCK_NAME_TO_DISPLAY_TEXT} from '../utils';

const ENTITY_INPUT_EXTRA_SPACING = 14;

Expand All @@ -15,51 +16,6 @@ const NUMBERS_TO_DISPLAY_TEXT = {
random: i18n.timeRandom()
};

const BLOCKS_TO_DISPLAY_TEXT = {
bedrock: i18n.blockTypeBedrock(),
bricks: i18n.blockTypeBricks(),
clay: i18n.blockTypeClay(),
oreCoal: i18n.blockTypeOreCoal(),
dirtCoarse: i18n.blockTypeDirtCoarse(),
cobblestone: i18n.blockTypeCobblestone(),
oreDiamond: i18n.blockTypeOreDiamond(),
dirt: i18n.blockTypeDirt(),
oreEmerald: i18n.blockTypeOreEmerald(),
farmlandWet: i18n.blockTypeFarmlandWet(),
glass: i18n.blockTypeGlass(),
oreGold: i18n.blockTypeOreGold(),
grass: i18n.blockTypeGrass(),
gravel: i18n.blockTypeGravel(),
ice: i18n.blockTypeIce(),
snow: i18n.blockTypeSnow(),
netherrack: i18n.blockTypeNetherrack(),
netherBrick: i18n.blockTypeNetherBrick(),
clayHardened: i18n.blockTypeClayHardened(),
oreIron: i18n.blockTypeOreIron(),
oreLapis: i18n.blockTypeOreLapis(),
lava: i18n.blockTypeLava(),
logAcacia: i18n.blockTypeLogAcacia(),
logBirch: i18n.blockTypeLogBirch(),
logJungle: i18n.blockTypeLogJungle(),
logOak: i18n.blockTypeLogOak(),
logSpruce: i18n.blockTypeLogSpruce(),
planksAcacia: i18n.blockTypePlanksAcacia(),
planksBirch: i18n.blockTypePlanksBirch(),
planksJungle: i18n.blockTypePlanksJungle(),
planksOak: i18n.blockTypePlanksOak(),
planksSpruce: i18n.blockTypePlanksSpruce(),
oreRedstone: i18n.blockTypeOreRedstone(),
rail: i18n.blockTypeRail(),
sand: i18n.blockTypeSand(),
sandstone: i18n.blockTypeSandstone(),
stone: i18n.blockTypeStone(),
tnt: i18n.blockTypeTnt(),
tree: i18n.blockTypeTree(),
water: i18n.blockTypeWater(),
wool: i18n.blockTypeWool(),
'': i18n.blockTypeEmpty()
};

const MINIBLOCKS_TO_DISPLAY_TEXT = {
dirt: i18n.miniBlockDirt(),
dirtCoarse: i18n.miniBlockDirtCoarse(),
Expand Down Expand Up @@ -165,16 +121,17 @@ const DIRECTIONS_TO_DISPLAY_TEXT = {
};

/**
* Converts an array of keys into a blockly-friendly set of dropdown options,
* in the form of [[displayText, key], [displayText, key]], grabbing key
* translations from a set of key -> i18n string mappings.
* Reimplement utils.blockTypesToDropdownOptions with support for a wider
* variety of displayable things than just blocks.
*
* @see utils.blockTypesToDropdownOptions
* @param keysList
* @returns {Array.<Array.<String>>}
*/
function keysToDropdownOptions(keysList) {
return keysList.map(function(key) {
var displayText =
BLOCKS_TO_DISPLAY_TEXT[key] ||
BLOCK_NAME_TO_DISPLAY_TEXT[key] ||
NUMBERS_TO_DISPLAY_TEXT[key] ||
DIRECTIONS_TO_DISPLAY_TEXT[key] ||
ENTITY_TYPES_TO_DISPLAY_TEXT[key] ||
Expand Down
2 changes: 1 addition & 1 deletion apps/src/craft/designer/craft.js
Expand Up @@ -5,7 +5,7 @@ import _ from 'lodash';
import Hammer from 'hammerjs';

import {singleton as studioApp} from '../../StudioApp';
import craftMsg from './locale';
import craftMsg from '../locale';
import CustomMarshalingInterpreter from '../../lib/tools/jsinterpreter/CustomMarshalingInterpreter';
import {
GameController,
Expand Down
2 changes: 1 addition & 1 deletion apps/src/craft/designer/dialogs/playerSelection.html.ejs
@@ -1,4 +1,4 @@
<% var i18n = require('../locale'); %>
<% var i18n = require('../../locale'); %>
<h1 style="color: #e7e8ea; margin-bottom: 23px;" class="minecraft-big-yellow-header" id="getting-started-header"><%= i18n.playerSelectChooseCharacter() %></h1>

<!--<h2 id="select-character-text"><%= i18n.playerSelectChooseCharacter() %></h2>-->
Expand Down
1 change: 0 additions & 1 deletion apps/src/craft/designer/locale.js

This file was deleted.

File renamed without changes.
61 changes: 5 additions & 56 deletions apps/src/craft/simple/blocks.js
@@ -1,49 +1,5 @@
var i18n = require('./locale');

var blocksToDisplayText = {
bedrock: i18n.blockTypeBedrock(),
bricks: i18n.blockTypeBricks(),
clay: i18n.blockTypeClay(),
oreCoal: i18n.blockTypeOreCoal(),
dirtCoarse: i18n.blockTypeDirtCoarse(),
cobblestone: i18n.blockTypeCobblestone(),
oreDiamond: i18n.blockTypeOreDiamond(),
dirt: i18n.blockTypeDirt(),
oreEmerald: i18n.blockTypeOreEmerald(),
farmlandWet: i18n.blockTypeFarmlandWet(),
glass: i18n.blockTypeGlass(),
oreGold: i18n.blockTypeOreGold(),
grass: i18n.blockTypeGrass(),
gravel: i18n.blockTypeGravel(),
ice: i18n.blockTypeIce(),
snow: i18n.blockTypeSnow(),
netherrack: i18n.blockTypeNetherrack(),
netherBrick: i18n.blockTypeNetherBrick(),
clayHardened: i18n.blockTypeClayHardened(),
oreIron: i18n.blockTypeOreIron(),
oreLapis: i18n.blockTypeOreLapis(),
lava: i18n.blockTypeLava(),
logAcacia: i18n.blockTypeLogAcacia(),
logBirch: i18n.blockTypeLogBirch(),
logJungle: i18n.blockTypeLogJungle(),
logOak: i18n.blockTypeLogOak(),
logSpruce: i18n.blockTypeLogSpruce(),
planksAcacia: i18n.blockTypePlanksAcacia(),
planksBirch: i18n.blockTypePlanksBirch(),
planksJungle: i18n.blockTypePlanksJungle(),
planksOak: i18n.blockTypePlanksOak(),
planksSpruce: i18n.blockTypePlanksSpruce(),
oreRedstone: i18n.blockTypeOreRedstone(),
rail: i18n.blockTypeRail(),
sand: i18n.blockTypeSand(),
sandstone: i18n.blockTypeSandstone(),
stone: i18n.blockTypeStone(),
tnt: i18n.blockTypeTnt(),
tree: i18n.blockTypeTree(),
water: i18n.blockTypeWater(),
wool: i18n.blockTypeWool(),
'': i18n.blockTypeEmpty()
};
var i18n = require('../locale');
import {blockTypesToDropdownOptions} from '../utils';

var allBlocks = [
'bedrock',
Expand Down Expand Up @@ -83,13 +39,6 @@ var allBlocks = [
'wool'
];

function keysToDropdownOptions(keysList) {
return keysList.map(function(key) {
var displayText = blocksToDisplayText[key] || key;
return [displayText, key];
});
}

// Install extensions to Blockly's language and JavaScript generator.
exports.install = function(blockly, blockInstallOptions) {
var dropdownBlocks = (blockInstallOptions.level.availableBlocks || []).concat(
Expand Down Expand Up @@ -192,7 +141,7 @@ exports.install = function(blockly, blockInstallOptions) {
blockly.Blocks.craft_ifBlockAhead = {
helpUrl: '',
init: function() {
var dropdownOptions = keysToDropdownOptions(
var dropdownOptions = blockTypesToDropdownOptions(
craftBlockOptions.ifBlockOptions || allDropdownBlocks
);
var dropdown = new blockly.FieldDropdown(dropdownOptions);
Expand Down Expand Up @@ -253,7 +202,7 @@ exports.install = function(blockly, blockInstallOptions) {
blockly.Blocks.craft_placeBlock = {
helpUrl: '',
init: function() {
var dropdownOptions = keysToDropdownOptions(
var dropdownOptions = blockTypesToDropdownOptions(
craftBlockOptions.placeBlockOptions || allDropdownBlocks
);
var dropdown = new blockly.FieldDropdown(dropdownOptions);
Expand Down Expand Up @@ -318,7 +267,7 @@ exports.install = function(blockly, blockInstallOptions) {
blockly.Blocks.craft_placeBlockAhead = {
helpUrl: '',
init: function() {
var dropdownOptions = keysToDropdownOptions(
var dropdownOptions = blockTypesToDropdownOptions(
craftBlockOptions.placeBlockOptions || allDropdownBlocks
);
var dropdown = new blockly.FieldDropdown(dropdownOptions);
Expand Down
2 changes: 1 addition & 1 deletion apps/src/craft/simple/craft.js
Expand Up @@ -3,7 +3,7 @@ import React from 'react';
import ReactDOM from 'react-dom';
import trackEvent from '../../util/trackEvent';
var studioApp = require('../../StudioApp').singleton;
var craftMsg = require('./locale');
var craftMsg = require('../locale');
import CustomMarshalingInterpreter from '../../lib/tools/jsinterpreter/CustomMarshalingInterpreter';
import {
GameController,
Expand Down
2 changes: 1 addition & 1 deletion apps/src/craft/simple/dialogs/houseSelection.html.ejs
@@ -1,4 +1,4 @@
<% var i18n = require('../locale'); %>
<% var i18n = require('../../locale'); %>
<h1 class="minecraft-big-yellow-header" id="getting-started-header"><%= i18n.houseSelectLetsBuild() %></h1>

<h2 id="select-house-text"><%= i18n.houseSelectChooseFloorPlan() %></h2>
Expand Down
2 changes: 1 addition & 1 deletion apps/src/craft/simple/dialogs/playerSelection.html.ejs
@@ -1,4 +1,4 @@
<% var i18n = require('../locale'); %>
<% var i18n = require('../../locale'); %>
<h1 class="minecraft-big-yellow-header" id="getting-started-header"><%= i18n.playerSelectLetsGetStarted() %></h1>

<h2 id="select-character-text"><%= i18n.playerSelectChooseCharacter() %></h2>
Expand Down
2 changes: 1 addition & 1 deletion apps/src/craft/simple/levelbuilderOverrides.js
Expand Up @@ -3,7 +3,7 @@
* Keyed by "puzzle_number", which is the order of a given level in its script.
*/

var i18n = require('./locale');
var i18n = require('../locale');

module.exports = {
1: {
Expand Down
1 change: 0 additions & 1 deletion apps/src/craft/simple/locale.js

This file was deleted.