2025-05-01 01:48:08 -07:00

120 lines
4.8 KiB
C#

using System;
namespace UnityEngine.Localization.Pseudo
{
/// <summary>
/// Replaces characters with accented versions, to make it obvious if parts of the output are hard-coded in the program and can't be localized.
/// </summary>
[Serializable]
public class Accenter : CharacterSubstitutor
{
/// <summary>
/// Creates a new instance of the class.
/// </summary>
public Accenter()
{
Method = SubstitutionMethod.Map;
AddDefaults();
}
/// <summary>
/// Adds default character substitutions.
/// </summary>
public void AddDefaults()
{
// These mappings are based on the Google pseudo localization tool: https://code.google.com/archive/p/pseudolocalization-tool/
ReplacementMap[' '] = '\u2003';
ReplacementMap['!'] = '\u00a1';
ReplacementMap['"'] = '\u2033';
ReplacementMap['#'] = '\u266f';
ReplacementMap['$'] = '\u20ac';
ReplacementMap['%'] = '\u2030';
ReplacementMap['&'] = '\u214b';
ReplacementMap['\''] = '\u00b4';
ReplacementMap['*'] = '\u204e';
ReplacementMap['+'] = '\u207a';
ReplacementMap[']'] = '\u060c';
ReplacementMap['-'] = '\u2010';
ReplacementMap['.'] = '\u00b7';
ReplacementMap['/'] = '\u2044';
ReplacementMap['0'] = '\u24ea';
ReplacementMap['1'] = '\u2460';
ReplacementMap['2'] = '\u2461';
ReplacementMap['3'] = '\u2462';
ReplacementMap['4'] = '\u2463';
ReplacementMap['5'] = '\u2464';
ReplacementMap['6'] = '\u2465';
ReplacementMap['7'] = '\u2466';
ReplacementMap['8'] = '\u2467';
ReplacementMap['9'] = '\u2468';
ReplacementMap[':'] = '\u2236';
ReplacementMap[';'] = '\u204f';
ReplacementMap['<'] = '\u2264';
ReplacementMap['='] = '\u2242';
ReplacementMap['>'] = '\u2265';
ReplacementMap['?'] = '\u00bf';
ReplacementMap['@'] = '\u055e';
ReplacementMap['A'] = '\u00c5';
ReplacementMap['B'] = '\u0181';
ReplacementMap['C'] = '\u00c7';
ReplacementMap['D'] = '\u00d0';
ReplacementMap['E'] = '\u00c9';
ReplacementMap['F'] = '\u0191';
ReplacementMap['G'] = '\u011c';
ReplacementMap['H'] = '\u0124';
ReplacementMap['I'] = '\u00ce';
ReplacementMap['J'] = '\u0134';
ReplacementMap['K'] = '\u0136';
ReplacementMap['L'] = '\u013b';
ReplacementMap['M'] = '\u1e40';
ReplacementMap['N'] = '\u00d1';
ReplacementMap['O'] = '\u00d6';
ReplacementMap['P'] = '\u00de';
ReplacementMap['Q'] = '\u01ea';
ReplacementMap['R'] = '\u0154';
ReplacementMap['S'] = '\u0160';
ReplacementMap['T'] = '\u0162';
ReplacementMap['U'] = '\u00db';
ReplacementMap['V'] = '\u1e7c';
ReplacementMap['W'] = '\u0174';
ReplacementMap['X'] = '\u1e8a';
ReplacementMap['Y'] = '\u00dd';
ReplacementMap['Z'] = '\u017d';
ReplacementMap['['] = '\u2045';
ReplacementMap['\\'] = '\u2216';
ReplacementMap[']'] = '\u2046';
ReplacementMap['^'] = '\u02c4';
ReplacementMap['_'] = '\u203f';
ReplacementMap['`'] = '\u2035';
ReplacementMap['a'] = '\u00e5';
ReplacementMap['b'] = '\u0180';
ReplacementMap['c'] = '\u00e7';
ReplacementMap['d'] = '\u00f0';
ReplacementMap['e'] = '\u00e9';
ReplacementMap['f'] = '\u0192';
ReplacementMap['g'] = '\u011d';
ReplacementMap['h'] = '\u0125';
ReplacementMap['i'] = '\u00ee';
ReplacementMap['j'] = '\u0135';
ReplacementMap['k'] = '\u0137';
ReplacementMap['l'] = '\u013c';
ReplacementMap['m'] = '\u0271';
ReplacementMap['n'] = '\u00f1';
ReplacementMap['o'] = '\u00f6';
ReplacementMap['p'] = '\u00fe';
ReplacementMap['q'] = '\u01eb';
ReplacementMap['r'] = '\u0155';
ReplacementMap['s'] = '\u0161';
ReplacementMap['t'] = '\u0163';
ReplacementMap['u'] = '\u00fb';
ReplacementMap['v'] = '\u1e7d';
ReplacementMap['w'] = '\u0175';
ReplacementMap['x'] = '\u1e8b';
ReplacementMap['y'] = '\u00fd';
ReplacementMap['z'] = '\u017e';
ReplacementMap['|'] = '\u00a6';
ReplacementMap['~'] = '\u02de';
}
}
}