motion-localization 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore ADDED
@@ -0,0 +1,17 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in motion-localization.gemspec
4
+ gemspec
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2013 akahigeg
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,58 @@
1
+ # Motion::Localization
2
+
3
+ To add localization rake task to your RubyMotion project.
4
+
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ gem 'motion-localization'
10
+
11
+ And then execute:
12
+
13
+ $ bundle
14
+
15
+ And add this line to your application's Rakefile:
16
+
17
+ require 'motion-localization'
18
+
19
+ ## Usage
20
+
21
+ ### Creating localization files
22
+
23
+ Move to your RubyMotion project directory and run rake task `localization:create` with `lang_code`
24
+
25
+ rake localization:create lang_code=en
26
+ rake localization:create lang_code=ja
27
+
28
+ ## After creating localization files
29
+
30
+ Google it for more informatoin.
31
+
32
+ ### Edit localization files
33
+
34
+ * InfoPlist.strings: App name localization.
35
+ * Localizable.strings: In app string localization.
36
+
37
+ ### Use localize method in your code
38
+
39
+ NSBundle.mainBundle.localizedStringForKey(key, value:default, table:nil)
40
+
41
+ #### with BubbleWrap
42
+
43
+ BubbleWrap.localized_string(:foo, 'fallback')
44
+ BW.localized_string(:foo, 'fallback')
45
+
46
+ #### with sugercube
47
+
48
+ "hello".localized # => NSBundle.mainBundle.localizedStringForKey("hello", value:nil, table:nil)
49
+ "hello"._ # == "hello".localized
50
+ "hello".localized('Hello!', 'hello_table') # => ...("hello", value:'Hello!', table:'hello_table')
51
+
52
+ ## Contributing
53
+
54
+ 1. Fork it
55
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
56
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
57
+ 4. Push to the branch (`git push origin my-new-feature`)
58
+ 5. Create new Pull Request
data/Rakefile ADDED
@@ -0,0 +1 @@
1
+ require "bundler/gem_tasks"
@@ -0,0 +1,5 @@
1
+ module Motion
2
+ module Localization
3
+ VERSION = "0.0.1"
4
+ end
5
+ end
@@ -0,0 +1,7 @@
1
+ require "motion/localization/version"
2
+
3
+ module Motion
4
+ module Localization
5
+ # Your code goes here...
6
+ end
7
+ end
@@ -0,0 +1,51 @@
1
+ desc "create localization files (options: lang_code=xx )."
2
+ namespace :localization do
3
+ task :create do
4
+ raise "require argument 'lang_code=[lang_code]' ex. lang=en" if ENV['lang_code'].nil?
5
+ raise "can't find resources dir." unless File.exist? 'resources'
6
+
7
+ lang_dir = File.join('resources', "#{ENV['lang_code']}.lproj")
8
+ info_plist = File.join(lang_dir, 'InfoPlist.strings')
9
+ localizable = File.join(lang_dir, 'Localizable.strings')
10
+
11
+ created_files = []
12
+ existed_files = []
13
+
14
+ if File.exist?(lang_dir)
15
+ existed_files << lang_dir
16
+ else
17
+ Dir.mkdir(lang_dir)
18
+ created_files << lang_dir
19
+ end
20
+
21
+ if File.exist?(info_plist)
22
+ existed_files << info_plist
23
+ else
24
+ File.open(info_plist, 'w') do |f|
25
+ f.puts('CFBundleName = "YourAppName";')
26
+ f.puts('CFBundleDisplayName = "YourAppName";')
27
+ end
28
+ created_files << info_plist
29
+ end
30
+
31
+ if File.exist?(localizable)
32
+ existed_files << localizable
33
+ else
34
+ File.open(localizable, 'w') do |f|
35
+ f.puts('"key" = "localized string";')
36
+ end
37
+ created_files << localizable
38
+ end
39
+
40
+ unless ENV['silent']
41
+ created_files.each do |f|
42
+ STDOUT.puts "#{f} is created."
43
+ end
44
+ existed_files.each do |f|
45
+ STDOUT.puts "#{f} is already exist."
46
+ end
47
+ end
48
+
49
+ ENV['lang_code'] = nil
50
+ end
51
+ end
@@ -0,0 +1,5 @@
1
+ unless defined?(Motion::Project::Config)
2
+ raise "This file must be required within a RubyMotion project Rakefile."
3
+ end
4
+
5
+ eval(File.read(File.join(File.dirname(__FILE__), 'motion-localization.rake')))
@@ -0,0 +1,24 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'motion/localization/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "motion-localization"
8
+ spec.version = Motion::Localization::VERSION
9
+ spec.authors = ["akahigeg"]
10
+ spec.email = ["akahigeg@gmail.com"]
11
+ spec.description = %q{Localization rake task for RubyMotion}
12
+ spec.summary = %q{Localization rake task for RubyMotion}
13
+ spec.homepage = "http://github.com/akahigeg/"
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files`.split($/)
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_development_dependency "bundler", "~> 1.3"
22
+ spec.add_development_dependency "rake"
23
+ spec.add_development_dependency "rspec"
24
+ end
File without changes
@@ -0,0 +1,143 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ require 'rake'
4
+ require 'rspec'
5
+ require 'fileutils'
6
+
7
+ # TODO: READMEの整備
8
+ # TODO: gemspecの正義
9
+ # TODO: gemとしてリリース
10
+
11
+ describe 'motion-localization' do
12
+ before(:all) do
13
+ @rake = Rake::Application.new
14
+ Rake.application = @rake
15
+ Rake.application.rake_require("motion-localization", [File.join(File.dirname(__FILE__), '..', 'lib')])
16
+
17
+ @lang_dir = File.join('resources', 'en.lproj')
18
+ @info_plist = File.join(@lang_dir, 'InfoPlist.strings')
19
+ @localizable = File.join(@lang_dir, 'Localizable.strings')
20
+
21
+ @tmp_dir = File.join(File.dirname(__FILE__), 'for_test_dir')
22
+
23
+ FileUtils.mkdir_p @tmp_dir
24
+ Dir.chdir @tmp_dir
25
+ FileUtils.mkdir_p 'resources'
26
+
27
+ ENV['silent'] = 'true'
28
+ end
29
+
30
+ after(:all) do
31
+ FileUtils.rm_rf 'resources'
32
+ ENV['silent'] = nil
33
+ end
34
+
35
+ describe "rake localization:create" do
36
+ context "when execute with lang_code=en" do
37
+ before do
38
+ ENV['lang_code'] = 'en'
39
+ @rake["localization:create"].execute
40
+ end
41
+
42
+ it "en.lproj dir should be created." do
43
+ File.exist?(@lang_dir).should be_true
44
+ end
45
+
46
+ describe "en.lproj/InfoPlist.strings" do
47
+ subject {File.exist?(@info_plist)}
48
+ it { expect{subject}.to be_created }
49
+
50
+ subject {File.read(@info_plist)}
51
+ it { should include('CFBundleName')}
52
+ it { should include('YourAppName')}
53
+ end
54
+
55
+ it "en.lproj/Localizable.strings should be created." do
56
+ File.exist?(@localizable).should be_true
57
+ end
58
+
59
+ it "ENV['lang_code'] should be cleared at finish" do
60
+ ENV['lang_code'].should be_nil
61
+ end
62
+ end
63
+
64
+ context "when execute with lang_code=ja" do
65
+ before do
66
+ ENV['lang_code'] = 'ja'
67
+ @rake["localization:create"].execute
68
+
69
+ @ja = {:dir => File.join('resources', 'ja.lproj')}
70
+ @ja[:info_plist] = File.join(@ja[:dir], 'InfoPlist.strings')
71
+ @ja[:localizable] = File.join(@ja[:dir], 'Localizable.strings')
72
+ end
73
+
74
+ it "ja.lproj dir should be created." do
75
+ File.exist?(@ja[:dir]).should be_true
76
+ end
77
+
78
+ it "ja.lproj/InfoPlist.strings should be created." do
79
+ File.exist?(@ja[:info_plist]).should be_true
80
+ end
81
+
82
+ it "ja.lproj/Localizable.strings should be created." do
83
+ File.exist?(@ja[:localizable]).should be_true
84
+ end
85
+ end
86
+
87
+ context "when localization files already exist" do
88
+ before do
89
+ ENV['lang_code'] = 'en'
90
+ @rake["localization:create"].execute
91
+
92
+ File.open(@info_plist, 'w') do |f|
93
+ f.puts('CFBundleName = "ChangedName";')
94
+ end
95
+
96
+ File.open(@localizable, 'w') do |f|
97
+ f.write('"some_key" = "some_value"')
98
+ end
99
+
100
+ ENV['lang_code'] = 'en'
101
+ @rake["localization:create"].execute
102
+ end
103
+
104
+ it "InfoPlist.strings should not change." do
105
+ File.read(@info_plist).should include('ChangedName')
106
+ end
107
+
108
+ it "Localizable.strings should not change." do
109
+ File.read(@localizable).should include('some_key')
110
+ end
111
+ end
112
+
113
+ context "when lang_code is not specified" do
114
+ it "should raise error" do
115
+ expect{@rake["localization:create"].execute}.to raise_error(RuntimeError)
116
+ end
117
+ end
118
+
119
+ context "when resources dir is not exist" do
120
+ before(:all) do
121
+ ENV['lang_code'] = 'en'
122
+ FileUtils.rm_rf 'resources'
123
+ end
124
+
125
+ after(:all) do
126
+ FileUtils.mkdir_p 'resources'
127
+ end
128
+
129
+ it "should raise error" do
130
+ expect{@rake["localization:create"].execute}.to raise_error(RuntimeError)
131
+ end
132
+ end
133
+ end
134
+ end
135
+
136
+ # for matchar
137
+ def created?
138
+ true
139
+ end
140
+
141
+ # RSpec::Matchers.define :be_created do |expected|
142
+ # match {|actual| actual > expected }
143
+ # end
metadata ADDED
@@ -0,0 +1,108 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: motion-localization
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - akahigeg
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-06-09 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: bundler
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: '1.3'
22
+ type: :development
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ version: '1.3'
30
+ - !ruby/object:Gem::Dependency
31
+ name: rake
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ type: :development
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ - !ruby/object:Gem::Dependency
47
+ name: rspec
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ description: Localization rake task for RubyMotion
63
+ email:
64
+ - akahigeg@gmail.com
65
+ executables: []
66
+ extensions: []
67
+ extra_rdoc_files: []
68
+ files:
69
+ - .gitignore
70
+ - Gemfile
71
+ - LICENSE.txt
72
+ - README.md
73
+ - Rakefile
74
+ - lib/motion-localization.rake
75
+ - lib/motion-localization.rb
76
+ - lib/motion/localization.rb
77
+ - lib/motion/localization/version.rb
78
+ - motion-localization.gemspec
79
+ - spec/for_test_dir/for_test_files
80
+ - spec/motion-localization_spec.rb
81
+ homepage: http://github.com/akahigeg/
82
+ licenses:
83
+ - MIT
84
+ post_install_message:
85
+ rdoc_options: []
86
+ require_paths:
87
+ - lib
88
+ required_ruby_version: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
94
+ required_rubygems_version: !ruby/object:Gem::Requirement
95
+ none: false
96
+ requirements:
97
+ - - ! '>='
98
+ - !ruby/object:Gem::Version
99
+ version: '0'
100
+ requirements: []
101
+ rubyforge_project:
102
+ rubygems_version: 1.8.23
103
+ signing_key:
104
+ specification_version: 3
105
+ summary: Localization rake task for RubyMotion
106
+ test_files:
107
+ - spec/for_test_dir/for_test_files
108
+ - spec/motion-localization_spec.rb