laira 3 rokov pred
commit
9c60b688d4

BIN
Carregando midia para cache/audio/beep.mp3


+ 23 - 0
Carregando midia para cache/carregandoAudio.js

@@ -0,0 +1,23 @@
+// Carregando audios - fetch api e HTMLAudioElement
+
+let audios = []
+let audiosUrl = [
+  "audio/beep.mp3"
+];
+
+function loadAudios() {
+  var init = {
+    mode: "same-origin", // por padrão é "cors"
+  };
+  audiosUrl.forEach((url) => {
+    fetch(url, init)
+      .then(response => response.blob())
+      .then(function (myBlob) {
+        audios.push(new Audio(URL.createObjectURL(myBlob))); //HTMLAudioElement
+      })
+  });
+}
+
+function playAudio() {
+  audios[0].play();
+}

+ 28 - 0
Carregando midia para cache/carregandoImagem.js

@@ -0,0 +1,28 @@
+// carregando imagens - HTMLImageElement
+
+let images = [];
+let imagesUrl = [
+  "img/garage.png",
+  "img/house.png",
+];
+
+function loadImages() {
+  imagesUrl.forEach((url) => {
+    let img = new Image(); //HTMLImageElement
+    img.onload = () => {
+      images.push(img);
+    }
+    img.src = url;
+  });
+}
+
+function drawImages() {
+  let i = 0;
+  images.forEach((img) => {
+    let context = canvas.getContext("2d");
+    context.drawImage(img, i, 0);
+    i += 300;
+  });
+}
+
+

+ 43 - 0
Carregando midia para cache/carregandoLinguagem.js

@@ -0,0 +1,43 @@
+// Carregando idiomas - fetch API
+
+let idiomaEscolhido = 1;
+let idiomas = {};
+let idiomasURL = [
+  "lang/en_US",
+  "lang/pt_BR"
+];
+
+function escolherIdioma(idioma) {
+  if (idioma == "en_US") idiomaEscolhido = 0;
+  else if (idioma == "pt_BR") idiomaEscolhido = 1;
+}
+
+function loadLangs() {
+  var init = {
+    mode: "same-origin"
+  };
+  fetch(idiomasURL[idiomaEscolhido], init)
+  .then(response => response.text())
+  .then(function (text) {
+    let msg = text.split("\n"); // quebra mensagem por linha
+    msg.forEach((key) => {
+      try {
+        let line = key.split("="); // divide antes e depois do =
+        let a = line[0], b = line[1];
+        a = a.trim();
+        b = b.trim();
+        idiomas[a] = b;
+      }catch{
+        //console.log("erro de sintaxe");
+      }
+    });
+  });
+}
+
+function printLangs() {
+  
+  document.getElementById("texto").value = idiomas.loading + '\n' + idiomas["menu_back"];
+  
+  console.log(idiomas);
+
+}

BIN
Carregando midia para cache/img/garage.png


BIN
Carregando midia para cache/img/house.png


+ 65 - 0
Carregando midia para cache/index.html

@@ -0,0 +1,65 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<head>
+  <meta charset="UTF-8" />
+  <link rel="shortcut icon" href="#">
+  <title>Testando fetch API</title>
+  <style>
+    * { font-family: sans-serif; }
+    canvas { border: 3px solid gray; }
+    span { 
+      color: gray;
+      font-size: 12px;
+    }
+  </style>
+</head>
+
+<body>
+
+  <h2>Carregando/usando arquivos de mídia</h2>
+  <span>Por: Laira Almas [2020]</span>
+  
+  <p>
+    Arquivos de linguagem e audio usam Fetch API (<a href="https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch">documentação oficial</a>)<br>
+    Arquivos de imagem usam Image() (<a href="https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement">documentação oficial</a>)
+  </p>
+
+  <div>
+    <canvas id="canvas" width="700" height="400"></canvas>
+  </div>
+
+  <span>* Toda mídia precisa ser carregada antes de ser usada</span><br><br>
+
+  Imagem:
+  <button onclick="loadImages()">Carregar</button>
+  <button onclick="drawImages()">Desenhar </button><br><br>
+
+  Audio:
+  <button onclick="loadAudios()">Carregar</button>
+  <button onclick="playAudio()">Tocar</button><br><br>
+
+  Idioma:
+  <button onclick="loadLangs()">Carregar</button>
+  <button onclick="printLangs()">imprimir</button>
+  <span> * mensagens de idioma no console </span><br><br>
+
+  <textarea id="texto" rows="4" cols="20" readonly=true placeholder="algumas palavras do idioma selecionado sairão aqui"></textarea><br><br>
+
+  Alterar idioma:
+  <button onclick="escolherIdioma('pt_BR')">Pt_BR</button>
+  <button onclick="escolherIdioma('en_US')">En_US</button>
+
+  <script src="carregandoImagem.js"></script>
+  <script src="carregandoAudio.js"></script>
+  <script src="carregandoLinguagem.js"></script>
+
+  <script>
+    let canvas = document.getElementById("canvas");
+  </script>
+
+</body>
+
+
+
+</html>

