Локализация? Локализация!
От: Neosyst Россия www.rubius.com
Дата: 30.01.06 15:49
Оценка:
Здравствуйте все!

Появилась необходимость локализации нашего программного продукта. Выянилось, что тут используется, в общем, два подхода:
-----
1 — Динамическая подгрузка строк из файла/реестра и т.д. и вставка их "в нужные места"
Преимущества — нет необходимости перекомпилировать exe-файл для смены языка. Так работают Total Commander, Skype и многие другие.
Однако иногда наблюдаются проблемы, вытекающие из сущности данного подхода — фразы обрезаются, наезжают друг на друга, да и вообще, ведут себя зачастую просто неприлично!
Пример:
Добро пожаловать! Вы являетесь последним пользователем.
Wellcome! You are last user.
В основном, крупные фирмы избегают данного подхода, предпочитая делать для каждого языка свой билд.
Кроме того локализация на уровне таблиц строк или даже скриптов(особенно с динамическим определением размера контролов) является трудоёмкой с точки зрения изменений в исходном коде программ.
-----
2 — Работа с уже подготовленными иноязычными ресурсами, в которых отрегулирована высота и ширина всех контролов и т.п.
Этот вариант предполагает наличие отдельных локализованных ресурсов, которые компилируются либо в сам exe-файл, либо подключаются к нему из dll.
-----
Наша фирма, склоняется именно к такому варианту.
Имея версию ресурсов с одним языком, можно легко получить другую версию, просто переведя текстовые строки .rc-файла.
Проблема в том, что переводом строк занимаются наши дистрибьюторы в конкретных странах, и нам нужно отдать им эти строки (и только строки) для модификации, а затем встроить обратно в .rc файл. В .rc-файле же, кроме строк ещё находится куча различной информации, которую отдавать дистрибьюторам нет никакой необходимости — они не программисты, им нужно будет долго объяснять что и где переводить нужно, а где не нужно (например пути в реестре, вынесеные в IDS'ы).

Получается, что нужно написать утилиту – парсер, выдирающую нужные текстовые строки из rc файла, затем составляющую некую базу (со взаимооднозначными соответствиями), а после перевода этих строк втавляющий их обратно. При этом нужно, чтобы она (утилита) учитывала уже переведённые строки из созданных ранее баз данных.
===================

Так вот вопросы: Не существует ли уже таких утилит, а может они вообще не нужны и можно сделать проще? Как проще?
Re: Локализация? Локализация!
От: seregaa Ниоткуда http://blogtani.ru
Дата: 30.01.06 16:10
Оценка:
Здравствуйте, Neosyst, Вы писали:

N>Так вот вопросы: Не существует ли уже таких утилит, а может они вообще не нужны и можно сделать проще? Как проще?


Посмотри Langagent — парсит исходники и файл ресурсов, выдирает из них строки и складывает в языковый файл (xml), который можно отдать переводчику. У них же есть специальная тулза для редактирования этого файла.
Мобильная версия сайта RSDN — http://rsdn.org/forum/rsdn/6938747
Автор: sergeya
Дата: 19.10.17
Re: Локализация? Локализация!
От: chem  
Дата: 30.01.06 16:45
Оценка:
Здравствуйте, Neosyst, Вы писали:

N>Получается, что нужно написать утилиту – парсер, выдирающую нужные текстовые строки из rc файла, затем составляющую некую базу (со взаимооднозначными соответствиями), а после перевода этих строк втавляющий их обратно. При этом нужно, чтобы она (утилита) учитывала уже переведённые строки из созданных ранее баз данных.

N>===================

N>Так вот вопросы: Не существует ли уже таких утилит, а может они вообще не нужны и можно сделать проще? Как проще?


Наши локализаторы в свое время попросили сделать соответствующую Вашим требованиям утилиту, взяв за основу это — но там "парсер" в зачаточном состоянии, поэтому писал его с нуля. Даже без регэкспов (не знал тогда , что есть atlrx) работы не очень много (пару дней ).
Re: Локализация? Локализация!
От: mega_guest  
Дата: 31.01.06 02:18
Оценка:
Здравствуйте, Neosyst, Вы писали:

skip

Второй Ваш вариант достаточно удобно реализован в среде delphi (в delphi 7 точно есть, как в остальных не знаю).
Re: Локализация? Локализация!
От: John Grey Украина  
Дата: 31.01.06 09:56
Оценка:
Здравствуйте, Neosyst, Вы писали:

N>Так вот вопросы: Не существует ли уже таких утилит, а может они вообще не нужны и можно сделать проще? Как проще?


*.rc файлы можно подключать в другие *.rc файлы с помощью директивы #include — достаточно на начальном этапе определить, что в данный файл будут писаться только строки для контролов, и после локализация идёт достаточно просто( мучится с выдиранием строк не приходится). Таким образом к локализаторам попадают только строки необходимые для перевода и ничего больше.
Re: Локализация? Локализация!
От: &reY Украина http://www.livejournal.com/~1000turov/
Дата: 31.01.06 18:12
Оценка:
Здравствуйте, Neosyst, Вы писали:

N>Появилась необходимость локализации нашего программного продукта.

N>Так вот вопросы: Не существует ли уже таких утилит, а может они вообще не нужны и можно сделать проще? Как проще?

каким средством разработки пользуетесь?
от этого зависит какие средства локализации вам предлагать
Re[2]: Локализация? Локализация!
От: Аноним  
Дата: 01.02.06 05:36
Оценка:
Здравствуйте, &reY, Вы писали:

Y>Здравствуйте, Neosyst, Вы писали:


N>>Появилась необходимость локализации нашего программного продукта.

N>>Так вот вопросы: Не существует ли уже таких утилит, а может они вообще не нужны и можно сделать проще? Как проще?

Y>каким средством разработки пользуетесь?

Y>от этого зависит какие средства локализации вам предлагать

Основной проект VC6.0 остальные — более поздние версии VC. Желательно иметь общую утилитку и под VC6 и, скажем, VC7 (или 2003). И, желательно, простенькую и бесплатную. Lingobit и LangAgent мне не совсем понравились по некоторым причинам, перечислением которых я не хотел бы занимать ваше время. (а мы, как известно, люди занятые =) )
Я скачал парсер LocalizeRC — ничего, забавная штука. Именно что-то подобного я и хотел. Только она не совсем удовлетворяет моим запросам. Дело в том, что на перевод должны отсылаться только те строки, которых либо не было в предыдущих переводах, либо они были изменены. Соответственно, необходимо учитывать предыдущие базы. Я написал письмо автору — немцу Конраду — на предмет наличия новых версий, но ответа пока не дождался.
...
Про
 #include

