com.unity.localization@0.10.0-preview
## [0.10.0] - 2021-01-20
### Added
- Added `GetDefaultTableAsync` to `LocalizedDatabase`. This can be used to get the DefaultTable directly.
- Added `HasChangeHandler` to `LocalizedString` and `LocalizedAsset`. ([LOC-111](https://issuetracker.unity3d.com/issues/localization-unable-to-check-if-registerchangehandler-is-null-when-using-localisestringevent))
- Added `GenerateCharacterSet` to `StringTable` and `StringTableCollection`. This can be used to extract the unique characters used by 1 or more `String Tables`. This could then be used with a Font Atlas creator. It is also possible to export a **Character Set** file from the Export menu of the String Table window, the String Table Collection window, or the Localization Tables window.
- Added new Google Sheets example `SmartStringColumn` for synchronizing the Smart String property of an entry.
- Added **Global Variables** to **Smart Strings**. **Global Variables** can be defined in a `GlobalVariableGroup` asset which can then be added to a `GlobalVariableSource` in the **Smart Format Sources** list. Variables can then be referenced in a **Smart String** without the need to pass arguments. For example: `{group-name.variable-name}`. When a `GlobalVariables` value is changed via script, it will automatically trigger any `LocalizedString` that is using it to refresh. See Samples and docs for further details.
- Added `HasTagMetadata` to `TableEntry`.
- Added PreLoadTables to LocalizedDatabase. This can be used to force tables to be loaded, including their contents without having to set the preload flag in the editor.
- Added fallback support. When a localized value is missing then the Locale fallback metadata or CultureInfo will be used to find a suitable fallback Locale. This can be enabled project-wide through the Localization Settings String Database or Asset Database, it can also be configured on a per-item basis for LocalizedStrings.
- Added useFallback parameter to LocalizedStringDatabase.GetLocalizedStringAsync & LocalizedDatabase.GetTableEntryAsync. This can be used as a flag to enable FallBack behavior for Locales that have missing translations.
- Added Custom Locale UI Window. This can be used to add any custom Locales that are not supported in CultureInfo class or the SystemLanguage.
- Added **Preloading Screen** sample. This shows how you can wait for the `InitializationOperation` to complete.
### Changed
- Reduced the amount of garbage being generated by requests for localized strings and assets. The operations inside of `AsyncOperationHandle` are now returned in the subsequent frame after completion. If you wish to hold onto an `AsyncOperationHandle` you should call `Addressables.ResourceManager.Acquire` to prevent the operation being reused and `Addressables.Release` to allow for it to be reused.
- Merged all Third Party dependencies into a single library **Unity.Localization.ThirdParty.Editor.dll**. This will prevent conflicts when projects/packages use the same libraries. **Google Sheets**, **Newtonsoft Json** and **CsvHelper** can still be accessed by adding **Unity.Localization.ThirdParty.Editor** as an **Assembly Reference** to your own asmdef files.
- Removed dependency on package **com.unity.nuget.newtonsoft-json**. It is now part of the combined dependencies.
- Updated Third Party dependencies. Google Sheets to v.1.49.0.2111, CsvHelper to 15.0.9 and Newtonsoft.Json to 12.0.3.
- Clicking the **Localized Table Collection** name label will now toggle the selector foldout for `LocalizedString` and `LocalizedAsset`. ([LOC-125](https://issuetracker.unity3d.com/product/unity/issues/guid/LOC-125))
- Significant improvements to **Smart String** overall performance. Testing showed results of an average of 10x less garbage and runs 2-3x faster.
- Updated **Smart Strings** with changes from **SmartFormat** v2.5.3.0-preview1.
- Internal string comparisons (i.e. for placeholder names) are no more culture-specific, but Ordinal or OrdinalIgnoreCase respectively.
- ListFormatter will now process IList data sources only.
- Removed **SmartObjects**
- Updated to **Addressables** 1.6.13.
- It's now possible to import `StringTableCollections` and `AssetTableCollections` into new or existing projects. When importing the Collection will create/update the Addressables and create any missing Locales in the project.
- Changed sample **Language Selection Menu (UGUI)** to use the Native name for Locales.
- The `Localization Tables` window search field is no longer cleared when changing selected table.
- After pulling from a **Google Sheet**, the order of the keys in the table will now match the order of the **Google Sheet**.
- When pushing to a **Google Sheet**, Table entries will no longer be sorted by the Key Id but keep their current order, as shown in the table editor window.
- It is now possible to use a **Google Sheet** with Sheet Id 0.
- Creating a new `LocalizationSettings` asset in the **Project Settings** window no longer selects the asset.
- Setting `LocalizedString` `Arguments` will now trigger `RefreshString`.
- `LocalizedString.RefreshString` will no longer throw an exception if there are no `StringChanged` subscribers.
- `LocalizedStrings` that are **Smart** will always use **Smart Format** even when no arguments have been provided.
- Culture-sensitive formatting now uses the `Locale` information.
- The `Localization Tables` window search field is no longer cleared when changing selected table.
- The `Localization Tables` window search field is no longer cleared when changing selected table.
- No Translation Found message is now a Smart String and has access to several placeholders which can be used to proivide details on the missing entry.
### Fixed
- Fixed exceptions being thrown when trying to load a table that does not exist. Loading missing String Tables will now use the missing translation message instead of throwing an exception when a table was missing and assets will return a failed operation handle. (LOC-120)
- Fixed DefaultTable property throwing an invalid key exception when it is empty. Now getting a value from empty DefaultTable will throw an exception.
- The LocalizedAsset selector will now filter out incompatible types. ([LOC-123](https://issuetracker.unity3d.com/issues/localizedasset-property-drawer-does-not-filter-by-type))
- Fixed **LocalizedString** Editor not preserving new items added to the Preview Arguments field. ([LOC-122](https://issuetracker.unity3d.com/issues/new-items-are-not-added-to-the-preview-arguments-list-in-the-localizedstring-field-when-pressing-the-plus-icon))
- Fixed `AddTagMetadata` creating a new tag each time instead of using an existing tag. `RemoveTagMetadata` will now remove all empty tag entries, not just the first one it finds. ([LOC-124](https://issuetracker.unity3d.com/issues/smart-format-tag-in-the-metadata-stays-after-disabling-the-smart-option-when-smart-option-is-enabled-on-another-entry))
- **String Table Entries** which have a null or empty localized string will now be treated as missing translations and use the `No Translation Found Format`. ([LOC-126](https://issuetracker.unity3d.com/issues/localization-no-translation-found-format-variable-isnt-used-when-an-entry-locale-is-empty))
- Fixed exception when calling GetLocale and no Addressables settings exists in the project.
- Fixed **XLIFF 2.0** generating empty **notes** nodes. ([LOC-131](https://issuetracker.unity3d.com/issues/localization-export-xliff-generates-table-with-notes-node-when-notes-are-not-added))
- Fixed **Google Sheets** `PullEnd` not being called after pulling from a Google Sheet. ([LOC-133](https://issuetracker.unity3d.com/issues/googlesheets-does-not-call-pullend-on-custom-columns)
- **Google Sheets** `PullCellData` is now called for all cells even if the sheet cell is empty. (LOC-134)
- Pulling a **Google Sheet** using an **API Key** will now use the correct public API and no longer produce authorization errors. ([LOC-139](https://issuetracker.unity3d.com/issues/localization-using-api-key-to-retrieve-data-outputs-request-is-missing-required-authentication-credential-expected-oauth-2))
- Calling `LocalizationEditorSettings.GetLocales` will no longer create a new Addressable Assets Settings file if one does not exist. ([LOC-142](https://issuetracker.unity3d.com/issues/a-new-addresableassetsdata-folder-is-created-when-recompiling-a-script-while-the-localization-tables-window-is-open))
- Fixed a bug where the Locales list were not been updated, when the New Table tab is open and the Locale name was changed.
- Improved `LocalizationSetting` editor performance. The editor is now using UI Toolkit to render and should be much smoother. (LOC-90)
- Fixed **Smart String** editor becoming corrupted when a parsing exception was thrown in the **Debug** view.
- Fixed exception being thrown by `GetSourceExtension` and `GetFormatterExtension` when no value could be found.
- Fixed `LocalizedAsset` Property Drawer not resolving the asset type when displaying a list of `LocalizedAssets`.
- Fixed preloaded Sprite assets having the incorrect type(Texture). ([LOC-142](https://issuetracker.unity3d.com/product/unity/issues/guid/LOC-143))
## [0.9.0] - 2020-10-27
### Added
- Added support for exporting and importing `StringTables` and `StringTableCollections` as XML Localisation Interchange File Format (XLIFF). XLIFF version [1.2](https://docs.oasis-open.org/xliff/v1.2/os/xliff-core.html) and [2.0](https://docs.oasis-open.org/xliff/xliff-core/v2.0/os/xliff-core-v2.0-os.html) are both supported. See docs for further details.
- Added support for exporting and importing `StringTableCollections` as Comma Separated Values (CSV).
- Added `GetRowEnumerator` to `AssetTableCollection` and `StringTableCollection`. This can be used to step through each key and its localized values.
- Added `ReleaseAssets` to allow for forcing all `AssetTable` assets to be released. This is called automatically when the `LocalizationSettings.SelectedLocale` is changed.
### Changed
- Updated to Addressables version **1.16.6**.
- Editor Foldout fields now toggle when clicking on the label.
- When enabling preload on Asset Tables, all assets will now be preloaded by default instead of requiring the `PreloadAssetTable` Metadata. Adding a `PreloadAssetTable` can be used to disable this default behavior. ([LOC-114](https://issuetracker.unity3d.com/issues/localized-audio-clips-fail-to-load-on-first-retrieval-when-using-loadassetasync))
- `SmartFormat` editor will now show parsing and format errors in the preview field.
- Added title header to Google Sheets extension property drawer.
### Fixed
- Fixed smart `StringTableEntry` returning the wrong localized string after its value was changed.
- Fixed `LocalizedAsset` from loading when it contained an empty reference. ([LOC-109](https://issuetracker.unity3d.com/product/unity/issues/guid/LOC-109))
- Fixed `InvalidCastException` when calling `AssetTable.GetAssetAsync` and the table was preloaded. ([LOC-114](https://issuetracker.unity3d.com/issues/localized-audio-clips-fail-to-load-on-first-retrieval-when-using-loadassetasync))
- Fixed bug in `PreloadDatabaseOperation` that caused it to complete before preloading was finished. ([LOC-114](https://issuetracker.unity3d.com/issues/localized-audio-clips-fail-to-load-on-first-retrieval-when-using-loadassetasync))
- Fixed Tables Window throwing exceptions when editing a collection which had 1 or more tables without a matching locale in the project.
- Fixed `ProjectSettings.asset` being modified on disc during a build.
- Fixed `LocalizedString` property drawer throwing `NullReferenceException` when selecting a Localization Table Collection which did not have a table for every Locale in the project. ([LOC-118](https://issuetracker.unity3d.com/issues/nullreferenceexception-thrown-when-editing-a-localizedstring-linked-to-a-collection-that-does-not-have-a-table-for-every-project-locale))
- Calling `AddKey` will now check if the new Id is already in use and generate a new Id if it is. This means it is now safe to use custom Id values.
- `SharedTableData` that contains an empty Guid will now be repaired when loaded in the editor.
- Fixed `SmartFormat` editor becoming corrupt when showing preview and `ThrowException` action was enabled in ParseError or FormatError. [(LOC-119)(https://issuetracker.unity3d.com/issues/editor-ui-is-broken-when-editing-a-smart-string-and-throwexceptions-error-mode-is-enabled)]
- Increased max width for `Localization Tables` window Id field so large keys can be fully visible. U
Unity Technologies committed
d3ac4face7bb416fb5caceb722766c4b01d5882e
Parent: ee5766b