2011-10-06 17 views

risposta

8

Ho scritto una piccola app di utilità che consente di convertire il testo in "pseudo".

Si basa su una semplice funzione che esamina ciascun carattere nella stringa. Se il personaggio è IsAlpha allora aggiungo un accento ad esso.

aggiungo un accento aggiungendo il carattere a random diacritic mark between U+0300 and U+036F (il campo dei segni diacritici).

enter image description here

Così ora ho appena localizzano la mia applicazione/sito web come fossi uno dei localizzatori lingua olandese.


ho scritto una piccola utility che permette di App me convertire il testo in "pseudo".

E'basa su una semplice funzione che guarda ogni carattere della stringa. I̳fͣ t̰ĥe̿ c͋h͡a͖r̸a̸c̟t̼e̞rͪ Ìs̀A̒l͒p̷h̗a̲ ţh̽e͚nͥ i̡ a̰d͙d̬ a̅n̊ a̐c̒c̒e̤͞n̜t̽ t̆o͑ i̴tͪ.

aggiungo un accento aggiungendo il carattere con un r͙a͋nͅd̃o͞m̚ dͬi̠a͚c̸r̾iͩt͖i͋c̭ m̓ḁr̵k̡ b̞ë́t̼w̓e̬ë́n̨ U̵+0300 a̢n͙d͜ U͕+036F͓ (la segni diacritici Range).


C'è anche la possibilità di aggiungere padding al testo, in modo da consentire per altre lingue che non utilizzano la stessa quantità di spazio come inglese

  • Today ->[T̀oͨd̼a͈̹y̭ !!]
  • Control Panel ->[C̊ȍńt̪r͗o͂l͇ P̈ȁñeͮl͢ !!!!!]
  • Oxydative Decarboxilation ->[Ŏx͞y̠dͥa͂t̿i̚v͙eͪ D̼e̖c̿aͤr͖b̐o̼x̹i͂l͖a̠t̮i̓o̧n̰ !!!!!!!!!]

E il mio PsuedoLocalizeText funzione:

function TForm1.PsuedoLocalizeText(s: WideString; AddPadding: Boolean): WideString; 
var 
    i: Integer; 
    sb: TWideStringBuilder; 
    x: Integer; 
    tiny: WideString; 
const 
    n: WideString = ''; //n=nothing 
begin 
    //Code is public domain. No attribution required. 
    sb := TWideStringBuilder.Create; 
    try 
     for i := 1 to Length(s) do 
     begin 
      //http://www.fileformat.info/info/unicode/block/combining_diacritical_marks/list.htm 
      //U+0300 .. U+36F are combining diacritic marks 
      x := $300+Random($36f-$300); 

      if Windows.IsCharAlphaW(s[i]) then 
      begin 
       tiny := n+ s[i] + WideChar(x); 
       if Random(10) < 1 then 
        tiny := n+tiny+WideChar($300+Random($36f-$300)); 
       sb.Append(tiny); 
      end 
      else 
       sb.Append(s[i]); 
     end; 

     Result := sb.ToString; 

    finally 
     sb.Free; 
    end; 

    if AddPadding then 
    begin 
     Result := '['+Result+' '; 

     for i := 1 to Ceil(Length(s)/3) do 
     begin 
      Result := n+Result+'!'; 
     end; 
     Result := Result+']'; 
    end; 
end; 

Aggiornamento mio psuedolocalizer:

enter image description here

Il mio prossimo compito è quello di farlo funzionare su *.resx, ma esclude *.xx-yy.resx, così può funzionare anche su applicazioni WinForms.

E naturalmente compilare Dimensioni, Attributi, Scarica l'icona giusta per cartelle.

Quindi potrebbe essere necessario evidenziare la parte fr-FR o qps-ploc dei nomi file.

+0

Sembra fantastico! È pubblico? Sono davvero alla ricerca di uno strumento su cui posso girare .resx (o forse su satelliti) per produrre versioni pseudocalocalizzate. – Clafou

+0

Puoi prendere il codice e tradurlo nella lingua che preferisci. Probabilmente ci sono anche siti web che possono fare la stessa cosa (leet-ify il tuo nome o qualcosa di simile) –

+0

Spero ci sia uno strumento là fuori che possa fare tutto il lavoro nella pseudo-localizzazione dell'app. Questo sarà eseguito su più file resx (o assembly satellite) più volte attraverso il processo di sviluppo, quindi deve essere facile da integrare nel processo di sviluppo. Qualcosa che può essere lasciato cadere nel processo di generazione di build di integrazione continua sarebbe l'ideale! Purtroppo ho la sensazione che mi aspetto troppo! :) – Clafou

1

Dopo non trovare nulla rapido, gratuito e facile , Ho costruito Pseudolocalize.com! Basta copiare/incollare/fare clic e hai la versione pseudocalocalizzata delle tue stringhe!

+1

Complimenti, ottima idea! – Clafou