Module: GetText::RGetText

Extended by:
GetText
Defined in:
lib/gettext/rgettext.rb

Overview

:nodoc:

Constant Summary collapse

VERSION =

constant values

GetText::VERSION
DATE =
%w($Date: 2006/02/22 16:42:41 $)[1]
MAX_LINE_LEN =
70

Class Method Summary collapse

Methods included from GetText

N_, Nn_, _, add_default_locale_path, bindtextdomain, callersrc, cgi, cgi=, charset=, create_mofiles, gettext, locale, locale=, msgmerge, msgmerge_all, n_, ngettext, output_charset, output_charset=, rgettext, rmsgfmt, rmsgmerge, s_, set_cgi, set_charset, set_locale, set_output_charset, setlocale, sgettext, textdomain, update_pofiles

Class Method Details

.check_optionsObject

:nodoc:



124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
# File 'lib/gettext/rgettext.rb', line 124

def check_options # :nodoc:
  output = STDOUT

  opts = OptionParser.new
  opts.banner = _("Usage: %s input.rb [-o output.pot]") % $0
  opts.separator("")
  opts.separator(_("Extract translatable strings from given input files."))
  opts.separator("")
  opts.separator(_("Specific options:"))

  opts.on("-o", "--output=FILE", _("write output to specified file")) do |out|
	unless FileTest.exist? out
	  output = File.new(File.expand_path(out), "w+")
	else
	  $stderr.puts(_("File '%s' has already existed.") % out)
	  exit 1
	end
  end

  opts.on_tail("--version", _("display version information and exit")) do
	puts "#{$0} #{VERSION} (#{DATE})"
	exit
  end

  opts.parse!(ARGV)

  if ARGV.size == 0
	puts opts.help
	exit 1
  end

  [ARGV, output]
end

.generate_pot(ary) ⇒ Object

:nodoc:



74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
# File 'lib/gettext/rgettext.rb', line 74

def generate_pot(ary) # :nodoc:
  str = ""
  result = Array.new
  ary.each do |key|
	msgid = key.shift
	curr_pos = MAX_LINE_LEN
	key.each do |e|
	  if curr_pos + e.size > MAX_LINE_LEN
 str << "\n#:"
 curr_pos = 3
	  else
 curr_pos += (e.size + 1)
	  end
	  str << " " << e
	end
	msgid.gsub!(/"/, '\"')
	msgid.gsub!(/\r/, '')
	if msgid.include?("\000")
	  ids = msgid.split(/\000/)
	  str << "\nmsgid \"" << ids[0] << "\"\n"
	  str << "msgid_plural \"" << ids[1] << "\"\n"
	  str << "msgstr[0] \"\"\n"
	  str << "msgstr[1] \"\"\n"
	else
	  str << "\nmsgid \"" << msgid << "\"\n"
	  str << "msgstr \"\"\n"
	end
  end
  str
end

.generate_pot_headerObject

:nodoc:



49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
# File 'lib/gettext/rgettext.rb', line 49

def generate_pot_header # :nodoc:
  time = Time.now.strftime("%Y-%m-%d %H:%M")
  off = Time.now.utc_offset
  sign = off <= 0 ? '-' : '+'
  time += sprintf('%s%02d%02d', sign, *(off.abs / 60).divmod(60))

  %Q[# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\\n"
"POT-Creation-Date: #{time}\\n"
"PO-Revision-Date: #{time}\\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\\n"
"Language-Team: LANGUAGE <[email protected]>\\n"
"MIME-Version: 1.0\\n"
"Content-Type: text/plain; charset=UTF-8\\n"
"Content-Transfer-Encoding: 8bit\\n"
"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\\n"]
end

.parse(files) ⇒ Object

:nodoc:



105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
# File 'lib/gettext/rgettext.rb', line 105

def parse(files) # :nodoc:
  ary = []
  files.each do |file|
	begin
	  @ex_parsers.each do |klass|
 if klass.target?(file)
   ary = klass.parse(file, ary)
   break
 end
	  end
	rescue
	  puts $!
	  exit 1
	end
  end

  ary
end

.run(targetfiles = nil, out = STDOUT) ⇒ Object

:nodoc:



158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
# File 'lib/gettext/rgettext.rb', line 158

def run(targetfiles = nil, out = STDOUT)  # :nodoc:
  if targetfiles.is_a? String
	targetfiles = [targetfiles]
  elsif ! targetfiles
	targetfiles, out = check_options
  end

  if targetfiles.size == 0
	raise ArgumentError, _("no input files")
  end

  if out.is_a? String
	File.open(File.expand_path(out), "w+") do |file|
	  file.puts generate_pot_header
	  file.puts generate_pot(parse(targetfiles))
	end
  else
	out.puts generate_pot_header
	out.puts generate_pot(parse(targetfiles))
  end
  self
end