LoginSignup
2
2

パッケージ内でString Catalogを管理する方法(Default Localization(en)を削除する)

Last updated at Posted at 2023-12-10

概要

Xcode15がリリースされ、String Catalogが使えるようになりました。
また、最近はSPMによるマルチモジュール構成を取るプロジェクトも増えており、パッケージ内で文字列リソースを管理したいという需要も増えているかと思います。
この記事では、パッケージ内でのString Catalogの管理方法を以下の2つのポイントに焦点を当てつつ、解説していきます。

  • String Catalogの設定方法の解説
  • ローカライズはさせず、シンプルに日本語の文字列リソースをString Catalogで管理する方法の解説

手順

1. package.swiftの編集

パッケージを作成すると、デフォルトの言語設定はEnglish(en)になっていると思います。  
個人で作成したプロジェクトではローカライズは目的ではなかったので、このデフォルトの言語設定をJapanese(ja)に変更したいと思います。
具体的には以下のようにpackage.swiftを変更します。

import PackageDescription

let package = Package(
    name: "MyPackage",
    // デフォルト言語設定をjaに変更
    defaultLocalization: "ja", // この行を追加
    platforms: [
        .iOS(.v16),
    ],
    products: [
        // Products define the executables and libraries a package produces, making them visible to other packages.
        .library(
            name: "MyPackage",
            targets: ["MyPackage"])
    ]
    targets: [
        // Targets are the basic building blocks of a package, defining a module or a test suite.
        // Targets can depend on other targets in this package and products from dependencies.
        .target(
            name: "MyPackage",
            // ついでにこの後作成するLocalizable.xcstringsを管理するためのリソース管理先の設定も追加
            resources: [
                .process("Resources")
            ]
        ),
        .testTarget(
            name: "MyPackageTests",
            dependencies: ["MyPackage"]),
    ]
)

これで、パッケージ内のデフォルトの言語設定がenからjaに変わりました。

2. Resourcesディレクトリを作成

パッケージ内にLocalizable.xcstringsを管理するためのResourcesディレクトリを作成する。

3.Resources配下にLocalizable.xcstringsを作成する

Resourcesを選択した状態でFile -> New -> Fileから、String Catalogを選択。

スクリーンショット 2023-12-11 2.02.30.png
作成したLocalizable.xcstringsを開くと、以下のようにJapaneseが追加された状態になっています。
スクリーンショット 2023-12-11 2.16.19.png

この状態で、赤枠で囲った+ボタンを押すと新しいkey,valueの行が作成されます。
スクリーンショット 2023-12-11 2.19.18.png
しかし、画像にもあるように、Default Localization(en)という設定が残っています。
冒頭にもあった通り、ローカライズさせる目的はないので、こいつを消したいと思います。

4. Default Localization(en)を削除する

Localizable.xcstringsを選択して、メニューを開き、Open As -> Source Codeを選択。
スクリーンショット 2023-12-11 2.23.30.png
するとsourceLanguageにenが設定されていることが確認出来ると思います。
これを以下のようにjaに変更します。

{
  "sourceLanguage" : "ja",
  "strings" : {
    "Key" : {
      "extractionState" : "manual"
    }
  },
  "version" : "1.0"
}

先ほどと同じ手順で、今度はOpen As -> String CatalogでString Catalogを開く。
スクリーンショット 2023-12-11 2.26.27.png
すると画像にもある通り、Default Localization(en)が削除出来ました。
あとはパッケージ内の文字列をこのLocalizable.xcstringsで管理するだけです。
これにより、SwiftGenやR.swiftを追加せずとも文字列リソースを管理することが可能になります。

まとめ

今回はパッケージ内でString Catalogを使った文字列リソースの管理の設定方法を解説しました。
String Catalogを使うことで、

  • SwiftGenやR.swiftを追加しなくてもいい
  • ハードコーディングを避けられる
  • 後々、ローカライズ対応することも容易

といったメリットが考えられ、個人的には結構気に入っています。
是非、一度String Catalogを試してみてください!

最後までお読み頂きありがとうございました。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2