Localization in PostProcessBuild - App Tracking Transparency

Hi! How could I use localization in PostProcessBuild? I’m using Unity’s code:

#if UNITY_IOS
using UnityEditor.Callbacks;
using UnityEditor;
using UnityEditor.iOS.Xcode;
using System.IO;

public class PostBuildStep
{
    // Localize here!
    const string k_TrackingDescription = "Your data will be used to provide you a better and personalized ad experience.";

    [PostProcessBuild(0)]
    public static void OnPostProcessBuild(BuildTarget buildTarget, string pathToXcode)
    {
        if (buildTarget == BuildTarget.iOS)
        {
            AddPListValues(pathToXcode);
        }
    }

    static void AddPListValues(string pathToXcode)
    {
        string plistPath = pathToXcode + "/Info.plist";
        PlistDocument plistObj = new PlistDocument();


        plistObj.ReadFromString(File.ReadAllText(plistPath));

        PlistElementDict plistRoot = plistObj.root;

        plistRoot.SetString("NSUserTrackingUsageDescription", k_TrackingDescription);

        File.WriteAllText(plistPath, plistObj.WriteToString());
    }
}
#endif

Thank you!

You are trying to localize the iOS plist values? Do you know we can do this for you and support the NSUserTrackingUsageDescription key.
https://docs.unity3d.com/Packages/com.unity.localization@1.3/manual/iOS-App-Localization.html

If you want to get the localized data during a build then I would use the LocalizationEditorSettings

2 Likes

@karl_jones Thank you very much!

Note: change your manifest.json:

"com.unity.localization": "1.3.1",
1 Like