Jump to content

Translating:Blockly

From translatewiki.net
Visual example of a program in Blocky.
Visual example of a program in Blocky.

Blockly (repository) is an open source project to help people, especially children, learn to program computers. Blockly programs consist of connected "blocks" of code. It consists of:

  • an extensible visual programming environment
  • a set of educational games for children (or others)

Internationalization, being gender-neutral, and being accessible in a variety of cultures are key priorities.

Contacts: Sean Lip, NeilFraser.

General translation notes

Tense

Our target audience is individual or small groups of children. Please use gender-neutral forms if possible in your language.

Style

The tone is informal and conversational, and we prefer short phrases to long ones, such as "if path ahead" instead of "if there is a path ahead". Translations need not be exact.

Rigor

It is more important that language be clear to beginners than that it matches what experienced programmers use. For example, we use the term "text" instead of "string", and we use "list" instead of "array". A more technical example is that we use 1-based indexing instead of the more common 0-based indexing.

Consistency

Consistency is important. In English, for example, we have gone back and forth on whether to use the term "function" or "procedure". What is more important than which term is chosen is that the same term is used throughout. See Blockly Terms for how key Blockly terms appearing in multiple messages have been translated (if at all) into your language. If agreement among translators cannot be reached, please ask for help.

Symbols

If any mathematical (or other) symbols are inappropriate in your language but are not offered for customization, please let us know.

Special terms

Blockly
Our recommendation is that the name of the project be left as is in languages using the Latin alphabet and that it be transliterated in other languages, possibly in parentheses, such as "Blockly (Блoкли)" in Russian.
block
Blocks in Blockly programs should be translated as children's building blocks. If that doesn't work in your language, "puzzle piece" is also acceptable.

Plural

Plural formatting is not supported.

Ordinal numbers

Some blocks refer to the nth item in a list or piece of text, where n is an arbitrary number or expression. In English, such a number is preceded by "#", which is included in the messages that precede the space in which the number would go:

try out block

Hungarian requires that such numbers or expressions be followed by a dot ("."). A special message ORDINAL_NUMBER_SUFFIX has the value "." for Hungarian and is automatically placed after each ordinal number (but not after the words for "first" or "last", which are already ordinal).

The Hungarian block above also includes a "tail" (final piece of text after the last block). Most languages do not require support for ordinal numbers or for tails, in which case those messages should be the empty string.

The Blockly language

All of the tutorials and applications use a subset or all of the Blockly language, which consists of blocks representing aspects of programming languages, such as control structure, creation of variables and procedures, and library routines. You can play with the blocks at https://blockly-demo.appspot.com/static/demos/code/index.html

The toolbox, workspace, and categories

The below picture shows:

  • the toolbox (in grey), which is where the user gets blocks.
  • the workspace (in white), which is where the user places blocks to build the program.

In the above picture, the toolbox is closed, and only category names (such as "Control" and "Logic") can be seen. One block is in the workspace. In the below picture, the user has clicked on "Control", causing the category to be expanded and the blocks shown. This screen also has tabs to show the JavaScript, Python, and XML associated with the program in the workspace. Currently, the "Blocks" tab is selected.

Messages associated with blocks

There are many different types of messages associated with blocks, illustrated in the pictures below:

  • Block text, such as "colour with" in the below blocks.
  • Block input text, such as "red", "green", and "blue", where other blocks can be attached.
  • Tooltip, displayed when the user hovers the mouse over a block, shown in a yellow background, as in the picture below. The translator should not insert newline characters ('\n' or <br/>), which are added automatically. Tooltips should be full sentences.
  • Context menu, displayed when the user right-clicks on a block, shown in a white background. Please read Context menus below.
  • URL, which is opened in another tab when the user clicks on the "Help" context menu item. If the link is to Wikipedia, the easiest way to translate it is by seeing if there is a corresponding Wikipedia change in the target language. If none can be found easily, it is fine to leave the URL untranslated.
  • Drop-down menu, one of multiple choices on a drop-down menu. Please read Drop-down menus below.

Context menus

Note that the block below is highlighted (surrounded by a thin orange outline), indicating that the user has selected it. Clicking on any of the context menu items affects the highlighted block. Some items, such as "Duplicate", "Disable", and "Delete" also affect any contained blocks (such as the number 20 in this example).

Selecting Inline Inputs transforms the block to the following form:

Restoring the default display is done through the context menu item External Inputs (not shown).

Infrequent message types

There are additional types of messages associated with a few blocks:

  • grammar, which is currently only used for handling ordinal numbers.
  • drop-down choice,, such as "Rename variable..." and "New variable..." in the below left picture, which allow the user to change the name of the variable named "item" or create a new variable, using an a drop-down menu showing possible variable names and options to input a new name or rename an existing one in a prompt dialog.
  • prompt, as in the text 'Rename all %1 variables..." in the below right picture.
  • default name, for the default variable name "item", which can be changed to something more specific by the user.