+ 26 - 0
Carregando midia para cache/lang/en_US

@@ -0,0 +1,26 @@
+audio=AUDIO
+circle_name=Circles
+continue=Continue
+custom_game=CUSTOMIZE THE CURRENT GAME
+difficulty=Difficulty
+empty_name=You forgot to type your name
+error_msg=You should select a smaller portion than it's full size
+game_menu_title=SELECT OPERATION AND DIFFICULTY
+good_job=Good Job
+insert_name=ENTER YOUR NAME
+label_name=labels
+level=Level
+loading=LOADING
+menu_back=GO BACK
+menu_help=SEE SOLUTION
+menu_list=MAIN MENU
+menu_title=SELECT GAME
+menu_world=LANGUAGE SELECTION
+mode_name=MODE
+ready=READY
+retry=Try again
+show=Show
+square_name=Quadrangles
+sublevel=Sublevel
+title=Fractions
+welcome=Hi

+ 26 - 0
Carregando midia para cache/lang/pt_BR

@@ -0,0 +1,26 @@
+audio=ÁUDIO
+circle_name=Círculos
+continue=Continue
+custom_game=PERSONALIZE O JOGO ATUAL
+difficulty=Dificuldade
+empty_name=Você esqueceu de digitar seu nome
+error_msg=Você deve selecionar uma porção menor que o seu tamanho total
+game_menu_title=SELECIONAR OPERAÇÃO E DIFICULDADE
+good_job=Bom trabalho
+insert_name=DIGITE SEU NOME
+label_name=legendas
+level=Nível
+loading=CARREGANDO
+menu_back=VOLTAR
+menu_help=VER SOLUÇÃO
+menu_list=MENU PRINCIPAL
+menu_title=SELECIONE UM JOGO
+menu_world=SELECIONAR IDIOMA
+mode_name=MODO
+ready=PRONTO
+retry=Tente novamente
+show=Mostrar
+square_name=Quadriláteros
+sublevel=Subnível
+title=Frações
+welcome=Olá

+ 59 - 0
Gerenciando arquivos de idioma - file to csv to file/README.md

