I2 Localization ( The most complete Localization solution for Unity )

Hi @Inter-Illusion, we want to connect a google spreadsheet to the I2 asset in our project, but whenever I follow the documentation and click on the “Install” button, it doesn’t link to a copy of the source code used to make a google app. I attached an image to this message of where the link takes me. I suppose it could be a permissions issue or maybe the link is outdated? I’m not sure.

Can you provide a link to the source code here? Or point me in the right direction of what the issue might be?

Thanks!

2 Likes

I’m using I2loc in a project but the editor keeps randomly making all of the text in my UI reversed? It’s as if the RTL setting is enabled, but it isn’t? I just localized hundreds of text fields in my scene and now they are all backwards, and I have to go through and fix them one by one?

How do I stop this rom happening?

Is there any solution to get text field search working again?

@Inter-Illusion: We have the same problem with google.
Our previous google sheet with all the translations got suddenly deleted, although nobody in our company seems to have deleted it and when we try to create a new google sheet we run into the same problem as @ytrevor81.

Did you change something in your google sheet apps?

Hi @Inter-Illusion. We are using I2 Localization and have a problem with the fallback languages. We have a term with no localization strings for some languages and waited to see English fallback for these languages. But for some reason we see empty string instead of the string in English. This problem reproduces on different devices and different languages, so that on the one device with language Chinese we see empty string, but on the another device English fallback works. We tried to preload English language LocalizationManager.Sources.First().LoadLanguage(0, false, true, true, false); and that helps, but we don’t want to keep two languages in the memory. Could you suggest a solution of this problem or may be some options to research the bug. You could see settings of our project on the attached screenshot.

I haven’t read the entire thread but haven’t seen this mentioned either. The default code for the height of a terms window is really odd:
TermsListHeight = Mathf.Min(Screen.height*0.5f, TermsListHeight);

On all of the screens we’ve tested it on with modern versions of Unity that causes a scrollbar to be drawn inside the component separate from the scrollbar drawn inside the terms window. We just change that value to 0.4 every time a new version comes out, but there’s probably a much better approach to this that should be considered.

I’m using this on a Macbook and the terms list is always the full height of the actual display screen and not the intention which is maybe to have half the inspector window height. So there’s another outer scrollbar which you have to scroll down to see the bottom controls. It’s definitely broken.

Try changing the line that I linked above. With a 4k monitor Screen.height*0.4f worked for me, but I started at 0.3f. I’m curious if that’s a mac difference or something else. For reference my version:

@Inter-Illusion Hello, I asked a while ago if there is an easy way to automate the whole csv importing and language terms overriding. I’m not looking for anything too custom, just the ability to import a known spreadsheet, and completely override the existing terms and translations with the data from the spreadsheet and make an editor tool with this that can be triggered with a shortcut. And then trigger the script building.
Any updates on this?

Hello @Inter-Illusion ,

I’ve been using i2 Localization for years, and it has always worked flawlessly. However, since last week, the Google Export/Import functions suddenly stopped working.

I updated to the latest version of i2 Localization and went through a full reinstallation. The “Verify” step gives a green check, and “Refresh” correctly lists my localization spreadsheet, but clicking “Export” or “Import” now throws this error:

“Can’t access Google”

It seems Google may have changed how it handles API calls, breaking the connection.

Could you please look into this issue as soon as possible? I have a public demo to ship in the next few days, and this problem is blocking my localization workflow.

Many thanks for your help and for maintaining such a great asset.

Do you guys found any solution to this?

I’m using it, and it seems to be working fine. I recently updated some terms, and everything still works. Are you sure you’re using the latest version from the asset store?

Same issue for us here @Inter-Illusion
We are using the latest version from the store on Unity 2022.3.61f
It suddenly stopped working. nothing changed on google side (spreadcheat, password)
Any idea if something changed on Google’s API?

I’ve been using I2 Localization for years, and it still works well for Unity…
but we kept running into painful issues:

  • Google Sheet sync not works
  • Translators overwrite each other’s changes
  • CSV workflows don’t scale with multiple languages
  • Team collaboration is basically impossible

After fighting with this for too long, we ended up solving it by
building a web-based localization workspace where translators, devs, and PMs can all work together.

