public static string AddToAbsolutelyPos(string origin, string addContent, int addIndex, Languages language)
    {
        StringBuilder languageLine = new StringBuilder("");

        if (language != Languages.Chinese)
        {
            addContent = TranslateElement.ToDBC(addContent);
        }
        int count = 0;

        for (int p = 0; p < origin.Length; ++p)
        {
            char c = origin[p];
            if (IsLanguage(c, language))
            {
                if (count == addIndex)
                {
                    languageLine.Append(addContent);
                }
                languageLine.Append(c);
                count++;
            }
            else
            {
                languageLine.Append(c);
            }
        }
        if (count == addIndex)
        {
            languageLine.Append(addContent);
        }
        return(languageLine.ToString());
    }
 public Translator(string pathOri, Languages languagesOri, string pathTarget, Languages languagesTarget)
 {
     oriLanguages    = languagesOri;
     targetLanguages = languagesTarget;
     string[] arr = File.ReadAllLines(pathOri);
     for (int i = 0, imax = arr.Length; i < imax; i++)
     {
         LanguagesElement element = new LanguagesElement(languagesOri, arr[i]);
         lstWaitingTranslate.Add(element);
     }
     arr = File.ReadAllLines(pathTarget);
     for (int i = 0, imax = arr.Length; i < imax; i++)
     {
         string[]         arrLine = arr[i].Split(',');
         TranslateElement ele     = new TranslateElement(arrLine[0], arrLine[1], languagesOri, arrLine[2], languagesTarget);
         dicTranslateResult.Add(ele.key, ele);
     }
 }
    public void Translate(string output, string errorOutput)
    {
        StreamWriter sw      = new StreamWriter(output, false, Encoding.UTF8);
        StreamWriter swError = new StreamWriter(errorOutput, false, Encoding.UTF8);

        for (int p = 0, pmax = lstWaitingTranslate.Count; p < pmax; p++)
        {
            LanguagesElement curEle = lstWaitingTranslate[p];
            if (!dicTranslateResult.ContainsKey(curEle.key))
            {
                Debug.LogError("Do not exist translate key:" + curEle.key);
                continue;
            }
            TranslateElement   tEle = dicTranslateResult[curEle.key];
            List <MyArguments> curWaitingArguments = curEle.arguemnts;
            string             result = string.Empty;
            bool needRecordQuestion   = false;
            bool useTargetTransalte   = false;
            if (curEle.originText == tEle.originLanguages.originText)
            {
                result             = tEle.targetLanguages.originText;
                useTargetTransalte = true;
            }
            else
            {
                result = tEle.targetLanguages.key;

                for (int i = 0, imax = curWaitingArguments.Count; i < imax; i++)
                {
                    MyArguments curTemp = curWaitingArguments[i];

                    for (int j = 0, jmax = tEle.originLanguages.arguemnts.Count; j < jmax; j++)
                    {
                        MyArguments temp = tEle.originLanguages.arguemnts[j];

                        if (temp.index == curTemp.index)
                        {
                            if (!tEle.dicArgumentIndex.ContainsKey(j))
                            {
                                needRecordQuestion = true;
                                continue;
                            }
                            int tryToFind = tEle.dicArgumentIndex[j];
                            if (tEle.targetLanguages.arguemnts.Count <= tryToFind)
                            {
                                string tempStr = string.Format("\nCouldn't find argument pos :{0}", temp.argument);
                                Debug.LogError(tempStr);
                                break;
                            }
                            int addIndex = tEle.targetLanguages.arguemnts[tryToFind].index;
                            result = AddToAbsolutelyPos(result, curTemp.argument, addIndex, targetLanguages);
                            break;
                        }
                    }
                }
            }
            if (!useTargetTransalte && (needRecordQuestion || !string.IsNullOrEmpty(tEle.errorStr)))
            {
                string errorLine = string.Format("{0},{1},{2}", curEle.originText, result, tEle.errorStr);
                swError.WriteLine(errorLine);
            }
            curEle.translateResult = result;
            string newLine = string.Format("{2},{0},{1}", curEle.originText, curEle.translateResult, "Key" + (p + 1));
            sw.WriteLine(newLine);

            // Debug.Log(string.Format("原文:{0} \n译文:{1}", curEle.originText, curEle.translateResult));
            // tEle.originLanguages.arguemnts
        }
        sw.Close();
        swError.Close();
    }