Интернационализация кода

Я работал над разными проектами в разных странах и заметил, что иногда код становился интернациональным, например

SetLargeurEtHauteur() (для SetWidthAndHeight, fr)
Dim _ListaDeObiecte as List(Of Object) < i>(для _ObjectList, ro)
internal void СохранениеUserov() (для SaveUsers, ru)
и др.

Бывает, что в странах с латиницей эта смесь более выражена, потому что транслитерация не нужна.

Более того, часто программный «жаргон» вдохновлен языком спецификаций проекта. Бывают случаи, когда термины на «языке проекта» имеют значение, не «переводимое» на английский язык.

Есть также проекты, над которыми работает только, скажем, французская команда, использующая французские слова (скажем, Personne, Vehicule, Projet и т.д.).

В таких случаях я лично добавляю в спецификации «Словарь», в котором объясняются имена всех бизнес-объектов, и только эти объекты используются на другом (французском) языке.

Сказать:

Collectif — ансамбль персон;

Все действия (Получить, Установить, Обновить, Изменить, Загрузить и т. д.) на английском языке.

Теперь, когда в коде можно использовать "строгие" имена: ДобавитьПерсонавCollectif.

  • Каков ваш подход к «интернационализации»?

PS.
Меня позабавило, что VisualStudio компилирует и запускает проекты в .NET с кнопками, названными а-ля "btnAddÉlиve" или "кпкСтоп" ...


person serhio    schedule 25.06.2010    source источник


Ответы (8)


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

Наиболее важной причиной этого является возможность поделиться своими проблемами и решениями со всем миром (как мы делаем сейчас в StackOverflow, не меньше) без необходимости переводить имена классов, сообщения об ошибках, пути и другие артефакты каждый раз.

Это также способствует согласованности, потому что большинство библиотек написаны на английском языке, а имена элементов, которые смешивают два языка, на самом деле никому не помогают, кроме того, что они постоянно вызывают внутренние конфликты, когда глагол вроде Добавить не используется. всегда переводится.

Английский код также упрощает добавление иностранных людей в проект, не беспокоясь о понимании и недопонимании (особенно между близкородственными языками, такими как испанский и португальский, которые имеют много ложных родственных слов).

Хорошая ссылка на эту тему: http://www.codinghorror.com/blog/2009/03/the-ugly-american-programmer.html

(Если кому-то интересно, я из Южной Америки, и английский не мой основной язык)

person Diego Mijelshon    schedule 25.06.2010
comment
Об инструментах разработки: Иногда мне приходится заставлять фреймворк выдавать ошибки на английском языке (если моя Visual Studio на французском языке), потому что проще найти решение в Интернете. - person serhio; 25.06.2010
comment
100% согласен. Исходный код должен быть на английском, и я ненавижу читать имена методов даже на своем родном языке, потому что никогда не знаешь, кто потом захочет читать код. - person KroaX; 25.06.2010
comment
С другой стороны, иногда бывает сложно обновить существующий проект или перевести все на английский язык. Программистам со слабым знанием английского будет сложно читать код после спецификаций. - person serhio; 25.06.2010
comment
На самом деле несложно создать словарь английских терминов и/или использовать их в спецификациях. Я делал это в прошлом. - person Diego Mijelshon; 25.06.2010
comment
@Diego Mijelshon: Если спецификации на испанском языке, как вы объясните слова из словаря на испанском или английском? - person serhio; 25.06.2010
comment
@serhio, если спецификации на испанском языке, они будут использовать английские термины при обращении к сущностям, действиям или любому другому элементу, специфичному для бизнеса, который приведет к коду; необходимые переводы (когда они не очевидны, как в случае user = usuario) могут быть в том же месте или в отдельном глоссарии. - person Diego Mijelshon; 25.06.2010

Даже если все в команде хорошо говорят по-английски (что не обязательно), они могут не обязательно знать английский эквивалент всей деловой терминологии.

Я думаю, что решение о том, что разрешать, зависит от конкретного проекта, но я обычно терплю и в некоторых случаях поощряю деловые термины (например, имена объектов) на местном языке, но не технические термины (т. е. не Largeur/Hauteur вместо Width/Height) .