Key features :

  • One-click Push/Pull from Unity
  • CSV Export, Import
  • Missing translation detection
  • Multi-project management

If anyone here is also struggling with I2 workflows,
here’s the tool we built :

:backhand_index_pointing_right: https://locforge.com

Hello @Inter-Illusion ,

Today I found a file named I2Source_I2Languages1-brabra.loc generated in my save folder.
What is this? Should I include it in my Steam Cloud saves?

If anyone knows, I’d be grateful if you could let me know.

Dear I2 developers,

we just found out that I2 Localization isn’t compatible with Domain Reload turned off. All static variables would need to be reset in a method decorated with the [RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.SubsystemRegistration)] attribute.

See these Project Auditor warnings:

Are there any efforts to support this? Quick iteration is immensly important for commercial projects like ours.

i everyone,

If you are trying to set up the I2 Google Web Service (for I2 Localization / I2 Data) and are getting stuck because the old instructions no longer work, you are not alone, and the script is not broken.

The code inside I2GoogleWebServiceV5.json is still 100% valid and fully supported by Google (it uses the V8 runtime and standard APIs). The problem is that Google has completely changed the Apps Script deployment interface , and the old instructions in the script comments (“Publish > Deploy as web app” ) are obsolete. Additionally, Google’s new security warnings often confuse users during authorization.

Here is the updated, working step-by-step guide to get it running today:

:hammer_and_wrench: Updated Installation Steps (Current Google Apps Script UI)

  1. Open the Google Apps Script editor and paste all the files from the I2 Web Service JSON (ensure appsscript.json has "runtimeVersion": "V8" , which it already does).
  2. In the top-right corner, click the blue “Deploy” button and select “New deployment” .
  3. Click the gear icon :gear: next to “Select type” and choose “Web app” .
  4. In the configuration window, set the following exactly :
  • Description: I2 Localization Web Service (or any name you prefer).
  • Execute as: “Me” (your email) → This is crucial so the script can access your Google Drive/Sheets.
  • Who has access: “Anyone” → This is mandatory so the Unity game can access the script without requiring OAuth authentication.
  1. Click the “Deploy” button.
  2. Google will ask for authorization. Click “Review permissions” and choose your Google account.
  3. :warning: THE AUTHORIZATION “GOTCHA” : You will see a warning screen saying “Google hasn’t verified this app” . This is completely normal for personal scripts.
  • Do NOT click “Back to Safety”.
  • Instead, click the “Advanced” link (usually in the bottom-left corner).
  • Then, click the link that says “Go to [Your Project Name] (unsafe)” .
  1. On the next screen, click “Allow” to grant the script access to your Spreadsheets and Drive.
  2. A success window will appear showing your “Web app URL” . Copy this URL (it must end in /exec ).
  3. Go back to Unity , open the I2 Localization settings, and paste this URL into the “Web Service URL” field.
  4. Click the test/ping button in the Unity inspector. It should successfully return the script version (e.g., 5 ).

:light_bulb: Extra Troubleshooting Tips:

  • “Script not found” or “403 Forbidden” errors: This almost always means you forgot to set “Who has access” to “Anyone” , or you didn’t complete the “Advanced > Go to unsafe” authorization step.
  • Updating the code later: If you ever modify the script code in the future, you must go to “Manage deployments”, edit the existing deployment, and change the Version dropdown to “New version” before saving. Otherwise, Unity will keep hitting the cached old version.
  • Translation Quotas: The LanguageApp.translate function has a free daily limit imposed by Google. If you translate thousands of lines at once, you might hit this temporary limit, but the read/write spreadsheet functions will continue to work perfectly.

Hope this saves someone the hours of frustration I went through figuring out Google’s new UI! Let me know if you run into any issues.

Hey, we are dealing with this problem now with an old game and I already forgot how I set up the google sheet syncing. Anyways, I already have problems with step 1. Where do I find the “I2 Web Service JSON”? Can that be found on my Google account?

Hi @davenirline,
The “I2 Web Service JSON” is included in the I2 Localization asset inside your Unity project, not in your Google account. Open your Unity project, locate the I2 Localization/Google Spreadsheets tool, and click Install; this creates a copy of the web-service script in your Google Drive.
If the option/files are missing, reinstall the I2 Localization package and search the project for I2GoogleWebServiceV5.json.

1 Like