# Class: YARD::I18n::Locale

Inherits:
  Object
  - Object
  - YARD::I18n::Locale
  show all

Defined in:
  lib/yard/i18n/locale.rb

## Overview

`Locale` is a unit of translation. It has #name and a set of messages.

Since:

- 0.8.2

## Class Attribute Summary collapse

- .default ⇒ String?

  The default locale name.

## Instance Attribute Summary collapse

- #name ⇒ String readonly

  The name of the locale.

## Instance Method Summary collapse

- #initialize(name) ⇒ Locale constructor

  Creates a locale for `name` locale.

- #load(locale_directory) ⇒ Boolean

  Loads translation messages from `locale_directory`/#name.po.

- #translate(message) ⇒ String

  Translated message.

## Constructor Details

### #initialize(name) ⇒ `Locale`

Creates a locale for `name` locale.

Parameters:

- name (`String`) —

  the locale name.

Since:

- 0.8.2

    34
    35
    36
    37

    # File 'lib/yard/i18n/locale.rb', line 34

    def initialize(name)
      @name = name
      @messages = {}
    end

## Class Attribute Details

### .default ⇒ `String`?

Returns the default locale name.

Returns:

- (`String`, `nil`) —

  the default locale name.

Since:

- 0.8.4

    12
    13
    14

    # File 'lib/yard/i18n/locale.rb', line 12

    def default
      @default
    end

## Instance Attribute Details

### #name ⇒ `String` (readonly)

Returns the name of the locale. It used IETF language tag format `[language[.codeset]]`.

Returns:

- (`String`) —

  the name of the locale. It used IETF language tag format `[language[.codeset]]`.

See Also:

- BCP 47 - Tags for Identifying Languages

Since:

- 0.8.2

    29
    30
    31

    # File 'lib/yard/i18n/locale.rb', line 29

    def name
      @name
    end

## Instance Method Details

### #load(locale_directory) ⇒ `Boolean`

Loads translation messages from `locale_directory`/#name.po.

Parameters:

- locale_directory (`String`) —

  the directory path that has #name.po.

Returns:

- (`Boolean`) —

  `true` if PO file exists, `false` otherwise.

Since:

- 0.8.2

    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57

    # File 'lib/yard/i18n/locale.rb', line 44

    def load(locale_directory)
      return false if @name.nil?

      po_file = File.join(locale_directory, "#{@name}.po")
      return false unless File.exist?(po_file)

      require "yard/i18n/po_parser"
      return false unless POParser.available?

      po_parser = POParser.new
      @messages.merge!(po_parser.parse(po_file))

      true
    end

### #translate(message) ⇒ `String`

Returns translated message. If translation isn’t registered, the `message` is returned.

Parameters:

- message (`String`) —

  the translation target message.

Returns:

- (`String`) —

  translated message. If translation isn’t registered, the `message` is returned.

Since:

- 0.8.2

    62
    63
    64

    # File 'lib/yard/i18n/locale.rb', line 62

    def translate(message)
      @messages[message] || message
    end