Например, в финансовом мире во Франции все знают, что означают OPCVM и FCP — если вы попытаетесь перевести английский язык, вы можете столкнуться с большим количеством недоразумений, чем если бы разрешили смешанные языки.

person Joe    schedule 25.06.2010
comment
У меня такая же проблема с переводом HautLePied с французского для водителей автобусов. - person serhio; 25.06.2010
comment
ИМО, деловые термины следует поощрять в местной терминологии, если перевода не существует (например, OPVCM в вашем примере). - person Vinko Vrsalovic; 25.06.2010

У меня такая же проблема с норвежским в настоящее время. Я думаю, это зависит от вашей позиции в проекте, доступного времени и роли программного обеспечения.

В моем случае я решил сохранить все термины в существующем протоколе и библиотеке, с которыми я работаю, на норвежском языке, поскольку я могу разумно ожидать, что поколения административных работников привыкли к ним, и поскольку библиотека зависит от протокола. В оболочке библиотеки для международного проекта я буквально перевел название каждого метода и добавил документацию по методу на английском языке.

Комментарии и документация по коду на английском языке.

При разработке программного обеспечения с нуля я бы попытался найти английские термины для всех имен методов и даже бизнес-терминов (если это разумно. Я с трудом могу придумать пример, где термин не может быть найден), чтобы сохранить его «переносимым».

person relet    schedule 25.06.2010

Если вы пишете код, который однажды может быть использован на международном уровне, пишите его на английском языке. Если сомневаетесь, напишите на английском, даже комментарии, если можете (хотя, я полагаю, вы можете добавить несколько комментариев на языке вашего рабочего места).

К сожалению, это не относится к кодированию. Английский не является моим родным языком, но я смог прочитать ряд технических статей и участвовать в международных конференциях с людьми со всего мира. Это сотрудничество просто не сработало бы, если бы все публиковались на своих родных языках.

Это может быть грустно, если вам хочется защищать свой язык любой ценой, но вы должны относиться к этому реалистично. Я полагаю, английский имеет то преимущество, что он относительно прост для достижения базового уровня: никаких родов имен, никаких спряжений, никаких падежей.

person Bruno    schedule 25.06.2010
comment
Более важным, чем простота понимания, является тот факт, что почти все основные автоматизированные системы языкового перевода поддерживают английский язык. - person bta; 25.06.2010
comment
потенциально, любой бизнес-проект может стать международным в один прекрасный день, и я считаю, что мы не говорим здесь о домашних приложениях hello world. Даже если бы я написал, скажем, национальный веб-сайт на бугунди, должен ли я писать его на английском, если я разработчик на бугунди?! :) - person serhio; 19.07.2010

Как правило, код, относящийся к языковым концепциям, должен быть на том же родном языке, что и язык программирования (т. е. на английском, поскольку, а строка — это все английские слова).

Это нормально (но не здорово) иметь переменные и понятия предметной области на местном языке, но вы определенно не хотите переводить List, Object, Decimal и т. д. в термины, которые заставляют программистов больше работать над согласованием двух языков. Тем не менее, я бы решительно лоббировал ограничение очень распространенных понятий домена, таких как Коллекция, Членство, Лицо, Пользователь и, возможно, менее распространенных понятий домена, таких как Счет, Квитанция, английским языком, где это возможно.

Это все равно, что программировать половину ваших занятий на VB, а половину на C# — ваш мозг должен совершить когнитивный сдвиг. Хотя это хорошо для гибридных приложений (JavaScript в Интернете и C# в бэкенде), поскольку помогает поддерживать четкость выполняемых действий, это не очень хорошо для общего программирования.

Кроме того, использование английского языка во всем позволяет лучше сочетать доменные и языковые слова.

Всегда есть исключения. Есть определенные случаи, когда вы все равно использовали бы родное слово, когда слово лучше всего описывает домен. Например, в нашей (английской) кодовой базе у нас были ссылки на мексиканские испанские термины для определенных понятий, которые имели отношение только к людям, использующим наше программное обеспечение в Мексике. Как правило, японские термины произносились фонетически/ромадзи, однако не-японцам было трудно произносить пиктограммы ;-).

person Cade Roux    schedule 25.06.2010

