ibtoolTranslation 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 90a99821ce95e383eef6c7ca8b68c3a7bf059b22
4
+ data.tar.gz: a5a7293f843bd517113abc6e8bddb5469da483ab
5
+ SHA512:
6
+ metadata.gz: 700ca1e067c43fac5a6c72267e47a0ea9bab3d9bb0be0dc13fa60b5815c847f68c379baed754a27f7e1e83cc5b9370bb2a6048b1db96bb742b985fd70f45a8d0
7
+ data.tar.gz: 4daf6e37e87a0747929a95cd107374a7d07fcd9670d904d116aae53f4197525810e3284ea3e888727294de0073458c65116f8af96588c72874b533fc7b69ef6e
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,6 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in ibtoolTranslation.gemspec
4
+ gemspec
5
+ gem "rspec", "~> 2.14.1"
6
+ gem "thor", "~> 0.18.1"
data/Guardfile ADDED
@@ -0,0 +1,9 @@
1
+ # A sample Guardfile
2
+ # More info at https://github.com/guard/guard#readme
3
+
4
+ guard :rspec do
5
+ watch(%r{^spec/.+_spec\.rb$})
6
+ watch(%r{^lib/(.+)\.rb$}) { |m| "spec/#{m[1]}_spec.rb" }
7
+ watch('spec/spec_helper.rb') { "spec" }
8
+ end
9
+
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2014 akuraru
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/Makefile ADDED
@@ -0,0 +1,3 @@
1
+ build:
2
+ gem build ibtoolTranslation.gemspec;
3
+ sudo gem install ibtoolTranslation-0.0.1.gem;
data/README.md ADDED
@@ -0,0 +1,58 @@
1
+ # IbtoolTranslation
2
+
3
+ This is the script that can be used to internationalize the storyboard.
4
+
5
+ You edit the Translation.strings that is generated when hit the following command. The typing the same command again to be translated.
6
+
7
+ ## Installation
8
+
9
+ Add this line to your application's Gemfile:
10
+
11
+ gem 'ibtool_translation'
12
+
13
+ And then execute:
14
+
15
+ $ bundle
16
+
17
+ Or install it yourself as:
18
+
19
+ $ gem install ibtool_translation
20
+
21
+ ## Usage
22
+
23
+ 1) Generate "Translation.strings" file.
24
+
25
+ ``` sh
26
+ ruby Translation.rb path/to/your_storyboard_directory/ <translate from lang> <translate to lang>
27
+ ```
28
+
29
+ 2) Edit "Translation.strings" file.
30
+
31
+ ```
32
+ "pre-text" = "post-text";
33
+ "Date" = "日時";
34
+ "Delete" = "削除";
35
+ ```
36
+
37
+ 3) Again run (1) command.
38
+
39
+ ``` sh
40
+ ruby Translation.rb path/to/your_storyboard_directory/ <translate from lang> <translate to lang>
41
+ ```
42
+
43
+ ### Example
44
+
45
+ e.g.) Translate storyboard files from English to Japanese.
46
+
47
+ ``` sh
48
+ ruby Translation.rb ExampleProject/storyboard/ en ja
49
+ ```
50
+
51
+
52
+ ## Contributing
53
+
54
+ 1. Fork it ( http://github.com/<my-github-username>/ibtool_translation/fork )
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,33 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "ibtoolTranslation/version"
4
+ require "ibtoolTranslation"
5
+ require "thor"
6
+
7
+ module IbtoolTranslation
8
+ #= IbtoolTranslation CLI
9
+ class CLI < Thor
10
+ class_option :help, :type => :boolean, :aliases => '-h', :desc => 'help message.'
11
+ class_option :version, :type => :boolean, :desc => 'version'
12
+ default_task :execute
13
+
14
+ option :dir, :type => :string, :aliases => '-d'
15
+ option :from, :type => :string , :aliases => '-f'
16
+ option :to, :type => :array, :aliases => '-t'
17
+ desc "execute", "show dialog with title, message"
18
+ def execute
19
+ if options[:version]
20
+ self.version
21
+ else
22
+ IbtoolTranslation::Core.new.func(options[:dir], options[:from], options[:to])
23
+ end
24
+ end
25
+
26
+ desc "version", "version"
27
+ def version
28
+ p IbtoolTranslation::VERSION
29
+ end
30
+ end
31
+ end
32
+
33
+ IbtoolTranslation::CLI.start(ARGV)
@@ -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 'ibtoolTranslation/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "ibtoolTranslation"
8
+ spec.version = IbtoolTranslation::VERSION
9
+ spec.authors = ["akuraru"]
10
+ spec.email = ["akuraru@gmail.com"]
11
+ spec.summary = %q{Write a short summary. Required.}
12
+ spec.description = %q{Write a longer description. Optional.}
13
+ spec.homepage = ""
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files -z`.split("\x0")
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_runtime_dependency "thor", "~> 0.18.1"
22
+ spec.add_development_dependency "bundler", "~> 1.5"
23
+ spec.add_development_dependency "rake"
24
+ end
@@ -0,0 +1,3 @@
1
+ module IbtoolTranslation
2
+ VERSION = "0.0.1"
3
+ end
@@ -0,0 +1,90 @@
1
+ require "ibtoolTranslation/version"
2
+ require 'kconv'
3
+ require 'fileutils'
4
+
5
+ module IbtoolTranslation
6
+ class Core
7
+ def self.hi
8
+ puts "Hello world!"
9
+ end
10
+
11
+ def function()
12
+ dirName = ARGV[0]
13
+ sourceDir = dirName + ARGV[1] + ".lproj"
14
+ lps = ARGV[2..-1]
15
+ end
16
+ def func(dirName, sourceDir, lps)
17
+ storyboards = self.storyboards sourceDir
18
+
19
+ lps.each {|lp|
20
+ lproj = dirName + lp + ".lproj"
21
+ FileUtils.mkdir_p(lproj) unless FileTest.exist?(lproj)
22
+
23
+ transText = self.transText("#{lproj}/Translation.strings")
24
+ baseData = self.baseDataForTransText(transText)
25
+ storyboards.each { |fileName|
26
+ `ibtool --generate-stringsfile #{lproj}/#{fileName}.strings #{sourceDir}/#{fileName}.storyboard`
27
+ addtionData = self.addtionData("#{lproj}/#{fileName}.strings")
28
+ aData = addtionData.select{|f| baseData.include?(f) == false}
29
+ transText = transText + aData.map{|f| "\"#{f}\";\n"}.join("")
30
+ }
31
+ self.writeTransText("#{lproj}/Translation.strings", transText)
32
+ storyboards.each { |fileName|
33
+ self.fun2(lproj, fileName, transText)
34
+ `ibtool --write #{lproj}/#{fileName}.storyboard -d #{lproj}/#{fileName}.strings #{sourceDir}/#{fileName}.storyboard`
35
+ puts fileName
36
+ }
37
+ }
38
+ end
39
+
40
+ def fun2(lproj, fileName, transText)
41
+ translationData = self.translationData("#{lproj}/#{fileName}.strings")
42
+ translationDict = self.translationDict(transText)
43
+
44
+ aData = translate(translationData, translationDict)
45
+ transText = aData.map{|f| "\"#{f[0]}\" = \"#{f[1]}\";\n"}.join("")
46
+ File.open("#{lproj}/#{fileName}.strings", "w:UTF-16"){|f| f.write transText}
47
+ end
48
+ def translate(translationData, translationDict)
49
+ translationData.map{|arr|
50
+ (translationDict.key? arr[1]) ? [arr[0], translationDict[arr[1]]] : arr
51
+ }
52
+ end
53
+ def translationDict(transText)
54
+ Hash[*(transText.scan(/"(.*)"\s*=\s*"(.*)";?\s*\n/).flatten)]
55
+ end
56
+ def translationData(fileName)
57
+ self.readFile(fileName).scan(/"(.*)" *= *"(.*)";\n/).uniq
58
+ end
59
+ def writeTransText(fileName, transText)
60
+ File.open(fileName, "w:UTF-16"){|f| f.write transText}
61
+ end
62
+ def baseDataForTransText(transText)
63
+ (transText.scan(/"(.*)"\s*=\s*".*";?\s*\n/) + transText.scan(/"(.*)";?\s*\n/)).flatten
64
+ end
65
+ def transText(fileName)
66
+ self.readFile(fileName)
67
+ end
68
+ def addtionData(fileName)
69
+ self.readFile(fileName).scan(/".*" *= *"(.*)";\n/).uniq.flatten
70
+ end
71
+ def storyboards(sourceDir)
72
+ Dir.open(sourceDir).map {|f|
73
+ f.gsub(/(.*)\.storyboard/, '\1').gsub(/\w*\.\w*/, "")
74
+ }.select {|f| f != "" }
75
+ end
76
+ def readFile(fileName)
77
+ FileTest.exist?(fileName) ? File.read(fileName, :mode => "rb", :encoding => "UTF-16LE").toutf8 : ""
78
+ end
79
+ def deleteDir(dir)
80
+ Dir::glob(dir + "**/").sort {
81
+ |a,b| b.split('/').size <=> a.split('/').size
82
+ }.each {|d|
83
+ Dir::foreach(d) {|f|
84
+ File::delete(d+f) if ! (/\.+$/ =~ f)
85
+ }
86
+ Dir::rmdir(d)
87
+ }
88
+ end
89
+ end
90
+ end
@@ -0,0 +1,54 @@
1
+ require './lib/IbtoolTranslation'
2
+
3
+ describe IbtoolTranslation::Core, "load" do
4
+ baseDataArray = ["B", "hoge\\npiyo\\nfuga", "to D", "numberOfLines : 2", "D", "NumberOfLines", "Root View Controller", "C", "numberOfLines : 1", "Beyond Segue", "numberOfLines : 0"]
5
+ baseDataText = '"B";
6
+ "hoge\npiyo\nfuga";
7
+ "to D";
8
+ "numberOfLines : 2";
9
+ "D";
10
+ "NumberOfLines";
11
+ "Root View Controller";
12
+ "C";
13
+ "numberOfLines : 1";
14
+ "Beyond Segue";
15
+ "numberOfLines : 0";
16
+ '
17
+
18
+ context "func" do
19
+ before do
20
+ @i = IbtoolTranslation::Core.new
21
+ @i.deleteDir "./storyboards/ja.lproj/"
22
+ @i.func("./storyboards/", "./storyboards/en.lproj/", ["ja"])
23
+ end
24
+ it "ja transText is " do
25
+ IbtoolTranslation::Core.new.transText("./storyboards/ja.lproj/Translation.strings").should == baseDataText
26
+ end
27
+ end
28
+ it "storyboards" do
29
+ IbtoolTranslation::Core.new.storyboards("./storyboards/en.lproj/").should == ["Main"]
30
+ end
31
+ it "addtionData" do
32
+ IbtoolTranslation::Core.new.addtionData("./storyboards/en.lproj/Main.strings").should == baseDataArray
33
+ end
34
+ it "non transText is empty" do
35
+ IbtoolTranslation::Core.new.transText("./storyboards/en.lproj/Translation.strings").should == ""
36
+ end
37
+ it "ja transText is " do
38
+ IbtoolTranslation::Core.new.transText("./storyboards/ja.lproj/Translation.strings").should == baseDataText
39
+ end
40
+ it "baseDataForTransText" do
41
+ IbtoolTranslation::Core.new.baseDataForTransText(baseDataText).should == baseDataArray
42
+ end
43
+ it "translationData" do
44
+ IbtoolTranslation::Core.new.translationData("./storyboards/fr.lproj/Translation.strings").should == [["B", "β"], ["C", "γ"]]
45
+ end
46
+ it "translationDict" do
47
+ i = IbtoolTranslation::Core.new
48
+ t = i.transText("./storyboards/fr.lproj/Translation.strings")
49
+ i.translationDict(t).should == {"B" => "β", "C" => "γ"}
50
+ end
51
+ it "translate" do
52
+ IbtoolTranslation::Core.new.translate([["x", "A"], ["y", "B"]], {"B" => "β", "C" => "γ"}).should == [["x", "A"], ["y", "β"]]
53
+ end
54
+ end
@@ -0,0 +1,279 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+ <document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="4514" systemVersion="13B3116" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" initialViewController="W4H-FJ-WP2">
3
+ <dependencies>
4
+ <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="3747"/>
5
+ </dependencies>
6
+ <scenes>
7
+ <!--Table View Controller - Root View Controller-->
8
+ <scene sceneID="G8d-y9-IpG">
9
+ <objects>
10
+ <tableViewController id="qKe-kL-ggu" sceneMemberID="viewController">
11
+ <tableView key="view" opaque="NO" clipsSubviews="YES" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="static" style="plain" separatorStyle="default" rowHeight="44" sectionHeaderHeight="22" sectionFooterHeight="22" id="YPE-tX-y7Y">
12
+ <rect key="frame" x="0.0" y="0.0" width="320" height="480"/>
13
+ <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
14
+ <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
15
+ <sections>
16
+ <tableViewSection id="OJ2-Vk-BEm">
17
+ <cells>
18
+ <tableViewCell contentMode="scaleToFill" selectionStyle="blue" accessoryType="disclosureIndicator" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" textLabel="i4d-Fw-rmD" style="IBUITableViewCellStyleDefault" id="3bf-ye-zyF">
19
+ <rect key="frame" x="0.0" y="64" width="320" height="44"/>
20
+ <autoresizingMask key="autoresizingMask"/>
21
+ <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="3bf-ye-zyF" id="K53-sk-I1T">
22
+ <rect key="frame" x="0.0" y="0.0" width="287" height="43"/>
23
+ <autoresizingMask key="autoresizingMask"/>
24
+ <subviews>
25
+ <label opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="left" text="NumberOfLines" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="i4d-Fw-rmD">
26
+ <rect key="frame" x="15" y="0.0" width="270" height="43"/>
27
+ <autoresizingMask key="autoresizingMask"/>
28
+ <fontDescription key="fontDescription" type="system" pointSize="18"/>
29
+ <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
30
+ <nil key="highlightedColor"/>
31
+ </label>
32
+ </subviews>
33
+ </tableViewCellContentView>
34
+ <connections>
35
+ <segue destination="dPf-DS-gFX" kind="push" id="dJ9-i2-EHa"/>
36
+ </connections>
37
+ </tableViewCell>
38
+ <tableViewCell contentMode="scaleToFill" selectionStyle="default" accessoryType="disclosureIndicator" indentationWidth="10" textLabel="qNj-A8-wwY" style="IBUITableViewCellStyleDefault" id="Sjg-KH-mCr">
39
+ <rect key="frame" x="0.0" y="108" width="320" height="44"/>
40
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
41
+ <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="Sjg-KH-mCr" id="Kg4-k8-nYF">
42
+ <rect key="frame" x="0.0" y="0.0" width="287" height="43"/>
43
+ <autoresizingMask key="autoresizingMask"/>
44
+ <subviews>
45
+ <label opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="left" text="Beyond Segue" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="qNj-A8-wwY">
46
+ <rect key="frame" x="15" y="0.0" width="270" height="43"/>
47
+ <autoresizingMask key="autoresizingMask"/>
48
+ <fontDescription key="fontDescription" type="system" pointSize="18"/>
49
+ <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
50
+ <nil key="highlightedColor"/>
51
+ </label>
52
+ </subviews>
53
+ </tableViewCellContentView>
54
+ <connections>
55
+ <segue destination="Bbu-Ps-kCX" kind="push" id="DGv-Aj-UFH"/>
56
+ </connections>
57
+ </tableViewCell>
58
+ </cells>
59
+ </tableViewSection>
60
+ </sections>
61
+ </tableView>
62
+ <navigationItem key="navigationItem" title="Root View Controller" id="j2k-px-61e"/>
63
+ <connections>
64
+ <segue destination="8NF-7x-eCV" kind="push" id="IUM-ey-N7Z"/>
65
+ </connections>
66
+ </tableViewController>
67
+ <placeholder placeholderIdentifier="IBFirstResponder" id="Vlp-dO-GoL" userLabel="First Responder" sceneMemberID="firstResponder"/>
68
+ </objects>
69
+ <point key="canvasLocation" x="-52" y="91"/>
70
+ </scene>
71
+ <!--View Controller-->
72
+ <scene sceneID="7IZ-5y-tjp">
73
+ <objects>
74
+ <viewController id="dPf-DS-gFX" customClass="ViewController" sceneMemberID="viewController">
75
+ <layoutGuides>
76
+ <viewControllerLayoutGuide type="top" id="r8f-2z-uKL"/>
77
+ <viewControllerLayoutGuide type="bottom" id="pS5-GB-VdP"/>
78
+ </layoutGuides>
79
+ <view key="view" contentMode="scaleToFill" id="d9m-UX-XY2">
80
+ <rect key="frame" x="0.0" y="64" width="320" height="416"/>
81
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
82
+ <subviews>
83
+ <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="BYa-F5-6Bd">
84
+ <rect key="frame" x="20" y="41" width="285" height="66"/>
85
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
86
+ <color key="backgroundColor" red="0.84705882349999995" green="0.84705882349999995" blue="0.84705882349999995" alpha="1" colorSpace="calibratedRGB"/>
87
+ <string key="text">hoge
88
+ piyo
89
+ fuga</string>
90
+ <fontDescription key="fontDescription" type="system" pointSize="17"/>
91
+ <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
92
+ <nil key="highlightedColor"/>
93
+ </label>
94
+ <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" lineBreakMode="tailTruncation" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" preferredMaxLayoutWidth="285" translatesAutoresizingMaskIntoConstraints="NO" id="Q7j-JV-BS6">
95
+ <rect key="frame" x="20" y="148" width="285" height="66"/>
96
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
97
+ <color key="backgroundColor" red="0.84705882349999995" green="0.84705882349999995" blue="0.84705882349999995" alpha="1" colorSpace="calibratedRGB"/>
98
+ <string key="text">hoge
99
+ piyo
100
+ fuga</string>
101
+ <fontDescription key="fontDescription" type="system" pointSize="17"/>
102
+ <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
103
+ <nil key="highlightedColor"/>
104
+ </label>
105
+ <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" preferredMaxLayoutWidth="285" translatesAutoresizingMaskIntoConstraints="NO" id="cfA-L8-XId">
106
+ <rect key="frame" x="20" y="251" width="285" height="66"/>
107
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
108
+ <color key="backgroundColor" red="0.84705882349999995" green="0.84705882349999995" blue="0.84705882349999995" alpha="1" colorSpace="calibratedRGB"/>
109
+ <string key="text">hoge
110
+ piyo
111
+ fuga</string>
112
+ <fontDescription key="fontDescription" type="system" pointSize="17"/>
113
+ <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
114
+ <nil key="highlightedColor"/>
115
+ </label>
116
+ <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="numberOfLines : 1" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="qHq-IC-lJQ">
117
+ <rect key="frame" x="10" y="12" width="142" height="21"/>
118
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
119
+ <fontDescription key="fontDescription" type="system" pointSize="17"/>
120
+ <nil key="highlightedColor"/>
121
+ </label>
122
+ <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="numberOfLines : 2" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="R5Y-km-7IB">
123
+ <rect key="frame" x="10" y="119" width="142" height="21"/>
124
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
125
+ <fontDescription key="fontDescription" type="system" pointSize="17"/>
126
+ <nil key="highlightedColor"/>
127
+ </label>
128
+ <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="numberOfLines : 0" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="zg1-nu-NGb">
129
+ <rect key="frame" x="10" y="222" width="142" height="21"/>
130
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
131
+ <fontDescription key="fontDescription" type="system" pointSize="17"/>
132
+ <nil key="highlightedColor"/>
133
+ </label>
134
+ <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="bbl-KF-HsK">
135
+ <rect key="frame" x="0.0" y="300" width="320" height="116"/>
136
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
137
+ <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
138
+ </view>
139
+ </subviews>
140
+ <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
141
+ <constraints>
142
+ <constraint firstItem="bbl-KF-HsK" firstAttribute="leading" secondItem="d9m-UX-XY2" secondAttribute="leading" id="9dH-oS-Dmv"/>
143
+ <constraint firstItem="bbl-KF-HsK" firstAttribute="top" secondItem="r8f-2z-uKL" secondAttribute="bottom" constant="300" id="M4C-y9-7N6"/>
144
+ <constraint firstAttribute="trailing" secondItem="bbl-KF-HsK" secondAttribute="trailing" id="Tf6-sB-Mnd"/>
145
+ <constraint firstItem="pS5-GB-VdP" firstAttribute="top" secondItem="bbl-KF-HsK" secondAttribute="bottom" id="yhJ-nl-YsL"/>
146
+ </constraints>
147
+ </view>
148
+ <extendedEdge key="edgesForExtendedLayout"/>
149
+ <navigationItem key="navigationItem" id="zZU-Xt-F9r"/>
150
+ <connections>
151
+ <outlet property="checkView" destination="bbl-KF-HsK" id="Orm-ax-r9q"/>
152
+ </connections>
153
+ </viewController>
154
+ <placeholder placeholderIdentifier="IBFirstResponder" id="LRy-mU-KHy" userLabel="First Responder" sceneMemberID="firstResponder"/>
155
+ </objects>
156
+ <point key="canvasLocation" x="494" y="-968"/>
157
+ </scene>
158
+ <!--Navigation Controller-->
159
+ <scene sceneID="EJJ-XS-yT5">
160
+ <objects>
161
+ <navigationController definesPresentationContext="YES" id="W4H-FJ-WP2" sceneMemberID="viewController">
162
+ <navigationBar key="navigationBar" contentMode="scaleToFill" id="R4K-wl-pTU">
163
+ <autoresizingMask key="autoresizingMask"/>
164
+ </navigationBar>
165
+ <connections>
166
+ <segue destination="qKe-kL-ggu" kind="relationship" relationship="rootViewController" id="ujK-qc-HeL"/>
167
+ </connections>
168
+ </navigationController>
169
+ <placeholder placeholderIdentifier="IBFirstResponder" id="ZwO-hp-HaM" userLabel="First Responder" sceneMemberID="firstResponder"/>
170
+ </objects>
171
+ <point key="canvasLocation" x="-586" y="91"/>
172
+ </scene>
173
+ <!--View Controller-->
174
+ <scene sceneID="sfR-ie-obi">
175
+ <objects>
176
+ <viewController storyboardIdentifier="C" useStoryboardIdentifierAsRestorationIdentifier="YES" id="8NF-7x-eCV" sceneMemberID="viewController">
177
+ <layoutGuides>
178
+ <viewControllerLayoutGuide type="top" id="Ub0-eC-d3R"/>
179
+ <viewControllerLayoutGuide type="bottom" id="mCe-xR-ycg"/>
180
+ </layoutGuides>
181
+ <view key="view" contentMode="scaleToFill" id="A9M-n0-kvA">
182
+ <rect key="frame" x="0.0" y="64" width="320" height="416"/>
183
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
184
+ <subviews>
185
+ <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="C" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="pIG-ob-jFS">
186
+ <rect key="frame" x="0.0" y="0.0" width="320" height="220"/>
187
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
188
+ <fontDescription key="fontDescription" type="system" pointSize="100"/>
189
+ <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
190
+ <nil key="highlightedColor"/>
191
+ </label>
192
+ </subviews>
193
+ <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
194
+ </view>
195
+ <extendedEdge key="edgesForExtendedLayout" bottom="YES"/>
196
+ <navigationItem key="navigationItem" id="gTY-qx-kty"/>
197
+ <connections>
198
+ <segue destination="73V-H2-uPu" kind="push" id="glt-uI-S6F"/>
199
+ </connections>
200
+ </viewController>
201
+ <placeholder placeholderIdentifier="IBFirstResponder" id="vsy-0K-x5d" userLabel="First Responder" sceneMemberID="firstResponder"/>
202
+ </objects>
203
+ <point key="canvasLocation" x="494" y="-288"/>
204
+ </scene>
205
+ <!--View Controller-->
206
+ <scene sceneID="839-E8-2Br">
207
+ <objects>
208
+ <viewController storyboardIdentifier="D" useStoryboardIdentifierAsRestorationIdentifier="YES" id="73V-H2-uPu" sceneMemberID="viewController">
209
+ <layoutGuides>
210
+ <viewControllerLayoutGuide type="top" id="HYe-o5-9Xc"/>
211
+ <viewControllerLayoutGuide type="bottom" id="RTJ-TJ-CiF"/>
212
+ </layoutGuides>
213
+ <view key="view" contentMode="scaleToFill" id="QHs-ip-Izx">
214
+ <rect key="frame" x="0.0" y="64" width="320" height="416"/>
215
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
216
+ <subviews>
217
+ <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="D" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="cm9-XA-eke">
218
+ <rect key="frame" x="0.0" y="0.0" width="320" height="220"/>
219
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
220
+ <fontDescription key="fontDescription" type="system" pointSize="100"/>
221
+ <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
222
+ <nil key="highlightedColor"/>
223
+ </label>
224
+ </subviews>
225
+ <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
226
+ </view>
227
+ <extendedEdge key="edgesForExtendedLayout" bottom="YES"/>
228
+ <navigationItem key="navigationItem" id="wCB-0e-HIF"/>
229
+ </viewController>
230
+ <placeholder placeholderIdentifier="IBFirstResponder" id="XyR-ap-ISf" userLabel="First Responder" sceneMemberID="firstResponder"/>
231
+ </objects>
232
+ <point key="canvasLocation" x="913" y="-288"/>
233
+ </scene>
234
+ <!--Beyond Segue View Controller-->
235
+ <scene sceneID="EkT-ip-QWf">
236
+ <objects>
237
+ <viewController id="Bbu-Ps-kCX" customClass="BeyondSegueViewController" sceneMemberID="viewController">
238
+ <layoutGuides>
239
+ <viewControllerLayoutGuide type="top" id="6HY-0V-q3D"/>
240
+ <viewControllerLayoutGuide type="bottom" id="Cfa-bD-G6A"/>
241
+ </layoutGuides>
242
+ <view key="view" contentMode="scaleToFill" id="bM1-RV-CNM">
243
+ <rect key="frame" x="0.0" y="64" width="320" height="416"/>
244
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
245
+ <subviews>
246
+ <button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="C8a-M3-w6x">
247
+ <rect key="frame" x="145" y="256" width="30" height="30"/>
248
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
249
+ <state key="normal" title="to D">
250
+ <color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
251
+ </state>
252
+ <connections>
253
+ <action selector="touchtToD:" destination="Bbu-Ps-kCX" eventType="touchUpInside" id="FlC-gE-Fbe"/>
254
+ </connections>
255
+ </button>
256
+ <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="B" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="31M-uE-y4S">
257
+ <rect key="frame" x="0.0" y="0.0" width="320" height="220"/>
258
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
259
+ <fontDescription key="fontDescription" type="system" pointSize="100"/>
260
+ <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
261
+ <nil key="highlightedColor"/>
262
+ </label>
263
+ </subviews>
264
+ <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
265
+ </view>
266
+ <extendedEdge key="edgesForExtendedLayout" bottom="YES"/>
267
+ <navigationItem key="navigationItem" id="Uuo-XQ-iTZ"/>
268
+ </viewController>
269
+ <placeholder placeholderIdentifier="IBFirstResponder" id="i1A-ih-j2e" userLabel="First Responder" sceneMemberID="firstResponder"/>
270
+ </objects>
271
+ <point key="canvasLocation" x="494" y="431"/>
272
+ </scene>
273
+ </scenes>
274
+ <simulatedMetricsContainer key="defaultSimulatedMetrics">
275
+ <simulatedStatusBarMetrics key="statusBar"/>
276
+ <simulatedOrientationMetrics key="orientation"/>
277
+ <simulatedScreenMetrics key="destination"/>
278
+ </simulatedMetricsContainer>
279
+ </document>