freeCodeCamp/docs/i18n/portuguese/how-to-test-translations-lo...

7.4 KiB
Raw Blame History

Como testar traduções localmente

[!NOTE] Esse processo não é obrigatório, mas documentado caso você queira visualizar como suas traduções ficarão.

Se você gostaria de testar suas traduções em uma instância local do site FreeCodeCamp /learn, primeiro certifique-se de que você tem que configurar a base de código.

Habilitando um idioma

Existem algumas etapas a serem seguidas para permitir que a base de código seja compilada no idioma desejado.

Primeiro, visite o arquivo config/i18n/all-langs.js para adicionar o idioma à lista de idiomas disponíveis e configurar os valores. Existem quatro objetos aqui.

  • availableLangs: tanto para o array client quanto para o array curriculum, adicione o nome do idioma. Esse valor é o que será usado no arquivo .env depois.
  • i18nextCodes: esses são os códigos ISO de cada linguagem. Você vai precisar do código ISO apropriado para o idioma que você está habilitando. Eles precisam ser únicos para cada idioma.
  • langDisplayNames: esses são os nomes dos idiomas que aparecerão para a seleção no menu de navegação.
  • langCodes: esses são os códigos de idiomas usados para formatar datas e números. Esses deverão ser códigos Unicode CLDR ao invés de códigos ISO.

Como um exemplo, se você tivesse que habilitar o idioma Dothraki como seu idioma, os objetos all-langs.js devem ficar assim:

const availableLangs = {
  client: ['english', 'espanol', 'chinese', 'chinese-traditional', 'dothraki'],
  curriculum: [
    'english',
    'espanol',
    'chinese',
    'chinese-traditional',
    'dothraki'
  ]
};

const i18nextCodes = {
  english: 'en',
  espanol: 'es',
  chinese: 'zh',
  'chinese-traditional': 'zh-Hant',
  dothraki: 'mis'
};

const langDisplayNames = {
  english: 'English',
  espanol: 'Español',
  chinese: '中文(简体字)',
  'chinese-traditional': '中文(繁體字)',
  dothraki: 'Dothraki'
};

const langCodes = {
  english: 'en-US',
  espanol: 'es-419',
  chinese: 'zh',
  'chinese-traditional': 'zh-Hant',
  dothraki: 'mis'
};

Agora, abra o arquivo client/src/utils/algolia-locale-setup.js. Esse dado é usado para a barra de busca que carrega os artigos /news. Embora seja improvável que você venha a testar essa funcionalidade, não ter os dados para o seu idioma pode levar a erros quando tentar criar a base de código localmente.

Adicione um objeto para seu idioma no objeto algoliaIndices. Você deve usar os valores do objeto english para o teste local, substituindo a chave english pelo valor de availableLangs do seu idioma.

Se você fosse adicionar Dothraki:

const algoliaIndices = {
  english: {
    name: 'news',
    searchPage: 'https://www.freecodecamp.org/news/search/'
  },
  espanol: {
    name: 'news-es',
    searchPage: 'https://www.freecodecamp.org/espanol/news/search/'
  },
  chinese: {
    name: 'news-zh',
    searchPage: 'https://chinese.freecodecamp.org/news/search/'
  },
  'chinese-traditional': {
    name: 'news-zh',
    searchPage: 'https://chinese.freecodecamp.org/news/search'
  },
  dothraki: {
    name: 'news',
    searchPage: 'https://www.freecodecamp.org/news/search/'
  }
};

Depois, você precisará informar ao client quais certificações estão traduzidas e quais ainda estão em inglês. Abra o arquivo utils/is-audited.js. Dentro de auditedCerts, adicione uma nova chave com o valor de availableLangs de seu idioma. Atribua o valor daquela chave a um array que contém os nomes hifenizados para as certificações foram traduzidas. Consulte os dados existentes para aqueles nomes hifenizados.

