diff --git a/README.md b/README.md
index 59d48c99..1f81fbc4 100644
--- a/README.md
+++ b/README.md
@@ -482,3 +482,7 @@ Once you get going you might just end up with something that looks a little like
You can see the construction code here for more clarity on how to perform advanced configuration:
[PHP School](https://github.com/php-school/php-workshop/blob/3240d3217bbf62b1063613fc13eb5adff2299bbe/src/Factory/MenuFactory.php)
+
+### Docs Translations
+_(This might not be kept up-to-date since it's a community translation)_
+See this doc in [Brazilian Portuguese (pt_BR)](docs/pt_BR/README.md)
\ No newline at end of file
diff --git a/docs/pt_BR/README.md b/docs/pt_BR/README.md
new file mode 100644
index 00000000..2aa9e5d3
--- /dev/null
+++ b/docs/pt_BR/README.md
@@ -0,0 +1,487 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+---
+
+### Instalação
+
+```bash
+composer require php-school/cli-menu
+```
+
+### Modo de Usar
+
+#### Instalação rápida
+Um exemplo básico bem simples de menu onde será apenas exibido o text do item selecionado, apenas para você iniciar.
+```php
+getSelectedItem()->getText();
+};
+
+$menu = (new CliMenuBuilder)
+ ->setTitle('Basic CLI Menu')
+ ->addItem('First Item', $itemCallable)
+ ->addItem('Second Item', $itemCallable)
+ ->addItem('Third Item', $itemCallable)
+ ->addLineBreak('-')
+ ->build();
+
+$menu->open();
+```
+
+
+#### Examples
+
+Veja mais [exemplos](examples) na pasta de exemplos e execute-os para ver todas as possibilidades.
+
+##### Menu Básico
+
+
+##### Menu Básico com Separação
+
+
+##### Menu Básico com Separação bem louca
+
+
+##### Estilos Personalizados
+
+
+##### Separação Útil
+
+
+##### Itens adicionais
+
+
+##### Remover padrão
+
+
+##### Sub-menu
+
+
+
+##### Desabilitar Itens & Sub-menus
+
+
+##### Mensagem instantânea
+
+
+##### Caixa de confirmação
+
+
+### API
+
+O objeto `CliMenu` construído pela classe Builder
+
+```php
+$menu = (new CliMenuBuilder)
+ /**
+ * Customise
+ **/
+ ->build();
+```
+
+Assim que você tem o objeto de menu, você pode abri-lo e fecha-lo da seguinte forma:
+
+```php
+$menu->open();
+$menu->close();
+```
+
+#### Aparência
+
+Você pode trocar a cor do primeiro plano e do plano de fundo do menu para qualquer uma das seguintes cores
+
+* black (Preto)
+* red (Vermelho)
+* green (Verde)
+* yellow (Amarelo)
+* blue (Azul)
+* magenta (Mangenta)
+* cyan (Ciano)
+* white (Branco)
+
+```php
+$menu = (new CliMenuBuilder)
+ ->setForegroundColour('green')
+ ->setBackgroundColour('black')
+ ->build();
+```
+
+A largura (width), o espaçamento (padding) e a margem (margin) também podem ser personalizadas:
+
+```php
+$menu = (new CliMenuBuilder)
+ ->setWidth(200)
+ ->setPadding(10)
+ ->setMargin(5)
+ ->build();
+```
+
+Modificar o texto do botão de sair:
+
+```php
+$menu = (new CliMenuBuilder)
+ ->setExitButtonText("Don't you want me baby?")
+ ->build();
+```
+
+Você pode remover o botão de sair, caso assim deseje:
+
+```php
+$menu = (new CliMenuBuilder)
+ ->disableDefaultItems()
+ ->build();
+```
+
+Observação: Isto também irá disabilitar o botão Voltar (Go Back) para os sub-menus.
+
+O marcador exibido ao lado do do item ativo pode ser modificado, caracteres UTF-8 são suportados.
+O marcador for itens não selecionados também pode ser modificado. Se você quiser desabilita-lo, apenas defina-o como um caracter de espaço.
+
+```php
+$menu = (new CliMenuBuilder)
+ ->setUnselectedMarker('❅')
+ ->setSelectedMarker('✏')
+
+ //disable unselected marker
+ ->setUnselectedMarker(' ')
+ ->build();
+```
+
+Você pode definir um título para o seu menu e definir um separar personalizado, uma linha que será exibida abaixo do título.
+Qualquer texto que você passar para `setTitleSeparator` será repetido pelo tamanho da largura do Menu.
+
+```php
+$menu = (new CliMenuBuilder)
+ ->setTitle('One Menu to rule them all!')
+ ->setTitleSeparator('*-')
+ ->build();
+```
+
+#### Item Extra
+
+Você pode, opcionalmente, exibir algum texto arbitrário do lado dirieto de item. Você pode personalizar este texto e
+você pode indicar em quais itens ele será exibido. Nós usamos esta função para exibir o texto `[COMPLETED]` nos exercícios
+que foram completados, onde o menu exibe a lista de exercícios para uma aplicação de workshop.
+
+O terceiro parâmetro do método `addItem` é um boolean que define se será exibido o item extra ou não. O padrão é false.
+
+```php
+$menu = (new CliMenuBuilder)
+ ->setItemExtra('✔')
+ ->addItem('Exercise 1', function (CliMenu $menu) { echo 'I am complete!'; }, true)
+ ->build();
+```
+
+#### Itens
+
+Existem alguns tipos de itens que você pode adicionar ao seu menu
+
+* Item Selecionável - Este é o tipo de item que você precisa para qualquer coisa que for selecionável (você pode apertar enter e isso irá invocar o método invocável)
+* Item de Quebra de Linha - Este item é usado para separar áreas, ele pode abranger várias linhas e será da largura do Menu. Qualquer string passada será repetida.
+* Item Estático - Este item irá exibir qualquer texto que for fornecido, muito útil para cabeçalhos.
+* Item Ascii Art - Este item é um tipo especial e permite o use de Ascii art. Ele automaticamente cuida do espaçamento e do alinhamento.
+* Item de Sub Menu - Item especial para permitir um item abrir outro menu. Muito útil para quando for criar um menu de opções.
+
+#### Item Selecionável
+
+```php
+$menu = (new CliMenuBuilder)
+ ->addItem('The Item Text', function (CliMenu $menu) {
+ echo 'I am alive!';
+ })
+ ->build();
+```
+
+Você pode adicionar múltiplos items de uma única vez, como no exemplo:
+
+```php
+$callable = function (CliMenu $menu) {
+ echo 'I am alive!';
+};
+
+$menu = (new CliMenuBuilder)
+ ->addItems([
+ ['Item 1', $callable],
+ ['Item 2', $callable],
+ ['Item 3', $callable],
+ ])
+ ->build();
+```
+
+Observação: Você pode adicionar quantos itens você quiser e todos eles podem ter diferentes ações. A ação a ser executada
+é o que for definido como segundo parâmetro e ele deve ser um tipo válido PHP de `callable`. Preferencialmente, utilize classes
+do tipo `Invokable` para manter suas ações isoladas e para que possam ser facilmente testadas.
+
+#### Item de Quebra de Linha
+
+```php
+$menu = (new CliMenuBuilder)
+ ->addLineBreak('<3', 2)
+ ->build();
+```
+
+O código acima irá repetir uma sequência de caracteres `<3` sobre o Menu por 2 linhas.
+
+#### Item Estático
+
+Itens estáticos são similares aos de QUebra de linha, no entanto, eles não repetem e não são preenchidos. É exibido como ele é.
+Se o texto for mais longo que a largura do menu, ele será exibido na linha subsequente.
+
+```php
+$menu = (new CliMenuBuilder)
+ ->addStaticItem('AREA 1')
+ //add some items here
+ ->addStaticItem('AREA 2')
+ //add some boring items here
+ ->addStaticItem('AREA 51')
+ //add some top secret items here
+ ->build();
+```
+
+#### Ascii Art Item
+
+O código abaixo irá colocar a arte Ascii no centro do seu menu. Use uma das constantes abaixo para alterar o alinhamento:
+
+* AsciiArtItem::POSITION_CENTER
+* AsciiArtItem::POSITION_LEFT
+* AsciiArtItem::POSITION_RIGHT
+
+```php
+
+$art = <<addAsciiArt($art, AsciiArtItem::POSITION_CENTER)
+ ->build();
+```
+
+#### Item de Sub Menu
+
+Sub-menus são muito poderosos. Você pode adicionar Menus aos Menus, MASOQUÊ?? Você pode ter um seu menu principal e também opções para o seu menu.
+As itens de opções serão iguais itens normais de menu, excepto que quando você pressiona-lo, irá entrar em outro menu, no qual
+qual pode ter estilos e cores diferenciados.
+
+```php
+
+$callable = function (CliMenu $menu) {
+ echo "I'm just a boring selectable item";
+};
+
+$menu = (new CliMenuBuilder)
+ ->addItem('Normal Item', $callable)
+ ->addSubMenu('Super Sub Menu')
+ ->setTitle('Behold the awesomeness')
+ ->addItem(/** **/)
+ ->end()
+ ->build();
+```
+
+Neste exemplo, um único sub-menu será criado. Assim que entrar-mos no sub-menu, você será capaz de retornar ao menu principal.
+ou então sair completamente do menu. Um botão Go Back (Voltar) será automaticamente adicionado, e você pode personalizar o texto deles dessa forma:
+
+```php
+->addSubMenu('Super Sub Menu')
+ ->setTitle('Behold the awesomeness')
+ ->setGoBackButtonText('Descend to chaos')
+```
+
+Existem algumas coisas para se prestar atenção na sintáxe e no processo de criação aqui
+
+1. `addSubMenu` retorna uma instância de `CliMenuBuilder` assim você pode personalizar do jeito que precisar no objeto pai
+2. Se você não modificar os estilos do sub-menu (ex, cores) ele irá herdar os estilos do menu pai
+3. Você pode chamar o método `end()` na instância do sub-menu `CliMenuBuilder` para recuperar a instância pai `CliMenuBuilder` novamente. Isto é bem útil quando for fazer encadeamentos.
+
+Se você precisar da instância `CliMenu` do Sub Menu você pode recupera-lo após o menu principal ser construído.
+
+```php
+$mainMenuBuilder = new CliMenuBuilder;
+$subMenuBuilder = $mainMenuBuilder->addSubMenu('Super Sub Menu');
+
+$menu = $mainMenuBuilder->build();
+$subMenu = $mainMenuBuilder->getSubMenu('Super Sub Menu');
+```
+
+Você apenas pode fazer isso após o menu principal ter sido construído. Isto acontece porque o builder do menu principal toma conta de criar todos os sub menus.
+
+#### Desabilitando Itens & Sub Menus
+
+Neste exemplo nós estamos desabilitando alguns itens e um sub-menu, porém ainda iremos exibi-los na saída.
+
+```php
+$itemCallable = function (CliMenu $menu) {
+ echo $menu->getSelectedItem()->getText();
+};
+
+$menu = (new CliMenuBuilder)
+ ->setTitle('Basic CLI Menu Disabled Items')
+ ->addItem('First Item', $itemCallable)
+ ->addItem('Second Item', $itemCallable, false, true)
+ ->addItem('Third Item', $itemCallable, false, true)
+ ->addSubMenu('Submenu')
+ ->setTitle('Basic CLI Menu Disabled Items > Submenu')
+ ->addItem('You can go in here!', $itemCallable)
+ ->end()
+ ->addSubMenu('Disabled Submenu')
+ ->setTitle('Basic CLI Menu Disabled Items > Disabled Submenu')
+ ->addItem('Nope can\'t see this!', $itemCallable)
+ ->disableMenu()
+ ->end()
+ ->addLineBreak('-')
+ ->build();
+```
+
+O terceiro parâmetro do método `->addItem` é o que realmente desabilita o item enquanto o `->disableMenu()` desabilita o menu relevante.
+
+O resultado é um menu completo com algumas linhas escurecidas para denotar que elas estão desabilitadas. Quando um usuário navega,
+estes itens são "pulados" e o menu o joga para o próximo menu selecionável.
+
+#### Redesenhando o menu
+
+Você pode modificar o menu e os seus estilos quando estiver executando uma ação e então você pode redesenha-los. Neste exemplo nós trocaremos
+a cor de fundo dentro de uma ação.
+
+
+```php
+$itemCallable = function (CliMenu $menu) {
+ $menu->getStyle()->setBg($menu->getStyle()->getBg() === 'red' ? 'blue' : 'red');
+ $menu->redraw();
+};
+
+$menu = (new CliMenuBuilder)
+ ->setTitle('Basic CLI Menu')
+ ->addItem('First Item', $itemCallable)
+ ->addItem('Second Item', $itemCallable)
+ ->addItem('Third Item', $itemCallable)
+ ->addLineBreak('-')
+ ->build();
+
+$menu->open();
+```
+
+#### Recuperando, Removendo e Adicionado Itens
+
+Você também pode interagir com os itens do menu dentro de uma ação:
+
+```php
+use PhpSchool\CliMenu\MenuItem\LineBreakItem;
+
+$itemCallable = function (CliMenu $menu) {
+ foreach ($menu->getItems() as $item) {
+ $menu->removeItem($item);
+ }
+
+ $menu->addItem(new LineBreakItem('-'));
+
+ $menu->redraw();
+};
+
+$menu = (new CliMenuBuilder)
+ ->setTitle('Basic CLI Menu')
+ ->addItem('First Item', $itemCallable)
+ ->addItem('Second Item', $itemCallable)
+ ->addItem('Third Item', $itemCallable)
+ ->addLineBreak('-')
+ ->build();
+
+$menu->open();
+```
+
+#### Diálogos (Caixas de Mensagem)
+
+##### Instântaneo (Flash)
+
+Exibe uma mensagem de uma linha sobre o menu. Ele possui um objeto de estilização separado e que possui uma cor
+diferenciada do menu principal por padrão. Pode ser modificado para se encaixar no seu próprio estilo. A caixa de mensagem
+é fechada assim que qualquer tecla for pressionada. No exemplo abaixo nós trocamos a cor de fundo para verde.
+
+
+```php
+use PhpSchool\CliMenu\CliMenu;
+use PhpSchool\CliMenu\CliMenuBuilder;
+
+$itemCallable = function (CliMenu $menu) {
+ $flash = $menu->flash("PHP School FTW!!");
+ $flash->getStyle()->setBg('green');
+ $flash->display();
+};
+
+$menu = (new CliMenuBuilder)
+ ->setTitle('Basic CLI Menu')
+ ->addItem('First Item', $itemCallable)
+ ->addItem('Second Item', $itemCallable)
+ ->addItem('Third Item', $itemCallable)
+ ->addLineBreak('-')
+ ->build();
+
+$menu->open();
+```
+
+##### Confirmação
+
+Caixas de seleção são muito similares do do tipo flash, excepto que neste tipo é mostrado um botão que deve ser selecionado
+para que a caixa desapareça. O texto do botão também pode ser customizado.
+
+```php
+use PhpSchool\CliMenu\CliMenu;
+use PhpSchool\CliMenu\CliMenuBuilder;
+
+require_once(__DIR__ . '/../vendor/autoload.php');
+
+$itemCallable = function (CliMenu $menu) {
+ $menu->confirm('PHP School FTW!')
+ ->display('OK!');
+};
+
+$menu = (new CliMenuBuilder)
+ ->setTitle('Basic CLI Menu')
+ ->addItem('First Item', $itemCallable)
+ ->addItem('Second Item', $itemCallable)
+ ->addItem('Third Item', $itemCallable)
+ ->addLineBreak('-')
+ ->build();
+
+$menu->open();
+```
+
+---
+
+Conforme você for brincando com nossa aplicação você irá fazer coisas semelhantes a isto...
+
+
+
+Você pode ver o código de construção neste link para mais clareza e em como fazer configurações mais avançadas:
+[PHP School](https://github.com/php-school/php-workshop/blob/3240d3217bbf62b1063613fc13eb5adff2299bbe/src/Factory/MenuFactory.php)