localio 0.0.19 → 0.0.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 116c591abb38e231da42c260e9798404123b7d1d
4
- data.tar.gz: db0a9b2cd3e0ad9f65a1ff32e56a907fa3899a90
3
+ metadata.gz: bdd3d840e27f6923ad8fd8ddd0e9f69f95d2562c
4
+ data.tar.gz: 93e138747d484545e9ed2622e14299f724b5e6f1
5
5
  SHA512:
6
- metadata.gz: 2710d74c566c1bc9a44e8019896e5220cdf131300774926c8c0316abb158d8edc3a7e44a5311bc4db9f2a7bb29ffb601c12395509fe4c5b328119802811e1628
7
- data.tar.gz: c9b3c76a487503f4b71c2a79304f03a4483bf16b688e77b28c0003084fd444437ee576c7da7f5b80ee6b7c65ddcdd10652e3b7015e90b1be17be1070560be814
6
+ metadata.gz: fcfc1620fcbd10f7b21eeb7100570492ab830465404e5ac4be9250a3e6abc3510bec5cfbac295545f8353e048766e209bb55689d615a8902a73fb0236605bb02
7
+ data.tar.gz: 0442d761f8a0adba2be7cc2653c746acda122a43a2cc5e3d0170a395b0f88bf5c98b4c231f2aca25ba8be27ab4befd8d3c4ce6fbb296d3db068fe59123c31418
data/README.md CHANGED
@@ -71,7 +71,8 @@ Option | Description
71
71
  #### Supported platforms
72
72
 
73
73
  * `:android` for Android string.xml files. The `output_path` needed is the path for the `res` directory.
74
- * `:ios` for iOS Localizable.strings files. The `output_path` needed is base directory where `en.lproj/` and such would go.
74
+ * `:ios` for iOS Localizable.strings files. The `output_path` needed is base directory where `en.lproj/` and such would go. Also creates header file with Objective-C macros.
75
+ * `:swift` for iOS Localizable.strings files. The `output_path` needed is base directory where `en.lproj/` and such would go. Also creates source file with Swift constants.
75
76
  * `:rails` for Rails YAML files. The `output_path` needed is your `config/locales` directory.
76
77
  * `:json` for an easy JSON format for localizables. The `output_path` is yours to decide :)
77
78
  * `:java_properties` for .properties files used mainly in Java. Files named language_(lang).properties will be generated in `output_path`'s root directory.
@@ -145,15 +146,15 @@ If you don't specify a formatter for keys, :smart will be used.
145
146
 
146
147
  Here you have some examples on how the behavior would be:
147
148
 
148
- Platform | "App name" | "ANOTHER_KIND_OF_KEY"
149
- -------------------|--------------|----------------------
150
- `:none` | `App name` | `ANOTHER_KIND_OF_KEY`
151
- `:snake_case` | `app_name` | `another_kind_of_key`
152
- `:camel_case` | `appName` | `AnotherKindOfKey`
153
- `:smart` (ios) | `_App_name` | `_Another_kind_of_key`
154
- `:smart` (android) | `app_name` | `another_kind_of_key`
155
- `:smart` (ruby) | `app_name` | `another_kind_of_key`
156
- `:smart` (json) | `app_name` | `another_kind_of_key`
149
+ Platform | "App name" | "ANOTHER_KIND_OF_KEY"
150
+ ---------------------|--------------|----------------------
151
+ `:none` | `App name` | `ANOTHER_KIND_OF_KEY`
152
+ `:snake_case` | `app_name` | `another_kind_of_key`
153
+ `:camel_case` | `appName` | `AnotherKindOfKey`
154
+ `:smart` (ios/swift) | `_App_name` | `_Another_kind_of_key`
155
+ `:smart` (android) | `app_name` | `another_kind_of_key`
156
+ `:smart` (ruby) | `app_name` | `another_kind_of_key`
157
+ `:smart` (json) | `app_name` | `another_kind_of_key`
157
158
 
158
159
  Example of use:
159
160
 
@@ -1,9 +1,11 @@
1
1
  require 'localio/writers/android_writer'
2
2
  require 'localio/writers/ios_writer'
3
+ require 'localio/writers/swift_writer'
3
4
  require 'localio/writers/json_writer'
4
5
  require 'localio/writers/rails_writer'
5
6
  require 'localio/writers/java_properties_writer'
6
7
 
8
+
7
9
  module LocalizableWriter
8
10
  def self.write(platform, languages, terms, path, formatter, options)