Думаю, я бы назвал кодовую базу, подобную этой, «ужасной», а не «интернационализированной», но общее правило, которое я всегда слышал, состоит в том, что если вы когда-нибудь думаете, что кто-то, кроме того, кто говорит на вашем языке, может когда-либо прикасаться к коду, сделай это на английском.

person Daenyth    schedule 25.06.2010
comment
Даже если над этим не будет работать, скажем, французская команда, у нас будут миксы Get Voila... - person serhio; 25.06.2010
comment
Это ужасно. Выберите французский или английский, но будьте последовательны! - person Daenyth; 25.06.2010
comment
вы не можете быть согласованы с другим языком, кроме английского, из-за языкового синтаксиса Get, Set, Then, else - person serhio; 29.06.2010

Я думаю, что хорошим правилом проектирования является написание кода с использованием английских имен и только с английскими комментариями (конечно, если ваша команда способна это сделать, но в случае международной команды английский кажется естественным выбором, поскольку он самый популярный язык, особенно в мире ИТ).

Хорошим объяснением такой рекомендации является то, что ключевые слова в большинстве языков программирования взяты из английского языка, поэтому написание вашего кода с использованием английских имен дает более последовательный вид, и благодаря этому вы получаете код, который легче читать.

Другая причина заключается в том, что большинство компиляторов могут обрабатывать только символы ascii в качестве имен классов, методов и т. д., поэтому, вероятно, вы получите несколько странных имен, когда решите использовать какой-либо язык с алфавитом, содержащим не символы ascii. .

Третья причина, которая пришла мне в голову, — поделиться своим кодом на сайте, таком как SO. Сегодня я открыл пост с куском кода, где классы имели испанские названия. Мне было трудно догадаться, для чего нужен этот класс (даже если иногда и не нужно, но хорошо, когда читаешь код и понимаешь все используемые слова:)).

Подводя итог, я думаю, что интернационализация кода — не очень хорошая идея. Вы можете себе представить, что ключевые слова в языках программирования (например, class, try, while) также могут быть локализованы, и, вероятно, вы также можете представить, насколько тяжелой может быть тогда жизнь...

person dzida    schedule 25.06.2010

Чтобы сохранить согласованность, я бы сделал код на том же (человеческом) языке, что и язык (программирования). То есть, если в языке программирования используются английские ключевые слова (например, for, switch, public и т. д.), остальную часть кода оставьте на английском языке. Если вы используете компилятор, который распознает (скажем) переводы ключевых слов на суахили, остальную часть кода оставьте на суахили.

Многие API имеют стандартизированные схемы именования, которым следуют независимо от (человеческого) языка, а сопровождающая документация переводится по мере необходимости (вместо исходного кода).

Независимо от того, какой (человеческий) язык вы выберете, выберите один и придерживайтесь его. Я бы скорее попытался просмотреть исходный код на немецком языке, чем код, представляющий собой смесь немецкого и английского языков.

person bta    schedule 25.06.2010
comment
Если вы используете компилятор, распознающий суахили, остальную часть кода оставьте на суахили. И если он распознает суахили и мбухили, какой язык мне выбрать? :) - person serhio; 19.07.2010
comment
с другой стороны, я никогда не видел (только слышал) язык программирования, в котором используются ключевые слова, отличные от английского. - person serhio; 19.07.2010
comment
@serhio- Если ваш компилятор/язык программирования использует ключевые слова из нескольких языков, я бы посоветовал выбрать один и (что наиболее важно) быть последовательным. Для достижения наилучших результатов выберите более распространенный из двух языков или тот, для которого доступны лучшие инструменты перевода. - person bta; 19.07.2010
comment
да... согласованные, более распространенные, лучшие инструменты... Итак, какой компилятор, использующий несколько языков, вы знаете? - person serhio; 20.07.2010
comment
Я видел perl на латыни, python на китайском и C на нескольких языках. Я не видел компилятора, который поддерживает несколько языков, но опять же, я не видел столько разных компиляторов :) Важнее то, что это чисто гипотетический пример общей концепции. Суть моего ответа заключается в том, чтобы соблюдать последовательность. Если все компиляторы, которые у вас есть, используют английские ключевые слова, то вот вам ответ. - person bta; 20.07.2010