Русский  English  Все проекты

Добрый вечер, есть задача по переводу файла с помощью gettext, PHP



Необходимо перевести некоторые слова, находящиеся в массиве файла .txt в скобках, например:

...[BP:UB:body:bodies]... -> ...[BP:UB:тело:тела]...

сохранить переведенные слова в файл с также именем в произвольный каталог, пример:

было файл project/body_default.txt :
======

...
[BODY:BASIC_1PARTBODY]
Categories are user-defined strings that can be used elsewhere to refer to groups of bodyparts for other commands.
[BP:UB:body:bodies][UPPERBODY][LOWERBODY][CATEGORY:BODY]
This command establishes the relative size of body parts within a creature. The numbers have no absolute meaning or units.
[DEFAULT_RELSIZE:2000]
...

стало файл project/tr/body_default.txt:
=======

...
[BODY:BASIC_1PARTBODY]
Categories are user-defined strings that can be used elsewhere to refer to groups of bodyparts for other commands.
[BP:UB:тело:тела][UPPERBODY][LOWERBODY][CATEGORY:BODY]
This command establishes the relative size of body parts within a creature. The numbers have no absolute meaning or units.
[DEFAULT_RELSIZE:2000]
...

------------
есть исходные файлы на английском: body_default.txt, plant_crops.txt
есть перевод ru_RU_tr.po, ru_RU_tr.mo с точным позиционированием символов для перевода, пример:

...
#: body_default.txt:7 //название файла: номер строки для перевода
msgctxt "BODY:BASIC_1PARTBODY" // контекст, если существует два одинаковых перевода в массиве
msgid "[BP:UB:body:bodies]" // то, что нужно сканировать на английском
msgstr "[BP:UB:тело:тела]" // то, что нужно заменить на русском
...

написал простой скрипт перевода с выводом на экран (пока на экран, если заработает, тогда хотел уже пилить запись в файл), проблема в том, что например , слово hello переводится в привет, а вот если слово находится в массиве и окружена символами, то уже не работает. Знаний не хватает написать сканер и замену в массиве, если такое конечно возможно. Может есть уже готовое решение, я просто не знаю?
25.12.2022 21:05



 Ответы фрилансеров