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.

Drop-down menus

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 589 258 56% 0% 1%
ace: Achinese 576 536 6% 0% 0%
acm: Iraqi Arabic 576 553 3% 0% 0%
af: Afrikaans 576 542 5% 0% 1%
am: Amharic 576 296 48% 19% 0%
ar: Arabic 596 1 99% 96% 0%
as: Assamese 576 554 3% 0% 0%
ast: Asturian 576 448 22% 0% 0%
atj: Atikamekw 578 559 3% 0% 0%
awa: Awadhi 576 553 3% 0% 0%
az: Azerbaijani 585 139 76% 0% 0%
azb: South Azerbaijani 576 463 19% 0% 1%
ba: Bashkir 589 294 50% 89% 1%
ban: Balinese 576 553 3% 91% 0%
bcc: Southern Balochi 592 262 55% 0% 3%
bcl: Central Bikol 576 557 3% 0% 0%
be: Belarusian 594 75 87% 0% 3%
be-tarask: Belarusian (Taraškievica orthography) 585 7 98% 10% 2%
bg: Bulgarian 591 1 99% 98% 0%
bgn: Western Balochi 576 556 3% 0% 0%
blk: Pa'O 579 550 5% 0% 0%
bn: Bangla 581 202 65% 5% 3%
br: Breton 582 2 99% 0% 0%
bs: Bosnian 583 382 34% 10% 0%
btm: Batak Mandailing 576 499 13% 75% 0%
ca: Catalan 595 11 98% 1% 1%
ce: Chechen 577 160 72% 0% 1%
ckb: Central Kurdish 578 506 12% 9% 1%
co: Corsican 576 520 9% 0% 0%
crh-latn: Crimean Tatar (Latin script) 576 554 3% 0% 0%
cs: Czech 593 62 89% 46% 1%
csb: Kashubian 576 526 8% 2% 1%
da: Danish 592 1 99% 45% 0%
de: German 608 1 99% 91% 0%
diq: Zazaki 581 168 71% 5% 0%
dtp: Central Dusun 576 372 35% 16% 0%
dty: Doteli 577 489 15% 0% 0%
ee: Ewe 582 379 34% 0% 0%
el: Greek 588 8 98% 56% 2%
en: English 648 0 100% 0% 0%
en-gb: British English 577 384 33% 7% 0%
eo: Esperanto 593 9 98% 2% 0%
es: Spanish 594 0 100% 98% 0%
et: Estonian 583 108 81% 10% 0%
eu: Basque 588 155 73% 99% 1%
fa: Persian 594 107 81% 95% 2%
fi: Finnish 592 2 99% 86% 0%
fo: Faroese 576 281 51% 98% 0%
fr: French 608 1 99% 66% 0%
fur: Friulian 577 529 8% 0% 0%
fy: Western Frisian 578 487 15% 0% 1%
ga: Irish 576 508 11% 0% 0%
gl: Galician 584 1 99% 33% 0%
glk: Gilaki 576 562 2% 0% 0%
gn: Guarani 577 501 13% 0% 0%
gom-deva: Goan Konkani (Devanagari script) 576 558 3% 0% 0%
gom-latn: Goan Konkani (Latin script) 576 558 3% 0% 0%
gor: Gorontalo 577 487 15% 0% 1%
gu: Gujarati 576 504 12% 0% 0%
ha: Hausa 576 14 97% 0% 1%
hak: Hakka Chinese 576 538 6% 0% 1%
he: Hebrew 591 1 99% 39% 0%
hi: Hindi 576 113 80% 71% 1%
hif-latn: Fiji Hindi (Latin script) 576 537 6% 0% 0%
hr: Croatian 583 9 98% 99% 0%
hrx: Hunsrik 592 232 60% 0% 1%
hsb: Upper Sorbian 576 456 20% 0% 0%
hu: Hungarian 600 50 91% 75% 1%
hy: Armenian 585 2 99% 54% 0%
hyw: Western Armenian 576 521 9% 0% 0%
ia: Interlingua 586 0 100% 10% 0%
id: Indonesian 577 1 99% 42% 0%
ig: Igbo 576 6 98% 0% 1%
inh: Ingush 581 448 22% 84% 1%
io: Ido 576 521 9% 0% 0%
is: Icelandic 582 14 97% 6% 0%
it: Italian 595 26 95% 3% 0%
ja: Japanese 596 1 99% 45% 0%
ka: Georgian 576 563 2% 15% 1%
kab: Kabyle 578 10 98% 54% 0%
kbd-cyrl: Kabardian (Cyrillic script) 591 424 28% 0% 1%
kjh: Khakas 576 543 5% 0% 0%
kjp: Eastern Pwo 576 556 3% 0% 0%
km: Khmer 576 547 5% 0% 1%
kn: Kannada 576 2 99% 92% 0%
ko: Korean 604 11 98% 17% 2%
krl: Karelian 578 482 16% 45% 0%
ksh: Colognian 576 531 7% 2% 1%
ku-latn: Kurdish (Latin script) 576 519 9% 47% 0%
kum: Kumyk 576 485 15% 0% 1%
ky: Kyrgyz 577 504 12% 2% 1%
lag: Langi 576 554 3% 0% 0%
lb: Luxembourgish 577 317 45% 22% 0%
lez: Lezghian 577 553 4% 0% 0%
lfn: Lingua Franca Nova 576 558 3% 0% 0%
lki: Laki 579 168 70% 0% 1%
lo: Lao 579 494 14% 0% 0%
lrc: Northern Luri 576 398 30% 0% 1%
lt: Lithuanian 580 19 96% 21% 0%
lv: Latvian 580 64 88% 82% 0%
mg: Malagasy 576 485 15% 0% 0%
mk: Macedonian 587 318 45% 8% 1%
ml: Malayalam 576 540 6% 13% 1%
mnw: Mon 577 457 20% 0% 1%
mr: Marathi 576 475 17% 0% 1%
ms: Malay 588 87 85% 0% 3%
my: Burmese 580 308 46% 87% 1%
nah: Nāhuatl 576 555 3% 0% 0%
nan: Minnan 576 543 5% 0% 0%
nb: Norwegian Bokmål 580 1 99% 6% 0%
ne: Nepali 576 308 46% 7% 0%
nl: Dutch 595 1 99% 23% 0%
nog: Nogai 576 536 6% 0% 0%
nqo: N’Ko 576 558 3% 0% 0%
oc: Occitan 582 232 60% 2% 1%
ojb: Northwestern Ojibwa 576 544 5% 0% 0%
olo: Livvi-Karelian 576 479 16% 14% 1%
os: Ossetic 576 555 3% 0% 0%
pa: Punjabi 578 476 17% 39% 1%
pl: Polish 589 1 99% 39% 0%
pms: Piedmontese 576 1 99% 0% 0%
pnb: Western Punjabi 576 560 2% 0% 0%
ps: Pashto 577 494 14% 0% 1%
pt: Portuguese 596 1 99% 12% 0%
pt-br: Brazilian Portuguese 596 1 99% 98% 0%
qqq: Message documentation 648 0 100% 0% 0%
ro: Romanian 583 7 98% 5% 1%
ru: Russian 597 0 100% 94% 0%
sat: Santali 576 526 8% 0% 0%
sc: Sardinian 576 106 81% 7% 3%
scn: Sicilian 580 489 15% 0% 0%
sco: Scots 576 491 14% 0% 1%
sd: Sindhi 581 292 49% 32% 1%
sdc: Sassarese Sardinian 582 517 11% 0% 0%
sdh: Southern Kurdish 576 532 7% 0% 0%
se: Northern Sami 576 552 4% 0% 0%
shn: Shan 582 481 17% 0% 0%
si: Sinhala 576 538 6% 7% 0%
sk: Slovak 581 6 98% 84% 0%
skr-arab: Saraiki (Arabic script) 577 388 32% 0% 0%
sl: Slovenian 602 1 99% 43% 0%
smn: Inari Sami 577 321 44% 0% 0%
sms: Skolt Sami 576 512 11% 0% 0%
sq: Albanian 594 2 99% 0% 0%
sr-ec: Serbian (Cyrillic script) 592 3 99% 50% 0%
sr-el: Serbian (Latin script) 588 66 88% 0% 3%
sro: Campidanese Sardinian 576 544 5% 0% 0%
sv: Swedish 593 2 99% 97% 1%
sw: Swahili 576 534 7% 0% 1%
ta: Tamil 582 192 67% 1% 2%
tcy: Tulu 590 210 64% 45% 1%
tdd: Tai Nuea 582 481 17% 0% 0%
te: Telugu 579 448 22% 2% 1%
th: Thai 587 9 98% 51% 0%
ti: Tigrinya 576 277 51% 0% 0%
tl: Tagalog 576 454 21% 0% 0%
tly: Talysh 576 541 6% 0% 0%
tn: Tswana 576 538 6% 2% 1%
tr: Turkish 601 1 99% 96% 0%
tt-cyrl: Tatar (Cyrillic script) 581 532 8% 0% 0%
ug-arab: Uyghur (Arabic script) 587 463 21% 0% 0%
uk: Ukrainian 596 8 98% 63% 0%
ur: Urdu 576 219 61% 78% 1%
uz: Uzbek 576 444 22% 0% 0%
vi: Vietnamese 586 6 98% 99% 1%
xmf: Mingrelian 580 466 19% 0% 1%
yi: Yiddish 576 558 3% 0% 0%
yo: Yoruba 579 14 97% 0% 1%
zgh: Standard Moroccan Tamazight 576 477 17% 35% 0%
zh-hans: Simplified Chinese 598 0 100% 42% 0%
zh-hant: Traditional Chinese 598 0 100% 84% 0%
zh-hk: Chinese (Hong Kong) 577 549 4% 0% 0%
All 172 languages together 100,214 52,446 47% 36% 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).