— это идея хорошая — можно разбить файл на 2 части — первая не подлежит парсу, вторая — находится в отдельном файле и парсится. Но всё-равно парсить нужно.
Дело в том, что строка:

    PUSHBUTTON      "Generate Pitch Test",IDC_BT_PITCH_TEST,295,35,90,12


содержит лишь только ту часть, необходимую для локализации, которая заключена в кавычки. Остальное отсылать на перевод — смысла не имеет. Если, к примеру, переводчики (люди, зачастую, с сугубо гуманитарным складом ума) случайно переведут идентификатор — ошибка обнаружится быстро — не будет компилироваться. А вот если удалят из 295 последнюю цифру (получится 29), о контрол может сместиться относительно своего местоположения и "спрятаться" за другим контролом. А это в локализованных версиях, которые тестятся по-минимуму (сроки, сроки), отследить будет трудно, возможно, вообще, только после релиза.
Вывод — лучше вообще им не посылать служебную информацию, которая им не необходима для перевода.


P.S. Мне тут посоветовали XML c применением схем и CAtlRegExp. Спасибо большое, но мне кажется вся мощь этих штук не потребуется при написании парсера. Больше будет заморочек. Или я не прав?
Re[3]: Локализация? Локализация!
От: &reY Украина http://www.livejournal.com/~1000turov/
Дата: 01.02.06 07:30
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Основной проект VC6.0 остальные — более поздние версии VC. Желательно иметь общую утилитку и под VC6 и, скажем, VC7 (или 2003). И, желательно, простенькую и бесплатную. Lingobit и LangAgent мне не совсем понравились по некоторым причинам, перечислением которых я не хотел бы занимать ваше время. (а мы, как известно, люди занятые =) )


опыта локализации проектов под VC 6.0 у меня немного
вот списки средств логализации (если что-то себе найдене, напишите, интересен ваш выбор)
http://www.google.com/Top/Computers/Software/Globalization/Localization/Software_and_Tools/
http://www.i18nguy.com/TranslationTools.html
http://www.i18ngurus.com/docs/1017213676.html
Re[4]: Локализация? Локализация!
От: Neosyst Россия www.rubius.com
Дата: 02.02.06 15:24
Оценка:
Y>опыта локализации проектов под VC 6.0 у меня немного
Y>вот списки средств логализации (если что-то себе найдене, напишите, интересен ваш выбор)
Y>http://www.google.com/Top/Computers/Software/Globalization/Localization/Software_and_Tools/
Y>http://www.i18nguy.com/TranslationTools.html
Y>http://www.i18ngurus.com/docs/1017213676.html

Спасибо большое, но мы уже отдали этот проект на реализацию, человеку, который хочет у нас работать (и польза будет, и его проверим). За основу дали LocalizeRC — посмотрим...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.