от
Как вам удалось реализовать интернационализации (i18n) в реальных проектах вы работали? Я поинтересовался, что делает кросс-культурная программа после того как я прочел знаменитый пост Джоэл, абсолютный минимум каждый разработчик программного обеспечения абсолютно, положительно должны знать о Юникод и наборы символов (никаких оправданий!). Тем не менее, я еще способен воспользоваться этим в реальный проект, к тому же убедившись, что я использовал Юникод, где это возможно. Но делать все ваши строки в Юникоде и гарантируя, что вы понимаете, что кодировка все вы работаете, - это только верхушка айсберга с названием i18n. Все, что я работал до сих пор для использования контролируемой набор американский английский говорящих людей, или как i18n просто не то, что у нас было время, чтобы работать на, Прежде чем отправить проект в прямом эфире. Поэтому я ищу какие-либо советы или военные рассказы людей о том, как сделать программное обеспечение более локализованной в реальных проектах.

Пожалуйста, войдите или зарегистрируйтесь для публикации ответа на этот вопрос.

12 Ответы

0 голосов
от
Как вам удалось реализовать интернационализации (i18n) в реальных проектах вы работали? Я поинтересовался, что делает кросс-культурная программа после того как я прочел знаменитый пост Джоэл, абсолютный минимум каждый разработчик программного обеспечения абсолютно, положительно должны знать о Юникод и наборы символов (никаких оправданий!). Тем не менее, я еще способен воспользоваться этим в реальный проект, к тому же убедившись, что я использовал Юникод, где это возможно. Но делать все ваши строки в Юникоде и гарантируя, что вы понимаете, что кодировка все вы работаете, - это только верхушка айсберга с названием i18n. Все, что я работал до сих пор для использования контролируемой набор американский английский говорящих людей, или как i18n просто не то, что у нас было время, чтобы работать на, Прежде чем отправить проект в прямом эфире. Поэтому я ищу какие-либо советы или военные рассказы людей о том, как сделать программное обеспечение более локализованной в реальных проектах.
0 голосов
от
Это было некоторое время, так что это не всеобъемлющее. Наборы Символов Юникод-это здорово, но вы не можете сознательно игнорировать другие наборы символов. Набор символов по умолчанию в Windows XP (английский) является Cp1252. На веб-сайте, вы не знаете, что такое браузер вышлем вам (хотя надеюсь, что ваш контейнер будет большая часть этой ручки). И не удивляйтесь, когда есть ошибки в любой реализации вы используете. Наборы символов могут иметь интересные контакты с именами, когда они двигаются между машинами. Перевод Переводчики, вообще говоря, не программисты. Если вы отправляете исходный файл на переводчика, они будут разорвать его. Строки должны быть извлечены в файлы ресурсов (например, файлы свойств в Java или ресурсов DLL в Visual С ). Переводчики должны быть предоставлены файлы, которые трудно сломать и инструментов, не позволяйте им разорвать их. Переводчики не знают, где строки приходят в продукт. Трудно переводить строки без контекста. Если вы не предоставите рекомендации, качество перевода будет страдать. Хотя на эту тему из контекста, можно увидеть одну и ту же строку "фу" урожай в несколько раз и думаю, что было бы более эффективным, чтобы иметь все экземпляры в точке UI, чтобы один и тот же ресурс. Это плохая идея. Слова могут быть очень контекстно-зависимая на некоторых языках. Перевод стоит денег. Если вы выпускаете новую версию продукта, имеет смысл восстановить старые версии. Есть инструменты, чтобы восстановить строки из старых файлов ресурсов. Конкатенация строк и ручного манипулирования строками должно быть сведено к минимуму. Использование функции формат, где это применимо. Переводчики должны быть в состоянии изменить горячие клавиши. Сочетание клавиш Ctrl P-это печать на английском языке; немцы используйте сочетание клавиш Ctrl Д. Если у вас есть процесс перевода, который требует, чтобы кто-то вручную вырезать и вставлять строки в любое время, вы напрашиваетесь на неприятности. Даты, Времени, Календарь, Валюта, Количество Форматов, Часовые Пояса Все они могут различаться от страны к стране. Запятая может быть использована для обозначения десятичных разрядов. Времена могут быть в формате 24 часа в сутки. Не все используют григорианский календарь. Вы должны быть однозначными, слишком. Если вы заботитесь для отображения даты в формате ММ/ДД/гггг и ДД/ММ/гггг по Великобритании на вашем сайте, нужные неоднозначны, если пользователь не знает, что вы сделали это. Особенно Валюты Функции языка обеспечивается в библиотеках классов дадут вам местный символ валюты, но вы не можете просто засунуть фунт (стерлингов) или символ евро перед значением, что дает цену в долларах. Пользовательские Интерфейсы Макет должен быть динамичным. Не только несколько строк может удвоиться в длину на перевод, весь интерфейс может нужно быть инвертирован (иврит, арабский), так что элементы управления работают справа налево. И это прежде чем мы доберемся до Азии. Тестирование До Перевода Использование статического анализа кода для поиска проблемы. Как минимум, использовать встроенные инструменты вашей IDE. (Пользователи Eclipse могут перейдите в окно > предпочтения > Java > компилятор > ошибки/предупреждения и проверить не экстернализованной строк.) Испытание дыма, имитируя перевод. Не трудно разобрать файл ресурса и замены строк с псевдо-перевод, который удваивает длину и вставляет непонятные символы. Вы не должны говорить на языке, использовать иностранный операционной системы. Современные системы должны позволить вам войти в качестве иностранных пользователей с переведенными строками и иностранный язык. Если вы знакомы с вашей системы, вы можете выяснить, что делает то, что не зная ни одного слова на языке. Карты клавиатура и набор символов ссылки очень полезны. Виртуализация будет очень полезен здесь. Нетехнические вопросы Иногда вы должны быть чувствительны к культурным различиям (преступление или непонимание может привести). Ошибку вы часто видите, является использование флагов в качестве визуального сигнала выбор языка или географии. Если вы хотите, чтобы ваш программное обеспечение, чтобы объявить сторон в мировой политике, это плохая идея. Если вы были французы и предложили вариант на английском языке с Георгиевским флагом (флаг Англии-Красный крест на белом поле), это может привести к путанице для многих носителей английского языка - полагаю, подобные вопросы будут возникать с иностранных языков и стран. Иконки должны быть проверены на культурной значимости. Что значит палец вверх или зеленая галочка означает? Язык должен быть относительно нейтральным адресации пользователей в определенном порядке, могут быть приемлемыми в одной области, но считается грубым в другом. Ресурсы C и Java-программисты могут найти на сайте ICU полезно: http://www.icu-project.org/
0 голосов
от
Некоторые забавные вещи: Наличие PHP и MySQL приложение, которое хорошо работает с немецкого и французского, а теперь должен получить поддержку России и Китая. Я думаю, что перенести это .чистая, как поддержка Unicode в PHP - на мой взгляд - не очень хорошо. Конечно, жонглирование с utf8_de/кодирования или работы mbstring-функции-это удовольствие. Почти так же весело, как посетить Фредди Крюгера ночью... Понимая, что некоторые языки являются гораздо более многословен, чем другие. Немецкий является гораздо более многословен, чем английский, обычно, и, увидев, как немецкая версия разрушает пользовательский интерфейс, потому что было выделено слишком мало места не весело. Некоторые продукты приобрел некоторую известность за свои творческие способы, чтобы обойти, что, с "Schw забвение.Тр.д.Ле.Ан.Ж." быть запоминающимся :-) Играя с форматы даты, ура! Да, есть на самом деле люди в мире, которые используют форматы даты, где день идет в середине. Оооочень много удовольствия, пытаясь выяснить, что 07/02/2008-это значит, только потому, что некоторые пользователи могут в это поверить, может быть 2 июля... но опять же, вы, ребята, над прудом, возможно, верят же о пользователях, которые ставят на месяц в центре :-Р, тем более, что на английском языке, 2 июля звучит намного лучше, чем 2 июля, то это не обязательно распространяется на других языках (т. е. на немецком, вы бы никогда не сказала Джули 2, но всегда Zweiter Джули). Я использую 2008-02-07, когда это возможно. Понятно, что это значит, 7 февраля, и это правильно сортирует, но ДД/ММ и ММ/ДД может быть очень сложной проблемой. Другого забавная вещь, форматы номеров! 10.000,50 против 10,000.50 и 10 000,50 и 10'000,50... это мой самый большой кошмар сейчас, имея для поддержки мульти-культурной environent но не имея никакого способа надежно узнать, какой формат количество пользователей будет использовать. Формальные или неформальные. В некоторых языках, есть два способа обращаться к людям, официально так и более неформальной обстановке. На английском языке, вы просто говорите "вы", но в Германии вы должны решить между формальным "Сиэ" и неофициальной "Ду", то же самое для французской ту/Рандеву. Это, как правило, безопасная ставка, чтобы выбрать формальным способом, но это легко упустить из виду. Календари. В Европе, первый день недели-понедельник, тогда как в США это воскресенье. Календарь виджеты хороши. Показывая календарь с воскресенья на левом и в субботу на права на европейского пользователя, не так приятно, их это смущает.
0 голосов
от
Я работал над проектом для моего предыдущего работодателя, который используется .NET, и там был встроенный .формат resx, который мы использовали. У нас в основном был файл, который был переводам .файл resx, а затем несколько файлов с разными переводами. Следствием этого является то, что вы должны быть очень прилежными о том, что все строки видны в приложении, хранятся в папке .resx, и всякий раз, когда человек изменил, вы должны обновить всех поддерживаемых языков. Если вы ленивы и не предупредить людей, которые занимаются переводами, или вы добавьте строки, минуя системную локализацию, это будет кошмар, чтобы попытаться исправить это позже. Аналогично, если локализация является второстепенным, то будет очень трудно поставить на место. Нижней строке, если у вас нет всех видимых строк, хранящихся внешне в стандартном месте, то будет очень трудно найти все, что нужно быть локализованы. Одно замечание, очень строго избегать конкатенации строк видимых непосредственно, такие как
String message = "The "   item   " is on sale!";
Вместо этого, вы должны использовать что-то вроде
String message = String.Format("The {0} is on sale!", item);
Причина этого заключается в том, что разные языки часто заказываю слова по-разному, и конкатенации строк сразу понадобится новая сборка исправить, но если вы использовали какой-то механизм замены строки, как и выше, можно изменить .файл resx (или любой другой локализации файлы вы используете) для конкретного языка, который должен изменить порядок слов.
0 голосов
от
Я просто слушаю подкаст от Скотт Хансельман сегодня утром, где он говорит об интернационализации, особенно сложные вещи, как турецкие (может быть я) и тайской. Кроме того, Джефф Этвуд был пост:
0 голосов
от
Помимо всех предыдущих советов, Помните, что i18n это не просто изменение слов по их эквиваленты на других языках, особенно для нелатинских языков алфавита (корейский, арабский), которые пишут справа налево, поэтому весь интерфейс придется соответствовать, как пункт 1 пункт 2 пункт 3 должны быть арабский текст 1 - арабский текст 2 - арабский текст 3 - (список отменено пули, кажется, не работает :Р) что может быть кошмаром пользовательского интерфейса, если в системе применять динамически изменяется, когда пользователь изменяет язык используется. Еще одна очень трудная вещь, чтобы проверить на разных языках, не только на правильность слова, но поскольку языки, как корейский, как правило, имеют больший шрифт для своих персонажей, это может привести к языку особых багов (таких как "сохранить", текст на кнопке, больше, чем саму кнопку на каком-то языке).
0 голосов
от
Одной из тем смешнее вещи, чтобы обнаружить: курсив и полужирный текст makrup не работает с CJK (китайский/японский/корейский) символов. Они просто становятся нечитаемыми. (ОК, я не читал их раньше, но особенно жирный просто создает чернильных клякс)
0 голосов
от
Я думаю, что каждый, кто работает в интернационализации должны быть знакомы с общим хранилищем данных локали, которая сейчас находится проект в Юникоде: Хранилище Общих Данных Локали Эти люди упорно трудятся, чтобы создать стандартный ресурс для всех видов как i18n вопросы: валюты, географических названий, тонны материала. Любой проект, который, сохраняя свое ядро локальных данных, учитывая, что этот проект существует довольно странно, ИМХО.
0 голосов
от
Я предлагаю использовать что-то вроде 99translations.com чтобы поддерживать ваш перевод . В противном случае вы не сможете сказать, что ваш перевод в актуальном состоянии на всех языках.
0 голосов
от
Еще одной проблемой будет принимать входные данные от пользователей. Во многих случаях это происходит путем ввода обработки, предоставляемые операционной системой, такие как IME в Windows, которая прозрачно работает с обычным текстовым виджеты, но этот объект не будет доступен для всех возможных потребностей.
...