Search Unity

Bug Italian locale Works In Build But Not In Steam

Discussion in 'Localization Tools' started by afavar, Dec 23, 2022.

  1. afavar

    afavar

    Joined:
    Jul 17, 2013
    Posts:
    68
    Hello, I am using Unity Localization for my Steam game. I have 10 different languages and all translations work both in editor and build. However, I have a really strange problem. When I upload the build to Steam and play through the Steam, Italian locale does not work. It says "No translations found for ..." message on all strings. Other locales works fine and italian also works fine when I launch through the exe file without using Steam. What might be causing this?
     
  2. karl_jones

    karl_jones

    Unity Technologies

    Joined:
    May 5, 2015
    Posts:
    8,297
    Do you have any errors in the player log file?
    Is steam setting Italian as the startup language or is it when you switch to Italian in the game options that it fails?
     
  3. afavar

    afavar

    Joined:
    Jul 17, 2013
    Posts:
    68
    Hi @karl_jones , I might have figured out the issue. The problem was a bit tricky to track.

    My local build was working fine. Although I have uploaded the same files to Steam, the build that was downloaded via Steam was not working. I have checked the local files of the Steam build in this path:

    MyGame_Data\StreamingAssets\aa\StandaloneWindows64

    The Italian bundle file had a weird i character. (X is a placeholder)

    localization-string-tables-Xtalian(it)_assets_all.bundle

    Then, I have checked the local files of my local Unity build. The file name was like that:

    localization-string-tables-ıtalian(it)_assets_all.bundle

    There was a "ı" character instead of the other weird "i". When I changed the Steam local file to "ı", it worked.

    My system language was set to Turkish. In Turkish language the capital "I" letter can be lowered to "ı". I believe while building the addressables, Unity is using ToLower() for the string "Italian" and since my system language is Turkish, it is lowered as "ıtalian". Steam prob freaks out when processing this file and changes it to some other weird i character. This causes a file name mismatch in the Steam build and the italian localization table can not be loaded. I have fixed this problem by changing my system language to English and rebuilding again. I believe ToLowerInvariant() should be used instead of ToLower() in this case. You can have a look at this stackoverflow post to learn more about the "ı" problem.

    https://stackoverflow.com/questions/6225808/string-tolower-and-string-tolowerinvariant
     
  4. karl_jones

    karl_jones

    Unity Technologies

    Joined:
    May 5, 2015
    Posts:
    8,297
    Oh good catch. Would you be able to file a bug report for this so I can send it over to the addressables team?