Search Unity

I2 Localization ( The most complete Localization solution for Unity )

Discussion in 'Assets and Asset Store' started by Inter-Illusion, Feb 27, 2014.

  1. Inter-Illusion

    Inter-Illusion

    Joined:
    Jan 5, 2014
    Posts:
    477
    Hi
    I'm sorry to say that I haven't been able to reproduce it. I installed 5.4.1 but no matter what, the AboutWindow shows fine and there are no encoding issues.
    UTF8 and XML should be supported everywhere in Unity. Are you using windows or Mac? What Platform is your Unity set to? Are you targeting WSA o similar?
    Can you please post the exact log you are getting, maybe that could give me a better hint.
     
  2. Inter-Illusion

    Inter-Illusion

    Joined:
    Jan 5, 2014
    Posts:
    477
    BTW, you can always disable that code by adding a return at the beginning of the StartConnection function (line 73 I2AboutWindow.cs)
    Code (csharp):
    1.  
    2. public static void StartConnection()
    3. {
    4.       return;
    5.  
    That function is meant only for checking if there is an update to the plugin, and will not affect anything else.
     
  3. Wajdik

    Wajdik

    Joined:
    Feb 4, 2015
    Posts:
    206
    You need to install Unity 5.4.1p3 to reproduce it.

    Thank you, by adding this "return" the "Unsupported encoding: 'utf-8, application/xml'" is removed now.
     
  4. Wajdik

    Wajdik

    Joined:
    Feb 4, 2015
    Posts:
    206
    After I started using your plugin my app started having these exceptions for some users:

    Code (Log):
    1. FormatException: Format_InvalidString. For more information, visit http://go.microsoft.com/fwlink/?LinkId=623485
    2. at SharedLibrary!<BaseAddress>+0x54e501
    3. at SharedLibrary!<BaseAddress>+0x3611f3
    4. at System.String.Format(String format, Object arg0)
    5. at DescriptionDisplay.OnEnable()
    6. at DescriptionDisplay.$Invoke1(Int64 instance, Int64* args)
    7. at UnityEngine.Internal.$MethodUtility.InvokeMethod(Int64 instance, Int64* args, IntPtr method)
    My app is build using Unity 5.4.1f1 for Windows 10 Universal and I'm using I2 Localization 2.6.8 b6
     
  5. Korindian

    Korindian

    Joined:
    Jun 25, 2013
    Posts:
    460
    I'm also only getting the error with patch 5.4.1p3, not with 5.4.1. Thanks for the workaround.
     
  6. Inter-Illusion

    Inter-Illusion

    Joined:
    Jan 5, 2014
    Posts:
    477
    Hi, if you have a class named DescriptionDisplay, can you please send me the code in OnEnable? It seems that function is calling string.Format and failing when accessing one of the parameters.
    Are you accessing the localization API on that function? If so, please let me know what call are you making so that I could try reproducing that.
     
  7. Inter-Illusion

    Inter-Illusion

    Joined:
    Jan 5, 2014
    Posts:
    477
    Patch releases (5.4.1pX) are not very well tested (they don't go through a full QA test). And it seems that accessing www.text is failing even when the returned text is correct.
    I think the best is to wait for an official release (5.4.2) and if the error continues there, then I will send a bug about it.
     
  8. Wajdik

    Wajdik

    Joined:
    Feb 4, 2015
    Posts:
    206
    I think it's better to submit a bug report about this issue now to be sure they're aware about it and they'll fix it in the coming releases.

    My Code is like this:

    Code (CSharp):
    1. void OnEnable()
    2.     {
    3.         string description = "";
    4.         description = I2.Loc.ScriptLocalization.Get("TargetDescription/" + "targetdescription_" + LevelProfile.main.target);
    5.         switch (LevelProfile.main.target)
    6.             {
    7.                 case Field.Score:
    8.                         description = string.Format(description, LevelProfile.main.Score);
    9.                     break;
    10.                 case Field.Enemy:
    11.                         description = string.Format(description, LevelProfile.main.Enemy.Count(x => x.Enemy_level > 0));
    12.                     break;
    13.                 case Field.Time:
    14.                         description = string.Format(description, LevelProfile.main.Time);
    15.                     break;
    16.                 case Field.Boss:
    17.                         description = string.Format(description, LevelProfile.main.Boss);
    18.                     break;
    19.             }
    20.         text.text = description;
    21.     }
    In Unity Game Performance I'm seeing Exceptions like this:

    Code (Log):
    1. System.Exception: Target Enemy: enemies in this level. {٠} You need to beat error: System.FormatException: Format_InvalidString. For more information, visit http://go.microsoft.com/fwlink/?LinkId=623485
    2. at SharedLibrary!<B
    My original text is "You need to beat {0} enemies in this level.
     
  9. Inter-Illusion

    Inter-Illusion

    Joined:
    Jan 5, 2014
    Posts:
    477
    I submitted a bug to Unity with a repro project showing the www.text issue.

    Also, I made a workaround to avoid having the encoding error in the patch releases. You can download it from the beta folder (2.6.8 f2)
     
    Wajdik and Korindian like this.
  10. Link538

    Link538

    Joined:
    Jan 25, 2013
    Posts:
    15
    I would like to add the ability for our players to add custom translations, is there some API to create new languages at run time?
     
  11. Inter-Illusion

    Inter-Illusion

    Joined:
    Jan 5, 2014
    Posts:
    477
    Hi,
    I2L gives full access to the Localization Source, currently there are a few developers that are allowing their players to create mods and modify the localization.

    One way is to create CSV files containing the new language or the new terms with their proper translations. Then from the game, just Read the CSV file and add it to the LanguageSource.
    http://inter-illusion.com/assets/I2LocalizationManual/ImportingaCSVfile.html

    That will be the easiest way for mods, given that the players only create or modify the CSV spreadsheet in one of your folders and it gets loaded into the game.


    Another way is for you to access the LanguageSource and add terms from code, then get the termData and set the translations.
    Code (csharp):
    1.  
    2.      var I2Languages = LocalizationManager.Sources[0];
    3.      I2Languages.AddLanguage("Spanish", "es");
    4.  
    5.      int languageIndex = I2Languages.GetLanguageIndex("Spanish");
    6.  
    7.      var termData = I2Languages.AddTerm("NewTerm"); // creates or finds existing term
    8.      termData.Languages[languageIndex] = "Esto es un ejemplo";
    9.  
    10.       I2Languages.UpdateDictionary();
    11.  
    Hope that helps,
    Frank
     
    Mauri likes this.
  12. Link538

    Link538

    Joined:
    Jan 25, 2013
    Posts:
    15
    That should do the trick, thanks :)
     
  13. MythicalCity

    MythicalCity

    Joined:
    Feb 10, 2011
    Posts:
    391
    Hi, what is the upgrade process for updating the plugin between versions? I usually delete my I2 folder but last time I noticed that the ScriptLocalization file was missing so it prevented the rest of the scripts from loading and then autogenerating that file. I had to revert that file from my repository to get the project to compile so I could access my languages prefab.
     
  14. Inter-Illusion

    Inter-Illusion

    Joined:
    Jan 5, 2014
    Posts:
    477
    Here are the steps for a safe upgrading:
    http://inter-illusion.com/assets/I2LocalizationManual/Upgrading.html

    As of a few versions ago, to avoid losing data, I moved the auto-generated I2Languages.prefab and ScriptLocalization.cs to outside of the I2\Localization folder.
    However, I left them in the I2 folder for easy understanding of what's the plugin data (I2\Resources\I2Languages.prefab and I2\ScriptLocalization.cs).
    That way, you shouldn't delete the I2 folder. Instead, you should delete the I2\Localization folder.

    Another thing you could do is to move I2Languages.prefab and ScriptLocalization to outside of the I2 folder (e.g. Assets\LocalizationData\xx). The plugin will always detect where they are and will keep updating them in the new location. But it will be easier for you as you can just delete I2 folder without loosing any data.

    Hope that helps
     
  15. Studiomaurer

    Studiomaurer

    Joined:
    Sep 5, 2012
    Posts:
    28
    Hi, I'm trying your plugin for the first time. So far it seems quite nice. I only have issues with TextmeshPro. When I try to localize TMP_Text there is no Target selectable in the localize component (Target:None). Using Unity 5.4.2p2, TMPro 1.0.54.52. Force Detection of Plugins won't work, neither will manual settings edit, am I missing something?
     
  16. Inter-Illusion

    Inter-Illusion

    Joined:
    Jan 5, 2014
    Posts:
    477
    Hi,
    Are you using a TMP_Text directly? As far as I know thats just the base type, and you should be using TextMeshPro or TextMeshProUGUI, which both inherit from TMP_Text. That component (TMP_Text) doesn't even implement a custom inspector as the others.

    The plugin is able to detect TextMeshPro and TextMeshProUGUI, but will not TMP_Text.
    Are you really using that component, or is just a typo? If so, can you please let me know how you are using it so that I could test that and add support for TMP_Text as well.

    If instead of TMP_Text, you are using TextMeshPro and TextMeshProUGUI; please, very that the Scripting Define Symbols contains "TextMeshPro" (without the quotes).

    Also, check the console, to see if there was any compile or runtime error that its preventing the plugins to work as expected.

    Then, as soon as you add a Localize component to any object with TextMeshPro or TextMeshProUGUI the Target field will be updated automatically.

    Furthermore. I2 Localization has an example scene showing the TextMesh Pro support (Assets\I2\Localization\Examples\Targets\TextMesh Pro Localization). Can you open that scene and verify that the Localize components in there have the correct Target? That will let you know whatever the integration is working and if the issue you are seeing is just a setup issue in your scene.

    Also, if you like you can send me an small repro project that its not working for you and I will check it up and let you know of any setup issue that it has.

    Hope that helps,
    Frank
     
  17. MythicalCity

    MythicalCity

    Joined:
    Feb 10, 2011
    Posts:
    391
    Thank you!
     
  18. Pawl

    Pawl

    Joined:
    Jun 23, 2013
    Posts:
    110
    I'm on the fence about purchasing this for our project (roughly 1,500 lines of English text, looking to translate to EFIGS). We're using NGUI.

    How does the auto google translator handle tokens? ie:

    MyKey,"This text is [FF0000]red[-]."

    Thanks!
     
  19. Inter-Illusion

    Inter-Illusion

    Joined:
    Jan 5, 2014
    Posts:
    477
    Just for testing I placed that text in the English, and clicked the "Translate All" button to get it translated to the rest of the languages, here is the result:
    upload_2016-11-17_22-20-41.png

    Seems to be handling it fine :) Although, there is an extra space after the tags, I will add a fix for that!
    Hope that helps,
    Frank
     

    Attached Files:

    Pawl likes this.
  20. Kurius

    Kurius

    Joined:
    Sep 29, 2013
    Posts:
    412
    I have a single text object with the Localize script attached. I want to be able to change the localization Term dynamically at runtime so that I can change WHAT message is displayed as desired, rather than only changing the language of the message. Changing the Term dynamically seems to work well consistently in the Unity Editor. But it doesn't always work on Android. Do you have any tips I can try to make this work consistently on Android? Furthermore is there some function I can manually call in order to force the system to recognize that the Term has changed, and therefore change what message is displayed? Thanks
     
  21. Inter-Illusion

    Inter-Illusion

    Joined:
    Jan 5, 2014
    Posts:
    477
    Hi,
    I can believe I forgot to add the SetTerm section from the old documentation! Will update the documentation right away!

    The correct way of changing the term is by calling the SetTerm function in the Localize component. That will change the term and start the localization flow so that the translation gets displayed based on the current language.

    You can use something like:
    Code (csharp):
    1.  
    2. Localize loc = label.GetComponent<Localize>();
    3.  
    4. loc.SetTerm("New Term");  // this sets the term and updates the label's text, also calls any callback/parameters function
    5.  
    If you also need to change the secondary term (e.g. to localize the font), just add the secondary term to that function:

    Code (csharp):
    1.  
    2. loc.SetTerm("Tutorial_Start", "BigFont");
    3.  
    also, remember that if your terms are categorized, you need to add its path:

    Code (csharp):
    1.  
    2. loc.SetTerm("Category/SubCategory/Term");
    3.  
    Hope that helps,
    frank
     
  22. Kurius

    Kurius

    Joined:
    Sep 29, 2013
    Posts:
    412
    Thanks. Yes that is the approach I am using. But for some reason it doesn't work on Android (as in nothing happens, the new term doesn't get applied). But it works in the Unity Editor. By the way, I see several return statements in the Localize script. I wonder if for some reason the script is returning before setting the new term? Also does it matter if the GameObject is active or inactive during runtime when changing the term? I see the Localize script evaluates Awake and Enabled. And also there's a setting called Pre-Localize on Awake? I'm just wondering if there's something simple I'm missing, as to why this is not working. Thanks
     
  23. Kurius

    Kurius

    Joined:
    Sep 29, 2013
    Posts:
    412
    Ok I ended up uninstalling then reinstalling your plugin, and now everything works. Thanks
     
  24. Inter-Illusion

    Inter-Illusion

    Joined:
    Jan 5, 2014
    Posts:
    477
    Great! I was pulling my hairs trying to reproduce the problem without success! Good to know reinstalling solved it!
     
  25. Wild-Factor

    Wild-Factor

    Joined:
    Oct 11, 2010
    Posts:
    605
    How can we supress the spam windows ?
     
  26. Inter-Illusion

    Inter-Illusion

    Joined:
    Jan 5, 2014
    Posts:
    477
    Hi,
    The about window is there to let you know when there is a new version of either of the I2 plugins you have installed.
    You can disable the notification by clicking the "I'll check later" button, and by unselecting the options:
    "Notify me of new versions" and/or "Notify me of new betas"

    Please, be aware, that this setting is stored per project/unity, so if you have several projects, using I2 Localization, you will have to do this for each of them.

    Another way to disable the notification is by deleting the file Assets\I2\Common\Editor\I2AboutWindow.cs

    That will remove the code that checks for updates and shows the window.

    Hope that helps,
    Frank
     
  27. pl_ayground

    pl_ayground

    Joined:
    Dec 17, 2015
    Posts:
    58
    Hi @Inter-Illusion - I am using version v2.6.9b1 (in the most recent version of Unity 5.4.x) - and still have the Tizen issue with "I2Localization is a directory". Could you please advise if I still should remove this directory for Tizen? Or there is some other solution now? Thanks in advance!
     
  28. Inter-Illusion

    Inter-Illusion

    Joined:
    Jan 5, 2014
    Posts:
    477
    Hi
    Yes, you can delete the I2Localization folder without problems.

    It seems that Tizen integration is not handling very well Folders inside the plugins\Android
    https://forum.unity3d.com/threads/tizen-not-like-other-plugins.430955

    Other options:
    - click the I2Localization folder and in its inspector, select to Exclude Tizen Platform.
    - (haven't tried this yet, but it may work:) rename I2Localization to "Locales"
    - delete Plugins\Android\I2Localization before building for Tizen

    I have a task to further investigate this issue for a better workaround/fix. Sorry for the delay, I'm getting ready to release the SmartEdge plugin, but after that, I will be focusing on I2 Localization to clear this issues.

    Hope that helps,
    Frank
     
  29. a-bottosso

    a-bottosso

    Joined:
    Nov 13, 2015
    Posts:
    11
    Hi @Inter-Illusion
    Supposing that I want to handle two different type of localization in my game: a language localization and a platform localization (that maps, for example, the sprites of the specific platform buttons: one button sprite could represent the "A Button" sprite in XBox One and the "X Button" sprite in Playstation 4), can I have two different separated spreadsheet or I have to merge them manually before importing into I2 Localization?
    What is the best way to handle this situation considering that the language localization should be outsourced to a localization agency and the platform localization should be done by the developers?
    Thanks in advance!
    Alessio
     
  30. Inter-Illusion

    Inter-Illusion

    Joined:
    Jan 5, 2014
    Posts:
    477
    Hi,
    There is a feature coming soon that its exactly for that case:
    https://trello.com/c/slJ2P9aM/3-extend-input-specialization

    This feature uses the same system than the Plurals for storing the extra information, so as soon as I get the Plurals done (which is the priority now) I will quickly have this added.

    While I get that done, there are a few ways to accomplish this with the current plugin:
    The best is to use Parameters or Callbacks
    http://inter-illusion.com/assets/I2LocalizationManual/Parameters.html
    http://inter-illusion.com/assets/I2LocalizationManual/Callbacks.html

    Just create global parameters for the controls (e.g. JUMP_KEY which maps to "Space Bar" in PC, "A Button" in XBox and "X Button" in PS4).
    Then, make your translators use the parameters in their normal localization:
    TUTORIAL_INTRO: "Press and hold the {[JUMP_KEY]}"

    At runtime, the global parameter will be replaced and you will get:
    PC: "Press and hold the Space Bar"
    XBox: "Press and hold the A Button"
    PS4: "Press and hold the X Button"

    Same can be used for Sprites.



    Another alternative is to have special terms for the platform specific parts:
    Translator can do: "TUTORIAL_INTRO" and then the developers add two more: "TUTORIAL_INTRO[xbox]" and "TUTORIAL_INTRO[ps4]"

    Then, using a callback whenever the localization is executed, check if there is another term with the corresponding [xbox] or [ps4] tag, if there is, then replace the translations with that one. (a similar approach is the one used by the Touch/Normal and now the Plurals, but without the need of callbacks).

    Hope that helps,
    Frank
     
  31. a-bottosso

    a-bottosso

    Joined:
    Nov 13, 2015
    Posts:
    11
    Thank you very much @Inter-Illusion, your post was very useful. I'm exploring these callbacks and thy're very powerful :)
     
  32. flyingbanana

    flyingbanana

    Joined:
    Jan 28, 2014
    Posts:
    22
    I'm wondering if I can also translate app names on iOS/Android builds somehow - I know I probably need to write my own post-processing scripts, but I'm a little hopeful that it is already included/becoming a feature :)
     
  33. Inter-Illusion

    Inter-Illusion

    Joined:
    Jan 5, 2014
    Posts:
    477
    Hi,
    The current version (2.6.9) doesn't translate the appname, but its one of the features I'm planning on releasing SOON.
    Be sure to give your vote here: https://trello.com/c/gP5rSrQO/17-localize-application-name

    I'm using the votes there to know what features are more needed and to prioritize the development using that :)
     
    Mauri likes this.
  34. TheADrain

    TheADrain

    Joined:
    Nov 16, 2016
    Posts:
    48
    Hi, I love this plugin, it's making localization for my latest project really smooth. However I'm having an issue that primarily seems to pop up on IOS.

    Nothing is being localised when I try to change language. I've tracked this down to Localize.cs never being able to find a TargetCache. Which I've tracked down to RegisterEvents_TextMeshPro

    Turns out neither the 'TextMeshPro' nor 'TextMeshPro_Pre53' flags are set, however if I just force 'TextMeshPro' flag to on/true, it works as expected and all my localization using Text Mesh Pro texts works.

    Any idea what might cause this to happen?

    Both I2 Localization and TextMeshPro assets are the latest version.

    Cheers.
     
  35. Inter-Illusion

    Inter-Illusion

    Joined:
    Jan 5, 2014
    Posts:
    477
    Hi,

    This problem was fixed in the latest I2 Localization version (2.6.9 b3), Its already in the AssetStore, so, if you download the latest, it will be fixed.

    The issue was with the plugin auto-detection. For some reason, Unity decided to make iPhone and iOS build target use the same number in the enum, and iPhone is deprecated!! That its a nice trick, but messes with anyone trying to iterate over all platforms!!

    Here you can find more details:
    http://inter-illusion.com/forum/i2-localization/719-textmesh-pro-not-recognized#1915

    If after updating to the latest version of I2 Localization and clicking the Force Detection of the plugins, you still don't get the TextMeshPro scripting define added to your Build Settings, please let me know!!

    Hope that helps,
    Frank
     
  36. TheADrain

    TheADrain

    Joined:
    Nov 16, 2016
    Posts:
    48
    Ah thanks, I thought I had the latest version turns out I was wrong.

    I really appreciate the quick and informative response, thanks man.
     
  37. Martinfidellck

    Martinfidellck

    Joined:
    Jan 14, 2014
    Posts:
    2
    Hello, we already bought the plugin and so far we are very happy with it.
    I just have a question, we will like to have the localisation done dynamically but I'm not confident enough to use google docs API to load the data every time the localisation changes mostly because it will affect loading time of the game.
    Is there any way that we could extend the plugin to instead of picking up the spreadsheet from google docs, to use my own custom service? Which I can set up something faster than google docs.
    Thanks.
     
  38. Inter-Illusion

    Inter-Illusion

    Joined:
    Jan 5, 2014
    Posts:
    477
    Sure! Its really simple, just host a CSV file, download it and call LocalizationManager.Sources[0].Import_CSV(..)

    This is an example script that does exactly that:
    Code (csharp):
    1.  
    2. using UnityEngine;
    3. using System.Collection;
    4. public class AutoDownloadCSV : MonoBehaviour
    5. {
    6.     public string url = "www.yourweb.com/I2LocData.csv";
    7.  
    8.     public IEnumerator Start()
    9.     {
    10.         var www = new WWW(url);
    11.         yield return www;
    12.  
    13.         if (!string.IsNullOrEmpty(www.error))
    14.             return;
    15.  
    16.         I2.Loc.LocalizationManager.Sources[0].Import_CSV(string.Empty, www.text, eSpreadsheetUpdateMode.Replace);
    17.         I2.Loc.LocalizationManager.LocalizeAll();
    18.     }
    19. }
    20.  
    Hope that helps,
    Frank
     
  39. Martinfidellck

    Martinfidellck

    Joined:
    Jan 14, 2014
    Posts:
    2
    Hey Frank, Thanks a lot for your help! That did the job! Amazing work
     
  40. SNS_Case

    SNS_Case

    Joined:
    Oct 7, 2011
    Posts:
    54
    Hey Frank, thanks for your hard work on this plugin, it is a massive time saver and great tool. I seem to be hitting a strange hiccup with using Localize.SetTerm() at runtime. In the project I'm working on we have multiple fonts for different languages, so I was under the impression that using SetTerm would also set the font according to the CurrentLanguage. All of the Localize components have the Secondary term of Font type with the different fonts assigned. From my experimentation, when I set the CurrentLanguage to one that doesn't use the default font at launch, it doesn't change the font to the one defined for that language in the Localize components, and also creates a large jump from GC any time SetTerm is called. Have I missed a step from the documentation and/or do you have a recommended solution for this issue? Thanks.
     

    Attached Files:

    • GC.PNG
      GC.PNG
      File size:
      21 KB
      Views:
      552
  41. Inter-Illusion

    Inter-Illusion

    Joined:
    Jan 5, 2014
    Posts:
    477
    I think that's related to this post:
    http://inter-illusion.com/forum/i2-localization/783-massive-cpu-spike-when-changing-loc-term

    By making the two changes described there, it should remove the GC issue. This will also be included in the next beta (2.6.10b6) which I will release this weekend.

    If your labels have a secondary term, and that term has different fonts for each of the languages, then it will change the language.
    The setup process is described here: http://inter-illusion.com/assets/I2LocalizationManual/HowtoChangeFontperLanguage.html

    And the plugin has an example scene that shows one of the labels changing when the language changes:
    Assets\I2\Localization\Examples\Targets\UnityStandard\UnityStandard Localization.unity

    Can you please, check if that scene works fine for you?

    A possible scenarios where the font will not change, is if you have several languageSources (I2Languages.prefab in Resources + other sources instantiated in your scenes). In that case, the secondaryTerm could have been defined in several of the sources, and the plugin will try using the fonts from one of those definitions. But if you only set the fonts in the I2Languages.prefab, then it wont know which font to use.

    Hope that helps,
    Frank
     
  42. SNS_Case

    SNS_Case

    Joined:
    Oct 7, 2011
    Posts:
    54
    Thanks for the fast response! That is indeed where the GC issue is stemming from, and could be related to the way fonts are being loaded. I'm thinking the reason for the language font not changing on SetTerm is because we use TextMeshPro UGUI instead of native uGUI, as the example scene you referred me to changes the font for the Spanish translation. We only use the global I2L prefab source, so there's no issue there.
     
  43. artegor93

    artegor93

    Joined:
    Nov 20, 2013
    Posts:
    7
    Can I get all terms of Language Sources and load their in array? If yes then how?
     
  44. Inter-Illusion

    Inter-Illusion

    Joined:
    Jan 5, 2014
    Posts:
    477
    You can use:
    Code (csharp):
    1.  
    2. var terms = LocalizationManager.GetTermsList();
    3.  
    or if you need an array instead of a list:
    Code (csharp):
    1.  
    2. using System.Linq;
    3. var terms = LocalizationManager.GetTermsList().ToArray();
    4.  
    Also, you can do the same for a particular LanguageSource:
    Code (csharp):
    1.  
    2. var source = LocalizationManager.Sources[0].
    3. var terms = source.GetTermsList();
    4.  
    Even more, you can pass a category and get only the terms belonging to that one:
    Code (csharp):
    1.  
    2. var terms = LocalizationManager.GetTermsList("Tutorial");
    3.  
    Hope that helps,
    Frank
     
  45. SNS_Case

    SNS_Case

    Joined:
    Oct 7, 2011
    Posts:
    54
    Hey Frank, an update on the font switch issue, originally I was directly setting the .ttf/otf font files in the I2 prefab. Once I realized that was incorrect and needed to use the TMP font .asset files, I found that with TMP the font .asset file and font .ttf/otf file names must be identical for the fonts to be found/associated properly. That's all the language font swap problem was. Sorry for the confusion, not sure if it'd be something helpful to have in your docs since it's directly related to TMP, but figured I'd relay it anyway.
     
  46. Inter-Illusion

    Inter-Illusion

    Joined:
    Jan 5, 2014
    Posts:
    477
    Hi @SNS_Case,
    Thanks for letting me know, I will add that to the documentation, just in case someone else gets the same thing!
     
  47. yuliyF

    yuliyF

    Joined:
    Nov 15, 2012
    Posts:
    144
    Hey, man, can you stop to use LINQ - ? It's bad for WebGL project, LINQ generates many garbage and needs more memory
     
  48. Inter-Illusion

    Inter-Illusion

    Joined:
    Jan 5, 2014
    Posts:
    477
    Hi,
    I2 Localization only uses Linq in the Editor Inspector where the more legible syntax is more needed than performance/memory. When creating a build, running on the device or playmode, Linq shouldn't be used at all.

    Are you seeing any runtime function using Linq? I will double check now the code in case I miss something.
    Thanks for letting me know,
    Frank
     
  49. yuliyF

    yuliyF

    Joined:
    Nov 15, 2012
    Posts:
    144
  50. Apoll0

    Apoll0

    Joined:
    Jun 11, 2015
    Posts:
    16
    Hello!
    I start using Text Mesh Pro, and Localize component doesn't see it.
    Text mesh Pro UGUI
    Screen Shot.png

    It's ok only with native UGUI text component
     
    yuliyF likes this.
unityunity