Dando continuidade ao trabalho para habilitar o idioma Dothraki traduzimos as três primeiras certificações:

const auditedCerts = {
  espanol: [
    'responsive-web-design',
    'javascript-algorithms-and-data-structures'
  ],
  chinese: [
    'responsive-web-design',
    'javascript-algorithms-and-data-structures',
    'front-end-development-libraries',
    'data-visualization',
    'back-end-development-and-apis',
    'quality-assurance'
  ],
  'chinese-traditional': [
    'responsive-web-design',
    'javascript-algorithms-and-data-structures',
    'front-end-development-libraries',
    'data-visualization',
    'back-end-development-and-apis',
    'quality-assurance'
  ],
  dothraki: [
    'responsive-web-design',
    'javascript-algorithms-and-data-structures',
    'front-end-development-libraries'
  ]
};

Por fim, em seu arquivo .env, definimos CLIENT_LOCALE e CURRICULUM_LOCALE com o valor de seu novo idioma (use o valor de availableLangs.)

CLIENT_LOCALE="dothraki"
CURRICULUM_LOCALE="dothraki"

Ativando vídeos localizados

Para os desafios em vídeo, você precisa fazer algumas alterações. Primeiro, adicione o novo idioma (locale) à consilta do GraphQL no arquivo client/src/templates/Challenges/video/Show.tsx. Por exemplo, para adicionar Dothraki à consulta:

  query VideoChallenge($slug: String!) {
    challengeNode(fields: { slug: { eq: $slug } }) {
      videoId
      videoLocaleIds {
        espanol
        italian
        portuguese
        dothraki
      }
      ...

Em seguida, adicione um id para o novo idioma para qualquer desafio em vídeo em um bloco auditado. Por exemplo, se auditedCerts em all-langs.js inclui scientific-computing-with-python para dothraki, você deve adicionar uma entrada em dothraki em videoLocaleIds. O frontmatter dever ter essa aparência:

videoLocaleIds:
  espanol: 3muQV-Im3Z0
  italian: hiRTRAqNlpE
  portuguese: AelGAcoMXbI
  dothraki: new-id-here
nomeComTracos: introducao-por-que-programa
---

Atualize a interface de VideoLocaleIds em client/src/redux/prop-types para que ela inclua o novo idioma.

export interface VideoLocaleIds {
  espanol?: string;
  italian?: string;
  portuguese?: string;
  dothraki?: string;
}

Por fim, atualize o schema de desafios em curriculum/schema/challengeSchema.js.

videoLocaleIds: Joi.when('challengeType', {
  is: challengeTypes.video,
  then: Joi.object().keys({
    espanol: Joi.string(),
    italian: Joi.string(),
    portuguese: Joi.string(),
    dothraki: Joi.string()
  })
}),

Carregando traduções

Como o idioma ainda não foi aprovado para produção, nossos scripts ainda não estão baixando automaticamente as traduções. Somente membros da equipe têm acesso para baixar as traduções diretamente entre em contato conosco quando quiser em nossa sala de chat dos contribuidores ou traduza os arquivos de markdown em inglês localmente para fins de teste.

Quando tiver os arquivos em mãos, você precisará colocá-los no diretório correto. Para os desafios do currículo, você deve colocar as pastas de certificação (por exemplo, 01-responsive-web-design) no diretório curriculum/challenges/{lang}. Para nossas traduções em Dothraki, esse diretório seria curriculum/challenges/dothraki. Os arquivos .json de tradução do client vão no diretório client/i18n/locales/{lang}.

Quando estes arquivos estiverem no local certo, você deve poder usar npm run develop para ver sua versão traduzida do freeCodeCamp.

[!ATTENTION] Embora você possa realizar as traduções localmente para fins de teste, lembramos a todos que as traduções não devem ser enviadas pelo GitHub e devem ser feitas somente pelo Crowdin. Certifique-se de reiniciar sua base de código local após realizar os testes.