Сделать методы с именем на английском языке, но вызывать их на испанском языке в проекте c #?

1

Я делаю проект С# для клиента, а мой класс имеет методы с подписями на английском языке, что-то вроде Connect, Disconnect, Rebuild и т.д. Но мой клиент в своем приложении управляет всем на испанском языке. Может ли мой проект библиотеки поддерживать имена методов на английском языке, но позволяет моему клиенту вызывать методы на испанском? как Conectar, Desconectar, Recompilar? Может быть, какое-то украшение на методе или что-то в этом роде?

Теги:
localization

4 ответа

3

Прямо говоря: Нет. В крайнем случае вы можете написать обертку вокруг своего класса с именами методов на испанском языке, вызвав английские варианты внутри, но я бы этого не сделал.

Лично я считаю, что Connect/Disconnect/Rebuild - это обычные термины программирования, которые должен знать каждый программист, независимо от того, на каком языке он говорит.

  • 0
    Connect / Disconnect / Rebuild, где некоторые примеры ... есть еще вещи ... кроме того, некоторые методы уже есть в моем клиентском приложении, и я переписываю эти методы.
  • 0
    Я понимаю, я даже сомневался, стоит ли включать это в качестве правки в ответе, поскольку это может звучать немного грубо или высокомерно, правильное английское слово в настоящее время ускользает от меня. Но я чувствую, как сказал Тим С. в своем комментарии, что, поскольку вся структура написана на английском языке, зачем делать исключения для остальных? В настоящее время я работаю на клиента в Голландии, и имена методов на разных языках просто заставляют меня съеживаться. Есть даже методы с такими именами, как «GetWachtwoordForUser» (GetPasswordForUser), наполовину голландский, наполовину английский. Это чертовски уродливо и плохо разбирается во время чтения.
Показать ещё 2 комментария
1

Я думаю, что стандартный способ создания псевдонима состоит в том, чтобы псевдоним вызывал оригинальный метод.

public void Conectar(){
    Connect();
}
  • 6
    Нет «стандартного» способа сделать это, потому что это в принципе плохая идея.
1

Для любви к битам и байтам - Не делайте этого! Но ответ:

#if (SPANISH)
    public void Conectar()
#else
    public void Connect()
#endif
    {
        // implementation goes here...
    }

Затем создайте две сборки, в которых один из них построен с определением SPANISH, а другой не определен (aka English build). Очевидно, что никакой интероперабельности: код, написанный против испанской версии библиотеки, не сможет использовать английскую версию.

Если я не упомянул об этом, за любовь к битам и байтам...

Ой! И у вас будет немного проблем, когда вы пытаетесь вызвать публичные функции из своего кода. Вам либо придется окружать каждый раз #if как и выше, или для каждого публичного вызова, называть базового помощника по реализации на английском языке, например:

#if (SPANISH)
    public void Conectar()
#else
    public void Connect()
#endif
    {
        return ConnectImpl()
    }

    private void ConnectImpl()
    {
        // Actual implementation here...
    }

... что, конечно, будет еще сложнее, если у вас есть возвращаемые значения :)

Для любви к битам и байтам...

0

Вы можете добавить атрибут метода. Но это будет полезно, если вы используете рефлекс для вызова метода.

Если вы хотите сделать методы

public void Conectar(){
    Connect();
}

Я бы поставил их в частичный класс, чтобы они не были в том же файле, что и ваш основной класс.

Затем вы можете скомпилировать только английский или испанский.

Если бы вы хотели, чтобы вы могли:

Попросите все ваши методы назвать такие вещи, как "ConnectImpl". Попросите английский частичный класс

public void Connect()
{
    ConnectImpl();
}

Есть испанский частичный класс с такими методами, как:

public void Conectar()
{
    ConnectImpl();
}

Затем вы можете скомпилировать тот или иной. Кажется, боль.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню