C#如何从文件中读取语言

时间:2017-04-30 13:27:10

标签: c# visual-studio

我正在创建一个multilang应用程序,我想阅读"数组"从文件中,我不知道从哪里开始。

我的english.lang看起来像:

LOGIN_TITLE = Test login
LOGIN_CREATE_ACC_LABEL = Create an account
LOGIN_REMEMBER_ME_CHECKBOX = Remember Me
LOGIN_AUTO_LOGIN = Auto Login
LOGIN_STATUS_WELCOME = Welcome to Client
LOGIN_STATUS_WRONG = Invalid username or password
LOGIN_SING_IN_BUTTON = Sing In

我正在寻找像:

string = getLang("LOGIN_TITLE");

我有一个关于如何做的想法,但并不是最佳的,我想做的就像:从文件中逐行读取包含" LOGIN_TITLE"然后替换" LOGIN_TITLE ="空白,遗骸应该是"测试登录",我需要的字符串

我认为如果我的lang文件太大,它的性能会很低。

你有任何关于如何做到这一点的想法吗?

3 个答案:

答案 0 :(得分:1)

我会用字典

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;

namespace ConsoleApplication1
{
    class Program
    {
        const string FILENAME = @"c:\temp\test.txt";
        static void Main(string[] args)
        {
            Header header = new Header(FILENAME);
        }
    }
    public class Header
    {
        Dictionary<string, string> dict = new Dictionary<string, string>();

        public Header(string filename)
        {
            StreamReader reader = new StreamReader(filename);

            string inputLine = "";

            while ((inputLine = reader.ReadLine()) != null)
            {
                inputLine = inputLine.Trim();

                string[] inputArray = inputLine.Split(new char[] { '=' }).ToArray();
                dict.Add(inputArray[0].Trim(), inputArray[1].Trim());

            }

        }
    }
}

答案 1 :(得分:0)

最好的方法是在多语言应用程序中使用资源文件;

看这个site

并且走开了。使用文本文件将获得重要的时间

答案 2 :(得分:0)

我认为你更好做你自己。

本地化是最终用户应用程序开发中最常见的问题,很久以前就解决了你的问题。请参阅stackoverflow上的另一个答案:How to use localization in C#

FredrikMörk简要介绍了如何在代码中创建/使用资源本地化文件,并举例说明。