Internacionalização (I18n)

Internacionalização com RealizeJS

A implementação do i18n é mais uma das diversas funcionalidades do RealizeJS. Abaixo será apresentado suas propriedades e funções. Caso queira ver diretamento do código-fonte, acesse o arquivo i18n.js.

Propriedades

locales Object

Objeto que inclui todas as localizações suportadas pelo sistema. Por padrão, é adicionado en e pt-BR.

currentLocale String

Onde define a atual localização do sistema.

default: 'en'

Funções

registerLocale Function

Adiciona ou sobrescreve o objeto de propriedades uma determinada localização da propriedade locales. Recebe um objeto de propriedades de localização e seu local (ex.: 'en-US').

i18n.js
registerLocale: function(newLocaleObj, locale) {
  if(!$.isPlainObject(newLocaleObj)) {
    throw 'Invalid Locale Object.'
  }

  if(!locale) {
    throw 'Invalid Locale Name.';
  }

  var currentLocaleObj = this.locales[locale] || {};
  this.locales[locale] = $.extend(true, {}, currentLocaleObj, newLocaleObj);
}

setLocale Function

Recebe o novo local da aplicação e altera a currentLocale.

i18n.js
setLocale: function(locale) {
  this.currentLocale = locale;
}

translate Function

Recebe a chave do recurso e um booleano para sinalizar se é ou não para lançar exceção. Busca na propriedade locales (na localização atual) o recurso através da chave recebida como parâmetro.

i18n.js
translate: function(key, throwsException) {
  if(throwsException === undefined) {
    throwsException = false;
  }

  if(typeof key !== "string") {
    if(throwsException) {
      throw 'Key is not a string';
    }

    return '';
  }

  var currentLocale = this.currentLocale;
  var localeObj = this.locales[currentLocale];

  var translation = utils.getProp(key, localeObj);
  if(!translation) {
    if(throwsException) {
      throw 'Key not found in locale object';
    }

    translation = key;
  }

  return translation;
}

t Function

Foi disponibilizado essa função com o proposito de facilitar no desenvolvimento. Retorna uma chamada a função translate e assim como ela, recebe a chave do recurso e um booleano .

i18n.js
t: function(key, throwsException) {
  return this.translate(key, throwsException);
}