9
11
  case platform
@@ -11,6 +13,8 @@ module LocalizableWriter
11
13
  AndroidWriter.write languages, terms, path, formatter, options
12
14
  when :ios
13
15
  IosWriter.write languages, terms, path, formatter, options
16
+ when :swift
17
+ SwiftWriter.write languages, terms, path, formatter, options
14
18
  when :json
15
19
  JsonWriter.write languages, terms, path, formatter, options
16
20
  when :rails
@@ -21,4 +25,4 @@ module LocalizableWriter
21
25
  raise ArgumentError, 'Platform not supported! Current possibilities are :android, :ios, :json, :rails, :java_properties'
22
26
  end
23
27
  end
24
- end
28
+ end
@@ -0,0 +1,11 @@
1
+ /*
2
+ LocalizableConstants.swift
3
+
4
+ GENERATED - DO NOT MODIFY - use localio instead.
5
+
6
+ Created by localio on <%= Time.now.localtime %>.
7
+ */
8
+
9
+ <% @segments.each do |term| %>
10
+ let <%= term.key %>: String = { return NSLocalizedString("<%= term.translation %>", comment: "") }()<%
11
+ end %>
@@ -1,3 +1,3 @@
1
1
  module Localio
2
- VERSION = "0.0.19"
2
+ VERSION = "0.0.20"
3
3
  end
@@ -0,0 +1,52 @@
1
+ require 'localio/template_handler'
2
+ require 'localio/segments_list_holder'
3
+ require 'localio/segment'
4
+ require 'localio/formatter'
5
+
6
+ class SwiftWriter
7
+ def self.write(languages, terms, path, formatter, options)
8
+ puts 'Writing iOS translations...'
9
+
10
+ constant_segments = nil
11
+ languages.keys.each do |lang|
12
+ output_path = File.join(path, "#{lang}.lproj/")
13
+
14
+ # We have now to iterate all the terms for the current language, extract them, and store them into a new array
15
+
16
+ segments = SegmentsListHolder.new lang
17
+ constant_segments = SegmentsListHolder.new lang
18
+ terms.each do |term|
19
+ key = Formatter.format(term.keyword, formatter, method(:swift_key_formatter))
20
+ translation = term.values[lang]
21
+ segment = Segment.new(key, translation, lang)
22
+ segment.key = nil if term.is_comment?
23
+ segments.segments << segment
24
+
25
+ unless term.is_comment?
26
+ constant_key = swift_constant_formatter term.keyword
27
+ constant_value = key
28
+ constant_segment = Segment.new(constant_key, constant_value, lang)
29
+ constant_segments.segments << constant_segment
30
+ end
31
+ end
32
+
33
+ TemplateHandler.process_template 'ios_localizable.erb', output_path, 'Localizable.strings', segments
34
+ puts " > #{lang.yellow}"
35
+ end
36
+
37
+ unless constant_segments.nil?
38
+ TemplateHandler.process_template 'swift_constant_localizable.erb', path, 'LocalizableConstants.swift', constant_segments
39
+ puts ' > ' + 'LocalizableConstants.swift'.yellow
40
+ end
41
+ end
42
+
43
+ private
44
+
45
+ def self.swift_key_formatter(key)
46
+ '_'+key.space_to_underscore.strip_tag.capitalize
47
+ end
48
+
49
+ def self.swift_constant_formatter(key)
50
+ 'kLocale'+key.space_to_underscore.strip_tag.camel_case
51
+ end
52
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: localio
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.19
4
+ version: 0.0.20
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nacho Lopez
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-10-21 00:00:00.000000000 Z
11
+ date: 2014-11-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
@@ -158,6 +158,7 @@ files:
158
158
  - lib/localio/templates/java_properties_localizable.erb
159
159
  - lib/localio/templates/json_localizable.erb
160
160
  - lib/localio/templates/rails_localizable.erb
161
+ - lib/localio/templates/swift_constant_localizable.erb
161
162
  - lib/localio/term.rb
162
163
  - lib/localio/version.rb
163
164
  - lib/localio/writers/android_writer.rb
@@ -165,6 +166,7 @@ files:
165
166
  - lib/localio/writers/java_properties_writer.rb
166
167
  - lib/localio/writers/json_writer.rb
167
168
  - lib/localio/writers/rails_writer.rb
169
+ - lib/localio/writers/swift_writer.rb
168
170
  - localio.gemspec
169
171
  homepage: http://github.com/mrmans0n/localio
170
172
  licenses: