Project

General

Profile

Revision fcab8024

Added by Martin Bacovsky about 8 years ago

Fixes #9682 - added suport for i18n

View differences:

.gitignore
24 24
.rvmrc
25 25
.ruby-version
26 26
.ruby-gemset
27

  
28
# Locale files
29
locale/*/*.edit.po
30
locale/*/*.po.time_stamp
31

  
.tx/config
1
[main]
2
host = https://www.transifex.com
3

  
4
[foreman.hammer_cli_foreman_docker]
5
file_filter = locale/<lang>/hammer_cli_foreman_docker.po
6
source_file = locale/hammer_cli_foreman_docker.pot
7
source_lang = en
8
type = PO
9

  
Gemfile
2 2

  
3 3
gemspec
4 4

  
5
if RUBY_VERSION >= '1.9'
6
  # for generating i18n files, gettext > 3.0 dropped ruby 1.8 support
7
  gem 'gettext', '>= 3.1.3', '< 4.0.0'
8
end
9

  
10
group :test do
11
  gem 'rake', '~> 10.1.0'
12
end
13

  
5 14
# load local gemfile
6 15
local_gemfile = File.join(File.dirname(__FILE__), 'Gemfile.local')
7 16
self.instance_eval(Bundler.read_file(local_gemfile)) if File.exist?(local_gemfile)
Rakefile
12 12
end
13 13

  
14 14
namespace :gettext do
15
  desc "Update pot file"
16
  task :find do
15
  task :setup do
17 16
    require "hammer_cli_foreman_docker/version"
18 17
    require "hammer_cli_foreman_docker/i18n"
19
    require 'gettext/tools'
18
    require 'gettext/tools/task'
20 19

  
21 20
    domain = HammerCLIForemanDocker::I18n::LocaleDomain.new
22
    GetText.update_pofiles(domain.domain_name, domain.translated_files,
23
                           "#{domain.domain_name} #{HammerCLIForemanDocker.version}",
24
                           :po_root => domain.locale_dir)
21
    GetText::Tools::Task.define do |task|
22
      task.package_name = domain.domain_name
23
      task.package_version = HammerCLIForemanDocker.version.to_s
24
      task.domain = domain.domain_name
25
      task.mo_base_directory = domain.locale_dir
26
      task.po_base_directory = domain.locale_dir
27
      task.files = domain.translated_files
28
    end
29
  end
30

  
31
  desc "Update pot file"
32
  task :find => [:setup] do
33
    Rake::Task["gettext:po:update"].invoke
25 34
  end
26 35
end
27 36

  
lib/hammer_cli_foreman_docker.rb
1 1
require 'hammer_cli_foreman'
2 2

  
3 3
module HammerCLIForemanDocker
4
  require 'hammer_cli_foreman_docker/i18n'
5

  
4 6
  HammerCLI::MainCommand.lazy_subcommand("docker", _("Manipulate docker content"),
5 7
                                         'HammerCLIForemanDocker::DockerCommand',
6 8
                                         'hammer_cli_foreman_docker/docker'
lib/hammer_cli_foreman_docker/i18n.rb
1
require 'hammer_cli'
2

  
3
module HammerCLIForemanDocker
4
  module I18n
5
    class LocaleDomain < HammerCLI::I18n::LocaleDomain
6
      def translated_files
7
        Dir.glob(File.join(File.dirname(__FILE__), '../**/*.rb'))
8
      end
9

  
10
      def locale_dir
11
        File.join(File.dirname(__FILE__), '../../locale')
12
      end
13

  
14
      def domain_name
15
        'hammer_cli_foreman_docker'
16
      end
17
    end
18

  
19
    class SystemLocaleDomain < LocaleDomain
20
      def locale_dir
21
        '/usr/share/locale'
22
      end
23

  
24
      def domain_name
25
        "#{super}@system"
26
      end
27
    end
28
  end
29
end
30

  
31
HammerCLI::I18n.add_domain(HammerCLIForemanDocker::I18n::LocaleDomain.new)
32
HammerCLI::I18n.add_domain(HammerCLIForemanDocker::I18n::SystemLocaleDomain.new)
locale/Makefile
1
#
2
# Makefile for PO merging and MO generation. More info in the README.
3
#
4
# make all-mo (default) - generate MO files
5
# make check - check translations using translate-tool
6
# make tx-update - download and merge translations from Transifex
7
# make clean - clean everything
8
#
9
DOMAIN = hammer_cli_foreman_docker
10
VERSION = $(shell ruby -e 'require "rubygems";spec = Gem::Specification::load("../hammer_cli_foreman_docker.gemspec");puts spec.version')
11
POTFILE = $(DOMAIN).pot
12
MOFILE = $(DOMAIN).mo
13
POFILES = $(shell find . -name '$(DOMAIN).po')
14
MOFILES = $(patsubst %.po,%.mo,$(POFILES))
15
POXFILES = $(patsubst %.po,%.pox,$(POFILES))
16
EDITFILES = $(patsubst %.po,%.edit.po,$(POFILES))
17

  
18
%.mo: %.po
19
	mkdir -p $(shell dirname $@)/LC_MESSAGES
20
	msgfmt -o $(shell dirname $@)/LC_MESSAGES/$(MOFILE) $<
21

  
22
# Generate MO files from PO files
23
all-mo: $(MOFILES)
24

  
25
# Check for malformed strings
26
%.pox: %.po
27
	msgfmt -c $<
28
	pofilter --nofuzzy -t variables -t blank -t urls -t emails -t long -t newlines \
29
		-t endwhitespace -t endpunc -t puncspacing -t options -t printf -t validchars --gnome $< > $@
30
	cat $@
31
	! grep -q msgid $@
32

  
33
check: $(POXFILES)
34

  
35
# Unify duplicate translations
36
uniq-po:
37
	for f in $(shell find ./ -name "*.po") ; do \
38
		msguniq $$f -o $$f ; \
39
	done
40

  
41
tx-pull: $(EDITFILES)
42
	tx pull -f
43
	for f in $(POFILES) ; do \
44
		sed -i 's/^\("Project-Id-Version: \).*$$/\1$(DOMAIN) $(VERSION)\\n"/' $$f; \
45
	done
46

  
47
# Extract strings and update the .pot, prepare .edit.po files
48
extract-strings:
49
	bundle exec rake gettext:find
50

  
51
# Merge .edit.po into .po
52
update-po:
53
	bundle exec rake gettext:find
54

  
55
tx-update: extract-strings tx-pull $(MOFILES)
56
	git commit -m "i18n - extracting new, pulling from tx" ../locale
57
	-echo Changes commited!
locale/README.md
1
Updating the translations
2
-------------------------
3

  
4
  1. Check if there are any new languages with progress more than 50% on [transifex](https://www.transifex.com/projects/p/foreman/resource/hammer_clic_foreman_docker/). If so, do the following for each of the new languages:
5

  
6
  ```
7
    mkdir locale/<lang>
8
    cp locale/hammer_cli_foreman_docker.pot locale/<lang>/hammer_cli_foreman_docker.po
9
  ```
10
  2. Make sure you have `transifex-client` installed
11

  
12
  3. Update the translations. From GIT repo root directory run:
13

  
14
  ```
15
    make -C locale tx-update
16
  ```
17

  
18
  It will download translations from transifex, generates `mo` files, updates strings in `pot` file and wraps all the changes in a new commit. Transifex automatically updates its strings when the commit is pushed to Github.
locale/en/hammer_cli_foreman_docker.po
1
# English translations for hammer_cli_foreman_docker package.
2
# Copyright (C) 2015 THE PACKAGE'S COPYRIGHT HOLDER
3
# This file is distributed under the same license as the hammer_cli_foreman_docker package.
4
# FIRST AUTHOR <EMAIL@ADDRESS>, 2015.
5
#
6
msgid ""
7
msgstr ""
8
"Project-Id-Version: hammer_cli_foreman_docker 0.0.1\n"
9
"Report-Msgid-Bugs-To: \n"
10
"PO-Revision-Date: 2015-03-09 13:45+0100\n"
11
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
12
"Language-Team: English\n"
13
"Language: en\n"
14
"MIME-Version: 1.0\n"
15
"Content-Type: text/plain; charset=UTF-8\n"
16
"Content-Transfer-Encoding: 8bit\n"
17
"Plural-Forms: nplurals=2; plural=n != 1;\n"
18
"\n"
19

  
20
msgid "Manipulate docker content"
21
msgstr ""
22

  
23
msgid "Manage docker containers"
24
msgstr ""
25

  
26
msgid "Name"
27
msgstr ""
28

  
29
msgid "Image repository"
30
msgstr ""
31

  
32
msgid "Tag"
33
msgstr ""
34

  
35
msgid "Command"
36
msgstr ""
37

  
38
msgid "Compute resource"
39
msgstr ""
40

  
41
msgid "Entrypoint"
42
msgstr ""
43

  
44
msgid "CPU set"
45
msgstr ""
46

  
47
msgid "CPU shares"
48
msgstr ""
49

  
50
msgid "Memory (Bytes)"
51
msgstr ""
52

  
53
msgid "TTY"
54
msgstr ""
55

  
56
msgid "Attach STDIN"
57
msgstr ""
58

  
59
msgid "Attach STDOUT"
60
msgstr ""
61

  
62
msgid "Attach STDERR"
63
msgstr ""
64

  
65
msgid "Registry"
66
msgstr ""
67

  
68
msgid "Docker container created"
69
msgstr ""
70

  
71
msgid "Could not create the container"
72
msgstr ""
73

  
74
msgid "Docker container deleted"
75
msgstr ""
76

  
77
msgid "Could not delete the container"
78
msgstr ""
79

  
80
msgid "Logs"
81
msgstr ""
82

  
83
msgid "Running"
84
msgstr ""
85

  
86
msgid "Power a container on"
87
msgstr ""
88

  
89
msgid "The container was started."
90
msgstr ""
91

  
92
msgid "Power a container off"
93
msgstr ""
94

  
95
msgid "The container was stopped."
96
msgstr ""
97

  
98
msgid "Manage docker images"
99
msgstr ""
100

  
101
msgid "ID"
102
msgstr ""
103

  
104
msgid "Image ID"
105
msgstr ""
106

  
107
msgid "Size"
108
msgstr ""
109

  
110
msgid "Tags"
111
msgstr ""
112

  
113
msgid "Repository ID"
114
msgstr ""
115

  
116
msgid "Manage docker tags"
117
msgstr ""
118

  
119
msgid "Docker Image ID"
120
msgstr ""
locale/hammer_cli_foreman_docker.pot
1
# SOME DESCRIPTIVE TITLE.
2
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
3
# This file is distributed under the same license as the hammer_cli_foreman_docker package.
4
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
5
#
6
#, fuzzy
7
msgid ""
8
msgstr ""
9
"Project-Id-Version: hammer_cli_foreman_docker 0.0.1\n"
10
"Report-Msgid-Bugs-To: \n"
11
"POT-Creation-Date: 2015-03-09 13:45+0100\n"
12
"PO-Revision-Date: 2015-03-09 13:45+0100\n"
13
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
14
"Language-Team: LANGUAGE <LL@li.org>\n"
15
"Language: \n"
16
"MIME-Version: 1.0\n"
17
"Content-Type: text/plain; charset=UTF-8\n"
18
"Content-Transfer-Encoding: 8bit\n"
19
"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
20

  
21
#: ../lib/hammer_cli_foreman_docker.rb:6
22
msgid "Manipulate docker content"
23
msgstr ""
24

  
25
#: ../lib/hammer_cli_foreman_docker/docker_container.rb:8
26
msgid "Manage docker containers"
27
msgstr ""
28

  
29
#: ../lib/hammer_cli_foreman_docker/docker_container.rb:13
30
msgid "Name"
31
msgstr ""
32

  
33
#: ../lib/hammer_cli_foreman_docker/docker_container.rb:14
34
msgid "Image repository"
35
msgstr ""
36

  
37
#: ../lib/hammer_cli_foreman_docker/docker_container.rb:15
38
#: ../lib/hammer_cli_foreman_docker/docker_image.rb:27
39
#: ../lib/hammer_cli_foreman_docker/docker_tag.rb:10
40
#: ../lib/hammer_cli_foreman_docker/docker_tag.rb:22
41
msgid "Tag"
42
msgstr ""
43

  
44
#: ../lib/hammer_cli_foreman_docker/docker_container.rb:16
45
msgid "Command"
46
msgstr ""
47

  
48
#: ../lib/hammer_cli_foreman_docker/docker_container.rb:17
49
msgid "Compute resource"
50
msgstr ""
51

  
52
#: ../lib/hammer_cli_foreman_docker/docker_container.rb:26
53
msgid "Entrypoint"
54
msgstr ""
55

  
56
#: ../lib/hammer_cli_foreman_docker/docker_container.rb:27
57
msgid "CPU set"
58
msgstr ""
59

  
60
#: ../lib/hammer_cli_foreman_docker/docker_container.rb:28
61
msgid "CPU shares"
62
msgstr ""
63

  
64
#: ../lib/hammer_cli_foreman_docker/docker_container.rb:29
65
msgid "Memory (Bytes)"
66
msgstr ""
67

  
68
#: ../lib/hammer_cli_foreman_docker/docker_container.rb:30
69
msgid "TTY"
70
msgstr ""
71

  
72
#: ../lib/hammer_cli_foreman_docker/docker_container.rb:31
73
msgid "Attach STDIN"
74
msgstr ""
75

  
76
#: ../lib/hammer_cli_foreman_docker/docker_container.rb:32
77
msgid "Attach STDOUT"
78
msgstr ""
79

  
80
#: ../lib/hammer_cli_foreman_docker/docker_container.rb:33
81
msgid "Attach STDERR"
82
msgstr ""
83

  
84
#: ../lib/hammer_cli_foreman_docker/docker_container.rb:34
85
msgid "Registry"
86
msgstr ""
87

  
88
#: ../lib/hammer_cli_foreman_docker/docker_container.rb:43
89
msgid "Docker container created"
90
msgstr ""
91

  
92
#: ../lib/hammer_cli_foreman_docker/docker_container.rb:44
93
msgid "Could not create the container"
94
msgstr ""
95

  
96
#: ../lib/hammer_cli_foreman_docker/docker_container.rb:50
97
msgid "Docker container deleted"
98
msgstr ""
99

  
100
#: ../lib/hammer_cli_foreman_docker/docker_container.rb:51
101
msgid "Could not delete the container"
102
msgstr ""
103

  
104
#: ../lib/hammer_cli_foreman_docker/docker_container.rb:61
105
msgid "Logs"
106
msgstr ""
107

  
108
#: ../lib/hammer_cli_foreman_docker/docker_container.rb:78
109
msgid "Running"
110
msgstr ""
111

  
112
#: ../lib/hammer_cli_foreman_docker/docker_container.rb:100
113
msgid "Power a container on"
114
msgstr ""
115

  
116
#: ../lib/hammer_cli_foreman_docker/docker_container.rb:101
117
msgid "The container was started."
118
msgstr ""
119

  
120
#: ../lib/hammer_cli_foreman_docker/docker_container.rb:117
121
msgid "Power a container off"
122
msgstr ""
123

  
124
#: ../lib/hammer_cli_foreman_docker/docker_container.rb:118
125
msgid "The container was stopped."
126
msgstr ""
127

  
128
#: ../lib/hammer_cli_foreman_docker/docker_image.rb:5
129
msgid "Manage docker images"
130
msgstr ""
131

  
132
#: ../lib/hammer_cli_foreman_docker/docker_image.rb:9
133
#: ../lib/hammer_cli_foreman_docker/docker_image.rb:21
134
#: ../lib/hammer_cli_foreman_docker/docker_tag.rb:9
135
#: ../lib/hammer_cli_foreman_docker/docker_tag.rb:21
136
msgid "ID"
137
msgstr ""
138

  
139
#: ../lib/hammer_cli_foreman_docker/docker_image.rb:10
140
#: ../lib/hammer_cli_foreman_docker/docker_image.rb:22
141
msgid "Image ID"
142
msgstr ""
143

  
144
#: ../lib/hammer_cli_foreman_docker/docker_image.rb:11
145
#: ../lib/hammer_cli_foreman_docker/docker_image.rb:23
146
msgid "Size"
147
msgstr ""
148

  
149
#: ../lib/hammer_cli_foreman_docker/docker_image.rb:25
150
msgid "Tags"
151
msgstr ""
152

  
153
#: ../lib/hammer_cli_foreman_docker/docker_image.rb:26
154
#: ../lib/hammer_cli_foreman_docker/docker_tag.rb:11
155
#: ../lib/hammer_cli_foreman_docker/docker_tag.rb:23
156
msgid "Repository ID"
157
msgstr ""
158

  
159
#: ../lib/hammer_cli_foreman_docker/docker_tag.rb:5
160
msgid "Manage docker tags"
161
msgstr ""
162

  
163
#: ../lib/hammer_cli_foreman_docker/docker_tag.rb:26
164
msgid "Docker Image ID"
165
msgstr ""
locale/zanata.xml
1
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
2
<config xmlns="http://zanata.org/namespace/config/">
3
    <url>https://translate.zanata.org/zanata/</url>
4
    <project>satellite6-hammer_cli_foreman_docker</project>
5
    <project-version>6.0</project-version>
6
    <project-type>podir</project-type>
7
    <locales>
8
        <locale>fr</locale>
9
        <locale>it</locale>
10
        <locale>ja</locale>
11
        <locale>ko</locale>
12
        <locale>gu</locale>
13
        <locale>hi</locale>
14
        <locale>mr</locale>
15
        <locale>or</locale>
16
        <locale>ru</locale>
17
        <locale>te</locale>
18
        <locale>pa</locale>
19
        <locale>kn</locale>
20
        <locale map-from="de">de-DE</locale>
21
        <locale map-from="es">es-ES</locale>
22
        <locale map-from="pt_BR">pt-BR</locale>
23
        <locale map-from="bn">bn-IN</locale>
24
        <locale map-from="ta">ta-IN</locale>
25
        <locale map-from="zh_CN">zh-Hans-CN</locale>
26
        <locale map-from="zh_TW">zh-Hant-TW</locale>
27
    </locales>
28
</config>

Also available in: Unified diff