@@ -0,0 +1,59 @@
+# Gerenciador de arquivos de linguagem
+por Bernardo Martins, Laira Almas
+
+## Descricao
+
+Esse pacote tem o intuito de facilitar a visualizacao e modificacao dos arquivos de internalizacao e traducao usados nos projetos. 
+
+Ele prove dois arquivos em python:
+
+* **file_to_csv.py**: transfere o conteudo dos arquivos de linguagem para um csv de tal forma que a primeira coluna contem as chaves, e cada linha eh composta da chave, seguida de todas traducoes.
+
+* **csv_to_file.py**: recebe o csv gerado anteriormente e devolve para os arquivos de linguagem - mais especificamente, cria novos arquivos de linguagem no diretorio atual para que possam ser copiados para o diretório desejado.
+
+## Requisitos
+
+Eh preciso ter um compilador Python instalado e a biblioteca Pandas. Tutorial de instalacao do Pandas no ubuntu 20.04 em https://bityli.com/XXUXF
+
+## Usando este pacote
+
+### Mandando os arquivos de linguagem para o csv com files_to_csv.py
+
+	python3 files_to_csv.py
+
+O arquivo **files_to_csv.py** cria um csv (**lang.csv**) no diretorio atual a partir dos arquivos de linguagem definidos no código.
+
+A variavel **path** contem o caminho para a pasta onde os arquivos de linguagem estao e **arr_lang** contem o nome dos arquivos de linguagem.
+
+Atualmente, ele esta configurado para lidar com os arquivos usados no iFractions, que seguem o seguinte formato:
+
+* nao possuem extensao
+* seguem o padrao **chave=traducao** 
+* a quebra de linha indica fim da traducao
+
+Ex:
+
+Arquivo de linguagem 1: **en_US**
+
+	game=game
+	welc=welcome
+
+Arquivo de linguagem 2: **pt_BR**
+
+	game=jogo
+	welc=bem vindo
+
+Visualizacao possivel com o csv gerado:
+
+|         | en_US   | pt_BR       |
+| ------- | ------- | ----------- |
+| game    | game    | jogo        |
+| welc    | welcome | bem vindo   |
+
+*Caso os arquivos de linguagem nao sigam essa formatacao, o codigo pode ser facilmente alterado.*
+
+### Mandando o csv para os arquivos de linguagem com csv_to_files.py
+
+	python3 csv_to_files.py
+
+Apos alterar o csv como desejado, voce pode salvar essas alteracoes de volta nos arquivos de linguagem usando **csv_to_files.py**. Este arquivo reconstroi os arquivos de linguagem no diretorio atual, para que possam ser entao copiados para o diretorio desejado.

+ 37 - 0
Gerenciando arquivos de idioma - file to csv to file/csv_to_files.py

@@ -0,0 +1,37 @@
+import csv
+
+def csv_to_files (path):
+    header = []
+    with open(path, newline='') as csvfile:
+        reader = csv.reader(csvfile, delimiter=',') #le csv, modifica delimitador se necessario
+        header = next(reader)  #le primeira linha
+        header.pop(0)          #retira primeiro elemento, pois eh vazio
+        matrix_strings = []    #cria matriz que recebera as strings que irao para cada arquivo
+        for row in reader:     #como a primeira linha ja foi lida comeca a partir da segunda
+            line = []
+            for value in row[1:]:  #primeiro elemento eh a chave que tem em todos os arquivos, entao pega a partir do segundo
+                line.append (row[0]+"="+value)  #concatena chave, "=" e traducao
+            matrix_strings.append(line)
+    
+    #ao fim cria matriz com cada coluna contendo as chaves + traducoes de cada linguagem
+    #ex coluna: en_US
+    #           loading=LOADING
+    #           title=Fractions
+    #           ...
+    
+    lang_num = 0
+
+    for lang in header:
+        #pega uma coluna por vez e insere no arquivo de linguagem no diretorio atual
+        translations =''
+        for line in matrix_strings:
+            translations = translations+line[lang_num]+"\n"
+        text_file = open(lang, "w")     #abre o arquivo que sera criado 
+        text_file.write(translations)   #escreve no arquivo
+        text_file.close() #fecha o arquivo
+        lang_num = lang_num + 1
+        #importante perceber que todos os arquivos ficarao com a ultima linha vazia
+
+path = "lang.csv" #caminho para arquivo csv gerado anteriormente
+
+csv_to_files(path)

+ 23 - 0
Gerenciando arquivos de idioma - file to csv to file/files_to_csv.py

@@ -0,0 +1,23 @@
+import pandas as pd
+
+def file_to_matrix (path):
+    matrix = []
+    with open (path, "r") as myfile:
+        data = myfile.readlines()
+    for line in data:
+        line = line.replace('\n','')    #retira o \n do fim da linha
+        matrix.append(line.split('='))  #separa em chave-traducao
+    return matrix
+
+arr_lang = ['en_US', 'es_PE', 'fr_FR', 'it_IT', 'pt_BR'] #nome dos arquivos de linguagem
+
+path = "../Ifractions-web/assets/lang/" #diretorio com os arquivos de linguagem
+
+df = pd.DataFrame('', index = [], columns = arr_lang)
+
+for lang in arr_lang:
+    res = file_to_matrix(path+lang)
+    for line in res:
+        df.loc[line[0], lang] = line[1]
+
+df.to_csv(r'lang.csv') #exporta para arquivo csv