Reconfiguring blocks

Conditional blocks (if / else if... / else)

A few blocks can be reconfigured. For example, an "if" block can be reconfigured to have any number of "else if" sections. The user makes such modifications by clicking on the star (formerly a "+" sign) in the upper left corner of the block, which opens a configuration tool, shown below:

Any number of "else if" blocks, and up to one "else" block, may be added to the "if" block.

Function definitions

Similarly, any number of inputs (also known as "parameters") can be added to function definitions:

This is an advanced feature, and it is not necessary to understand it in order to do translations.

Blockly games

Each game has its own messages. There are also messages of the following types that are used by multiple applications:

  • alert, pop-up error messages, such as if the user tries to retrieve a program that cannot be found.
  • category, the names of categories (such as "Math" and Text") into which blocks are organized.
  • variable name, such as the second occurrences of "text" and "list" in the below picture. These are the default names for variables containing text and lists, respectively.

Puzzle

The introductory puzzle teaches people how to use the blocks. It is the easiest to translate, as it contains no technical terms.

Maze

The maze game has the user guide a character to a goal. It is the most popular Blockly game.

Maze-specific terms

level
Tutorials are divided into numbered levels, like the levels in a video game. The first level of each tutorial is 1. Harder levels have higher numbers.
player
Term for the character moved by the user's commands. This was originally "Pegman", but we added skins to change the character's appearance. We chose the English-language term "player" over "character" or "avatar", because "player" is simpler and shorter.

Messages associated with blocks

  • warning: message conveying important information to user (namely how many blocks they have left).
  • alert: message in popup window either congratulating the user for completing a level or notifying them of an error.
  • instructions: one or more short sentences introducing the current level. In the screenshot at the beginning of this section, the instructions are: "A program is a sequence of blocks. Stack a couple of 'move forward' blocks together to help me reach the goal". The word 'program' refers to a computer program, and the words for 'stack' and 'blocks' should be the same as for stacking children's blocks. Use the imperative verb form appropriate for speaking to a child, gender unspecified. If no gender-neutral singular/familiar form exists but a gender-neutral plural/formal form exists, use that instead.
  • dropdown: described below.

Related instructions (such as "turn left" and "turn right") are represented by a single block that contains an input field opening a drop-down selection menu when clicked, as shown in the image below. The translator does not need to do anything special for words (such as "turn") to be pulled out of drop-down selection menus; common left or right substrings delimited with spaces are automatically recognized and extracted.

In some languages, such as Vietnamese, it would not be appropriate to extract common substrings. If the translator set Maze.turnLeft to "quay qua trái" and Maze.turnRight to "quay qua phải", this drop-down field would be created, which would look wrong to a Vietnamese speaker:

Instead, the translator should replace spaces that delimit words by a non-breaking space character (\u00A0), to prevent either word from being extracted separately. In our example, the translator would set Maze.turnLeft to "quay qua\u00A0trái" and "Maze.turnRight" to "quay qua\u00A0phải", which gives the correct drop-down menu:

In languages without spaces between words, such as Chinese, the translator should insert a space where a break should occur. For more detail, see the Blockly documentation on drop-down selection menus.

Turtle graphics

The Turtle game enables users to draw pictures through the use of "turtle graphics", which originated with the Logo programming language. With turtle graphics, the user directs an imaginary turtle (represented as a green circle) to move, turn, change its pen width, etc., in order to draw a picture. As with all of our applications, translators are encouraged to try it out.

See discussion above about dropdown menus.

Sub-projects (message groups)

Exports

Languages with translation completion less than 25% are not committed to version control. If the project consists of multiple message groups, the limit is applied to each group separately.

Translation updates are exported to version control every Monday and Thursday.

Activity


Translation statistics

The numbers shown below are cached and may not show the latest status. See this stats page for always up-to-date statistics.

Language Messages Untranslated Completion Reviewed Outdated
ab: Abkhazian 612 277 54% 0% 1%
ace: Acehnese 599 559 6% 0% 0%
acm: Iraqi Arabic 599 559 6% 0% 0%
af: Afrikaans 599 565 5% 0% 1%
am: Amharic 599 319 46% 19% 0%
ar: Arabic 619 0 100% 93% 0%
as: Assamese 599 577 3% 0% 0%
ast: Asturian 599 471 21% 0% 0%
atj: Atikamekw 601 582 3% 0% 0%
awa: Awadhi 599 576 3% 0% 0%
az: Azerbaijani 608 162 73% 1% 0%
azb: South Azerbaijani 599 486 18% 0% 1%
ba: Bashkir 612 317 48% 89% 1%
ban: Balinese 599 576 3% 91% 0%
bcc: Southern Balochi 615 285 53% 0% 2%
bcl: Central Bikol 599 580 3% 0% 0%
be: Belarusian 617 97 84% 0% 3%
be-tarask: Belarusian (Taraškievica orthography) 608 29 95% 9% 1%
bg: Bulgarian 614 23 96% 99% 0%
bgn: Western Balochi 599 579 3% 0% 0%
blk: Pa'O 602 573 4% 0% 0%
bn: Bangla 604 224 62% 5% 2%
br: Breton 605 25 95% 0% 0%
bs: Bosnian 606 405 33% 10% 0%
btm: Batak Mandailing 599 522 12% 75% 0%
ca: Catalan 618 34 94% 1% 1%
ce: Chechen 600 181 69% 0% 1%
ckb: Central Kurdish 601 529 11% 9% 1%
co: Corsican 599 543 9% 0% 0%
crh-latn: Crimean Tatar (Latin script) 599 577 3% 0% 0%
cs: Czech 616 84 86% 46% 1%
csb: Kashubian 599 549 8% 2% 1%
da: Danish 615 24 96% 45% 0%
de: German 631 23 96% 91% 0%
diq: Dimli 604 184 69% 5% 0%
dtp: Central Dusun 599 395 34% 16% 0%
dty: Doteli 600 512 14% 0% 0%
ee: Ewe 605 402 33% 0% 0%
el: Greek 611 24 96% 56% 2%
en: English 672 0 100% 0% 0%
en-gb: British English 600 407 32% 7% 0%
eo: Esperanto 616 32 94% 2% 0%
es: Spanish 618 23 96% 99% 0%
et: Estonian 606 96 84% 10% 0%
eu: Basque 611 178 70% 99% 1%
fa: Persian 617 129 79% 95% 2%
fi: Finnish 615 23 96% 86% 0%
fo: Faroese 599 304 49% 98% 0%
fr: French 631 0 100% 64% 0%
fur: Friulian 600 552 8% 0% 0%
fy: Western Frisian 601 510 15% 0% 1%
ga: Irish 599 531 11% 0% 0%
gl: Galician 608 0 100% 32% 0%
glk: Gilaki 599 585 2% 0% 0%
gn: Guarani 600 524 12% 0% 0%
gom-deva: Goan Konkani (Devanagari script) 599 581 3% 0% 0%
gom-latn: Goan Konkani (Latin script) 599 581 3% 0% 0%
gor: Gorontalo 600 510 15% 0% 1%
gu: Gujarati 599 527 12% 0% 0%
ha: Hausa 599 37 93% 0% 1%
he: Hebrew 618 7 98% 40% 0%
hi: Hindi 599 136 77% 71% 1%
hif-latn: Fiji Hindi (Latin script) 599 560 6% 0% 0%
hr: Croatian 606 23 96% 98% 0%
hrx: Hunsrik 615 255 58% 0% 1%
hsb: Upper Sorbian 599 479 20% 0% 0%
hu: Hungarian 623 73 88% 75% 1%
hy: Armenian 608 25 95% 54% 0%
hyw: Western Armenian 599 544 9% 0% 0%
ia: Interlingua 610 0 100% 10% 0%
id: Indonesian 600 23 96% 42% 0%
ig: Igbo 599 29 95% 0% 1%
inh: Ingush 604 471 22% 84% 1%
io: Ido 599 521 13% 0% 0%
is: Icelandic 605 37 93% 6% 0%
it: Italian 618 29 95% 4% 0%
ja: Japanese 619 23 96% 45% 0%
ka: Georgian 599 585 2% 14% 1%
kaa: Kara-Kalpak 599 558 6% 0% 0%
kab: Kabyle 601 25 95% 54% 1%
kbd-cyrl: Kabardian (Cyrillic script) 614 447 27% 0% 1%
kjh: Khakas 599 566 5% 0% 0%
kjp: Eastern Pwo 599 579 3% 0% 0%
km: Khmer 599 570 4% 0% 1%
kn: Kannada 599 25 95% 92% 0%
ko: Korean 632 16 97% 17% 0%
krc: Karachay-Balkar 666 23 96% 0% 0%
krl: Karelian 601 505 15% 45% 0%
ksh: Colognian 599 554 7% 2% 1%
ku-latn: Kurdish (Latin script) 599 542 9% 47% 0%
kum: Kumyk 599 508 15% 0% 1%
ky: Kyrgyz 600 523 12% 2% 1%
lag: Langi 599 577 3% 0% 0%
lb: Luxembourgish 600 329 45% 21% 0%
lez: Lezghian 600 576 4% 0% 0%
lfn: Lingua Franca Nova 599 581 3% 0% 0%
lki: Laki 602 191 68% 0% 1%
lo: Lao 602 517 14% 0% 0%
lrc: Northern Luri 599 421 29% 0% 1%
lt: Lithuanian 603 42 93% 21% 0%
lv: Latvian 603 87 85% 82% 0%
mag: Magahi 599 514 14% 0% 0%
mg: Malagasy 599 508 15% 0% 0%
mk: Macedonian 610 341 44% 8% 1%
ml: Malayalam 599 563 6% 13% 1%
mnw: Mon 600 479 20% 0% 0%
mr: Marathi 599 498 16% 0% 1%
ms: Malay 611 110 81% 0% 3%
my: Burmese 603 331 45% 87% 1%
nah: Nahuatl 599 578 3% 0% 0%
nan-hant: Minnan (Traditional Han script) 599 573 4% 0% 0%
nb: Norwegian Bokmål 603 23 96% 7% 0%
ne: Nepali 599 330 44% 8% 0%
nl: Dutch 618 23 96% 38% 0%
nog: Nogai 599 559 6% 0% 0%
nqo: N’Ko 599 581 3% 0% 0%
oc: Occitan 605 255 57% 2% 1%
ojb: Northwestern Ojibwa 599 567 5% 0% 0%
olo: Livvi-Karelian 599 502 16% 14% 1%
os: Ossetic 599 578 3% 0% 0%
pa: Punjabi 601 454 24% 25% 0%
pl: Polish 612 23 96% 39% 0%
pms: Piedmontese 599 0 100% 0% 0%
pnb: Western Punjabi 599 583 2% 0% 0%
ps: Pashto 600 471 21% 0% 0%
pt: Portuguese 619 23 96% 12% 0%
pt-br: Brazilian Portuguese 619 23 96% 100% 0%
qqq: Message documentation 672 0 100% 0% 0%
ro: Romanian 606 30 95% 5% 1%
ru: Russian 621 0 100% 90% 0%
sat: Santali 599 549 8% 0% 0%
sc: Sardinian 599 129 78% 7% 3%
scn: Sicilian 603 512 15% 0% 0%
sco: Scots 599 514 14% 0% 1%
sd: Sindhi 604 314 48% 32% 1%
sdc: Sassarese Sardinian 605 540 10% 0% 0%
sdh: Southern Kurdish 599 555 7% 0% 0%
se: Northern Sami 599 575 4% 0% 0%
shn: Shan 605 504 16% 0% 0%
si: Sinhala 599 561 6% 7% 0%
sk: Slovak 604 23 96% 83% 0%
skr-arab: Saraiki (Arabic script) 600 408 32% 0% 0%
sl: Slovenian 625 24 96% 43% 0%
smn: Inari Sami 600 342 43% 0% 0%
sms: Skolt Sami 599 535 10% 0% 0%
sq: Albanian 617 25 95% 0% 0%
sr-ec: Serbian (Cyrillic script) 615 26 95% 50% 0%
sr-el: Serbian (Latin script) 611 89 85% 0% 3%
sro: Campidanese Sardinian 599 567 5% 0% 0%
sv: Swedish 618 23 96% 96% 0%
sw: Swahili 599 557 7% 0% 1%
ta: Tamil 605 215 64% 1% 2%
tcy: Tulu 613 233 61% 45% 1%
tdd: Tai Nuea 605 504 16% 0% 0%
te: Telugu 602 471 21% 2% 1%
th: Thai 610 31 94% 50% 0%
ti: Tigrinya 599 300 49% 0% 0%
tl: Tagalog 599 458 23% 0% 0%
tly: Talysh 599 564 5% 0% 0%
tn: Tswana 599 561 6% 2% 1%
tok: Toki Pona 599 528 11% 0% 1%
tr: Turkish 624 23 96% 95% 0%
tt-cyrl: Tatar (Cyrillic script) 604 543 10% 0% 0%
ug-arab: Uyghur (Arabic script) 610 433 29% 0% 0%
uk: Ukrainian 619 31 94% 63% 0%
ur: Urdu 599 242 59% 78% 1%
uz: Uzbek 599 452 24% 0% 0%
vi: Vietnamese 609 14 97% 96% 2%
xmf: Mingrelian 603 486 19% 0% 1%
yi: Yiddish 599 581 3% 0% 0%
yo: Yoruba 602 37 93% 0% 1%
zgh: Standard Moroccan Tamazight 599 500 16% 33% 0%
zh-hans: Simplified Chinese 622 11 98% 41% 0%
zh-hant: Traditional Chinese 622 23 96% 83% 0%
zh-hk: Chinese (Hong Kong) 600 567 5% 0% 0%
All 175 languages together 106,053 56,841 46% 35% 1%

Map of translators

Loading map...

Add yourself to map See also: Category:Blockly translators — all users that registered their participation in their user page (including those not indicating their location).