Xcodeからxclocのエクスポートとインポートを試してみました。
xclocとは翻訳ファイル(Localization.string)などを編集しやすい形にしたファイルです。
こちらのフォーマットはxliffを改善したもので、Xcode10から使えるようになりました。
国際化自体については下記事でまとめたのでよろしければご参照下さい。
xclocのエクスポートとインポート
まずは下のようにローカライズしたStringファイルを作ります。
各ファイル下のように1行だけ追加しました。
CFBundleDisplayName = "アプリ名_英語";
"testKey" = "英語";
Xcodeも国際化をしておきます。
次にXcodeのProductのExport Localizations…から書き出しをします。
次画面で保存先を指定したら保存します。
保存すると下のように各言語用のファイルが作られます。
ファイルを開くと下のように各ファイルの英語・日本語がある画面になります。
試しにここの日本語部分を変更してみます。
変更したらImport Localizations...からインポートしてみます。
インポート時は下のように差分を見る事ができます。
インポート完了すると下のようにプロジェクト側も変更されます。
xclocの中身
xclocですが中身は下のような構成になっています。
Source ContentsにはstringファイルやStoryboardなど元ファイルが入っています。
Localized Contentsには編集用のxliffファイルが入っています。
xliffファイルの中身は下のようになっています。
<?xml version="1.0" encoding="UTF-8"?> <xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.2" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 http://docs.oasis-open.org/xliff/v1.2/os/xliff-core-1.2-strict.xsd"> <file original="MyApp/Base.lproj/Main.storyboard" source-language="en" target-language="fr" datatype="plaintext"> <header> <tool tool-id="com.apple.dt.xcode" tool-name="Xcode" tool-version="13.2.1" build-num="13C100"/> </header> <body> <trans-unit id="reG-Hn-ghY.text" xml:space="preserve"> <source>Hello world</source> <target>Hello world</target> <note>Class = "UILabel"; text = "Hello world"; ObjectID = "reG-Hn-ghY";</note> </trans-unit> </body> </file> <file original="MyApp/en.lproj/InfoPlist.strings" source-language="en" target-language="fr" datatype="plaintext"> <header> <tool tool-id="com.apple.dt.xcode" tool-name="Xcode" tool-version="13.2.1" build-num="13C100"/> </header> <body> <trans-unit id="CFBundleDisplayName" xml:space="preserve"> <source>アプリ名_英語</source> <target>アプリ名_フランス語</target> <note>InfoPlist.strings MyApp Created by XXXX on 2022/02/13.</note> </trans-unit> <trans-unit id="CFBundleName" xml:space="preserve"> <source>MyApp</source> <note>Bundle name</note> </trans-unit> </body> </file> <file original="MyApp/en.lproj/Localizable.strings" source-language="en" target-language="fr" datatype="plaintext"> <header> <tool tool-id="com.apple.dt.xcode" tool-name="Xcode" tool-version="13.2.1" build-num="13C100"/> </header> <body> <trans-unit id="testKey" xml:space="preserve"> <source>英語</source> <target>フランス語</target> <note>Localizable.strings MyApp Created by XXXX on 2022/02/13.</note> </trans-unit> </body> </file> </xliff>